Fix SVG doc length calculations

Patch from Doug Felt.
This commit is contained in:
Behdad Esfahbod 2015-02-23 14:03:06 -08:00
parent 8af5c69ea0
commit 5a7ec608c8

View File

@ -193,11 +193,12 @@ class table_S_V_G_(DefaultTable.DefaultTable):
curOffset = len(datum) + doc_index_entry_format_0Size*numEntries curOffset = len(datum) + doc_index_entry_format_0Size*numEntries
for doc, startGlyphID, endGlyphID in self.docList: for doc, startGlyphID, endGlyphID in self.docList:
docOffset = curOffset docOffset = curOffset
docLength = len(doc) docBytes = tobytes(doc, encoding="utf-8")
docLength = len(docBytes)
curOffset += docLength curOffset += docLength
entry = struct.pack(">HHLL", startGlyphID, endGlyphID, docOffset, docLength) entry = struct.pack(">HHLL", startGlyphID, endGlyphID, docOffset, docLength)
entryList.append(entry) entryList.append(entry)
docList.append(tobytes(doc, encoding="utf-8")) docList.append(docBytes)
entryList.extend(docList) entryList.extend(docList)
svgDocData = bytesjoin(entryList) svgDocData = bytesjoin(entryList)
@ -239,11 +240,12 @@ class table_S_V_G_(DefaultTable.DefaultTable):
curOffset = SVG_format_1Size + doc_index_entry_format_0Size*numEntries curOffset = SVG_format_1Size + doc_index_entry_format_0Size*numEntries
for doc, startGlyphID, endGlyphID in self.docList: for doc, startGlyphID, endGlyphID in self.docList:
docOffset = curOffset docOffset = curOffset
docLength = len(doc) docBytes = tobytes(doc, encoding="utf-8")
docLength = len(docBytes)
curOffset += docLength curOffset += docLength
entry = struct.pack(">HHLL", startGlyphID, endGlyphID, docOffset, docLength) entry = struct.pack(">HHLL", startGlyphID, endGlyphID, docOffset, docLength)
dataList.append(entry) dataList.append(entry)
docList.append(tobytes(doc, encoding="utf-8")) docList.append(docBytes)
dataList.extend(docList) dataList.extend(docList)
data = bytesjoin(dataList) data = bytesjoin(dataList)
return data return data