summaryrefslogtreecommitdiff
path: root/lib/extensions/lettering_remove_kerning.py
blob: aec8717ed304ceb1f8c04375bc216282e8571761 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import os

from inkex import NSS
from lxml import etree

from .base import InkstitchExtension


class LetteringRemoveKerning(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("-p", "--font-files", type=str, default="", dest="paths")

    def effect(self):
        # file paths
        paths = self.options.paths.split("|")
        for path in paths:
            if not os.path.isfile(path):
                continue
            with open(path, 'r+', encoding="utf-8") as fontfile:
                svg = etree.parse(fontfile)
                xpath = ".//svg:font[1]"
                kerning = svg.xpath(xpath, namespaces=NSS)[0]
                kerning.getparent().remove(kerning)
                fontfile.seek(0)
                fontfile.write(etree.tostring(svg).decode('utf-8'))
                fontfile.truncate()