def _defineMarkClass(self, glyphName, x, y, className, markClasses): anchor = ast.Anchor(x=otRound(x), y=otRound(y)) markClass = markClasses.get(className) if markClass is None: markClass = ast.MarkClass(className) markClasses[className] = markClass else: if glyphName in markClass.glyphs: mcdef = markClass.glyphs[glyphName] if self._anchorsAreEqual(anchor, mcdef.anchor): self.log.debug( "Glyph %s already defined in markClass @%s", glyphName, className, ) return None else: # same mark glyph defined with different anchors for the # same markClass; make a new unique markClass definition newClassName = ast.makeFeaClassName(className, markClasses) markClass = ast.MarkClass(newClassName) markClasses[newClassName] = markClass glyphName = ast.GlyphName(glyphName) mcdef = ast.MarkClassDefinition(markClass, anchor, glyphName) markClass.addDefinition(mcdef) return mcdef
def _marksAsAST(self): return [ [ (ast.Anchor(x=otRound(anchor.x), y=otRound(anchor.y)), anchor.markClass) for anchor in sorted(component, key=lambda a: a.name) ] for component in self.marks ]
def _marksAsAST(self): return [ ( ast.Anchor(x=otRound(anchor.x), y=otRound(anchor.y)), anchor.markClass, ) for anchor in sorted(self.marks, key=lambda a: a.name) ]
def _makeAnchorFormatA(x, y): return ast.Anchor(x=otRound(x), y=otRound(y))