Skip to content

Six glyphs named uniXXXX for codepoints Inter doesn't cover #903

Description

@ntzb

In 4.000, and still in 4.001, six glyphs have post names of the form uniXXXX where XXXX isn't a codepoint Inter covers. They're cmapped from something else entirely:

uni05DA -> U+02AA      uniFB47 -> U+02DF
uni05DD -> U+02AD      uni25CE -> U+0298
uni05E5 -> U+02B5      uni200D -> U+FEFF

The names claim Hebrew final kaf, final mem, final tsadi, qof with dagesh, bullseye and ZWJ. Inter encodes none of them.

from fontTools.ttLib import TTFont
cm = TTFont("extras/ttf/Inter-Regular.ttf").getBestCmap()
print([hex(c) for c, g in cm.items() if g == "uni05DD"])   # ['0x2ad']

Harmless inside Inter, but it quietly breaks name-keyed merges built on top of it: the merge tool sees those names as already present, discards the donor's glyphs and never creates cmap entries for their real codepoints. I ran into this in a Kodi font resource that merges Inter 4.000 with DejaVu Sans 2.30 — it lost ך, ם, ץ and קּ, which takes the last letter off most Hebrew plurals throughout the UI. Those six codepoints were the only ones lost in the whole merge.

Renaming them to match what they're actually mapped from (uni02AA and so on) would remove the collision surface.

uni021A -> U+0162 and uni0326 -> U+F6C3 are mis-named the same way but harmless, since Inter covers both under other names.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions