Vertical kerning

I’m working on my font and i can’t find some solution to change position of period, comma, and other punctuation glyphs ONLY AFTER LOWERCASE letters for some vertical value (see red period and comma on the image). After uppercase letters period and comma must stay on the default position. Can you have some solution for this?

Thank you

pos @Lowercase @Punctuation' <0 100 0 0>;

You need to define the classes, of course. You can automate Lowercase.

If you are not comfortable with OT Feature Code, I recommend getting familiar with these resources:

  3. the tutorials on this site


Thank you @mekkablue. I can do this, but, in which open type feature i have to put it this line?
Kern? Are this numbers <0 100 0 0>; indicate vertical positioning?

kern would be a good idea, I guess.

This is a valuerecord. Please do take your time and follow the links I posted above, valuerecords are described here and here, respectively.

kern can be switched off; you might be better putting these kind of GPOS adjustments in dist, which is always activated.

Dear @makkablue, thank you very much for your help. However, i can’t seem to resolve the issue as you suggested, it doesn’t work on that way. Here is pictures what happens. Any other suggestions?
Thank you in advance

Thanks Bendy, i would like to try it out but it’s my first time meeting these names like GPOS and dist. Do you have a more specific instruction?
Thanks a lot in advance.

Ok. I actually have two separate ways to do this.

Approach 1:

  1. Add a new class and call it ‘Lowercase’. Add all the lowercase glyphs to this class.
  2. Add a new feature and call it ‘dist’.
  3. In this feature, write @mekkablue’s lookup: pos @Lowercase @Punctuation' <0 100 0 0>;

Not sure what your vkrn feature is trying to do, but I don’t think it should be there.

Approach 2:

  1. As above, create @Lowercase class, and also one called @Punctuation with the default punctuation.
  2. Add a new glyph for each punctuation sign that you want shifted. Name them period.up, comma.up etc.
  3. Put these xxx.up glyphs in a class with the name Punctuation.up
  4. Add a new feature ‘calt’.
  5. In this feature, write sub @Lowercase @Punctuation' by @Punctuation.up;

Approach 2 will allow you to (horizontally) kern the shifted punctuation differently than the default set, which might be needed.

Wow, thanks a lot for your effort Bendy! I tried both approaches. Number one did not work, but number 2 did work great!
The one issue with this is: the calt feature must always be turned on. Also, i have problem with other definitions in calt feature, like arrows. So, i can make it on on my computer, but how do i inform all users? Its a bit tricky having to remind users to set this feature in order to use the font right… Wish you all the best!

In your specimen, in the documentation that comes with your font, or on the website… many ways.

calt should be on by default, but you can also put it in a feature that cannot be turned off. I have not tried dist for Latin yet, but you may also do some hacking and try something like rlig.

For a least of officially registered features, see But not every app supports every feature. Don’t forget to do your testing and verify for yourself in the apps you want it to work in.

You can automate Lowercase, you don’t need to add glyph names yourself. Simply turn on the Automate option once you added the feature.

Hi mekkablue, i try to do something with dist feature but no success. I have this message:

Any suggestion? Thank you

Please look at the error message: it says, glyph class not defined (text was @Lowercase). This means that the code contained a reference to a class called Lowercase, but it was not defined. In other words, you need to add the Lowercase class.

  1. Click on the plus button at the bottom left,
  2. choose Class, and a class will be added.
  3. Replace the preselected xxxx of its naming with the word Lowercase (case-sensitive).
  4. With Lowercase still selected, choose generate Feature automatically. The class definition should automatically fill up with glyph names of lowercase letters.

Thank you makkablue. I tried exactly like you say, step by step but dist feature don’t work. I don’t understand why??? Here is the result in Illustrator application. Btw, how i can define a feature that cannot be turned off?

I try also with rlig feature and i have interesting result: Feature rlig work perfectly in Adobe InDesign, but DOESN’T WORK in Illustrator. :frowning: How is possible to turn this feature allways on? Thank you.

Welcome to the club. Quite possible that AI does not support dist. Of course, you have to do your own testing, in all the apps that you want it to work in. AFAIK, all the apps support kern, just in Word, the user is required to turn it on themselves.

For the record: if it compiles, the dist feature is fine. The question is: Does the app support it or not.

Mekkablue, thank you so much for your effort in helping!
So sorry I joined this club :slight_smile:

Why not just make raised versions of those glyphs and swap them in with CALT?