Compare commits

...

2 Commits

Author SHA1 Message Date
kunfei
1a0f82be20
Merge 5a289b64b7 into dc9ce168c1 2024-06-19 16:06:41 +08:00
Antecer
dc9ce168c1 修复TTF字体loca表识别错误的bug 2024-06-18 17:07:01 +08:00

View File

@ -648,6 +648,8 @@ public class QueryTTF {
var reader = new BufferReader(buffer, dataTable.offset);
if (head.indexToLocFormat == 0) {
loca = reader.ReadUInt16Array(dataTable.length / 2);
// 当loca表数据长度为Uint16时,需要翻倍
for (var i = 0; i < loca.length; i++) loca[i] *= 2;
} else {
loca = reader.ReadInt32Array(dataTable.length / 4);
}
@ -781,11 +783,14 @@ public class QueryTTF {
var glyph = new GlyfLayout();
reader.position(offset);
glyph.numberOfContours = reader.ReadInt16();
if (glyph.numberOfContours > maxp.maxContours) continue; // 如果字形轮廓数大于非复合字形中包含的最大轮廓数则说明该字形无效
glyph.xMin = reader.ReadInt16();
glyph.yMin = reader.ReadInt16();
glyph.xMax = reader.ReadInt16();
glyph.yMax = reader.ReadInt16();
// 轮廓数为0时不需要解析轮廓数据
if (glyph.numberOfContours == 0) continue;
// 读Glyph轮廓数据
if (glyph.numberOfContours > 0) {
// 简单轮廓