def test_write_truncated(self): writer = OTTableWriter() with CapturingLogHandler(otConverters.log, "WARNING") as captor: self.converter.write(writer, self.font, {}, "A" * 80) self.assertEqual(writer.getData(), b"A" * 64) self.assertIn('truncating overlong "' + "A" * 80 + '" to 64 bytes', [r.msg for r in captor.records])
def test_write_replace_not_ascii(self): writer = OTTableWriter() with CapturingLogHandler(otConverters.log, "WARNING") as captor: self.converter.write(writer, self.font, {}, "Hello ☃") self.assertEqual(writer.getData(), b"Hello ?" + 57 * b"\0") self.assertIn('replacing non-ASCII characters in "Hello ☃"', [r.msg for r in captor.records])
def test_write_replace_not_ascii(self): writer = OTTableWriter() with CapturingLogHandler(otConverters.log, "WARNING") as captor: self.converter.write(writer, self.font, {}, "Hello ☃") self.assertEqual(writer.getData(), b"Hello ?" + 57 * b"\0") self.assertIn('replacing non-ASCII characters in "Hello ☃"', [r.msg for r in captor.records])
def test_write_truncated(self): writer = OTTableWriter() with CapturingLogHandler(otConverters.log, "WARNING") as captor: self.converter.write(writer, self.font, {}, "A" * 80) self.assertEqual(writer.getData(), b"A" * 64) self.assertIn('truncating overlong "' + "A" * 80 + '" to 64 bytes', [r.msg for r in captor.records])
def test_writeFormat0(self): writer = OTTableWriter() font = FakeFont(".notdef A B C".split()) self.converter.write(writer, font, {}, { ".notdef": ".notdef", "A": "C", "B": "C", "C": "A" }) self.assertEqual(writer.getData(), deHexStr("0000 0000 0003 0003 0001"))
def test_writeFormat0(self): writer = OTTableWriter() font = FakeFont(".notdef A B C".split()) self.converter.write(writer, font, {}, { ".notdef": ".notdef", "A": "C", "B": "C", "C": "A" }) self.assertEqual(writer.getData(), deHexStr("0000 0000 0003 0003 0001"))
def test_writeFormat8(self): writer = OTTableWriter() font = FakeFont(".notdef A B C D E F G H".split()) self.converter.write(writer, font, {}, { "B": "B", "C": "A", "D": "B", "E": "C", "F": "B", "G": "A", }) self.assertEqual(writer.getData(), deHexStr( "0008 " # format=8 "0002 " # firstGlyph=B "0006 " # glyphCount=6 "0002 0001 0002 0003 0002 0001" # valueArray=[B, A, B, C, B, A] ))
def test_writeFormat8(self): writer = OTTableWriter() font = FakeFont(".notdef A B C D E F G H".split()) self.converter.write(writer, font, {}, { "B": "B", "C": "A", "D": "B", "E": "C", "F": "B", "G": "A", }) self.assertEqual( writer.getData(), deHexStr( "0008 " # format=8 "0002 " # firstGlyph=B "0006 " # glyphCount=6 "0002 0001 0002 0003 0002 0001" # valueArray=[B, A, B, C, B, A] ))
def test_writeFormat6(self): writer = OTTableWriter() font = FakeFont(".notdef A B C D E".split()) self.converter.write(writer, font, {}, { "A": "C", "C": "B", "D": "D", "E": "E", }) self.assertEqual(writer.getData(), deHexStr( "0006 " # format=6 "0004 " # binSrchHeader.unitSize=4 "0004 " # binSrchHeader.nUnits=4 "0010 " # binSrchHeader.searchRange=16 "0002 " # binSrchHeader.entrySelector=2 "0000 " # binSrchHeader.rangeShift=0 "0001 0003 " # entries[0].glyph=A, .value=C "0003 0002 " # entries[1].glyph=C, .value=B "0004 0004 " # entries[2].glyph=D, .value=D "0005 0005 " # entries[3].glyph=E, .value=E "FFFF 0000 " # entries[4]=<END> ))
def test_writeFormat2(self): writer = OTTableWriter() font = FakeFont(".notdef A B C D E F G H".split()) self.converter.write(writer, font, {}, { "B": "C", "C": "C", "D": "C", "E": "C", "G": "A", "H": "A", }) self.assertEqual(writer.getData(), deHexStr( "0002 " # format=2 "0006 " # binSrchHeader.unitSize=6 "0002 " # binSrchHeader.nUnits=2 "000C " # binSrchHeader.searchRange=12 "0001 " # binSrchHeader.entrySelector=1 "0000 " # binSrchHeader.rangeShift=0 "0005 0002 0003 " # segments[0].lastGlyph=E, firstGlyph=B, value=C "0008 0007 0001 " # segments[1].lastGlyph=H, firstGlyph=G, value=A "FFFF FFFF 0000 " # segments[2]=<END> ))
def test_writeFormat6(self): writer = OTTableWriter() font = FakeFont(".notdef A B C D E".split()) self.converter.write(writer, font, {}, { "A": "C", "C": "B", "D": "D", "E": "E", }) self.assertEqual( writer.getData(), deHexStr("0006 " # format=6 "0004 " # binSrchHeader.unitSize=4 "0004 " # binSrchHeader.nUnits=4 "0010 " # binSrchHeader.searchRange=16 "0002 " # binSrchHeader.entrySelector=2 "0000 " # binSrchHeader.rangeShift=0 "0001 0003 " # entries[0].glyph=A, .value=C "0003 0002 " # entries[1].glyph=C, .value=B "0004 0004 " # entries[2].glyph=D, .value=D "0005 0005 " # entries[3].glyph=E, .value=E "FFFF 0000 " # entries[4]=<END> ))
def test_writeFormat2(self): writer = OTTableWriter() font = FakeFont(".notdef A B C D E F G H".split()) self.converter.write(writer, font, {}, { "B": "C", "C": "C", "D": "C", "E": "C", "G": "A", "H": "A", }) self.assertEqual( writer.getData(), deHexStr( "0002 " # format=2 "0006 " # binSrchHeader.unitSize=6 "0002 " # binSrchHeader.nUnits=2 "000C " # binSrchHeader.searchRange=12 "0001 " # binSrchHeader.entrySelector=1 "0000 " # binSrchHeader.rangeShift=0 "0005 0002 0003 " # segments[0].lastGlyph=E, firstGlyph=B, value=C "0008 0007 0001 " # segments[1].lastGlyph=H, firstGlyph=G, value=A "FFFF FFFF 0000 " # segments[2]=<END> ))
def test_write(self): writer = OTTableWriter() self.converter.write(writer, self.font, {}, "Hello world") self.assertEqual(writer.getData(), b"Hello world" + 53 * b"\0")
def test_write(self): writer = OTTableWriter() self.converter.write(writer, self.makeFont(), {}, 0x123) self.assertEqual(writer.getData(), deHexStr("0123"))
def test_write(self): writer = OTTableWriter(globalState={}) self.converter.write(writer, self.font, {}, "B") self.assertEqual(writer.getData(), deHexStr("0002"))
def test_write(self): writer = OTTableWriter() self.converter.write(writer, self.makeFont(), {}, 0x123) self.assertEqual(writer.getData(), deHexStr("0123"))
def test_write(self): writer = OTTableWriter() self.converter.write(writer, self.font, {}, "B") self.assertEqual(writer.getData(), deHexStr("0002"))
def test_writeShort(self): writer = OTTableWriter(globalState={}) writer.writeShort(-12345) self.assertEqual(writer.getData(), deHexStr("CF C7"))
def test_write(self): writer = OTTableWriter() self.converter.write(writer, self.font, {}, -16777213) self.assertEqual(writer.getData(), deHexStr("FF000003"))
def test_writeUInt8(self): writer = OTTableWriter() writer.writeUInt8(0xBE) self.assertEqual(writer.getData(), deHexStr("BE"))
def test_write(self): writer = OTTableWriter() self.converter.write(writer, self.font, {}, "Hello world") self.assertEqual(writer.getData(), b"Hello world" + 53 * b"\0")
def test_writeUInt24(self): writer = OTTableWriter(globalState={}) writer.writeUInt24(0xBEEF77) self.assertEqual(writer.getData(), deHexStr("BE EF 77"))
def test_writeULong(self): writer = OTTableWriter(globalState={}) writer.writeULong(0xBEEFCAFE) self.assertEqual(writer.getData(), deHexStr("BE EF CA FE"))
def test_writeLong(self): writer = OTTableWriter(globalState={}) writer.writeLong(-12345678) self.assertEqual(writer.getData(), deHexStr("FF 43 9E B2"))
def test_writeUInt8(self): writer = OTTableWriter() writer.writeUInt8(0xBE) self.assertEqual(writer.getData(), deHexStr("BE"))
def test_write(self): writer = OTTableWriter() self.converter.write(writer, self.font, {}, -16777213) self.assertEqual(writer.getData(), deHexStr("FF000003"))
def test_writeUShort(self): writer = OTTableWriter(globalState={}) writer.writeUShort(0xBEEF) self.assertEqual(writer.getData(), deHexStr("BE EF"))