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"))
Beispiel #15
0
 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"))
Beispiel #20
0
 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"))
Beispiel #25
0
 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"))