[HarfBuzz] feature "execution" order

Adam Twardoch (List) list.adam at twardoch.com
Mon Oct 13 15:51:28 PDT 2014


The general Uniscribe idea is this: 

FIRST, you do GSUB features. 
For them:
* first do the pre-shaping GSUB features for all scripts (ccmp, locl, ltra, rtla, ltrm), 
* then do the shaping GSUB features, script-specific features in the order defined in the script-specific modules (i.e. sometimes in fixed order, sometimes in font-defined order) 
* then do the post-shaping (user-selectable) GSUB features, typically applied all at once and executed in the font-defined lookup order 

Only AFTER GSUB processing is complete, you do the GPOS features (otherwise it won't make sense), typically applied all at once and executed in the font-defined lookup order. 

The "script-specific" column in the table http://blog.fontlab.com/font-tech/opentype-layout/opentype-layout-feature-classification/ documents this. That table was consulted with Microsoft but corrections are welcome.

A.

Sent from my mobile phone.

> On 14.10.2014, at 00:01, Bob Hallissy <bob_hallissy at sil.org> wrote:
> 
> I apologize in advance if this information is already available -- please just point me to it if so. Or, if it is straightforward to deduce this from the source code, I'm happy to try that -- but I took a brief look and wasn't successful so I'll need some coaching.
> 
> As we are aware, Uniscribe makes multiple passes over the text, more-or-less one pass per feature. In the Arabic spec, for example, Microsoft says:
>> All OTL processing is divided into a set of predefined features(described and illustrated in the Features section of this document). Each feature is applied, one by one, to the appropriate glyphs in the syllable and OTLS processes them. Uniscribe makes as many calls to the OTL Services as there are features.
> and:
>> Regardless of the model an application chooses for supporting layout of complex scripts, Uniscribe requires a fixed order for executing features within a run of text to consistently obtain the proper basic form. This is achieved by calling features one-by-one in the standard order listed below.
> and finally the list of features, in order: ccmp, isol, fina, medi, init, rlig, calt, liga, dlig, cswh, mset, curs, kern, mark, and mkmk.
> 
> (This is, of course, not what the OT spec says should be done, but that is water under the bridge and we are stuck with Uniscribe compatibility)
> 
> What I'd like to know is what is the equivalent sequence for Harfbuzz?  Presumably Harfbuzz implements additional features (clig, locl, rtla, rtlm and salt come to mind) and it would be helpful to know where they fall in the sequence. Also, where do things like Stylistic Sets (ssxx) and Character Variants (cvxx) fall in this list?
> 
> (And while this post is about Arabic, presumably other scripts have similar needs).
> 
> Thanks for any help you can provide,
> 
> Bob
> 
> 
> 
> _______________________________________________
> HarfBuzz mailing list
> HarfBuzz at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/harfbuzz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/harfbuzz/attachments/20141014/4e739b85/attachment.html>


More information about the HarfBuzz mailing list