Skip to content

Commit

Permalink
Merge pull request #217 from google/old-kerning
Browse files Browse the repository at this point in the history
Don't interpolate kerning
  • Loading branch information
jamesgk committed Dec 15, 2016
2 parents f4b0800 + 2218606 commit ed2e44b
Showing 1 changed file with 19 additions and 10 deletions.
29 changes: 19 additions & 10 deletions scripts/lib/fontbuild/mix.py
Expand Up @@ -336,13 +336,22 @@ def interpolate(a,b,v,e=0):
return le + (qe-le) * e

def interpolateKerns(kA, kB, v):
kerns = {}
for pair, val in kA.items():
kerns[pair] = interpolate(val, kB.get(pair, 0), v.x)
for pair, val in kB.items():
lerped_val = interpolate(val, kA.get(pair, 0), 1 - v.x)
if pair in kerns:
assert abs(kerns[pair] - lerped_val) < 1e-6
else:
kerns[pair] = lerped_val
return kerns
# to yield correct kerning for Roboto output, we must emulate the behavior
# of old versions of this code; namely, take the kerning values of the first
# master instead of actually interpolating.
# old code:
# https://github.com/google/roboto/blob/7f083ac31241cc86d019ea6227fa508b9fcf39a6/scripts/lib/fontbuild/mix.py
# bug:
# https://github.com/google/roboto/issues/213

#kerns = {}
#for pair, val in kA.items():
# kerns[pair] = interpolate(val, kB.get(pair, 0), v.x)
#for pair, val in kB.items():
# lerped_val = interpolate(val, kA.get(pair, 0), 1 - v.x)
# if pair in kerns:
# assert abs(kerns[pair] - lerped_val) < 1e-6
# else:
# kerns[pair] = lerped_val
#return kerns
return dict(kA)

0 comments on commit ed2e44b

Please sign in to comment.