Skip to content

Commit f83bd7b

Browse files
committed
embed default unicode ranges directly in source
1 parent 4c32cc5 commit f83bd7b

File tree

3 files changed

+30
-29
lines changed

3 files changed

+30
-29
lines changed

setup.py

-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@
3030
keywords='ttf woff2 webfont converter splitter css',
3131
py_modules=['ttf2web'],
3232
install_requires=['fonttools'],
33-
package_data={
34-
'subsets': ['subsets'],
35-
},
3633
entry_points={
3734
'console_scripts': [
3835
'ttf2web=ttf2web:main',

subsets

-8
This file was deleted.

ttf2web.py

+30-18
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,40 @@
11
#!/bin/env python3
22

33
import os
4-
import sys
54
from fontTools.ttLib import TTFont
65
from fontTools.subset import parse_unicodes, Subsetter
76

8-
def readSubsetFile(subsetfile):
9-
subsets = {}
10-
with open(subsetfile, 'r') as subsethandle:
11-
for line in subsethandle:
12-
subname, subrange = line.split()
13-
unicodes = parse_unicodes(subrange)
14-
subsets[subname] = (subrange, unicodes)
15-
return subsets
7+
def _intoURDict(uranges):
8+
urdict = {}
9+
for urname, urange in uranges:
10+
unicodes = parse_unicodes(urange)
11+
urdict[urname] = (urange, unicodes)
12+
return urdict
1613

17-
def getDefaultSubsets():
18-
subsetfile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'subsets')
19-
return readSubsetFile(subsetfile)
14+
def readURFile(urfile):
15+
with open(urfile, 'r') as urhandle:
16+
return [line.split() for line in urhandle]
17+
18+
def getDefaultRanges():
19+
uranges = [['cyrillic', 'U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116'],
20+
['cyrillic-ext', 'U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,' +
21+
'U+A640-A69F,U+FE2E-FE2F'],
22+
['devanagari', 'U+0900-097F,U+1CD0-1CF6,U+1CF8-1CF9,U+200B-200D,' +
23+
'U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FB'],
24+
['greek', 'U+0370-03FF'],
25+
['greek-ext', 'U+1F00-1FFF'],
26+
['latin', 'U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,' +
27+
'U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215'],
28+
['latin-ext', 'U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20CF,U+2C60-2C7F,' +
29+
'U+A720-A7FF'],
30+
['vietnamese', 'U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB']]
31+
return uranges
2032

2133
class TTF2Web:
22-
def __init__(self, fontfile, subsets, assetdir="assets", fontstyle=None, fontweight=None):
34+
def __init__(self, fontfile, uranges, assetdir="assets", fontstyle=None, fontweight=None):
2335
self.fontfile = fontfile
2436
self.basename = os.path.splitext(os.path.basename(fontfile))[0]
25-
self.subsets = subsets
37+
self.urdict = _intoURDict(uranges)
2638
self.assetdir = assetdir
2739

2840
font = TTFont(fontfile, lazy=True)
@@ -58,7 +70,7 @@ def generateCss(self, woff2_list, verbosity=0):
5870
def generateWoff2(self, verbosity=0):
5971
woff2_list = []
6072
os.makedirs(self.assetdir, exist_ok=True)
61-
for subname, (subrange, unicodes) in self.subsets.items():
73+
for subname, (subrange, unicodes) in self.urdict.items():
6274
if verbosity == 2: print("Processing", subname)
6375
subs = Subsetter()
6476
font = TTFont(self.fontfile)
@@ -95,10 +107,10 @@ def main():
95107
help="print more details")
96108
args = parser.parse_args()
97109
if args.urfile:
98-
subsets = readSubsetFile(args.urfile)
110+
uranges = readURFile(args.urfile)
99111
else:
100-
subsets = getDefaultSubsets()
101-
t2w = TTF2Web(args.fontfile, subsets)
112+
uranges = getDefaultRanges()
113+
t2w = TTF2Web(args.fontfile, uranges)
102114
verbosity = 2 if args.verbose else 1
103115
woff2_list = t2w.generateWoff2(verbosity=verbosity)
104116
t2w.generateCss(woff2_list, verbosity=verbosity)

0 commit comments

Comments
 (0)