Building CFF hints is not reproducible?

Every time I export a manually hinted with autohinting disabled font as OpenType/CFF file I get ttx diffs like this, even when no changes were made to the font:

@@ -3466,7 +3467,7 @@
         </CharString>
         <CharString name="Abreve">
           103 16 -21 237 96 -76 87 328 -20 76 90 129 -20 hstemhm
-          40 110 -7 362 8 112 hintmask 1011111010000000
+          40 110 -7 362 8 112 hintmask 1101110110000000
           625 41 rmoveto
           42 -15 9 -10 20 vhcurveto
           -27 56 -23 40 -27 62 rrcurveto
@@ -3476,11 +3477,11 @@
           5 10 2 11 7 vvcurveto
           21 -23 26 -27 -34 -28 -15 -39 -6 vhcurveto
           -4 -16 -205 -422 rlineto
+          hintmask 1101111010000000
           -27 -55 -12 -34 -32 vvcurveto
           -44 43 -15 13 21 33 13 40 vhcurveto
-          hintmask 1011110110000000
-          25 -6 7 1 vvcurveto
           hintmask 1101110110000000
+          25 -6 7 1 vvcurveto
           18 43 75 29 58 vhcurveto
           hintmask 1011110110000000
           214 20 23 -46 29 -58 20 -58 rlinecurve
@@ -3560,11 +3561,8 @@
           18 43 75 29 58 vhcurveto
           hintmask 1011111010000000
           214 20 23 -46 29 -58 20 -58 rlinecurve
-          hintmask 1011111100000000
           6 -18 5 -10 -23 vvcurveto
-          -29 27 -15 28 vhcurveto
-          hintmask 1011111010000000
-          24 33 26 20 hvcurveto
+          -29 27 -15 28 24 33 26 20 vhcurveto
           -454 765 rmoveto
           -35 28 -23 32 44 29 40 33 26 -22 41 -42 -47 -22 -46 -36 vhcurveto
           hintmask 1101111010000000

This is bad for reproducible builds, and makes tracking actual changes to the exported binary unnecessarily harder. Is this kind of diff expected and is there a way to make the build reproducible?

I’ll have a look.

1 Like

Did you have a chance to look into this?

Not yet. Thanks for the reminder

Any updates? Do you need the file (this happens in one font project only, but it is the only one I have with manual PS hints).