[oltLib.builder] Fix bug in building a variation font.
The logic for building a Device subtable didn't know about the VariationIndex flavor of a ValueRecord Device subtable.
This commit is contained in:
parent
b756bcac18
commit
b44c761526
@ -479,6 +479,9 @@ def _getSinglePosValueKey(valueRecord):
|
|||||||
valueFormat, result = 0, []
|
valueFormat, result = 0, []
|
||||||
for name, value in valueRecord.__dict__.items():
|
for name, value in valueRecord.__dict__.items():
|
||||||
if isinstance(value, ot.Device):
|
if isinstance(value, ot.Device):
|
||||||
|
if value.DeltaFormat & 0x8000:
|
||||||
|
result.append((name, _makeVariationInstance(value)))
|
||||||
|
else:
|
||||||
result.append((name, _makeDeviceTuple(value)))
|
result.append((name, _makeDeviceTuple(value)))
|
||||||
else:
|
else:
|
||||||
result.append((name, value))
|
result.append((name, value))
|
||||||
@ -493,11 +496,19 @@ def _makeDeviceTuple(device):
|
|||||||
return (device.DeltaFormat, device.StartSize, device.EndSize,
|
return (device.DeltaFormat, device.StartSize, device.EndSize,
|
||||||
tuple(device.DeltaValue))
|
tuple(device.DeltaValue))
|
||||||
|
|
||||||
|
def _makeVariationInstance(device):
|
||||||
|
"""otTables.Device --> tuple, for making device tables unique"""
|
||||||
|
return (device.DeltaFormat, device.StartSize, device.EndSize)
|
||||||
|
|
||||||
def _getSinglePosValueSize(valueKey):
|
def _getSinglePosValueSize(valueKey):
|
||||||
"""Returns how many ushorts this valueKey (short form of ValueRecord) takes up"""
|
"""Returns how many ushorts this valueKey (short form of ValueRecord) takes up"""
|
||||||
count = 0
|
count = 0
|
||||||
for k in valueKey[1:]:
|
for k in valueKey[1:]:
|
||||||
if hasattr(k[1], '__len__') and len(k[1]):
|
if hasattr(k[1], '__len__') and len(k[1]):
|
||||||
|
# it is a device table key
|
||||||
|
if k[1][0] & 0x8000:
|
||||||
|
count += 3
|
||||||
|
else:
|
||||||
count += len(k[1][3]) + 3
|
count += len(k[1][3]) + 3
|
||||||
else:
|
else:
|
||||||
count += 1
|
count += 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user