diff --git a/src/hb-ot-cff-common.hh b/src/hb-ot-cff-common.hh index 8b6b6b26b..28728a9d7 100644 --- a/src/hb-ot-cff-common.hh +++ b/src/hb-ot-cff-common.hh @@ -42,9 +42,10 @@ template static inline const Type& StructAtOffsetOrNull(const void *P, unsigned int offset) { return offset? (* reinterpret_cast ((const char *) P + offset)): Null(Type); } -inline unsigned int calcOffSize(unsigned int offset) +inline unsigned int calcOffSize(unsigned int dataSize) { unsigned int size = 1; + unsigned int offset = dataSize + 1; while ((offset & ~0xFF) != 0) { size++; @@ -493,7 +494,7 @@ struct FDArray : CFFIndexOf if (!fdmap.excludes (i)) dictsSize += FontDict::calculate_serialized_size (fontDicts[i], opszr); - offSize_ = calcOffSize (dictsSize + 1); + offSize_ = calcOffSize (dictsSize); return CFFIndex::calculate_serialized_size (offSize_, fdCount, dictsSize); } }; diff --git a/src/hb-subset-cff1.cc b/src/hb-subset-cff1.cc index 7f1d9dc94..5285a9e3f 100644 --- a/src/hb-subset-cff1.cc +++ b/src/hb-subset-cff1.cc @@ -635,7 +635,7 @@ struct cff_subset_plan { if (!fdmap.excludes (i)) dictsSize += FontDict::calculate_serialized_size (acc.fontDicts[i], fontSzr); - offsets.FDArrayInfo.offSize = calcOffSize (dictsSize + 1); + offsets.FDArrayInfo.offSize = calcOffSize (dictsSize); final_size += CFF1Index::calculate_serialized_size (offsets.FDArrayInfo.offSize, subset_fdcount, dictsSize); } @@ -650,7 +650,7 @@ struct cff_subset_plan { subset_charstrings.push (str); dataSize += flatstr.len; } - offsets.charStringsInfo.offSize = calcOffSize (dataSize + 1); + offsets.charStringsInfo.offSize = calcOffSize (dataSize); final_size += CFF1CharStrings::calculate_serialized_size (offsets.charStringsInfo.offSize, plan->glyphs.len, dataSize); } diff --git a/src/hb-subset-cff2.cc b/src/hb-subset-cff2.cc index 193b4335d..15d2c571f 100644 --- a/src/hb-subset-cff2.cc +++ b/src/hb-subset-cff2.cc @@ -269,7 +269,7 @@ struct cff2_subset_plan { subset_charstrings.push (str); dataSize += flatstr.len; } - offsets.charStringsInfo.offSize = calcOffSize (dataSize + 1); + offsets.charStringsInfo.offSize = calcOffSize (dataSize); final_size += CFF2CharStrings::calculate_serialized_size (offsets.charStringsInfo.offSize, plan->glyphs.len, dataSize); }