diff options
| -rw-r--r-- | lib/extensions/lettering_svg_font_to_layers.py | 33 | ||||
| -rw-r--r-- | lib/lettering/font_info.py | 3 |
2 files changed, 34 insertions, 2 deletions
diff --git a/lib/extensions/lettering_svg_font_to_layers.py b/lib/extensions/lettering_svg_font_to_layers.py index 0bcd7003..323c941a 100644 --- a/lib/extensions/lettering_svg_font_to_layers.py +++ b/lib/extensions/lettering_svg_font_to_layers.py @@ -167,9 +167,38 @@ class LetteringSvgFontToLayers(InkstitchExtension): Converts a single glyph into a new SVG layer, applying scaling and coordinate transformation. """ unicode_char = glyph.get("unicode") - if unicode_char is None or unicodedata.category(unicode_char[0])[0] != "Z": - # all unicode with category starting with 'Z' is not rendered, no need to create layers with path.d ="" + glyph_name = glyph.get("glyph-name").split('.') + # if we are in the PUA zone, then we need to find the information in the glyph_name + if unicode_char is None or ord(unicode_char[0]) >= 57344: + if len(glyph_name) == 2: + unicode_char = glyph_name[0] + else: + return + + typographic_feature = '' + if len(glyph_name) == 2: + typographic_feature = glyph_name[1] + else: + arabic_form = glyph.get('arabic-form', None) + if arabic_form is not None and len(arabic_form) > 4: + typographic_feature = arabic_form[:4] + if typographic_feature: + typographic_feature = f".{typographic_feature}" + + layer = self.svg.add(Layer.new(f"GlyphLayer-{unicode_char}{typographic_feature}")) + + # glyph layers (except the first one) are initially hidden + if hide_layer: + layer.style["display"] = "none" + + # Using curve description in d attribute of svg:glyph + path = layer.add(PathElement()) + path.path = self.flip_cordinate_system(glyph, emsize, baseline, scale_by) + + unicode_char = glyph.get("unicode") + if unicode_char is None: + glyph_name = glyph.get("glyph-name").split('.') if unicode_char is None: if len(glyph_name) == 2: diff --git a/lib/lettering/font_info.py b/lib/lettering/font_info.py index 8bf35900..4c783531 100644 --- a/lib/lettering/font_info.py +++ b/lib/lettering/font_info.py @@ -40,9 +40,12 @@ class FontFileInfo(object): hax = float(hax) glyph_name = glyph.get('glyph-name', None) + if glyph_name is not None: glyph_name = glyph_name.split('.') if len(glyph_name) == 2: + if ord(unicode_char[0]) >= 57344 : + unicode_char = glyph_name[0] typographic_feature = glyph_name[1] unicode_char += f'.{typographic_feature}' else: |
