File: Substitution.py

package info (click to toggle)
python-fontfeatures 1.9.0%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,100 kB
  • sloc: python: 9,112; makefile: 22
file content (29 lines) | stat: -rw-r--r-- 955 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
"""Routines for converting Substitution rules to and from XML."""
from fontFeatures import Routine


def _toXML(self, root):
    self._makeglyphslots(root, "from", self.input)
    self._makeglyphslots(root, "to", self.replacement)
    return root


@classmethod
def fromXML(klass, el):
    """Creates a rule from a lxml Element object."""
    rule = klass(
        klass._slotArray(klass, el.find("from")),
        klass._slotArray(klass, el.find("to")),
        precontext=klass._slotArray(klass, el.find("precontext")),
        postcontext=klass._slotArray(klass, el.find("postcontext")),
        address=el.get("address"),
        languages=el.get("languages"),
        reverse=el.get("reverse"),
        flags=el.get("flags"),
    )
    if el.find("lookups"):
        rule.lookups = []
        for slot in list(el):
            routines = [Routine.fromXML(x) for x in slot.findall("routine")]
            rule.lookups.append(routines)
    return rule