use 2-byte offset instead of 4-byte for local subrs
authorMichiharu Ariza <ariza@adobe.com>
Thu, 15 Nov 2018 23:41:46 +0000 (15:41 -0800)
committerMichiharu Ariza <ariza@adobe.com>
Thu, 15 Nov 2018 23:41:46 +0000 (15:41 -0800)
more than enough since local subrs immediately follow its corresponding private dict, as the result 2-byte redunction for each font dict with local subrs
updated api test expected subset fonts accordingly

src/hb-subset-cff-common.hh
test/api/fonts/AdobeVFPrototype.abc.otf
test/api/fonts/AdobeVFPrototype.ac.nohints.otf
test/api/fonts/AdobeVFPrototype.ac.otf
test/api/fonts/SourceHanSans-Regular.41,4C2E.nohints.otf
test/api/fonts/SourceHanSans-Regular.41,4C2E.otf
test/api/fonts/SourceSansPro-Regular.abc.otf
test/api/fonts/SourceSansPro-Regular.ac.nohints.otf
test/api/fonts/SourceSansPro-Regular.ac.otf
test/api/fonts/cff1_seac.C0.otf

index 55b33b1..d5f7ec1 100644 (file)
@@ -258,7 +258,7 @@ struct CFFPrivateDict_OpSerializer : OpSerializer
       if (desubroutinize || (subrsOffset == 0))
         return_trace (true);
       else
-        return_trace (FontDict::serialize_offset4_op (c, opstr.op, subrsOffset));
+        return_trace (FontDict::serialize_offset2_op (c, opstr.op, subrsOffset));
     }
     else
       return_trace (copy_opstr (c, opstr));
@@ -274,7 +274,7 @@ struct CFFPrivateDict_OpSerializer : OpSerializer
       if (desubroutinize || !has_localsubr)
         return 0;
       else
-        return OpCode_Size (OpCode_longintdict) + 4 + OpCode_Size (opstr.op);
+        return OpCode_Size (OpCode_shortint) + 2 + OpCode_Size (opstr.op);
     }
     else
       return opstr.str.len;
index e21d87f..cc47708 100644 (file)
Binary files a/test/api/fonts/AdobeVFPrototype.abc.otf and b/test/api/fonts/AdobeVFPrototype.abc.otf differ
index c0d034a..935bdbf 100644 (file)
Binary files a/test/api/fonts/AdobeVFPrototype.ac.nohints.otf and b/test/api/fonts/AdobeVFPrototype.ac.nohints.otf differ
index c5080fc..beab7d5 100644 (file)
Binary files a/test/api/fonts/AdobeVFPrototype.ac.otf and b/test/api/fonts/AdobeVFPrototype.ac.otf differ
index e054826..ec39590 100644 (file)
Binary files a/test/api/fonts/SourceHanSans-Regular.41,4C2E.nohints.otf and b/test/api/fonts/SourceHanSans-Regular.41,4C2E.nohints.otf differ
index 7b88702..2c6cd9a 100644 (file)
Binary files a/test/api/fonts/SourceHanSans-Regular.41,4C2E.otf and b/test/api/fonts/SourceHanSans-Regular.41,4C2E.otf differ
index 4db5c79..7f51bd3 100644 (file)
Binary files a/test/api/fonts/SourceSansPro-Regular.abc.otf and b/test/api/fonts/SourceSansPro-Regular.abc.otf differ
index 3ad2bb4..14a3a5f 100644 (file)
Binary files a/test/api/fonts/SourceSansPro-Regular.ac.nohints.otf and b/test/api/fonts/SourceSansPro-Regular.ac.nohints.otf differ
index a22b157..12d6d0f 100644 (file)
Binary files a/test/api/fonts/SourceSansPro-Regular.ac.otf and b/test/api/fonts/SourceSansPro-Regular.ac.otf differ
index 0b69513..aed2fdd 100644 (file)
Binary files a/test/api/fonts/cff1_seac.C0.otf and b/test/api/fonts/cff1_seac.C0.otf differ