• B
    [OTLayout] Ignore default-ignorables when matching GSUB/GPOS · 607feb7c
    Behdad Esfahbod 提交于
    When matching lookups, be smart about default-ignorable characters.
    In particular:
    
    Do nothing specific about ZWNJ, but for the other default-ignorables:
    
    If the lookup in question uses the ignorable character in a sequence,
    then match it as we used to do.  However, if the sequence match will
    fail because the default-ignorable blocked it, try skipping the
    ignorable character and continue.
    
    The most immediate thing it means is that if Lam-Alef forms a ligature,
    then Lam-ZWJ-Alef will do to.  Finally!
    
    One exception: when matching for GPOS, or for backtrack/lookahead of
    GSUB, we ignore ZWNJ too.  That's the right thing to do.
    
    It certainly is possible to build fonts that this feature will result
    in undesirable glyphs, but it's hard to think of a real-world case
    that that would happen.
    
    This *does* break Indic shaping right now, since Indic Unicode has
    specific rules for what ZWJ/ZWNJ mean, and skipping ZWJ is breaking
    those rules.  That will be fixed in upcoming commits.
    607feb7c
hb-ot-layout-gsub-table.hh 43.2 KB