mirror of
https://github.com/rsms/inter.git
synced 2024-12-12 15:22:36 +03:00
46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf8
|
|
__doc__ = """
|
|
Rounds all kerning values in a Glyphs file to integers
|
|
"""
|
|
import os, sys, re
|
|
|
|
pat = re.compile(r'(.*=\s*)(\-?\d[\d\.]*);\n')
|
|
file = sys.argv[1]
|
|
outlines = []
|
|
count = 0
|
|
|
|
with open(file, "r") as f:
|
|
print(f)
|
|
level = 0
|
|
done = False
|
|
for lineno, line in enumerate(f):
|
|
if not done:
|
|
if level == 0:
|
|
if line == "kerning = {\n":
|
|
print("BEGIN at line", lineno)
|
|
level = 1
|
|
else:
|
|
if line.find("{") != -1:
|
|
level += 1
|
|
if line.find("}") != -1:
|
|
level -= 1
|
|
m = pat.match(line)
|
|
if m is not None:
|
|
val = m.group(2)
|
|
val2 = str(int(float(val)))
|
|
line = m.group(1) + val2 + ";\n"
|
|
if val != val2:
|
|
count += 1
|
|
if level == 0:
|
|
print("END at line", lineno)
|
|
done = True
|
|
outlines.append(line)
|
|
|
|
if count == 0:
|
|
print("all kerning values in %s are integers (no change)" % file)
|
|
else:
|
|
print("rounded %r kerning values in %s" % (count, file))
|
|
with open(file, "w") as f:
|
|
f.write("".join(outlines))
|