glyphs/case mapping between caps and lowercases: The exceptions are inconsistent or should raise a WARN.
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:
- ÿ 00FF is used in French and German names, Ÿ 0178 should be present.
- ß 00DF is used in German and ẞ 1E9E is an alternate uppercase to SS.
- ᶎ 1D8E ꞔ A794 (not currently exceptions) are phonetic symbols, the case-pairs with Ᶎ A7C6 Ꞔ A7C4 are historical (proposed Hanyu Pinyin used in a few documents) but ȿ 023F ɀ 0240 (currently exceptions) are historical phonetic symbols, the caise-paris are historical-orthographic.
- ↄ 2184 and Ↄ 2183 are historical (not currently exceptions)
- ɥ 0265 ɦ 0266 ɪ 026A ɬ 026C ʝ 029D are currently not exceptions but ƒ 0192 ɑ 0251 ɐ 0250 ɱ 0271 ħ 0127 ɫ 026B are exceptions, both sets are phonetic or other kind of symbols with case pairs used in orthographies.
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
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.