Browse Source

Merge pull request #217 from google/old-kerning

Don't interpolate kerning
James Godfrey-Kittle 8 years ago
parent
commit
ed2e44b673
1 changed files with 19 additions and 10 deletions
  1. 19 10
      scripts/lib/fontbuild/mix.py

+ 19 - 10
scripts/lib/fontbuild/mix.py

@@ -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)