98 lines
3.3 KiB
JavaScript
98 lines
3.3 KiB
JavaScript
const { Ot } = require("ot-builder");
|
|
|
|
exports.convertHead = convertHead;
|
|
function convertHead(otdHead) {
|
|
const head = new Ot.Head.Table();
|
|
head.fontRevision = otdHead.fontRevision;
|
|
head.flags = otdHead.flags;
|
|
head.fontDirectionHint = otdHead.fontDirectionHint;
|
|
head.unitsPerEm = otdHead.unitsPerEm;
|
|
head.macStyle = macStyleObjToEnum(otdHead.macStyle);
|
|
head.lowestRecPPEM = otdHead.lowestRecPPEM;
|
|
head.glyphDataFormat = otdHead.glyphDataFormat;
|
|
return head;
|
|
}
|
|
|
|
exports.convertHhea = convertHhea;
|
|
function convertHhea(otdHhea) {
|
|
const hhea = new Ot.MetricHead.Hhea();
|
|
hhea.ascender = otdHhea.ascender;
|
|
hhea.descender = otdHhea.descender;
|
|
hhea.lineGap = otdHhea.lineGap;
|
|
hhea.caretSlopeRise = otdHhea.caretSlopeRise;
|
|
hhea.caretSlopeRun = otdHhea.caretSlopeRun;
|
|
hhea.caretOffset = otdHhea.caretOffset;
|
|
return hhea;
|
|
}
|
|
|
|
exports.convertPost = convertPost;
|
|
function convertPost(otdPost) {
|
|
const post = new Ot.Post.Table(3, 0);
|
|
post.italicAngle = otdPost.italicAngle;
|
|
post.underlinePosition = otdPost.underlinePosition;
|
|
post.underlineThickness = otdPost.underlineThickness;
|
|
post.isFixedPitch = otdPost.isFixedPitch;
|
|
return post;
|
|
}
|
|
|
|
exports.convertMaxp = convertMaxp;
|
|
function convertMaxp(otdMaxp) {
|
|
const maxp = Ot.Maxp.Table.TrueType();
|
|
return maxp;
|
|
}
|
|
|
|
exports.convertOs2 = convertOs2;
|
|
function convertOs2(otdOs2) {
|
|
const os2 = new Ot.Os2.Table(4);
|
|
os2.achVendID = otdOs2.achVendID;
|
|
os2.panose = otdOs2.panose;
|
|
os2.fsSelection = fsSelectionObjToEnum(otdOs2.fsSelection);
|
|
os2.fsType = otdOs2.fsType;
|
|
os2.sCapHeight = otdOs2.sCapHeight;
|
|
os2.sFamilyClass = otdOs2.sFamilyClass;
|
|
os2.sTypoAscender = otdOs2.sTypoAscender;
|
|
os2.sTypoDescender = otdOs2.sTypoDescender;
|
|
os2.sTypoLineGap = otdOs2.sTypoLineGap;
|
|
os2.sxHeight = otdOs2.sxHeight;
|
|
os2.usBreakChar = otdOs2.usBreakChar;
|
|
os2.usDefaultChar = otdOs2.usDefaultChar;
|
|
os2.usFirstCharIndex = otdOs2.usFirstCharIndex;
|
|
os2.usLastCharIndex = otdOs2.usLastCharIndex;
|
|
os2.usMaxContext = otdOs2.usMaxContext;
|
|
os2.usWeightClass = otdOs2.usWeightClass;
|
|
os2.usWidthClass = otdOs2.usWidthClass;
|
|
os2.usWinAscent = otdOs2.usWinAscent;
|
|
os2.usWinDescent = otdOs2.usWinDescent;
|
|
os2.xAvgCharWidth = otdOs2.xAvgCharWidth;
|
|
os2.yStrikeoutPosition = otdOs2.yStrikeoutPosition;
|
|
os2.yStrikeoutSize = otdOs2.yStrikeoutSize;
|
|
os2.ySubscriptXOffset = otdOs2.ySubscriptXOffset;
|
|
os2.ySubscriptXSize = otdOs2.ySubscriptXSize;
|
|
os2.ySubscriptYOffset = otdOs2.ySubscriptYOffset;
|
|
os2.ySubscriptYSize = otdOs2.ySubscriptYSize;
|
|
os2.ySuperscriptXOffset = otdOs2.ySuperscriptXOffset;
|
|
os2.ySuperscriptXSize = otdOs2.ySuperscriptXSize;
|
|
os2.ySuperscriptYOffset = otdOs2.ySuperscriptYOffset;
|
|
os2.ySuperscriptYSize = otdOs2.ySuperscriptYSize;
|
|
os2.ulCodePageRange1 = otdOs2.ulCodePageRange1;
|
|
os2.ulCodePageRange2 = otdOs2.ulCodePageRange2;
|
|
return os2;
|
|
}
|
|
|
|
function macStyleObjToEnum(o) {
|
|
return (
|
|
(o.bold ? Ot.Head.MacStyle.Bold : 0) |
|
|
(o.italic ? Ot.Head.MacStyle.Italic : 0) |
|
|
(o.condensed ? Ot.Head.MacStyle.Condensed : 0) |
|
|
(o.extended ? Ot.Head.MacStyle.Extended : 0)
|
|
);
|
|
}
|
|
function fsSelectionObjToEnum(o) {
|
|
return (
|
|
(o.oblique ? Ot.Os2.FsSelection.OBLIQUE : 0) |
|
|
(o.bold ? Ot.Os2.FsSelection.BOLD : 0) |
|
|
(o.italic ? Ot.Os2.FsSelection.ITALIC : 0) |
|
|
(o.regular ? Ot.Os2.FsSelection.REGULAR : 0) |
|
|
(o.useTypoMetrics ? Ot.Os2.FsSelection.USE_TYPO_METRICS : 0)
|
|
);
|
|
}
|