[otTables] Support uint8
type in otTables
This commit is contained in:
parent
1288a58eb1
commit
520918375f
@ -167,6 +167,13 @@ class OTTableReader(object):
|
|||||||
self.pos = newpos
|
self.pos = newpos
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def readUInt8(self):
|
||||||
|
pos = self.pos
|
||||||
|
newpos = pos + 1
|
||||||
|
value, = struct.unpack(">B", self.data[pos:newpos])
|
||||||
|
self.pos = newpos
|
||||||
|
return value
|
||||||
|
|
||||||
def readUInt24(self):
|
def readUInt24(self):
|
||||||
pos = self.pos
|
pos = self.pos
|
||||||
newpos = pos + 3
|
newpos = pos + 3
|
||||||
@ -446,6 +453,10 @@ class OTTableWriter(object):
|
|||||||
def writeShort(self, value):
|
def writeShort(self, value):
|
||||||
self.items.append(struct.pack(">h", value))
|
self.items.append(struct.pack(">h", value))
|
||||||
|
|
||||||
|
def writeUInt8(self, value):
|
||||||
|
assert 0 <= value < 256
|
||||||
|
self.items.append(struct.pack(">B", value))
|
||||||
|
|
||||||
def writeUInt24(self, value):
|
def writeUInt24(self, value):
|
||||||
assert 0 <= value < 0x1000000
|
assert 0 <= value < 0x1000000
|
||||||
b = struct.pack(">L", value)
|
b = struct.pack(">L", value)
|
||||||
|
@ -16,6 +16,11 @@ class OTTableReaderTest(unittest.TestCase):
|
|||||||
self.assertEqual(reader.readLong(), -889274641)
|
self.assertEqual(reader.readLong(), -889274641)
|
||||||
self.assertEqual(reader.pos, 4)
|
self.assertEqual(reader.pos, 4)
|
||||||
|
|
||||||
|
def test_readUInt8(self):
|
||||||
|
reader = OTTableReader(deHexStr("C3"))
|
||||||
|
self.assertEqual(reader.readUInt8(), 0xC3)
|
||||||
|
self.assertEqual(reader.pos, 1)
|
||||||
|
|
||||||
def test_readUShort(self):
|
def test_readUShort(self):
|
||||||
reader = OTTableReader(deHexStr("CA FE"))
|
reader = OTTableReader(deHexStr("CA FE"))
|
||||||
self.assertEqual(reader.readUShort(), 0xCAFE)
|
self.assertEqual(reader.readUShort(), 0xCAFE)
|
||||||
@ -53,6 +58,11 @@ class OTTableWriterTest(unittest.TestCase):
|
|||||||
writer.writeLong(-12345678)
|
writer.writeLong(-12345678)
|
||||||
self.assertEqual(writer.getData(), deHexStr("FF 43 9E B2"))
|
self.assertEqual(writer.getData(), deHexStr("FF 43 9E B2"))
|
||||||
|
|
||||||
|
def test_writeUInt8(self):
|
||||||
|
writer = OTTableWriter(globalState={})
|
||||||
|
writer.writeUInt8(0xBE)
|
||||||
|
self.assertEqual(writer.getData(), deHexStr("BE"))
|
||||||
|
|
||||||
def test_writeUShort(self):
|
def test_writeUShort(self):
|
||||||
writer = OTTableWriter(globalState={})
|
writer = OTTableWriter(globalState={})
|
||||||
writer.writeUShort(0xBEEF)
|
writer.writeUShort(0xBEEF)
|
||||||
|
@ -175,6 +175,13 @@ class UShort(IntValue):
|
|||||||
def write(self, writer, font, tableDict, value, repeatIndex=None):
|
def write(self, writer, font, tableDict, value, repeatIndex=None):
|
||||||
writer.writeUShort(value)
|
writer.writeUShort(value)
|
||||||
|
|
||||||
|
class UInt8(IntValue):
|
||||||
|
staticSize = 1
|
||||||
|
def read(self, reader, font, tableDict):
|
||||||
|
return reader.readUInt8()
|
||||||
|
def write(self, writer, font, tableDict, value, repeatIndex=None):
|
||||||
|
writer.writeUInt8(value)
|
||||||
|
|
||||||
class UInt24(IntValue):
|
class UInt24(IntValue):
|
||||||
staticSize = 3
|
staticSize = 3
|
||||||
def read(self, reader, font, tableDict):
|
def read(self, reader, font, tableDict):
|
||||||
@ -464,7 +471,8 @@ class DeltaValue(BaseConverter):
|
|||||||
|
|
||||||
converterMapping = {
|
converterMapping = {
|
||||||
# type class
|
# type class
|
||||||
"int16": Short,
|
"int16": Short,
|
||||||
|
"uint8": UInt8,
|
||||||
"uint16": UShort,
|
"uint16": UShort,
|
||||||
"uint24": UInt24,
|
"uint24": UInt24,
|
||||||
"uint32": ULong,
|
"uint32": ULong,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user