This repository has been archived on 2025-10-02. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
inter-font/misc/fonttools-3.34.2-psCharStrings.patch
2019-01-05 12:00:00 -08:00

37 lines
905 B
Diff

--- 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: