42 lines
1.3 KiB
Plaintext
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 };
|