I’m having issues with the upper-case transformation of i for Turkic languages. I use the use the auto features and have the i,idotless,I,Idotaccent glyphs, and the auto-features is the usual
script latn;
language AZE;
lookup locl_latn_0 {
sub i by idotaccent;
} locl_latn_0;
language CRT;
lookup locl_latn_0;
language KAZ;
lookup locl_latn_0;
language TAT;
lookup locl_latn_0;
language TRK;
lookup locl_latn_0;
However, there seems to be no substitution of i to Idotaccent when doing an upper-case transformation in eg. Affinity apps. The substitution of idotless to dotlessi.case does work in FontGoggles when activating the case feature, it’s just that there is no substitution of i.loclTRK to Idotaccent which might be intentional, instead depending on application logic(?)
The transformations work fine for small-caps.
I can’t audit these interactions between OpenType features and case-transformations anywhere it seems? Can’t do it in Glyphs, can’t do it in FontGoggles, can’t do it in Hibizcus. Is there a way to do it? Am I doing something wrong?
Oh, I thought you were talking about the uppercase transformations (as in the text right after the code).
I’m still a bit confused, though. You say you have i, idotless, I and Idotaccent, and later you talk about i.loclTRK, but your substitution code uses idotaccent, which you don’t mention anwyhere, and which should be the same glyph as i.loclTRK?
Janus’ question is perfectly valid, as I also don’t understand why you’re talking about i.loclTRK, when you don’t initially mention it as part of your character set. Can you clarify, please?
You do not need an idotless.case. Substituting letters is not what the case feature is there for. Casefolding is the job of the layout engine, not the font. Meddling with a GSUB hack can only make it worse.
For the record, add idotaccent only if you have an OT feature (typically small caps or ligatures) that changes a dotted i into an undotted glyph. I understand in your case it is small caps, and it works.
There is only a special case for all-caps fonts, but that is not the case here, right?
I want to diagnose why upper-case tranformation does not work in Affinity applications (and other special instances). Exactly as I wrote I have no good way of testing case-transformations because they are layout engine domain. So to find out if my Glyphs project, my font, Glyphs auto-feature generation, or Affinity apps (and other special cases) are buggy what is a way to go about this?
This is correct casefolding depending on the language. If no language is set, it is an allowed casefolding. That has nothing to do with OT features.
Though, perhaps the engine is confused for the presence of .case letters. Make sure you are testing a proper font, so remove all .case letters and try again. And compare with FontGoggles.
In which apps did you see this besides Affinity apps?
I figured it out. The Language floating menu the Affinity apps use the two settings Typography script and Typography language for OT-features exclusively. You have to set the Spelling to the language you want the layout engine to work with.