astro-ghostcms/.pnpm-store/v3/files/af/9ac7fffcc7311fbf5d844ade8fa...

42 lines
1.3 KiB
Plaintext

// The `post` table stores additional PostScript information, such as glyph names.
// https://www.microsoft.com/typography/OTSPEC/post.htm
import parse from '../parse';
// Parse the PostScript `post` table
function parsePostTable(data, start) {
const post = {};
const p = new parse.Parser(data, start);
post.version = p.parseVersion();
post.italicAngle = p.parseFixed();
post.underlinePosition = p.parseShort();
post.underlineThickness = p.parseShort();
post.isFixedPitch = p.parseULong();
post.minMemType42 = p.parseULong();
post.maxMemType42 = p.parseULong();
post.minMemType1 = p.parseULong();
post.maxMemType1 = p.parseULong();
post.names = [];
switch (post.version) {
case 1:
break;
case 2:
post.numberOfGlyphs = p.parseUShort();
post.glyphNameIndex = new Array(post.numberOfGlyphs);
for (let i = 0; i < post.numberOfGlyphs; i++) {
post.glyphNameIndex[i] = p.parseUShort();
}
break;
case 2.5:
post.numberOfGlyphs = p.parseUShort();
post.offset = new Array(post.numberOfGlyphs);
for (let i = 0; i < post.numberOfGlyphs; i++) {
post.offset[i] = p.parseChar();
}
break;
}
return post;
}
export default { parse: parsePostTable };