summaryrefslogtreecommitdiff
path: root/lib/extensions/lettering_remove_kerning.py
blob: e7765fa298c6d4822ef454500b00316763c5d5ea (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
31
32
33
34
35
36
37
# Authors: see git history
#
# Copyright (c) 2010 Authors
# Licensed under the GNU GPL version 3.0 or later.  See the file LICENSE for details.

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("--notebook")
        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)
                if kerning:
                    kerning[0].getparent().remove(kerning[0])
                    fontfile.seek(0)
                    fontfile.write(etree.tostring(svg).decode('utf-8'))
                    fontfile.truncate()