File: ValueRecord.py

package info (click to toggle)
python-fontfeatures 1.9.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,096 kB
  • sloc: python: 9,112; makefile: 22
file content (25 lines) | stat: -rw-r--r-- 1,086 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
"""ttLib.ValueRecord: Converting ValueRecord rules to TrueType."""

from fontTools.ttLib.tables.otBase import ValueRecord as OTLValueRecord
from fontTools.feaLib.variableScalar import VariableScalar
from fontTools.varLib.builder import buildVarDevTable


def toOTValueRecord(self, ff, pairPosContext=False):
    """Converts the ValueRecord to an ``OTLValueRecord`` object. If the
    value record contains any variable scalars, they are saved to the
    GDEF variation store."""
    otl_value = OTLValueRecord()
    if pairPosContext and not self:
        self.XAdvance = 0
    for item in ["xPlacement", "yPlacement", "xAdvance", "yAdvance"]:
        itemvalue = getattr(self, item)
        if not itemvalue:
            continue
        item = item[0].upper() + item[1:]
        if isinstance(itemvalue, VariableScalar):
            itemvalue, index = itemvalue.add_to_variation_store(ff.varstorebuilder)
            if index != 0xFFFF:
                setattr(otl_value, item[0:4] + "Device", buildVarDevTable(index))
        setattr(otl_value, item, itemvalue)
    return otl_value