diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2024-12-26 05:44:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-26 05:44:41 +0100 |
| commit | 5ce92a46217f907ccc8b6594022958edefe1272e (patch) | |
| tree | cb5e5547618dff4d0e4ac50e073d5a84cef4a503 /lib | |
| parent | 72b403bd503eee4ad19897c6be7dbbf55a3ef1a9 (diff) | |
Include all files of default variant for glyph list update (#3368)
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/extensions/lettering_update_json_glyphlist.py | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/lib/extensions/lettering_update_json_glyphlist.py b/lib/extensions/lettering_update_json_glyphlist.py index d80ef9ea..6ceb0704 100644 --- a/lib/extensions/lettering_update_json_glyphlist.py +++ b/lib/extensions/lettering_update_json_glyphlist.py @@ -5,10 +5,11 @@ import json import os -import sys + +from inkex import errormsg from ..i18n import _ -from ..lettering.font_info import FontFileInfo +from ..lettering import Font from .base import InkstitchExtension @@ -19,24 +20,37 @@ class LetteringUpdateJsonGlyphlist(InkstitchExtension): def __init__(self, *args, **kwargs): InkstitchExtension.__init__(self, *args, **kwargs) self.arg_parser.add_argument("--notebook") - 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") + self.arg_parser.add_argument("-d", "--font-dir", type=str, default="", dest="font_dir") 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) + font_dir = self.options.font_dir + if not os.path.isdir(font_dir): + errormsg(_("Please verify font folder path.")) return + json_file = self._get_json_file(font_dir) + + # glyphs + font = Font(font_dir) + font._load_variants() + glyphs = font.get_variant(font.default_variant).glyphs + glyphs = list(glyphs.keys()) - glyphs = FontFileInfo(font_file).glyph_list() + if not glyphs: + return + # read json file 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 + # write data to the.json file with open(json_file, 'w', encoding="utf8") as font_data: json.dump(data, font_data, indent=4, ensure_ascii=False) + + def _get_json_file(self, font_dir): + json_file = os.path.join(font_dir, "font.json") + if not os.path.isfile(json_file): + errormsg(_("Could not find json file. Please create one with Extensions > Ink/Stitch > Font Management > Generate JSON...")) + return json_file |
