summaryrefslogtreecommitdiff
path: root/lib/extensions/lettering_update_json_glyphlist.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/extensions/lettering_update_json_glyphlist.py')
-rw-r--r--lib/extensions/lettering_update_json_glyphlist.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/extensions/lettering_update_json_glyphlist.py b/lib/extensions/lettering_update_json_glyphlist.py
new file mode 100644
index 00000000..4dea6d51
--- /dev/null
+++ b/lib/extensions/lettering_update_json_glyphlist.py
@@ -0,0 +1,41 @@
+# Authors: see git history
+#
+# Copyright (c) 2010 Authors
+# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
+
+import json
+import os
+import sys
+
+from ..i18n import _
+from ..lettering.font_info import FontFileInfo
+from .base import InkstitchExtension
+
+
+class LetteringUpdateJsonGlyphlist(InkstitchExtension):
+ '''
+ This extension helps font creators to generate the json file for the lettering tool
+ '''
+ def __init__(self, *args, **kwargs):
+ InkstitchExtension.__init__(self, *args, **kwargs)
+ self.arg_parser.add_argument("-f", "--font-file", type=str, default="", dest="font_file")
+ self.arg_parser.add_argument("-j", "--json-file", type=str, default="", dest="json_file")
+
+ def effect(self):
+ # file paths
+ font_file = self.options.font_file
+ json_file = self.options.json_file
+ if not os.path.isfile(font_file) or not os.path.isfile(json_file):
+ print(_("Please verify file locations."), file=sys.stderr)
+ return
+
+ glyphs = FontFileInfo(font_file).glyph_list()
+
+ with open(json_file, 'r') as font_data:
+ data = json.load(font_data)
+
+ data['glyphs'] = glyphs
+
+ # write data to font.json into the same directory as the font file
+ with open(json_file, 'w', encoding="utf8") as font_data:
+ json.dump(data, font_data, indent=4, ensure_ascii=False)