[mtiLib] Port SinglePos to otlLib

This commit is contained in:
Behdad Esfahbod 2016-01-22 13:44:27 +01:00
parent 59ee0618d7
commit f8e3ea08fb

View File

@ -231,7 +231,7 @@ def parseLigature(lines, font, _lookupMap=None):
mapping[tuple(line[1:])] = line[0] mapping[tuple(line[1:])] = line[0]
return builder.buildLigatureSubst(mapping) return builder.buildLigatureSubst(mapping)
def parseSinglePos(self, lines, font, _lookupMap=None): def parseSinglePos(lines, font, _lookupMap=None):
values = {} values = {}
for line in lines: for line in lines:
assert len(line) == 3, line assert len(line) == 3, line
@ -243,18 +243,7 @@ def parseSinglePos(self, lines, font, _lookupMap=None):
values[g] = ValueRecord() values[g] = ValueRecord()
assert not hasattr(values[g], w), (g, w) assert not hasattr(values[g], w), (g, w)
setattr(values[g], w, v) setattr(values[g], w, v)
self.Coverage = makeCoverage(values.keys(), font) return builder.buildSinglePosSubtable(values, font.getReverseGlyphMap())
values = [values[k] for k in self.Coverage.glyphs]
self.ValueFormat = 0
for v in values:
self.ValueFormat |= v.getFormat()
if all(v == values[0] for v in values):
self.Format = 1
self.Value = values[0]
else:
self.Format = 2
self.Value = values
self.ValueCount = len(self.Value)
def parsePair(self, lines, font, _lookupMap=None): def parsePair(self, lines, font, _lookupMap=None):
self.ValueFormat1 = self.ValueFormat2 = 0 self.ValueFormat1 = self.ValueFormat2 = 0
@ -809,7 +798,7 @@ def parseLookup(lines, tableTag, font, lookupMap=None):
'reversechained':(8, parseReverseChainedSubst), 'reversechained':(8, parseReverseChainedSubst),
}, },
'GPOS': { 'GPOS': {
'single': (1, parseSinglePos), 'single': (0, parseSinglePos),
'pair': (2, parsePair), 'pair': (2, parsePair),
'kernset': (2, parseKernset), 'kernset': (2, parseKernset),
'cursive': (0, parseCursive), 'cursive': (0, parseCursive),