Files
NapCatQQ/.pnpm-store/v3/files/c8/30bed5acc9b370020e2b2f059102d3c47b01ec9137a669f2df066fc879c1a313523e5732012715b47e1c70eb0eb1e916697d131882ec82926547bc70c4777a
T
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

58 lines
1.9 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _table = _interopRequireDefault(require("./table"));
var _struct = _interopRequireDefault(require("./struct"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @file loca表
* @author mengke01(kekee000@gmail.com)
*/
var _default = exports.default = _table.default.create('loca', [], {
read: function read(reader, ttf) {
var offset = this.offset;
var indexToLocFormat = ttf.head.indexToLocFormat;
// indexToLocFormat有2字节和4字节的区别
var type = _struct.default.names[indexToLocFormat === 0 ? _struct.default.Uint16 : _struct.default.Uint32];
var size = indexToLocFormat === 0 ? 2 : 4; // 字节大小
var sizeRatio = indexToLocFormat === 0 ? 2 : 1; // 真实地址偏移
var wordOffset = [];
reader.seek(offset);
var numGlyphs = ttf.maxp.numGlyphs;
for (var i = 0; i < numGlyphs; ++i) {
wordOffset.push(reader.read(type, offset, false) * sizeRatio);
offset += size;
}
return wordOffset;
},
write: function write(writer, ttf) {
var glyfSupport = ttf.support.glyf;
var offset = ttf.support.glyf.offset || 0;
var indexToLocFormat = ttf.head.indexToLocFormat;
var sizeRatio = indexToLocFormat === 0 ? 0.5 : 1;
var numGlyphs = ttf.glyf.length;
for (var i = 0; i < numGlyphs; ++i) {
if (indexToLocFormat) {
writer.writeUint32(offset);
} else {
writer.writeUint16(offset);
}
offset += glyfSupport[i].size * sizeRatio;
}
// write extra
if (indexToLocFormat) {
writer.writeUint32(offset);
} else {
writer.writeUint16(offset);
}
return writer;
},
size: function size(ttf) {
var locaCount = ttf.glyf.length + 1;
return ttf.head.indexToLocFormat ? locaCount * 4 : locaCount * 2;
}
});