[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
|
||||
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):
|
||||
pos = self.pos
|
||||
newpos = pos + 3
|
||||
@ -446,6 +453,10 @@ class OTTableWriter(object):
|
||||
def writeShort(self, 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):
|
||||
assert 0 <= value < 0x1000000
|
||||
b = struct.pack(">L", value)
|
||||
|
@ -16,6 +16,11 @@ class OTTableReaderTest(unittest.TestCase):
|
||||
self.assertEqual(reader.readLong(), -889274641)
|
||||
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):
|
||||
reader = OTTableReader(deHexStr("CA FE"))
|
||||
self.assertEqual(reader.readUShort(), 0xCAFE)
|
||||
@ -53,6 +58,11 @@ class OTTableWriterTest(unittest.TestCase):
|
||||
writer.writeLong(-12345678)
|
||||
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):
|
||||
writer = OTTableWriter(globalState={})
|
||||
writer.writeUShort(0xBEEF)
|
||||
|
@ -175,6 +175,13 @@ class UShort(IntValue):
|
||||
def write(self, writer, font, tableDict, value, repeatIndex=None):
|
||||
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):
|
||||
staticSize = 3
|
||||
def read(self, reader, font, tableDict):
|
||||
@ -464,7 +471,8 @@ class DeltaValue(BaseConverter):
|
||||
|
||||
converterMapping = {
|
||||
# type class
|
||||
"int16": Short,
|
||||
"int16": Short,
|
||||
"uint8": UInt8,
|
||||
"uint16": UShort,
|
||||
"uint24": UInt24,
|
||||
"uint32": ULong,
|
||||
|
Loading…
x
Reference in New Issue
Block a user