Feature request: kerning gesture

One of the things I do not enjoy in kerning is the fact that you need to press four keys to move by +10 or -10 units. I am trying to make my own physical device using rotary encoder (a dial with no minimum or maximum stop), also but think Glyphs could offer better and more finger-friendly commands in the Text tool:

  • Touch Bar slider (similar to volume or brightness control, except value-setting relative)
  • Shift + horizontal scroll
  • Shift + drag (maybe not a good idea since the mouse position doesn’t always stay at the letter position, depending on the text content)

And it will in/decrease the value in increment of 5 or 10, but not 1 (I just think that’s cleaner that way).

Does anyone like the idea?

There are options:

Glyphs.defaults["GSKerningIncrementHigh"] = 20
Glyphs.defaults["GSKerningIncrementLow"] = 5

I am not sure the Touch Bar will be with us for much longer.


Kerning values can be set from the API. I would connect the controller via the API, not relay its inputs to the standard Glyphs shortcuts.

Problem is the number of keys involved in the command you need to do a lot, not necessarily what it does. All you are doing is to increase and decrease a value, so it shouldn’t be this unintuitive.

And what about the Touch Bar? Is that your opinion or informed prediction? I for one love it much more than F keys. (preference aside, I know it’s not as universal as gestures like shift+scroll, which would be my pick)

The Edit view already has lots of shortcuts, so it’s difficult to use less keys without conflicting with existing functionality. This could be solved by having a dedicated Kerning tool where simpler shortcuts would be usable.

I just have the control strip expanded at all time, but I like the physical keys on my external keyboard much better. The Touch Bar API never evolved, so Apple does not seem particularly dedicated.

One can do all of that with something like Better Touch Tool. But often times what sounds good in theory causes some unexpected problems (precision?)

Do you mean setKerningForPair()? For my rotary encoder project, I want my input to register fast, and I want to learn if there is a better alternative (including Objective-C).

Hmm, I even considered finally learning Objective-C after learning the existence of the API…

Is setKerningForPair too slow for you?

I think it’s fine now, it’s just I wanted if there was something better. Also setKerningForPair is called from GSFont and I cannot undo it (I tried setting a undo group it from a glyph, but it doesn’t register).

There are methods on the layer:

value = layer.previousKerningForLayer_direction_(previousLayer, direction)
layer.setPreviousKerning_forLayer_direction_(value, previousLayer, direction)

value = layer.nextKerningForLayer_direction_(nextLayer, direction)
layer.setNextKerning_forLayer_direction_(value, nextLayer, direction)

direction = LTR|RTL
Those will trigger undo.

2 Likes