X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/8df0bad21a18b56933084288320fa35e2a3fce6f..db91f942ce46e3af1420f3469a83257ef5aca4c2:/src/librarian/fonts.py diff --git a/src/librarian/fonts.py b/src/librarian/fonts.py new file mode 100644 index 0000000..adaeae4 --- /dev/null +++ b/src/librarian/fonts.py @@ -0,0 +1,38 @@ +import os +from shutil import rmtree +import subprocess +from tempfile import mkdtemp + + +def strip_font(path, chars, verbose=False): + tmpdir = mkdtemp('-librarian-epub') + try: + cwd = os.getcwd() + except OSError: + cwd = None + + os.chdir(os.path.join(os.path.dirname(os.path.realpath(__file__)), + 'font-optimizer')) + optimizer_call = [ + 'perl', 'subset.pl', '--chars', + ''.join(chars).encode('utf-8'), + path, + os.path.join(tmpdir, 'font.ttf') + ] + env = {"PERL_USE_UNSAFE_INC": "1"} + if verbose: + print("Running font-optimizer") + subprocess.check_call(optimizer_call, env=env) + else: + dev_null = open(os.devnull, 'w') + subprocess.check_call(optimizer_call, stdout=dev_null, + stderr=dev_null, env=env) + with open(os.path.join(tmpdir, 'font.ttf'), 'rb') as f: + content = f.read() + + rmtree(tmpdir) + + if cwd is not None: + os.chdir(cwd) + + return content