Options

Adobe World Ready Composer and ೊ

Does anybody know if Adobe’s World Ready Composer is supposed to replace <consonant> + <ೊ> with <consonant><ೆ><ೂ>? For example, I have:
sub knDA knmE by knDE;
sub knDA knmO by knDO;
in a font, with knDA being ದ, knmE being ೆ, knmO being ೊ and knDO being ದೊ. If I input ದ+ೊ Indesign gives me ದೆ + ೂ instead of the knDO glyph that I want. I’m sure this is hard-coded into Indesign, because it happens if the font contains no OpenType features. au, u, e, and uu don’t work this way. Is this normal behavior for a Kannada shaping engine? 

Comments

  • Options
    edited September 2015
    Hi James, 

    Let me know if I understand you correctly. I assume you have a non-unicode glyph 'knDO' in your font that you want to activate when the input sequence is 'knDa' + 'knVowelO'. I would suggest you use the 'post' (Post-Base Substitutions) feature and simply substitute:
    feature post {
        sub knDa knVowelO by knDO;
    } post ;
    From Microsoft's 'latest' spec (http://www.microsoft.com/typography/OpenTypeDev/kannada/intro.htm#features):
    Such substitutions can be used to create [...] post-base matra ligatures.
    What you describe as InDesign's output is indeed the correct shaping behavior, except it isn't giving you ದೆ + ೂ but really ದ + ೊ (this obviously depends on the input character sequence). You can test this by copy/pasting the cluster into Richard Ishida's useful UniView web tool (http://r12a.github.io/uniview/). Paste into the 'Edit Buffer' field and click on the downward facing arrow.

    I hope what I'm saying makes sense :)

    Edit: Spelling and case.  
  • Options
    Georg SeifertGeorg Seifert Posts: 669
    edited September 2015
    Is this normal behavior for a Kannada shaping engine? 
    It seem like it.

    This will not work (at leat not in Indesign) as the knVowelO is not there any more at this point.
    feature post {
        sub knDa knVowelO by knDO;
    } post ;

    You have to to do it like this:
    sub da_eMatra-kannada uuMatra-kannada by da_oMatra-kannada;

    (sorry, I don't know the proper names in your naming but you should get the point)


  • Options
    You can test this by copy/pasting the cluster into Richard Ishida's useful UniView web tool (http://r12a.github.io/uniview/). Paste into the 'Edit Buffer' field and click on the downward facing arrow.

    Thanks for that! It’s a useful tool.


    I figured it out from looking at ITF’s template code. The code that gets my stuff working is:
    feature post {
       sub knDa knVowelO by knDO;
    } post ;
  • Options
    Hi Georg!
    [...] knVowelO is not there any more at this point.

    I don't understand what you mean here. The 'knVowelO' (Kannada Vowel Sign O 0CCA) is a an encoded character, and thus can be combined with a preceding base consonant to access a consonant-vowel mark ligature glyph using the 'post' feature.

    Unrelated: Are you working on a Glyphs version for the iPad Pro? :)

  • Options
    The 'knVowelO' (Kannada Vowel Sign O 0CCA) is a an encoded character, and thus can be combined with a preceding base consonant to access a consonant-vowel mark ligature glyph using the 'post' [sic] feature.

    U+0CCA has a canonical decomposition to 0CC6 + 0CC2. As with other two-part vowel signs in Unicode, you can expect the layout engine to decompose at the character level, long before one gets to the glyph processing of features such as 'psts'* (which is processed relatively late in the shaping, after reordering). 

    * NB, the Post Base Substitutions feature tag is 'psts', not 'post'.

    As the current Kannada specification** notes:
    4. Uniscribe splits two- or three-part matras into their parts. This splitting is a character-to-character operation.
    So Georg is almost right to say that by the time the 'psts' feature is processed the Kannada vowel sign O glyph is no longer in the glyph stream: in fact, it was never there at all because the character has been decomposed even before the layout engine gets the glyphs from the cmap table.

    ** Note that Adobe's World Ready Composer implements the old XP 'knda' shaping model, not the current 'knd2' shaping. The older specifications are no longer available on the MS site, but I don't recall the behaviour differing with regard to two-part vowel signs.


    In my Kannada fonts, I have typically already performed the substitution
    kDa kSignE -> kDe
    early in the 'psts' lookups; so then perform the substitution
    kDe kSignUu -> kDo

    Of course, you could do it various other ways, e.g. performing
    kDa kSignE kSignUu -> kDo
    before performing
    kDa kSignE -> kDe
    
  • Options
    PS. I encourage you to use a Uniscribe environment, rather than Adobe's WRC, as a core test environment, even for 'knda' (even if this means making a font with only 'knda' script tag support to force use of the old shaping model in a post-XP version of Windows). Over the years, I've seen small inconsistencies between Adobe's Indic implementations and that in Uniscribe (and Harfbuzz).
  • Options
    That means testing in Firefox?
  • Options
    Firefox uses HarfBuzz, and though it strives to be Uniscribe-compatabile, if you really want to test against Uniscribe then IE (or Edge) would be a better choice (or pretty much any other MS product on Windows, for that matter).
  • Options
    or pretty much any other MS product on Windows, for that matter

    Keeping in mind that some Microsoft products may use different versions of Uniscribe. Office still, so far as I know, ships with its own version, which may differ from that which comes with Windows (this allows for compatibility within a given version of Office apps, regardless of which version of the OS they are running on).

    To test the OS version of Uniscribe, I use Wordpad most of the time, but if I want to be sure to avoid anything coming between the font and OTLS — e.g. RichEdit — than I use NotePad.

Sign In or Register to comment.