[HarfBuzz] feature "execution" order

Martin Hosken mhosken at gmail.com
Mon Oct 13 19:39:41 PDT 2014


Dear Bob,

Further to the script specific list. The general features list plan is as follows, again, all features on the same line are merged into one pass, except the script specific features which follow the plan laid down for that script.

rtla, rtlm, frac, numr, dnom
<script specific features>
ccmp, locl, mark, mkmk, rlig, calt, clig, curs, kern, liga, rclt, <user features>

Note that if you are in a LTR script, you replace rlta, rtlm with ltra, ltrm. Also if you are in vertical text then replace calt, clig, curs, kern, liga, rclt with vert. In addition, a specific script can override this plan, but even if it does, all user features end up at the end. Arabic doesn't mess with the plan at all.

Since this overall plan is applied to both GSUB and GPOS, it means that you can use GSUB features in GPOS and vice versa. But bear in mind if you do that, that you are constrained to the type of lookup you can use according to which table (GSUB/GPOS) you are in. BTW only passes for which the table has lookups for the features of that pass, will actually happen. No lookups, no pass.

> > I'm copy/pasting some stuff I wrote a while back in another thread.  In
> > general, look for add_gsub_pause in harfbuzz source code and you get to the
> > place you need.
> 
> Which, from reading the code for arabic results in the following feature order. Merged features are listed on the same line. Each line is a run of the lookups for the given features:
> 
> ccmp, locl
> isol
> fina
> fin2
> fin3
> medi
> med2
> init
> rlig
> calt
> mset
> 
> HTH,
> Yours,
> Martin


More information about the HarfBuzz mailing list