SOLVED RGlyph.area method only works on glyphs with contours.
-
Is it possible to add the ability to make
RGlyph.area
to work on glyphs which have components? Right now it only works on glyphs which have contours, but on glyphs with components it gives this error:File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/fontParts/base/base.py", line 90, in __get__ File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/fontParts/fontshell/glyph.py", line 106, in _get_area File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/defcon/objects/glyph.py", line 278, in _get_area File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/defcon/objects/base.py", line 313, in getRepresentation File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/defcon/tools/representations.py", line 44, in glyphAreaRepresentationFactory File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/defcon/objects/glyph.py", line 479, in draw File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/defcon/objects/glyph.py", line 491, in drawPoints File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/defcon/objects/component.py", line 185, in drawPoints File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/fontTools/pens/pointPen.py", line 222, in addComponent File "/Applications/RoboFont.app/Contents/Resources/lib/python3.7/fontTools/pens/basePen.py", line 176, in addComponent TypeError: 'NoneType' object is not subscriptable
Thanks
-
@gferreira
Thanks Gustavo, this is the solution I used too in the meanwhile.@frederik
Looking forward to get the update!
-
follow up here: https://github.com/robotools/defcon/pull/272
-
no glyphset is provided in defcon see https://github.com/robotools/defcon/blob/master/Lib/defcon/tools/representations.py#L43
a fix will follow shortly
-
hello @bahman,
I agree it would be nice if it just worked with components too. not sure at which level to add it though:
defcon
orfontParts
ormojo.roboFont
?in the meantime, you can get it to work using the DecomposePointPen:
from mojo.pens import DecomposePointPen g = CurrentGlyph() g2 = RGlyph() g.drawPoints(DecomposePointPen(g.font, g2.getPointPen())) print(g2.area)
cheers!