diff options
Diffstat (limited to 'lib/extensions/lettering_svg_font_to_layers.py')
| -rw-r--r-- | lib/extensions/lettering_svg_font_to_layers.py | 33 |
1 files changed, 31 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: |
