Maybe useful to share: a script to generate a simplified MetricsMachine pair list from an input font and pair list.
-
I sometimes make a big pair list, then run through it in one source of a type family, kerning everything that seems to need kerning. But then, I find it annoying to have to skip over every pair that doesn't really need kerning in my next sources. Especially when I'm kerning "optional" / not-typically-kerned items, like numerals to lowercase, I find myself wishing it could be a little faster.
Well, here's a script I've written to simplify a pair list once you've already gone through it:
https://gist.github.com/arrowtype/a09d638cbe1790792384b47723b64437
It may have issues, and it's not super pretty. But, I wanted to share it, and I didn't want to spend any more time on it. :) Hope it helps someone!
Also included: a function to get a kerning value from an arbitrary pair of glyph names. I wish this were a function in FontParts or RoboFont already, but if it is, I couldn't find it!
def findKernValue(font, pair): """ I can't find a method to check for a kern pair in RoboFont, so here's an attempt at one. font is an Rfont object. pair is a tuple of glyph names. """ side1 = font.groups.findGlyph(pair[0]) side2 = font.groups.findGlyph(pair[1]) # check if side1 in a side1 group, otherwise, just use it directly try: side1 = [group for group in side1 if "kern1" in group][0] except IndexError: side1 = pair[0] try: side2 = [group for group in side2 if "kern2" in group][0] except IndexError: side2 = pair[1] try: pairKernValue = (font.kerning[(side1, side2)]) return pairKernValue except KeyError: return None
-
in the docs: https://fontparts.robotools.dev/en/stable/objectref/objects/kerning.html#fontParts.base.BaseKerning.find
-
font.kerning.find(('A', 'V'))