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

  • Kalapi Gajjar-Bordawekar
    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.  
  • Georg Seifert
    Georg Seifert Posts: 674
    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)


  • 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 ;
  • 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? :)

  • 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
    
  • 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).
  • That means testing in Firefox?
  • 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).
  • 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.