From ac2d40351b1253a3fb5ac939a8588a54bd82983f Mon Sep 17 00:00:00 2001 From: Dave Crossland Date: Wed, 10 Jun 2015 23:56:26 -0400 Subject: [PATCH] namelist.py: rewrite with fontTools --- tools/encodings/namelist.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/tools/encodings/namelist.py b/tools/encodings/namelist.py index 466af3f7c..520c9ecee 100755 --- a/tools/encodings/namelist.py +++ b/tools/encodings/namelist.py @@ -1,6 +1,5 @@ -#!/usr/bin/python -# Copyright 2010, Google Inc. -# Author: Raph Levien (@gmail.com) +#!/usr/bin/env python +# Copyright 2015, Google Inc. # Author: Dave Crossland (dave@understandinglimited.com) # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,16 +14,25 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# namelist.py: A FontForge python script for generating namelist files. +# namelist.py: A fontTools python script for generating namelist files # # Usage: # -# $ namelist.py Font.ttf NameList.nam -import fontforge, sys -def main(fontFile, namFile): - font = fontforge.open(fontFile) - font.saveNamelist(namFile) +# $ namelist.py Font.ttf > NameList.nam +import sys +from fontTools.ttLib import TTFont +from fontTools.unicode import Unicode + +def main(file_name): + excluded_chars = ["????", "SPACE", "NO-BREAK SPACE"] + font = TTFont(file_name) + for cmap in font["cmap"].tables: + char_list = sorted(cmap.cmap.items()) + for item in char_list: + item_description = Unicode[item[0]] + if item_description not in excluded_chars: + print hex(item[0]), item_description + font.close() + if __name__ == '__main__': - print "Font: " + sys.argv[1] - print "Namelist: " + sys.argv[2] - main(sys.argv[1], sys.argv[2]) + main(sys.argv[1])