Hi There!
I think I may have found a bug in the API.
If you use the font.setKerningForPair
call, and the inputs for LeftKey , RightKey
are a mixture of glyphs and classes (a glyph name on one side, and a class name on the other), I get an error regarding the FontMasterId
of all things.
The error seemed to suggest that the setKerningForPair
function failed to understand that it had received a master via FontMasterId
at all.
I know this sounds peculiar, but no such master ID error is thrown when the font.setKerningForPair
call refers to either two glyph names, or two classes. Only the mixture provides this error.
Is this expected, in some way I’m not realizing?
The error reads:
AttributeError: 'NoneType' object has no attribute 'id'
Can you post the exact call you are using and the full error message?
This line works for me:
Font.setKerningForPair(Font.masters[0].id, "@MMK_L_T", "a", -100)
For instance @GeorgSeifert, I can run:
for master in Glyphs.font.masters:
print master.id
and receive a list of the IDs for each master in my file.
But if I run:
for master in Glyphs.font.masters:
firstGlyph=font.glyphs["T"]
secondGlyph=font.glyphs["a"]
firstGroup=firstGlyph.rightKerningGroup
secondGroup=secondGlyph.leftKerningGroup
Glyphs.font.setKerningForPair(master.id, firstGroup, secondGroup, -100)
I receive this error:
Traceback (most recent call last):
File "<macro>", line 11, in <module>
File "GlyphsApp/GlyphsApp/__init__.py", line 3352, in setKerningForPair
AttributeError: 'NoneType' object has no attribute 'id'
I assume the ‘id’ its looking for is the master.id
? Which should have been passed to the function successfully.
You need to use
firstGroup=firstGlyph.rightKerningKey
secondGroup=secondGlyph.leftKerningKey
The method setKerningForPair
needs either kerning IDs in the form of “@MM_L_T” or a glyph name. But rightKerningGroup
returns the name of the group only: “T” (or whatever you have entered in the T) in this case.