summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorRasmus Andersson <rasmus@notion.se>2017-09-25 05:38:30 +0300
committerRasmus Andersson <rasmus@notion.se>2017-09-25 05:38:30 +0300
commitb47572cc059881874cb1e4229748fea4c6eb84c2 (patch)
treec03d7216b36077e25ff429735e5741190ee35730 /misc
parentd513973d3c518828de8016a65f948d4517f04f8e (diff)
downloadinter-b47572cc059881874cb1e4229748fea4c6eb84c2.tar.xz
Improve misc/gen-glyphinfo.py and gen-metrics-and-svgs.py by ignoring glyphs listed in "delete" of fontbuild.cfg
Diffstat (limited to 'misc')
-rwxr-xr-xmisc/gen-glyphinfo.py21
-rwxr-xr-xmisc/gen-metrics-and-svgs.py31
2 files changed, 42 insertions, 10 deletions
diff --git a/misc/gen-glyphinfo.py b/misc/gen-glyphinfo.py
index 0a426389b..4fdf73fae 100755
--- a/misc/gen-glyphinfo.py
+++ b/misc/gen-glyphinfo.py
@@ -9,6 +9,10 @@ from argparse import ArgumentParser
from robofab.objects.objectsRF import OpenFont
from collections import OrderedDict
from unicode_util import parseUnicodeDataFile
+from ConfigParser import RawConfigParser
+
+
+BASEDIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
# Regex matching "default" glyph names, like "uni2043" and "u01C5"
@@ -156,6 +160,17 @@ def main():
args = argparser.parse_args()
markLibKey = 'com.typemytype.robofont.mark'
+ srcDir = os.path.join(BASEDIR, 'src')
+
+ # load fontbuild config
+ config = RawConfigParser(dict_type=OrderedDict)
+ configFilename = os.path.join(srcDir, 'fontbuild.cfg')
+ config.read(configFilename)
+ deleteNames = set()
+ for sectionName, value in config.items('glyphs'):
+ if sectionName == 'delete':
+ deleteNames = set(value.split())
+
fontPaths = []
for fontPath in args.fontPaths:
fontPath = fontPath.rstrip('/ ')
@@ -166,8 +181,8 @@ def main():
fonts = [OpenFont(fontPath) for fontPath in args.fontPaths]
- agl = loadAGL('src/glyphlist.txt') # { 2126: 'Omega', ... }
- diacriticComps = loadGlyphCompositions('src/diacritics.txt')
+ agl = loadAGL(os.path.join(srcDir, 'glyphlist.txt')) # { 2126: 'Omega', ... }
+ diacriticComps = loadGlyphCompositions(os.path.join(srcDir, 'diacritics.txt'))
uc2names, name2ucs, allNames = loadLocalNamesDB(fonts, agl, diacriticComps)
ucd = {}
@@ -189,6 +204,8 @@ def main():
for font in fonts:
for name, v in glyphorder.iteritems():
+ if name in deleteNames:
+ continue
if name in visitedGlyphNames:
continue
diff --git a/misc/gen-metrics-and-svgs.py b/misc/gen-metrics-and-svgs.py
index 51ea0d510..ac100eb1c 100755
--- a/misc/gen-metrics-and-svgs.py
+++ b/misc/gen-metrics-and-svgs.py
@@ -9,6 +9,10 @@ from math import ceil, floor
from robofab.objects.objectsRF import OpenFont
from collections import OrderedDict
from fontbuild.generateGlyph import generateGlyph
+from ConfigParser import RawConfigParser
+
+
+BASEDIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
font = None # RFont
ufopath = ''
@@ -337,6 +341,17 @@ argparser.add_argument('glyphs', metavar='<glyphname>', type=str, nargs='*',
args = argparser.parse_args()
+srcDir = os.path.join(BASEDIR, 'src')
+
+# load fontbuild config
+config = RawConfigParser(dict_type=OrderedDict)
+configFilename = os.path.join(srcDir, 'fontbuild.cfg')
+config.read(configFilename)
+deleteNames = set()
+for sectionName, value in config.items('glyphs'):
+ if sectionName == 'delete':
+ deleteNames = set(value.split())
+
if len(args.scale):
scale = float(args.scale)
@@ -345,26 +360,26 @@ ufopath = args.ufopath.rstrip('/')
font = OpenFont(ufopath)
effectiveAscender = max(font.info.ascender, font.info.unitsPerEm)
-srcdir = os.path.abspath(os.path.join(__file__, '..', '..'))
-
# print('\n'.join(font.keys()))
# sys.exit(0)
-agl = loadAGL(os.path.join(srcdir, 'src', 'glyphlist.txt')) # { 2126: 'Omega', ... }
+agl = loadAGL(os.path.join(srcDir, 'glyphlist.txt')) # { 2126: 'Omega', ... }
+
+deleteNames.add('.notdef')
+deleteNames.add('.null')
-ignoreGlyphs = set(['.notdef', '.null'])
glyphnames = args.glyphs if len(args.glyphs) else font.keys()
glyphnameSet = set(glyphnames)
generatedGlyphNames = set()
-diacriticComps = loadGlyphCompositions(os.path.join(srcdir, 'src', 'diacritics.txt'))
+diacriticComps = loadGlyphCompositions(os.path.join(srcDir, 'diacritics.txt'))
for glyphName, comp in diacriticComps.iteritems():
if glyphName not in glyphnameSet:
generatedGlyphNames.add(glyphName)
glyphnames.append(glyphName)
glyphnameSet.add(glyphName)
-glyphnames = [gn for gn in glyphnames if gn not in ignoreGlyphs]
+glyphnames = [gn for gn in glyphnames if gn not in deleteNames]
glyphnames.sort()
nameToIdMap, idToNameMap = genGlyphIDs(glyphnames)
@@ -387,7 +402,7 @@ for glyphname in glyphnames:
svgtext = '\n'.join(svgLines)
# print(svgtext)
-glyphsHtmlFilename = os.path.join(srcdir, 'docs', 'glyphs', 'index.html')
+glyphsHtmlFilename = os.path.join(BASEDIR, 'docs', 'glyphs', 'index.html')
html = ''
with open(glyphsHtmlFilename, 'r') as f:
@@ -425,7 +440,7 @@ with open(glyphsHtmlFilename, 'w') as f:
f.write(html)
# JSON
-jsonFilename = os.path.join(srcdir, 'docs', 'glyphs', 'metrics.json')
+jsonFilename = os.path.join(BASEDIR, 'docs', 'glyphs', 'metrics.json')
jsonFilenameRel = os.path.relpath(jsonFilename, os.getcwd())
print('write', jsonFilenameRel)
with open(jsonFilename, 'w') as f: