pdf.js/test/font/font_fpgm_spec.js

41 lines
92 KiB
JavaScript
Raw Normal View History

import { decodeFontData, ttx, verifyTtxOutput } from "./fontutils.js";
import { CMapFactory } from "../../src/core/cmap.js";
import { Font } from "../../src/core/fonts.js";
import { Name } from "../../src/core/primitives.js";
import { Stream } from "../../src/core/stream.js";
import { ToUnicodeMap } from "../../src/core/to_unicode_map.js";
describe("font_fpgm", function () {
const font2324 = decodeFontData(
// eslint-disable-next-line max-len
"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CtMK1ArVCtYK1wrYCtkK2grbCtwK3QreCt8K4ArhCuIK4wrkCuUK5grnCugK6QrqCusK7ArtCu4K7wrwCvEK8grzCvQK9Qr2CvcK+Ar5CvoK+wr8Cv0K/gr/CwALAQsCCwMLBAsFCwYLBwsICwkLCgsLCwwLDQsOCw8LEAsRCxILEwsUCxULFgsXCxgLGQsaCxsLHAsdCx4LHwsgCyELIgsjCyQLJQsmCycLKAspCyoLKwssCy0LLgsvCzALMQsyCzMLNAs1CzYLNws4CzkLOgs7CzwLPQs+Cz8LQAtBC0ILQwtEC0ULRgtHC0gLSQtKC0sLTAtNC04LTwtQC1ELUgtTC1QLVQtWC1cLWAtZC1oLWwtcC10LXgtfC2ALYQtiC2MLZAtlC2YLZwtoC2kLagtrC2wLbQtuC28LcAtxC3ILcwt0C3ULdgt3C3gLeQt6C3sLfAt9C34LfwuAC4ELgguDC4QLhQuGC4cLiAuJC4oLiwuMC40LjguPC5ALkQuSC5MLlAuVC5YLlwuYC5kLmgubC5wLnQueC58LoAuhC6ILowukC6ULpgunC6gLqQuqC6sLrAutC64LrwuwC7ELsguzC7QLtQu2C7cLuAu5C7oLuwu8C70Lvgu/C8ALwQvCC8MLxAvFC8YLxwvIC8kLygvLC8wLzQvOC88L0AvRC9IL0wvUC9UL1gvXC9gL2QvaC9sL3AvdC94L3wvgC+EL4gvjC+QL5QvmC+cL6AvpC+oL6wvsC+0L7gvvC/AL8QvyC/ML9Av1C/YL9wv4C/kL+gv7C/wL/Qv+C/8MAAwBDAIMAwwEDAUMBgwHDAgMCQwKDAsMDAwNDA4MDwwQDBEMEgwTDBQMFQwWDBcMGAwZDBoMGwwcDB0MHgwfDCAMIQwiDCMMJAwlDCYMJwwoDCkMKgwrDCwMLQwuDC8MMAwxDDIMMww0DDUMNgw3DDgMOQw6DDsMPAw9DD4MPwxADEEMQgxDDEQMRQxGDEcMSAxJDEoMSwxMDE0MTgxPDFAMUQxSDFMMVAxVDFYMVwxYDFkMWgxbDFwMXQxeDF8MYAxhDGIMYwxkDGUMZgxnDGgMaQxqDGsMbAxtDG4MbwxwDHEMcgxzDHQMdQx2DHcMeAx5DHoMewx8DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyRDJIMkwyUDJUMlgyXDJgMmQyaDJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0MrgyvDLAMsQyyDLMMtAy1DLYMtwy4DLkMugy7DLwMvQy+DL8MwAzBDMIMwwzEDMUMxgzHDMgMyQzKDMsMzAzNDM4MzwzQDNEM0gzTDNQM1QzWDNcM2AzZDNoM2wzcDN0M3gzfDOAM4QziDOMM5AzlDOYM5wzoDOkM6gzrDOwM7QzuDO8M8AzxDPIM8wz0DPUM9gz3DPgM+Qz6DPsM/Az9DP4M/w0ADQENAg0DDQQNBQ0GDQcNCA0JDQoNCw0MDQ0NDg0PDRANEQ0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNHQ0eDR8NIA0hDSINIw0kDSUNJg0nDSgNKQ0qDSsNLA0tDS4NLw0wDTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1LDU
);
describe("Fixes fpgm table", function () {
it("table was truncated in the middle of functions", async function () {
const cMap = await CMapFactory.create({
encoding: Name.get("Identity-H"),
});
const font = new Font("font", new Stream(font2324), {
loadedName: "font",
type: "CIDFontType2",
differences: [],
defaultEncoding: [],
cMap,
toUnicode: new ToUnicodeMap([]),
xHeight: 0,
capHeight: 0,
italicAngle: 0,
});
const output = await ttx(font.data);
verifyTtxOutput(output);
expect(
/(ENDF\[ \]|SVTCA\[0\])\s*\/\*.*\*\/\s*<\/assembly>\s*<\/fpgm>/.test(
output
)
).toEqual(true);
});
});
});