diff options
Diffstat (limited to 'misc/fonttools-3.34.2-psCharStrings.patch')
-rw-r--r-- | misc/fonttools-3.34.2-psCharStrings.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/misc/fonttools-3.34.2-psCharStrings.patch b/misc/fonttools-3.34.2-psCharStrings.patch new file mode 100644 index 000000000..7be387201 --- /dev/null +++ b/misc/fonttools-3.34.2-psCharStrings.patch @@ -0,0 +1,37 @@ +--- a/fontTools/misc/psCharStrings.py ++++ b/fontTools/misc/psCharStrings.py +@@ -223,9 +223,16 @@ + else: + return b"\xff" + pack(">l", value) # encode the entire fixed point value + ++ ++realZeroBytes = bytechr(30) + bytechr(0xf) ++ + def encodeFloat(f): + # For CFF only, used in cffLib +- s = str(f).upper() ++ if f == 0.0: # 0.0 == +0.0 == -0.0 ++ return realZeroBytes ++ # Note: 14 decimal digits seems to be the limitation for CFF real numbers ++ # in macOS. However, we use 8 here to match the implementation of AFDKO. ++ s = "%.8G" % f + if s[:2] == "0.": + s = s[1:] + elif s[:3] == "-0.": +@@ -234,9 +241,13 @@ + while s: + c = s[0] + s = s[1:] +- if c == "E" and s[:1] == "-": +- s = s[1:] +- c = "E-" ++ if c == "E": ++ c2 = s[:1] ++ if c2 == "-": ++ s = s[1:] ++ c = "E-" ++ elif c2 == "+": ++ s = s[1:] + nibbles.append(realNibblesDict[c]) + nibbles.append(0xf) + if len(nibbles) % 2: |