fonttools / fontbakery

🧁 A font quality assurance tool for everyone
https://fontbakery.readthedocs.io
Apache License 2.0
553 stars 102 forks source link

glyphs/case mapping between caps and lowercases: The exceptions are inconsistent or should raise a WARN. #4564

Open felipesanches opened 8 months ago

felipesanches commented 8 months ago

Originally posted by @moyogo in https://github.com/fonttools/fontbakery/issues/3230#issuecomment-1970636519

@felipesanches @simoncozens This should be reopened. The exceptions are inconsistent or should raise a WARN.

There are roughly orthographic characters, phonetic characters and historical characters. The orthographic, phonetic and historical sometimes overlap, for example the lowercase is phonetic and the uppercase is historical, or the lowercase is phonetic and both lowercase and uppercase are orthographic.

For example:

The fontbakery check should likely check if a case-pair is orthographic (for example reported by shaperglot as such), then either FAIL or at least WARN. For the FAIL there could be some heuristic like whether the character is decomposable with unicodedata.normalize("NFD", char).

Originally posted by @moyogo in https://github.com/fonttools/fontbakery/issues/3230#issuecomment-1970636519

yanone commented 6 months ago

Not precisely on-topic, but I'm gonna add an issue with this check here instead of opening a new one. Let me know if I should break it out into separate issue.

When Greek isn't fully supported by a font, this check should ignore case-swapping for Greek characters. Not sure how to determine Greek support, but checking for support of GF_Greek_Core glyphset is a good start. Of course that would be GF-centric. I'm guessing the check is in the Universal profile (didn't check), so a better way should be found.

Proposal: Ignore Greek letters as soon as a font contains less Greek characters than the Greek lowercase and uppercase basic alphabet.

Bitter for example has these standard Greek characters and shouldn't FAIL. Bildschirmfoto 2024-05-10 um 13 57 52