I have noticed that all KO output seems to consist of class-to-class and single-to-single kerning. What about class-to-single and single-to-class? These are important kinds of kerning in OT, and KO ends up missing possible class kerning. So, for example, see the output in the screenshot below. All those single C kern pairs at the bottom should be L_LATN_C_1ST* to the single glyph.
*Class names also get messed with, but I think that is Glyphs fault, the original FL class name was simply LATN_C_1ST.
Class to single, single to class?
Class to single, single to class?
- Attachments
-
- Screenshot 2025-07-23 at 16.43.55.png (253.57 KiB) Viewed 7059 times
- Tim Ahrens
- Site Admin
- Posts: 502
- Joined: 11 Jul 2019
Re: Class to single, single to class?
This section in the manual probably answers the question: https://kern-on.com/manual/#how-kerning-is-stored
In short, class-glyph and glyph-class kerning does not exist in TTF or OTF. If Kern On generated it then we’d usually have unnecessary glyph-glyph pairs in the final fonts.
Class-glyph and glyph-class could facilitate the editing of the kerning after Kern On has finalized, but, as discussed before, this is something Kern On is not optimized for.
In short, class-glyph and glyph-class kerning does not exist in TTF or OTF. If Kern On generated it then we’d usually have unnecessary glyph-glyph pairs in the final fonts.
Class-glyph and glyph-class could facilitate the editing of the kerning after Kern On has finalized, but, as discussed before, this is something Kern On is not optimized for.
Re: Class to single, single to class?
‘On generated it then we’d usually have unnecessary glyph-glyph pairs in the final fonts.’
But why does the single-to-single pair set not include relevant diacritic letters in the font, such as ĆĈČĊÇ. If these were included, then I could use other tools to compress to class kerning. As it is, I end up with single pairs that I have to find a way to convert to class kerning, which is much more complicated and time consuming because I need to check for possible exceptions.
But why does the single-to-single pair set not include relevant diacritic letters in the font, such as ĆĈČĊÇ. If these were included, then I could use other tools to compress to class kerning. As it is, I end up with single pairs that I have to find a way to convert to class kerning, which is much more complicated and time consuming because I need to check for possible exceptions.
- Tim Ahrens
- Site Admin
- Posts: 502
- Joined: 11 Jul 2019
Re: Class to single, single to class?
> But why does the single-to-single pair set not include relevant diacritic letters in the font, such as ĆĈČĊÇ
Do you mean, it is missing relevant pairs? If so then please let me know, we can check and discuss, and I can add the missing relevant pairs.
> If these were included, then I could use other tools to compress to class kerning.
Specifically, you mean compress to class-glyph and glyph-class kerning, I assume? What is the motivation for this compression?
Do you mean, it is missing relevant pairs? If so then please let me know, we can check and discuss, and I can add the missing relevant pairs.
> If these were included, then I could use other tools to compress to class kerning.
Specifically, you mean compress to class-glyph and glyph-class kerning, I assume? What is the motivation for this compression?
Re: Class to single, single to class?
I want to have manageable kerning sources that I can edit, and that make maximum use of class kerning at the source level. I understand that you see KO as a tool to generate finished kerning, but I end up a) removing large amounts of KO-generated pairs that I don’t find useful, and b) having to massage the data into a manageable form. I don’t think of classes as simply a compression mechanism, but as a data management mechanism.
I think the notion of ‘relevant pairs’ is problematic, because it is based on data sets in which a lot of languages are underrepresented. Very often, I am working on fonts for languages that don’t have online corpora or dictionaries, and for which I can’t know what glyphs will occur in sequences and which won’t.
I’ve found that KO does a very respectable job on Canadian and Cherokee syllabic kerning, since the kerning is based on shapes not on presumptions about relevance.
This is the first time I have tried to use KO on a Latin font, and I’m not sure I would do so again. While KO does a good job on base letter-to-letter kerning, it also generates a lot of stuff I don’t want, in part because the model tolerances are too tight and don’t respect all my zero-value pairs.
I wonder if there is some way for KO to take the input set of zero-value pairs as a guide to restrict or relax the tolerance of what it considers too tight or too loose?
I think the notion of ‘relevant pairs’ is problematic, because it is based on data sets in which a lot of languages are underrepresented. Very often, I am working on fonts for languages that don’t have online corpora or dictionaries, and for which I can’t know what glyphs will occur in sequences and which won’t.
I’ve found that KO does a very respectable job on Canadian and Cherokee syllabic kerning, since the kerning is based on shapes not on presumptions about relevance.
This is the first time I have tried to use KO on a Latin font, and I’m not sure I would do so again. While KO does a good job on base letter-to-letter kerning, it also generates a lot of stuff I don’t want, in part because the model tolerances are too tight and don’t respect all my zero-value pairs.
I wonder if there is some way for KO to take the input set of zero-value pairs as a guide to restrict or relax the tolerance of what it considers too tight or too loose?