astro-ghostcms/.pnpm-store/v3/files/93/8ad225574f33be161e9d0a1f9ed...

36 lines
1.2 KiB
Plaintext

// The `head` table contains global information about the font.
// https://www.microsoft.com/typography/OTSPEC/head.htm
import check from '../check';
import parse from '../parse';
// Parse the header `head` table
function parseHeadTable(data, start) {
const head = {};
const p = new parse.Parser(data, start);
head.version = p.parseVersion();
head.fontRevision = Math.round(p.parseFixed() * 1000) / 1000;
head.checkSumAdjustment = p.parseULong();
head.magicNumber = p.parseULong();
check.argument(
head.magicNumber === 0x5f0f3cf5,
'Font header has wrong magic number.'
);
head.flags = p.parseUShort();
head.unitsPerEm = p.parseUShort();
head.created = p.parseLongDateTime();
head.modified = p.parseLongDateTime();
head.xMin = p.parseShort();
head.yMin = p.parseShort();
head.xMax = p.parseShort();
head.yMax = p.parseShort();
head.macStyle = p.parseUShort();
head.lowestRecPPEM = p.parseUShort();
head.fontDirectionHint = p.parseShort();
head.indexToLocFormat = p.parseShort();
head.glyphDataFormat = p.parseShort();
return head;
}
export default { parse: parseHeadTable };