aboutsummaryrefslogtreecommitdiff
path: root/Tests/ttLib/tables/O_S_2f_2_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/ttLib/tables/O_S_2f_2_test.py')
-rw-r--r--Tests/ttLib/tables/O_S_2f_2_test.py105
1 files changed, 53 insertions, 52 deletions
diff --git a/Tests/ttLib/tables/O_S_2f_2_test.py b/Tests/ttLib/tables/O_S_2f_2_test.py
index 1f123090..9567b9ec 100644
--- a/Tests/ttLib/tables/O_S_2f_2_test.py
+++ b/Tests/ttLib/tables/O_S_2f_2_test.py
@@ -4,58 +4,59 @@ import unittest
class OS2TableTest(unittest.TestCase):
-
- def test_getUnicodeRanges(self):
- table = table_O_S_2f_2()
- table.ulUnicodeRange1 = 0xFFFFFFFF
- table.ulUnicodeRange2 = 0xFFFFFFFF
- table.ulUnicodeRange3 = 0xFFFFFFFF
- table.ulUnicodeRange4 = 0xFFFFFFFF
- bits = table.getUnicodeRanges()
- for i in range(127):
- self.assertIn(i, bits)
-
- def test_setUnicodeRanges(self):
- table = table_O_S_2f_2()
- table.ulUnicodeRange1 = 0
- table.ulUnicodeRange2 = 0
- table.ulUnicodeRange3 = 0
- table.ulUnicodeRange4 = 0
- bits = set(range(123))
- table.setUnicodeRanges(bits)
- self.assertEqual(table.getUnicodeRanges(), bits)
- with self.assertRaises(ValueError):
- table.setUnicodeRanges([-1, 127, 255])
-
- def test_recalcUnicodeRanges(self):
- font = TTFont()
- font['OS/2'] = os2 = newTable('OS/2')
- font['cmap'] = cmap = newTable('cmap')
- st = getTableModule('cmap').CmapSubtable.newSubtable(4)
- st.platformID, st.platEncID, st.language = 3, 1, 0
- st.cmap = {0x0041:'A', 0x03B1: 'alpha', 0x0410: 'Acyr'}
- cmap.tables = []
- cmap.tables.append(st)
- os2.setUnicodeRanges({0, 1, 9})
- # 'pruneOnly' will clear any bits for which there's no intersection:
- # bit 1 ('Latin 1 Supplement'), in this case. However, it won't set
- # bit 7 ('Greek and Coptic') despite the "alpha" character is present.
- self.assertEqual(os2.recalcUnicodeRanges(font, pruneOnly=True), {0, 9})
- # try again with pruneOnly=False: bit 7 is now set.
- self.assertEqual(os2.recalcUnicodeRanges(font), {0, 7, 9})
- # add a non-BMP char from 'Mahjong Tiles' block (bit 122)
- st.cmap[0x1F000] = 'eastwindtile'
- # the bit 122 and the special bit 57 ('Non Plane 0') are also enabled
- self.assertEqual(os2.recalcUnicodeRanges(font), {0, 7, 9, 57, 122})
-
- def test_intersectUnicodeRanges(self):
- self.assertEqual(intersectUnicodeRanges([0x0410]), {9})
- self.assertEqual(intersectUnicodeRanges([0x0410, 0x1F000]), {9, 57, 122})
- self.assertEqual(
- intersectUnicodeRanges([0x0410, 0x1F000], inverse=True),
- (set(range(123)) - {9, 57, 122}))
+ def test_getUnicodeRanges(self):
+ table = table_O_S_2f_2()
+ table.ulUnicodeRange1 = 0xFFFFFFFF
+ table.ulUnicodeRange2 = 0xFFFFFFFF
+ table.ulUnicodeRange3 = 0xFFFFFFFF
+ table.ulUnicodeRange4 = 0xFFFFFFFF
+ bits = table.getUnicodeRanges()
+ for i in range(127):
+ self.assertIn(i, bits)
+
+ def test_setUnicodeRanges(self):
+ table = table_O_S_2f_2()
+ table.ulUnicodeRange1 = 0
+ table.ulUnicodeRange2 = 0
+ table.ulUnicodeRange3 = 0
+ table.ulUnicodeRange4 = 0
+ bits = set(range(123))
+ table.setUnicodeRanges(bits)
+ self.assertEqual(table.getUnicodeRanges(), bits)
+ with self.assertRaises(ValueError):
+ table.setUnicodeRanges([-1, 127, 255])
+
+ def test_recalcUnicodeRanges(self):
+ font = TTFont()
+ font["OS/2"] = os2 = newTable("OS/2")
+ font["cmap"] = cmap = newTable("cmap")
+ st = getTableModule("cmap").CmapSubtable.newSubtable(4)
+ st.platformID, st.platEncID, st.language = 3, 1, 0
+ st.cmap = {0x0041: "A", 0x03B1: "alpha", 0x0410: "Acyr"}
+ cmap.tables = []
+ cmap.tables.append(st)
+ os2.setUnicodeRanges({0, 1, 9})
+ # 'pruneOnly' will clear any bits for which there's no intersection:
+ # bit 1 ('Latin 1 Supplement'), in this case. However, it won't set
+ # bit 7 ('Greek and Coptic') despite the "alpha" character is present.
+ self.assertEqual(os2.recalcUnicodeRanges(font, pruneOnly=True), {0, 9})
+ # try again with pruneOnly=False: bit 7 is now set.
+ self.assertEqual(os2.recalcUnicodeRanges(font), {0, 7, 9})
+ # add a non-BMP char from 'Mahjong Tiles' block (bit 122)
+ st.cmap[0x1F000] = "eastwindtile"
+ # the bit 122 and the special bit 57 ('Non Plane 0') are also enabled
+ self.assertEqual(os2.recalcUnicodeRanges(font), {0, 7, 9, 57, 122})
+
+ def test_intersectUnicodeRanges(self):
+ self.assertEqual(intersectUnicodeRanges([0x0410]), {9})
+ self.assertEqual(intersectUnicodeRanges([0x0410, 0x1F000]), {9, 57, 122})
+ self.assertEqual(
+ intersectUnicodeRanges([0x0410, 0x1F000], inverse=True),
+ (set(range(123)) - {9, 57, 122}),
+ )
if __name__ == "__main__":
- import sys
- sys.exit(unittest.main())
+ import sys
+
+ sys.exit(unittest.main())