You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If a kerning pair references a group that contains some 'mark' glyphs, it is placed in the 'marks' kern lookup.
If a glyph-to-glyph exception is made for the group(s) that references only 'base' glyphs, it is placed in the 'bases' kern lookup.
The glyph-to-glyph exception should prevent the group-based kerning pair from applying, but as it is placed in a different lookup, it does not, and instead the pairs are applied in sequence.
Scope
Although the issue was found in testing for the new kern splitter, both the old and new implementations are affected. In particular, incorrect kerning values were identified only in Noto Serif Tamil (with kerning-validator).
for pair in pairs:
leftBases, leftMarks = split left hand side into bases/marks
rightBases, rightMarks = split right hand side into bases/marks
# Only matches pairs with no marks
basePairs.append(Pair(leftBases, rightBases)) # no marks on left/right
# Only matches pairs with at least one mark (no overlap with above)
markPairs.append(Pair(leftMarks, rightMarks)) # marks on left/right
markPairs.append(Pair(leftMarks, rightBases)) # marks on left
markPairs.append(Pair(leftBases, rightMarks)) # marks on right
Problem
Scope
Although the issue was found in testing for the new kern splitter, both the old and new implementations are affected. In particular, incorrect kerning values were identified only in Noto Serif Tamil (with kerning-validator).
Reproducing
In Noto Tamil Serif
Minimal
(derived from Noto Serif Tami, which is under the OFL)
Kerning:
Groups:
Where /aa-tamil and /lu-tamil are bases, and /aulengthmark-tamil is a mark, /aa-tamil/lu-tamil is kerned to -55 instead of -20:
Workaround
Manually adjust your kerning to avoid mixing bases and marks in the same group.
Fix
Split bases and marks into separate groups in KernFeatureWriter (needs further thought).
The text was updated successfully, but these errors were encountered: