Skip unknown characters
diff --git a/pyotlss.py b/pyotlss.py
index 672ebcd..837d25e 100755
--- a/pyotlss.py
+++ b/pyotlss.py
@@ -788,21 +788,26 @@
names = font.getGlyphNames()
# Convert to glyph names
glyph_names = []
+ cmap_tables = None
for g in glyphs:
if g in names:
glyph_names.append (g)
continue
if g[:3] == 'uni':
- u = int (g[3:], 16)
- cmap = font['cmap']
+ if not cmap_tables:
+ cmap = font['cmap']
+ cmap_tables = [t for t in cmap.tables if t.platformID == 3 and t.platEncID in [1, 10]]
+ del cmap
found = False
- for table in [t for t in cmap.tables if t.platformID == 3 and t.platEncID in [1, 10]]:
+ u = int (g[3:], 16)
+ for table in cmap_tables:
if u in table.cmap:
glyph_names.append (table.cmap[u])
found = True
break
if not found:
- raise Exception ("No glyph for Unicode value %s" % g)
+ if verbose:
+ print ("No glyph for Unicode value %s; skipping." % g)
continue
if g[:3] == 'gid':
g = g[3:]
@@ -812,6 +817,7 @@
glyph_names.append (font.getGlyphName (int (g)))
except ValueError:
raise Exception ("Invalid glyph identifier %s" % g)
+ del cmap_tables
glyphs = glyph_names
del glyph_names
lapse ("compile glyph list")