Пример #1
0
 def parse_markClass_(self):
     assert self.is_cur_keyword_("markClass")
     location = self.cur_token_location_
     glyphs = self.parse_glyphclass_(accept_glyphname=True)
     anchor = self.parse_anchor_()
     name = self.expect_class_name_()
     self.expect_symbol_(";")
     markClass = self.doc_.markClasses.get(name)
     if markClass is None:
         markClass = ast.MarkClass(name)
         self.doc_.markClasses[name] = markClass
         self.glyphclasses_.define(name, markClass)
     mcdef = ast.MarkClassDefinition(location, markClass, anchor, glyphs)
     markClass.addDefinition(mcdef)
     return mcdef
Пример #2
0
def feaPreamble(self, ff):
    if self.is_cursive:
        return []
    sortByAnchor(self)
    if not "mark_classes_done" in ff.scratch:
        ff.scratch["mark_classes_done"] = {}
    b = feaast.Block()
    for mark in self.markslist:
        if not (self.base_name, tuple(
                mark[0])) in ff.scratch["mark_classes_done"]:
            b.statements.append(
                feaast.MarkClassDefinition(
                    feaast.MarkClass(self.base_name),
                    feaast.Anchor(*mark[1]),
                    _glyphref(mark[0]),
                ))
            ff.scratch["mark_classes_done"][(self.base_name,
                                             tuple(mark[0]))] = True
    return [b]