kopia lustrzana https://github.com/inkstitch/inkstitch
split font files (#1929)
rodzic
7aee0979be
commit
971c921708
|
@ -160,6 +160,9 @@ class Font(object):
|
||||||
for variant in FontVariant.VARIANT_TYPES:
|
for variant in FontVariant.VARIANT_TYPES:
|
||||||
if os.path.isfile(os.path.join(self.path, "%s.svg" % variant)):
|
if os.path.isfile(os.path.join(self.path, "%s.svg" % variant)):
|
||||||
font_variants.append(variant)
|
font_variants.append(variant)
|
||||||
|
elif (os.path.isdir(os.path.join(self.path, "%s" % variant)) and
|
||||||
|
[svg for svg in os.listdir(os.path.join(self.path, "%s" % variant)) if svg.endswith('.svg')]):
|
||||||
|
font_variants.append(variant)
|
||||||
if not font_variants:
|
if not font_variants:
|
||||||
raise FontError(_("The font '%s' has no variants.") % self.name)
|
raise FontError(_("The font '%s' has no variants.") % self.name)
|
||||||
return font_variants
|
return font_variants
|
||||||
|
|
|
@ -60,19 +60,30 @@ class FontVariant(object):
|
||||||
self._load_glyphs()
|
self._load_glyphs()
|
||||||
|
|
||||||
def _load_glyphs(self):
|
def _load_glyphs(self):
|
||||||
svg_path = os.path.join(self.path, "%s.svg" % self.variant)
|
variant_file_paths = self._get_variant_file_paths()
|
||||||
svg = inkex.load_svg(svg_path).getroot()
|
for svg_path in variant_file_paths:
|
||||||
svg = self._apply_transforms(svg)
|
svg = inkex.load_svg(svg_path).getroot()
|
||||||
|
svg = self._apply_transforms(svg)
|
||||||
|
|
||||||
glyph_layers = svg.xpath(".//svg:g[starts-with(@inkscape:label, 'GlyphLayer-')]", namespaces=inkex.NSS)
|
glyph_layers = svg.xpath(".//svg:g[starts-with(@inkscape:label, 'GlyphLayer-')]", namespaces=inkex.NSS)
|
||||||
for layer in glyph_layers:
|
for layer in glyph_layers:
|
||||||
self._clean_group(layer)
|
self._clean_group(layer)
|
||||||
layer.attrib[INKSCAPE_LABEL] = layer.attrib[INKSCAPE_LABEL].replace("GlyphLayer-", "", 1)
|
layer.attrib[INKSCAPE_LABEL] = layer.attrib[INKSCAPE_LABEL].replace("GlyphLayer-", "", 1)
|
||||||
glyph_name = layer.attrib[INKSCAPE_LABEL]
|
glyph_name = layer.attrib[INKSCAPE_LABEL]
|
||||||
try:
|
try:
|
||||||
self.glyphs[glyph_name] = Glyph(layer)
|
self.glyphs[glyph_name] = Glyph(layer)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _get_variant_file_paths(self):
|
||||||
|
file_paths = []
|
||||||
|
direct_path = os.path.join(self.path, "%s.svg" % self.variant)
|
||||||
|
if os.path.isfile(direct_path):
|
||||||
|
file_paths.append(direct_path)
|
||||||
|
elif os.path.isdir(os.path.join(self.path, "%s" % self.variant)):
|
||||||
|
path = os.path.join(self.path, "%s" % self.variant)
|
||||||
|
file_paths.extend([os.path.join(path, svg) for svg in os.listdir(path) if svg.endswith('.svg')])
|
||||||
|
return file_paths
|
||||||
|
|
||||||
def _clean_group(self, group):
|
def _clean_group(self, group):
|
||||||
# We'll repurpose the layer as a container group labelled with the
|
# We'll repurpose the layer as a container group labelled with the
|
||||||
|
|
Ładowanie…
Reference in New Issue