Kerning all caps against all caps?

Let’s say I want to add kerning on top of all my normal kerning, i.e. any caps next to any other caps should also get an additional +10 for example, how can I do this in Glyphs app, without manually kerning every pair? Is it possible to do this in a manual fea thats just like pos @CAPS @CAPS 10?

I want this since I want it to work with caps encoded text and not just all caps feature.

That is what the case feature is meant for. But if you like to be independent of that feature, you could to that. You can reuse the Uppercase class, as Glyphs can automatically update it.

I think you mean the cpsp feature. Add it easily in File > Font Info > Features:

@mekkablue does it work when it’s just plain uppercase to uppercase text, ie not using InDesign’s “All Caps” setting over lowercase text? I thought it only activated then

The cpsp feature needs to be explicitly activated, and InDesign’s one of All Cap conversions does that (from OT panel, not the top menu).

That is how it is supposed to be. Don’t try to outsmart the user too much.

You could just as well do different kerning/spacing for uppercase letters.

That’s too much kerning to do. Do you know any examples where this could be an issue?

Your code should be fine.

This is really helpful! When I do this - automatic is clicked… it generates "<5 0 10 0> does that mean 5 left side bearing, 10 right side bearing? I assume if I want to uncheck automatic I can add more? I’d like to increase it to be more spaced out than 5 and 10. Not sure what the zero’s are for either… Thanks!

It means move the letter by 5 units and increase the advance width by 10.

These are values for vertical shift.

Speaking of which, I can’t seem to preview cpsp in the edit view? The generated font has it, but the feature isn’t even listed inside Glyphs’ feature menu (in the preview I mean). Is it because there’s no all caps button, or am I missing something?

Only GSUB rules are previewed in the menu.

@oneweioranother Where did you end up adding the pos @caps @caps 10 line of code in your Features? I’d like to implement this in same way, always executed without OT feature activation.

i cant remember to be honest, maybe just kern

1 Like

Cheers, I’ll try that!

Hi, apologies to be reopening this topic, but this is quite an aggravating issue for me. If I use the cpsp feature, I can only use it with the same values for each master (as far as I know), but I want to add, let’s say, 20 units in my Black and 30 in my ExtraLight. I would greatly prefer to do this with kerning, as the cpsp feature isn’t automatically activated. Is there some way to “decompose” the feature in some kind of way? So as to add 20 units to all caps-caps kerning pairs in Black and 30 in ExtraLight? I’m sure this is also possible via some script (simlar to Adjust Kerning in Master by Rainer), but I would need it specifically only for caps-caps kerning pairs. Appreciate any pointers you might have as to how to tackle this, thank you!

You can use the Replace Feature parameter. For static fonts at least.

I do it my own way but it works for me. When setting my side bearings for Uppercase to lowercase, I set the right sidebearing of straight sided caps to fit with lowercase n group. I then make one class kern for all straight sided caps which I positive kern to make cap H to Cap H look good. This minimizes all kerning since there is only one pair to consider and the other pairs would need kerning anyway.
Just a thought, not a sermon :wink:


As I understand it, that would only allow me to replace the values for the cpsp feature per instance. Is there really no way to insert a kerning pair for every possible class combination and then increase that value by x units? I have made a separate file with just my caps (in order to edit the kerning there and paste it back to the original file), but I can think of now way to insert a kerning pair for every possible class/glyph combination.

Adjusting kerning by hand would result in ca. 600 new manual kerning pairs, which is not something I would look forward to particularly :slight_smile:

Yes, of course, this is the natural approach. I doubt anybody wants to manually kern every single cap combination. I do, of course, have classes set up and all, but I have twenty-four cap classes (left and right total). There are (to my knowledge) two options for kerning: either make H the same sidebearing as n and positive-kern all caps, or space caps more loosely and negative-kern all cap-to-lowercase combinations. On a previous project, I opted for the latter, but that is just as much work (probably, no idea what the math is here).

Simply adding a kerning pair for every cap class to cap class combo would be all you would need, from there you could work your way with existing scripts to adjust the kerning by your desired value per master.

1 Like