36 lines
1.2 KiB
Plaintext
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 };
|