Skip to content

Commit 604abfa

Browse files
committed
Improved subset unicodes arg to support also list of int codepoints.
1 parent 7d8a448 commit 604abfa

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

fontbro/subset.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88
def parse_unicodes(unicodes):
99
unicodes = unicodes or ""
1010
if isinstance(unicodes, (list, set, tuple)):
11+
# convert possible int codepoints to hex str
12+
for index in range(len(unicodes)):
13+
code = unicodes[index]
14+
unicodes[index] = f"{code:04X}" if isinstance(code, int) else code
1115
unicodes = ",".join(list(set(unicodes)))
16+
assert isinstance(unicodes, str)
1217
# replace possible — ‐ − (— ‐ −) with -
1318
unicodes = re.sub(r"[\—\‐\−]", "-", unicodes)
1419
# remove U+, \u, u if present

tests/test_subset.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,32 @@ def test_subset_with_unicodes_str_and_unicode_escape_prefix(self):
5454
chars_count = font.get_characters_count()
5555
self.assertEqual(chars_count, 240)
5656

57-
def test_subset_with_unicodes_list(self):
57+
def test_subset_with_unicodes_list_of_str(self):
5858
font = self._get_font("/Roboto_Mono/static/RobotoMono-Regular.ttf")
5959
chars_count = font.get_characters_count()
6060
self.assertEqual(chars_count, 875)
6161
font.subset(unicodes=["0000—007F", "0100—017F", "0180—024F"])
6262
chars_count = font.get_characters_count()
6363
self.assertEqual(chars_count, 240)
6464

65-
def test_subset_with_unicodes_list_with_u_prefix(self):
65+
def test_subset_with_unicodes_list_of_str_with_u_prefix(self):
6666
font = self._get_font("/Roboto_Mono/static/RobotoMono-Regular.ttf")
6767
chars_count = font.get_characters_count()
6868
self.assertEqual(chars_count, 875)
6969
font.subset(unicodes=["u0000—u007F", "u0100—u017F", "u0180—u024F"])
7070
chars_count = font.get_characters_count()
7171
self.assertEqual(chars_count, 240)
72+
73+
def test_subset_with_unicodes_list_of_int(self):
74+
font = self._get_font("/Roboto_Mono/static/RobotoMono-Regular.ttf")
75+
chars_count = font.get_characters_count()
76+
self.assertEqual(chars_count, 875)
77+
unicodes = [*range(65, 91)]
78+
font.subset(unicodes=unicodes)
79+
chars_count = font.get_characters_count()
80+
self.assertEqual(chars_count, len(unicodes))
81+
self.assertEqual(chars_count, 26)
82+
self.assertEqual(
83+
"".join([char["character"] for char in font.get_characters()]),
84+
"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
85+
)

0 commit comments

Comments
 (0)