21
21
import re
22
22
import requests
23
23
import time
24
- from typing import NamedTuple , Sequence , Tuple
24
+ from typing import NamedTuple , Set , Sequence , Tuple
25
25
from zipfile import ZipFile
26
26
27
27
38
38
flags .DEFINE_integer ("icon_limit" , 0 , "If > 0, the max # of icons to process." )
39
39
40
40
41
- _METADATA_URL = "http://fonts.google.com/metadata/icons"
41
+ _METADATA_URL = "http://fonts.google.com/metadata/icons?incomplete=1 "
42
42
43
43
44
44
class Asset (NamedTuple ):
@@ -56,6 +56,7 @@ class Icon(NamedTuple):
56
56
category : str
57
57
version : int
58
58
sizes_px : Tuple [int , ...]
59
+ stylistic_sets : Set [str ]
59
60
60
61
61
62
_ICON_ASSETS = (
@@ -114,12 +115,15 @@ def _version_key(icon: Icon):
114
115
115
116
116
117
def _icons (metadata ):
118
+ all_sets = set (metadata ["families" ])
117
119
for raw_icon in metadata ["icons" ]:
120
+ unsupported = set (raw_icon ["unsupported_families" ])
118
121
yield Icon (
119
122
raw_icon ["name" ],
120
123
raw_icon ["categories" ][0 ],
121
124
raw_icon ["version" ],
122
125
tuple (raw_icon ["sizes_px" ]),
126
+ all_sets - unsupported ,
123
127
)
124
128
125
129
@@ -228,8 +232,11 @@ def main(_):
228
232
num_changed += 1
229
233
for size_px in icon .sizes_px :
230
234
for stylistic_set in stylistic_sets :
235
+ if stylistic_set not in icon .stylistic_sets :
236
+ continue
237
+
231
238
pattern_args = _pattern_args (metadata , stylistic_set )
232
- pattern_args ["icon" ] = ( icon ,)
239
+ pattern_args ["icon" ] = icon
233
240
pattern_args ["size_px" ] = size_px
234
241
235
242
for asset in _ICON_ASSETS :
0 commit comments