Can you do reorder to the glyphs and apply ligature after that?

13»

Comments

  • WAY KYI
    WAY KYI Posts: 130
    RichardW said:
    The correct and full references are https://wrdingham.co.uk/lanna/test/dalekh.woff and https://wrdingham.co.uk/lanna/test/font_test.htm.  I apologise for the typo.

    'Ligature' is a confusing word.  There are ligature glyphs, and there are ligature substitutions, which for many scripts will not yield ligature glyphs.  The problems I've seen in developing Da Lekh chiefly relate to applying a ligature substitution to a base (commonly uni25CC) and a mark to yield a mark.  The problems don't relate to lookupflags, but rather to with which base and mark glyphs a mark glyph can be associated by an attachment lookup.  The OpenType 'specification' does not define this behaviour except for very simple cases.


    Thank Mr. RichardW for sample font and test page. It is a lot similar to our language even some text resembled to ours, but yours seem to be more complicated to work with Opentype features. I wish you all the best. Take care.
  • RichardW
    RichardW Posts: 100
    And the remarks there are just the insufficient basics.  However, I suspect I've found a bug in Microsoft's processing of multiple sequence lookups.  Using Crowbar to simulate Windows' GSUB processing, Lookup 38 (named 'bad_circle' if I provide the Debg table in the font) invokes ligature substitutions numbered Lookups 40 ('kill_circle') and 41 ('kill_circle_rev') at sequence offsets 0 and 0 to reduce the three glyphs uni25CC uni1A63 uni25CC to one glyph uni1A63 one glyph at a time.  While not prohibited, I suspect it might not work well; applying ligature substitutions at four sequence offsets didn't work well with Uniscribe/DirectWrite in LibreOffice.  (HarfBuzz's USE emulation doesn't generate that sequence when presented with ᨣᩕ᩵ᩣᩴ.)  CoreText seems to handle the input sequence satisfactorily.


  • RichardW
    RichardW Posts: 100
    WAY KYI said:
    It is a lot similar to our language even some text resembled to ours, but yours seem to be more complicated to work with Opentype features.
    I started working with Tai Tham on OpenType because I feared it might turn out to be impossible.  Overall, and historically unsurprisingly, it's seems closest to Mon of the Burmese script writing systems.  Difficult cases I haven't addressed are aerial invasion of and tunnelling under the next consonant stack, and potentially interacting items on the underside of the <NA, AA> ligature.  I do wonder whether we should register some features - there are three very different ways of writing <RA, SIGN UU, SAKOT, BA> 'image, form' (and also a somewhat Bangkokian alternative encoding).  So far I've been using ssxx and cvxx features.
  • RichardW
    RichardW Posts: 100
    edited July 2022
    RichardW said:
    However, I suspect I've found a bug in Microsoft's processing of multiple sequence lookups.
    It would seem not.  I replaced the sequence of lookups by a single lookup, but it had no effect on the misrendering in MS Edge Legacy.  In case anyone's interested, the font is in https://wrdingham.co.uk/lanna/test2/dalekh.woff with a Debg table and the tests are in https://wrdingham.co.uk/lanna/test2/font_test.htm.

  • WAY KYI
    WAY KYI Posts: 130
    edited August 2022
    Continued on the topic of Rphf feature with IgnoreBaseGlyphs and UseMarkFilteringSet I was able to do what I wanted. Now, I trying to do IgnoreMarks using the same markset above and trying to do Rphf ligatures but it won't skip the markset. If my logic correct here??? trying to skip the same markset in another rphf feature??? Situation is the same that I need to skip the markset above and do ligatures on the rest of the glyphs which are belowbase ones. I need to skip markset this time. Thanks
  • RichardW
    RichardW Posts: 100
    Your question is too confused (at least to an English speaker) for me to answer yes or no.  For the Myanmar script, I would expect you to be using lookups in the blwf feature (or blws) to ligate below base glyphs.  (For a combination of script and language system, there can be only one feature of a particular name.  If the font defines two of them (and not all font compilers will allow this), at most one of them will be used.

    One does not define a mark set to skip, one defines a mark set to not skip.  I would expect a lookup ligating marks below to be set to skip all marks except those that  make an appearance below.  Some marks can be left out because renderers will not allow them to appear in a position in the sequence of glyphs where they cannot interfere with the ligation, but I would not recommend leaving them out.
  • WAY KYI
    WAY KYI Posts: 130
    edited August 2022
    Thank you very much Mr. RichardW. I think I got your point that a mark can not be use as two opposing usages as use or ignore. Only one feature will work, right? I was using in rphf feature, in first rphf as usemarkset and in second rphf, I use ignoremarks to the same markset. Which failed in second rphf. So, my thinking is not correct then. I can set those belowbase glyphs as markset and use them in rphf to get the result I want. But the problem is those belowbase glyphs are needed to be substituted in later features and the subs won't work because belowbase glyphs are now ligatures and the substitution glyphs are totally different forms and places. So, what option I have here??? The hard-coded ligature may be one option or any other feature that could be useful in this case??? I will also try with Blwf feature too. By the way, what is the different between blwf and blws?? When to use form and when to use sub?? Thanks 
  • John Hudson
    John Hudson Posts: 3,227
    It is important only to use rphf for the actual repha formation, and also that the lookup output of rphf is a single glyph because the shaping engine tracks the position of that glyph for reordering purposes.

    By the way, what is the different between blwf and blws?
    All the Indic ***f features are processed before reordering; all the ***s features are processed after reordering.
  • RichardW
    RichardW Posts: 100
    What is the point of making the ligature of two marks below a ligature glyph?  It's more natural to make it another mark below.

    The main point of ligatures in shaping is that they partly act as two base marks - a particular mark instance may associate with only one part of a ligature glyph.
  • WAY KYI
    WAY KYI Posts: 130
    edited August 2022
    Mr. RichardW and Mr. John Hudson, thank you very much both of you for valuable advices. I learned so much from you all here. I will teach what I learned from all of you to the younger generation of Burma for free. Hope they will continue to carry on to the next. I learned so much insights about type engineering here. Thank you all and thank you very much.
  • WAY KYI
    WAY KYI Posts: 130
    RichardW said:
    What is the point of making the ligature of two marks below a ligature glyph?  It's more natural to make it another mark below.

    The main point of ligatures in shaping is that they partly act as two base marks - a particular mark instance may associate with only one part of a ligature glyph.
    I understand your points. It is that based on back or ahead glyphs the match ( two basemarks ) have to change to taller or shorter glyph ( same meaning, but different form and placement ) both or one of them. So, the sub won't work if I use UseMarkFilteringSet feature in the beginning of the run. Oh, I see there is ignoreligature option too. Let me try that. Thanks