aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/fonttools/fontTools/ttLib/tables/D__e_b_g.py
blob: cb1653d79d4f99ad729b25c96346459c40a4681e (plain) (blame)
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
import json
from textwrap import indent

from . import DefaultTable
from fontTools.misc.textTools import tostr


class table_D__e_b_g(DefaultTable.DefaultTable):
    def __init__(self, tag=None):
        DefaultTable.DefaultTable.__init__(self, tag)
        self.data = {}

    def decompile(self, data, ttFont):
        self.data = json.loads(data)

    def compile(self, ttFont):
        return json.dumps(self.data).encode("utf-8")

    def toXML(self, writer, ttFont):
        # make sure json indentation inside CDATA block matches XMLWriter's
        data = json.dumps(self.data, indent=len(writer.indentwhite))
        prefix = tostr(writer.indentwhite) * (writer.indentlevel + 1)
        # but don't indent the first json line so it's adjacent to `<![CDATA[{`
        cdata = indent(data, prefix, lambda ln: ln != "{\n")

        writer.begintag("json")
        writer.newline()
        writer.writecdata(cdata)
        writer.newline()
        writer.endtag("json")
        writer.newline()

    def fromXML(self, name, attrs, content, ttFont):
        if name == "json":
            self.data = json.loads("".join(content))