[HarfBuzz] feature "execution" order

Behdad Esfahbod behdad at behdad.org
Mon Oct 13 20:10:12 PDT 2014


On 14-10-13 07:39 PM, Martin Hosken wrote:
> 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.

If there are no script-specific logic, then the two groups above merge.  When
there *is* script-specific logic, it can pull some features to happen earlier.
 All shapers that add a pause also pull ccmp / locl to happen at the start of
the script-pecific group, which essentially removes them from the final group.

We could, perhaps, improve the code to better reflect this.

Jonathan: I just noticed that we in fact have inadvertently introduced a pause
before ccmp,locl in all shapers that have a pause.  The pauses do nuke_joiners
for Arabic, and setup_syllables for Indic-like shapers.  Perhaps this can be
cleaned up a bit.  Not touching it now though.

-- 
behdad
http://behdad.org/


More information about the HarfBuzz mailing list