Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
     ]
Exemplo n.º 3
0
 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)
     ]
Exemplo n.º 4
0
 def _makeAnchorFormatA(x, y):
     return ast.Anchor(x=otRound(x), y=otRound(y))