@peculiar/pdf-font
Version:
Font handling library for PDF document generation
394 lines (381 loc) • 35.6 kB
JavaScript
;
var asn = require('@peculiar/asn1-schema');
var bs = require('bytestreamjs');
var fontjs = require('fontjs');
var pako = require('pako');
var pvtsutils = require('pvtsutils');
var tslib = require('tslib');
function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n.default = e;
return Object.freeze(n);
}
var asn__namespace = /*#__PURE__*/_interopNamespaceDefault(asn);
var bs__namespace = /*#__PURE__*/_interopNamespaceDefault(bs);
var fontjs__namespace = /*#__PURE__*/_interopNamespaceDefault(fontjs);
var pako__namespace = /*#__PURE__*/_interopNamespaceDefault(pako);
exports.DefaultFonts = void 0;
(function (DefaultFonts) {
DefaultFonts["Courier"] = "Courier";
DefaultFonts["CourierBold"] = "Courier-Bold";
DefaultFonts["CourierBoldOblique"] = "Courier-BoldOblique";
DefaultFonts["CourierOblique"] = "Courier-Oblique";
DefaultFonts["Helvetica"] = "Helvetica";
DefaultFonts["HelveticaBold"] = "Helvetica-Bold";
DefaultFonts["HelveticaBoldOblique"] = "Helvetica-BoldOblique";
DefaultFonts["HelveticaOblique"] = "Helvetica-Oblique";
DefaultFonts["Symbol"] = "Symbol";
DefaultFonts["TimesBold"] = "Times-Bold";
DefaultFonts["TimesBoldItalic"] = "Times-BoldItalic";
DefaultFonts["TimesItalic"] = "Times-Italic";
DefaultFonts["TimesRoman"] = "Times-Roman";
DefaultFonts["ZapfDingbats"] = "ZapfDingbats";
})(exports.DefaultFonts || (exports.DefaultFonts = {}));
const DefaultFontsZip = new Map();
DefaultFontsZip.set(exports.DefaultFonts.Courier, "H4sIAAAAAAACA03WdXBXRxQF4PxeaBIgKVA3WiS4vRAkuAR3gjuUhBAIBALBpU3doS60xd0tELzUW+ru7u6llPadMz1nOrMze7+9e//ambs3LC6/NExNTswsKCrMyylMTszKyS3KH1f4v5P/grBiEJw8HgRJxUFwqjTaS8JyQSwOK4gtCeOjIK24fEZYKYjFEJdlMimIVQ4rBLEgCMqcSEsIYlFNSpgcxOJ5EFVVgcpIVaEzpGpQglQdSpRSoSSpBlRWqgmVk2pB5aXaULJUB0qR6kJnSvWgClJ9qKLUAKokNYTOkhpBZ0shdI6UBp0rNYbOk9Kh86Um0AVSU+hCqRl0kdQculjKgC6RWkCVpZbQpVIr6DKpNVRFagNVldpC1aR2UHWpPZQqdYBqSB2hmlImVEvqBNWWOkN1pC5QXakrVE/qBtWXukMNpB5QQ6kn1EjqBYVSbyhN6gM1lvpC6VI/qInUH2oqZUHNpAFQc2kglCENglpIg6GW0hColTQUai0Ng9pIw6G20gionTQSai+NgjpIo6GO0hgoUxoLdZLGQZ2ly6Eu0nioq5QNdZNyoO7SBKiHlAv1lCZCvaQ8qLc0CeojTYb6SvlQP2kK1F+aCmVJBdAAaRo0UJoODZIKocHSDGiINBMaKhVBw6RZ0HBpNjRCmgONlOZCo6R50GhpPjRGWgCNlRZC46RFYUr0GFTUKeOWg+PNFWC2uRLMMVeBE8zVYK65BpxorgXzzHXgJHM9ONncAOabG8Ep5iZwqrkZLDC3gNPMreB0cxtYGATx6eR2cEaUzSZ3gDN9eSdYZO4CZ5m7wdkRl5F7wDnO7gXnmiXgPHMfON/cDy4wS8GF5gFwkXkQXGweCqNvJe4K+zB9pX2ELraP0lfZx+ir7Ufoa+zj9LX2o/R19mP09fbj9A32E/SN9pP0TfZT9M320/Qt9jP0rfaz9G32CXqJ/Ry91H6evt1+gb7DfpG+036Jvst+mb7bfoW+x36Vvtd+jb7Pfp2+336DfsB+k15mv0U/aL9NP2S/Qz9sv0svt9+jV9jv0yvtD+hV9of0avsjeo39Mb3W/oReZ39Kr7c/ozfYn9Mb7S/oTfaX9Gb7K3qL/TW91f6G3mZ/S2+3v6N32N/TO+0f6F32j/Ru+yd6j/0zvdf+hS6xf6X32b/R+91TfqdLnf+DPmD/SR+0T9KH7L/ow/Yp+oj9N33UPk0fs/+JBupokE6IBtrTSf8Clfw2B5ULAAA=");
DefaultFontsZip.set(exports.DefaultFonts.CourierBold, "H4sIAAAAAAACA1XWdXCVRxQF8LwvaQjkpUDdaINLCLwQJDgkuLtrSYBAIBAIDm1Td28ppS3u7hIkFarU3d2dKqW03znTc2Y6szO7v733/rUzd2+sJHlxLC1aLqewuCg/ryiakF1YkBuN/sfU/ykdilUKgpNlQZC0JAhOHQv3E7EKQSQOKwhKY/HhIaMkOStWOYhEcC7PYFIQqRKrGETCnITjGYlBJKxJiUWDSDwvwqpUKEGqCp0hVYMSpepQOakGlCTVhMpLtaAKUm0oWaoDRaW6UIpUDzpTSoMqSvWhSlI6VFlqAJ0lNYTOlmLQOVIGdK7UCDpPyoTOlxpDF0hNoAulptBFUjPoYikLukRqDlWRWkCXSi2hy6RWUKrUGqoqtYGqSW2h6lI7qIbUHqopZUO1pByottQBqiN1hOpKnaB6UmcoTeoC1Ze6QulSN6iB1B1qKPWAYlJPKEPqBTWSekOZUh+osdQXaiL1g5pK/aFm0gAoSxoINZcGQS2kwVBLaQjUShoKtZaGQW2k4VBbaQTUThoJtZdGQdnSaChHGgN1kMZCHaXLoU7SOKizlAt1kfKgrtJ4qJs0AeouTYR6SPlQT2kS1EuaDPWWCqA+0hSorzQV6icVQv2ladAAaTo0UCqCBkkzoMHSTGiIVAwNlWZBw6TZ0HBpDjRCmguNlOZBo6T50GhpATRGWgiNlRbFUsLHoMJOGbcMHGcuB3PNFWCeuRIcb64CJ5irwYnmGjDfXAtOMteBk831YIG5AZxibgSnmpvAQnMzOM3cAk43t4JFQRCfSW4DZ4TRXHI7ONPJO8Bicyc4y9wFzg65lNwNznF0DzjX3AvOM/eB88394ALzALjQPAguMkvBK8xDsfBbibvSPkxfZR+hS+yj9NV2GX2N/Sh9rf0YfZ39OH29/QR9g32MvtF+kr7Jfoq+2X6avsV+hr7Vfpa+zX6Ovt0+Tt9hP0/fab9A32W/SN9tv0TfY79M32u/Qt9nv0rfb79GL7Zfpx+w36CX2G/SD9pv0Uvtt+mH7Hfoh+136Ufs9+hl9vv0cvsDeoX9Ib3S/oheZX9Mr7Y/odfYn9Jr7c/odfbn9Hr7C3qD/SW90f6K3mR/TW+2v6G32N/SW+3v6G329/R2+wd6h/0jvdP+id5l/0zvtk/Qe+xf6L32r/Q++zd6v3vK7/QBx/+gD9p/0qX2SfqQ/Rd92D5FH7H/po/ap+ky+59woA4H6cRwoD2d9C9nsoPwnAsAAA==");
DefaultFontsZip.set(exports.DefaultFonts.CourierBoldOblique, "H4sIAAAAAAACA1XWd3CVRRQF8Pc2kATyIiCIioKh18D3CCW0AAm9hd47CRAIhARCBzVWUIq9AErvPXRCR8CCvWDF3sECNqT4nTs5Z8aZndn5nXv3r53ZvV5eTL6XHIpKycrNyUjPCYWSszLT4lJHZmZk56aHyhTGcf9LSxem8UgLQ6+kc1eSnIs+59zVU/5+ySvuggEs5wq8KFc0cONyIBDOi0n0Srlg0C+Ei1lDtAuW90q4oN9X5Gw40gX9c7FeyAUjLIhwwTioCFURKkpVgiKpylAUVQWKpqpCxahqUHGqOhRD1YBCVE0olqoF3UTVhkpQdaCSVDxUiqoL3UzVg0pTHlSGCkO3UPWhslQCdCvVALqNagjdTjWCylGNoTuoROhOqglUnmoKVaCaQXdRzaE4qgVUkUqCKlEtocpUK6gK1RqqSiVD1agUqDrVBqpBtYVqUu2gWlR7qDbVAapDdYTiqU5QXaozVI/qAnlUVyhMdYPqU6lQAtUdakD1gBpSPaFGVC+oMdUbSqT6QE2ovlBTqh/UjOoPNacGQC2ogVASNQhqSQ2GWlFDoNbUUCiZGgalUMOhNtQIqC01EmpHjYLaU2lQByod6kiNhjpRY6DO1FioC5UBdaXGQd2o8VAqlQl1pyZAPaiJUE8qC+pFTYJ6U9lQHyoH6ktNhvpRU6D+VC40gJoKDaSmQYOo6dBgagY0hJoJDaVmQcOo2dBwag40gprrxfqXYfJfysBycJS4AkwTV4Lp4ipwtLgaHCOuAceKa8EMcR04TlwPjhc3gJniRnCCuAmcKG4Gs8Qt4CRxK5gtbgNznItIMG4HJ/vVNOMOcIqad4K5Yj44VdwFTvO51LgbnK7qHnCGuBecKe4DZ4n7wdniAXCOeBCcKxaAd4uHPP9bCdwjHzbfKx8x58lHzffJx8z3y8fND8gnzA/KJ80PyS+ZH5ZPmefJp83z5TPmR+SXzY/Kr5gXyK+aF8qvmRfJZ82L5dfNj8lvmB+X3zQ/Ib9lflJ+2/yU/I75afld8zPye+Zn5ffNz8kfmJ+Xz5mXyB+al8ofmZfJH5tfkD8xvyh/al4uf2ZeIZ83r5Q/N6+SvzCvlr80r5G/Mq+Vvzavk78xr5e/NW+QvzNvlL83b5J/MG+WfzRvkX8yb5V/Nm+TL5i3yxfNO+RfzDvlX8358m/mXfLv5t3yJfMe+bJ5r/yHeZ/8p3m/3pS/zAdU/9t8UP7HXCBfMR+S/zUflq+aj8jXzEfl6+Zj8g1/qPaH6Uh/oL0e/R+6DNOUtwsAAA==");
DefaultFontsZip.set(exports.DefaultFonts.CourierOblique, "H4sIAAAAAAACA13WZXCWRxQF4O/dQBLIlwarlxJcA+9HAgSX4BYkuEMCBAIhgeDQkrpAqRsOwd0ChCB1o+7u7qWFUgp9zx3O+dGZndl5zt39tTN3r18YV+SnhGPScgvys7PywzHp43Oy8wqywgmXksT/B0mXAr+Cc+cynIstde58SbAX++WdF8Jy3nI/xpUNXTwdCkUK41L9is7zgkKknB2IdV5VP8F5zrkypyLRzgvuxfth50VZEOW8RKgMVR0qS9WAoqmaUAxVC4qlakPlqDpQeaouFEfVg8JUfSieagBdRjWEEqhGUAUqCapINYYqUU2gypQPVaEi0OVUU+gKKhm6kkqBrqKaQVdTzaFrqBbQtVQqdB3VEqpKtYKup1pD1ag2UCLVFqpOtYNqUO2hmlQHqBbVEapNdYLqUGlQXaozVI/qAtWnukINqG5QQ6o71IjqASVRPaHGVC+oCdUb8qk+UITqCzWl0qFkqh+UQvWHmlEDoObUQKgFlQGlUoOgltRgqBU1BGpNDYXaUMOgttRwqB01AmpPjYQ6UKOgjtRoqBM1BkqjxkKdqXFQF2o81JWaAHWjMqHuVBbUg5oI9aQmQb2oyVBvKhvqQ02B+lJToXQqB+pHTYP6U9OhAVQuNJCaAWVQedAgKh8aTM2EhlCzoKFUATSMmg0Np+ZAI6i50EhqHjSKmg+NphZAY6iF0FhqETSOWuzHB49hCjplaA04QVwLZorrwCxxPThR3ABOEovAyeJGMFvcBE4RN4NTxS1gjrgVnCZuA6eL28FccQc4Q9wJ5om7wHznopKNu8GZQTXTuAecpcN7wQJxHzhb3A/OCbjCeACcq+pBcJ5YDM4XD4ELxMPgQvEIuEgsAReLR8EbxFI/+FZCN8rHzEvk4+ZC+YT5Jvmk+Wb5CfMt8pPmW+WnzLfJT5tvl58x3yE/a75Tfs58l/y8+W75BfNS+UXzMvkl8z3yKfNy+WXzvfIr5vvkV833y6+ZH5BfNz8ov2F+SH7T/LD8lvkR+W3zo/I75sfkd82Py++ZV8jvm1fKH5hXyR+aV8sfmdfIH5vXyp+Y18mfmtfLn5k3yJ+bi+QvzBvlL82b5K/Mm+WvzVvkb8xb5W/N2+TvzNvl78075B/MO+Ufzbvkn8y75Z/Ne+RfzHvlX8375N/M++XfzQfkP8wH5dPmYvlP8yH5L/Nh9ZQz5iOqnzWXyH+bj8rnzKXyP+Zj8nnzcflf8wn5gvmkfDEYqoNhOjoYaC/E/gcqk9e/qQsAAA==");
DefaultFontsZip.set(exports.DefaultFonts.Helvetica, "H4sIAAAAAAACA03Wd1zVVRgGcO5BGQKpZTtyi+DgIg7cW1FxoeIeBIgoLpZbi4YtS9uWlXsg7j1QadneZXuZTdtlWmad5+nzPnX/uJ/7ve8573nP+t0bLI1aHkyIjkzNyS/JKcrLyowOT8/JLc7PLPj/d/99DNZw7myOc1HLnDsf51zEuWC0c1UrnKuS6FxgaTDUBUKSSqNSgjVdIIDPkf7NBSJcIDZY3QWcf7VNCnOBai4Q47sGQvmF71UHqmKqC1X1OgHVg8L8GIVQfSjc1ACKcC48FmoIRfqKMqBGUDVf12IoDoryOcugxlC0KR6KcS6UWRKgi/wI5VATqLpV1hSqYf2aQTUt1hy62JQIXWJ1BqFapiToUlML6DJTMnS5qSV0hakVdKWpNXSVqQ10tSkFusbUFoq1ytpB15raQ7Vtth2gOqaOUF1TJ6ie5ewM1fdnoDbUBWpgK98VamjqBjXyOg51h+JMPaDG1rInFO9HOAn1ghKcC2OdvaEm1i8Vampz6AM18/1CoL5Qc8vZD0q0qtOgoM/J/esPJVnOAVALG28glGxZBkEtLTYYamX90qHW1nII1MbmMBRKsZbDoLbWMgNq58/uEmg41N5iI6AOppFQR8s5Cupkcx8NdTaNgbqYxkJd/bmuhMZB3WwlxkPd7SRPgHpYLBPqaboO6mWrmwX1tlg2lGrKgfrY6BOhvhbLhfqZJkFp/m5yXfKg/qbJ0AAbbwo00GL50CDbv6nQYMs5DUo3TYeGmGZAQ00zoWE29wIow8YrhIbbHIqgEdavGBppLUugUba3s6DRFpsNjTHNgcaa5kLj/Ai8VfOg8V61oPnQBIstgDLt/i0MxvjNYGX+SRmyEsziJMBVYDYrBVeDOeIacKK4FswV14GTWAO4HsxTdAM4WQNtBKf4aZ8iN4H5PnqGLAOnqu9mcBpnAJaD05VqCzhDqbaCMxXdBhb405tMbgcLfapscgdYpMY7wWJxF1gi7gZn+b4ryD3gbM80ci84Rwu7D5yrvvvBeeIBcL7nafIguEDzPQQu9Ofz3/keBheJFUH/sxJyvXyEvoEXGz5Kl/Law8foG+VK+ib5Cfpm+Un6FvkperH8NH2rf2iH0M/Qt/EIw8fp29X+WfoO+Tn6Tvl5eon8An2XVvJF+m75JXqp/DK9TH6Fvkf1vErfK79G38fHMPw6fb/8Bv2A/Cb9oPwW/ZD8Nr1cx/ME/bDi79CPaPx36RXye/Sj8vv0Y/IH9ONanw/plfJH9Crt/8f0ap2mT+g18qf0Wvkzep18kl4vf05vkE/RG/l3Cf6C3sQHE/wlXab2X9Gb5a/pcvkbeov8Lb1V+3ma3iZ/R2+Xv6d3yD/QO5XvR3qX/BO9W/6Z3iP/Qu+Vf6X3yb/R++Uz9AE9U36nD2o/ztKH1P4cfVj+g66Q/6SPyOfpo1rfv+hjil+gKxX/GzfTnz7/F+hC/D8h9PQ0nQsAAA==");
DefaultFontsZip.set(exports.DefaultFonts.HelveticaBold, "H4sIAAAAAAACA13Wd1iWVRgGcL4DIgg42ovCiajoizhAxYEL98Y9CHCiqCBuK9rD9s4KtyLurTgbVmZ7Z9PMhu3Shlnnvrue+4/+4eL3Pec8zznPOe/7fUFpTFmQEhudlV9Qkl88KTcnNiKzsCAvtro+SPifk+GgpnNnjzsXs8i5c4nORXcLYp2rcti5iEznXGUQ7kJhKaUxaUEtFwrh/2j/x4WiXCg+qOFCfoxLT4l0oWouFOenhsL5gZ+VAEV4lUO1oSrOhR+F6kCRvkYRVBeqaqoHRTlXNR6qD0X7FR2BGkDVnAudghKhGKvQEIo1JUFxvh6zNIKq+woVUGOohq2zCVTT5iVDtSzWFLrA1Ay60NYZQBeZUqCLTc2hS0yp0KWmFtBlppbQ5aZW0BWm1tCVpjToKlM6FG+rbgNdbWoLXWO7bQclmDKg2qb2UB2vE1AHqK7v/DGoI1TPOt8Jqm/KhBqYOkOJpi5QQ69sqCuUZBVwuUKNnItkP7tDjW1eFtTEet0DSrbd9oSa2sheUDPL2RsKfE7uvQ+UYiP7Qs2tXj8o1VbWH2phsQFQS5s3EGplIwdBra3eYCjNRg6B0m1kNtTGd3AxNBRqa7FhUDvTcCjDco6A2tv5jYQ6WCdGQR0tNhrqZOc3Bsq0Lo2FOtvIcVAXi+VAXa3etVA3i+VC3S2WB2VZLB/qYTnHQz1t5ASol2ki1NtWPQnqY5oM9bWcU6B+FiuA+tvzPhUaYDmnQQNNhdAg03RosGkGNMSe95lQttUrgobaHoqhYTZvFjTcRpZAI+xOzIZGWmwONMo0FxrtFQbNg8ZY9fnQWF8vA1oAjbPYQijHzm9REOcPg53wb8qwMjCXCwWXgnmsCC4D88Xl4HhxBThBXAlO5BrAVeAkRVeDk1VoDTjFX82T5FqwwEfPkOXgVM1dB07jDsAKsFCp1oPTlWoDOEPRjeBM34tUchNY5FPlkZvBYg3eAs4St4Il4jZwtp+7hNwOztEid4Bz1did4DzN3QXOF3eDCzxPk3vAhUq1F/TfjpH/7bcSvE7cF/ivlbDr5f30Dbxe8AG6lK8L+CB9o3yIvkk+TN8sP0PfIj9L3yo/R9/mXFQY/Tx9u+JH6Dv42oFfoO+UX6Tvkl+iF8tH6bvVyZfpe+Rj9L3yK/R98qv0/VrPa/QD8uv0g3zk4Dfoh+Q36Yflt+hH5LfpR+V36Md0Pd+lH1f8PfoJ1X+fXiJ/QD8pf0g/JR+nn1Z/PqLL5I/ppTr/T+hluk2f0svlz+gV8uf0SvkEvUr+gl4tn6TX8PUJf0mvVfwUXS5/Ra+Tv6Yr5G/o9fK39Aad52l6o/wdvUn+nt4s/0BvUT9+pLfKP9Hb5J/p7fIv9A75V3qn/Bu9Sz5D79Y75Sy9R/Hf6b3yH3Sl/Ce9T/6L3i+fow+oP3/TBxU/Tx9S/B88mf72+Z9A55P+Be1tbgOkCwAA");
DefaultFontsZip.set(exports.DefaultFonts.HelveticaBoldOblique, "H4sIAAAAAAACA1XWd3jNVxgH8Ps7kSU3RZUu0ZgRhN8VI0GMWDEjRuwRyUW4RGTY2qZ0615Ua6+IPYLE7NBWde9lVbVFdSgdRM/3277v8/SfPM/nvOec95z3nN+5cYsiytwUb3iKP1Doz8/OzPB6k3MCWdGp4wLZuQV+b00NRP+vvYa2x6H9v2a3qjFXK4zxlhpzLcaY8Amu15jgI8ZUSjPGlLuhJthz47LH4yuKSHCrGccxjscXbv8YJ8w4UW4V49h+JtEXYpzKxom0w50gNgQZJxqqZFUM1YGCjQk6BtWFQmyePKgeFCqqD4UZExoFNYDC7aqOQg2hysY456AYKEIyNIK8olgo0ubjLI2hm2yGEqgJVEXW2RSqKuPioGoSawbdLGoOVZd1utAtIh9UQ9QCqimKh24VtYRuE7WCbhe1hu4QtYHuFCVAtUSJUJSsui1UW9QOukt22x6KFiVBdUQdoLpWZ6COUD1b+eNQJ6i+VL4z1ECUDDUUdYFiRF2hRlbpUDcoVjJ0hxobE8J69oCayLgUqKnUuicUJ7vtBTWTnr2h5jJnH8i1c3LvfSGf9OwHtZB8qVC8rKw/1FJiaVArGTcAai09B0JtJN8gKEF6DoYSpWc61NZWcBE0BGonsaFQe9EwKEnmHA51kPMbAXWUSoyEOklsFNRZzm80lCxVGgN1kZ5joa4Sy4C6Sb5xUHeJZUI9JJYFpUjMD/WUOcdDvaQnngunt2gi1EdWnQ31FU2C+smck6FUiQWg/vK9T4HSZM6p0ABRDjRQNA0aJMqFBsv3Ph1Kl3x50BDZQz40VMYVQMOkZyE0XO7EDGiExGZCI0WzoFFWHmg2NFqyz4HG2HxJ0FxorMTmQRlyfvPdSHsYrIR9KT3LwUwuFFwBZjEjuBL0K1eB45WrwQnKNeBErgFcC2ZrdB04SROtByfbq3mW3AAGbPQKWQxO0bEbwancAVgC5uhUm8BpOtVmMFejW8Dpthbx5FYwz06VRW4D87XzdrBAuQMsVO4EZ9ixS8ld4Exd5G5wlha2FJytY/eAc5R7wbmWF8h94Dydqgycb+/Ev/stB+9W7nftz4rnHvUB+l5eL/ggXcTnAj5E36c+TC9QH6EXql+h71e/Sj+gfo1+0JgwD/06/ZDGj9IP89mB36AfUb9JP6p+i16kPkY/ppV8m35cfZx+Qv0O/aT6XfopXc979NPq9+ln+MnBH9DPqj+kn1N/RD+v/ph+Qf0JvViv56f0Eo1/Rr+o+T+nl6q/oF9Sf0m/rP6KXqb1+Zperv6GXqHnf4JeqbfpJL1KfYperT5Nr1Gfodeqv6XXqc/S6/l8wt/RGzR+ji5Wf09vVP9Al6h/pDepz9Ob9Twv0FvUF+mt6p/obepL9Hatx8/0DvUv9E71r/Qu9W/0bvVlulT9O71HfYXeq2/KVXqfxv+gy9R/0uXqv+j96r/pA+pr9EGtz3X6kMYr6MMav4Ev094++y9QRew/R/qZmL8LAAA=");
DefaultFontsZip.set(exports.DefaultFonts.HelveticaOblique, "H4sIAAAAAAACA2XWd1yVVRgH8PseZMklJa00I3EiKvJecQDujYrixD0QroriQIbbkoZlWaaWI8u9ENxbUWnZUNtpWzObts1Rpp3fz57nn+4f9/P5vs85z3nOeu91C8NK3CRvaLI/u8Cfl5WR7g1OHZWdlZPv90bos6j/P4r975Fb0Zhr843xLjLmRrQxodVcrzGBpcaUizPGWegGm0DPrcsej68wLMGNMI5jHI8v1H4ZJ8Q4kW4F4xj7SfQFGae8ccJtdyeADwKMEwWVE9WAAq3OQDWhIDtOLlQLChbVhkKMCY6E6kChtqo0qC5U3tY2D4qGwmzOIqge5BXFQOHGBDBLfegOO0Ix1ACqIJU1hCpKv1goQmKNoDtFcVAlqdOFKot80F2ixtDdonjoHlETqIqoKVRV1Ay6V9QcqiZKgO4TJUKRUlkSdL+oBVRdZtsSihK1gmqIWkM1JWcbqJYxIdWhtlBtWfl2UB1Re6iu1QmoAxQt6gjVk5adoBg7wgWoM1TfmCDW2QVqIP2SoYYyh65QrO3ngbpBjSRndyhOqk6BXJuT+9cD8knOnlBjGS8VipcsvaAmEusNNZV+faBm0rIv1Fzm0A9KkJb9oURpmQYl2bO7ABoAtZDYQKilaBDUSnIOhlrL3IdAbURDobaiYVA7e67LoOFQe1mJEVAHOckjoY4SS4c6iUZBnWV1M6AuEsuEkkV+qKuMPhrqJrExUHfRWCjF3k2uSxbUQzQO6injjYdSJZYN9ZL9mwD1lpwToT6iSVBf0WSonygH6i9znwKlyXi50ACZQx40UPrlQ4OkZQE0WPZ2KjREYtOgoaLp0DDRDGi4HYG3aiY0wqoyNAsaKbHZULrcvzluuN0MVmbflJ7VYAYnAa4BM1kpuBb0K9eBo5XrwTHKDeBY1gBuBLM0ugkcpwNtBsfbaV8kt4DZNnqFLAInaN+t4ETOACwGJ2mqEnCyptoG5mh0OzjFnt54cgeYa1NlkjvBPG28C8xX7gYLlHvAqbbvSnIvOM0yhdwHTteF3Q/O0L4HwJnKg+Asy0vkIXC2zvcwOMeez9vzPQI+oCx17c+K50H1UXouLzZ8jC7ktYeP0w+py+iH1S/Rj6hfph9Vv0LPU79KP2Zf2h76NfpxHmH4BD1f279OP6F+g35S/Sa9QP0W/ZSu5En6afUpeqH6NP2M+m16kdbzDr1Y/S69hK9h+D36WfX79HPqD+il6g/pZeqP6OV6PM/QKzR+ln5ex/+YXqn+hH5B/Sn9ovozepWuz+f0avUX9Brd/y/ptXqaztHr1Ofp9eqv6A3qC/RG9df0JvVFejP/LsHf0Fv4YoK/pYu0/Xf0VvX3dLH6B7pE/SO9TffzEr1d/RO9Q/0zvVP9C71L8/1K71b/Ru9R/07vVf9B71Nfpver/6QPqK/QB/WdcpU+pPtxjT6s7a/TR9R/0aXqv+mj6hv0MV3ff+jjGr9Jl2n8Fm6mPX32L9DNmH8BjyAiG7ELAAA=");
DefaultFontsZip.set(exports.DefaultFonts.Symbol, "H4sIAAAAAAACA0XX+VdVVRgG4Hv3kUG7qNCgqeg9l0AR03NBnHJogDKzCcsGNSfQBkzFrJzScGqyHEEBcQQFESccQJwlqp9MK/+AltloZaZmaX3vS/tjLdfyPO/eZ0/n7H0uXn6g2HMDkSNmTZkwNTcQlZUzeWbu+DwN/v/fa2vMrUpjoo8bc7PEmMhSr5Xx+/DP+Jd7jlyE8wOZXqzx+3HdkoXRxh/vtTF+Y4zvRjjS+OWeGC9g/A6SsNwVhFqIKiEXijCmBcsSoEjpi2WJUJSoP5QERdv7ukEtrZKhVtJKNpQC3Wb76wEFrHpCMSK22QtqbXv3oDZWYaitVSoUa5UGxVn1hm63SofusOoD3WnVF7rLqh/Uzqo/1N6ObAB0t9V9UAc7v4FQR6tBUCerwVC8Mc4yaAjU2a7SKKiL1RgoaHsfC7ly33loDhSS51wEzYUSbNk8L8b47xGlheUp+naDicJqMBgCkzgaYWgc2NWYiBqyM9jNlvr2gMlaORvsrswBU4QloFMP9pCLKyw14L3acizYU96VArIN2Ms25RwHPZl5mKUpYFgqJ7K0Aky1TfmqwDQdRgewN9dJ6F8JpmvpULCP8AKbWg32lU3DysEksJ/O9xrY304h8QtwgLQ5kpUzvNbypGVUWeEI4/iu/4vigdpTHDhI2zoPDtbS8eAQ4TnQXQXeb0wUh+UuBx9Qcg4PauUV4EMyaI7D5RwydGWjwUy7WKFk8GFld/ARqTwPTAiCQ5Uu+KiwkavDjoYJ2ZHDYTxmh+FwzMOF35JrwMeVBeAT2lQh+KTwErkWfIqvNrgOfForF4FZdlROMThCViOeLAGf0crrwWeFyWQpOFJLN4DP6auzEXxeBjmD3AS+IKwnt4Av6hS2gqOkqcVkGThamupIloNjtKNt4EtSOprcDo6V0gDJnTNO3++94Hi5GEbuAyfY98ypAScqD4DZuuwHwRxhCnkInCQruZmsBSdrR3Xgy8rD4Ct67xHwVbm4TB4FX9PKx8Bc5Qlwig7jFPi6XCwkT4JTlafBaXoWNIDTtd9PwTxtuRGcoY/7M/AN5efgTH4P8AI34AP2pmzCG2F8XGplI6YieouriahOojTc9LY8jUjclMSjaZZyIjhbOQmco+QZOFf3Uzy2+TyeJ9zmF1D8jp1pKAacr/trjdQ2vgXqQvpd3feZdL62vpBeqF5KL1Ln04vVS+gl6kX0Uj0bztHv6dFxhn5ffZb+QOt/SX+oh8lX9EfSfgbbL6OXaX8t6Y/t/aGu9CfqbvRynX+QXiG+SPemV+rBH+HJh9i3ik9bfh4kVGOJ/2Sl1baSm85Ka2TN41hpEypdYlig4RaEvzEs1HArwr8YrtWwHOHf7GOdTsxHF+mDcuhi+x0JtaNL7EbzmhZivTqaLtUd37SwG2z7zjf0Rt0/X9ObdMfspzfreKI46C066GIM+ieGWzVcj/AXhmUaliK8yrBcw40Ir7OPbfoytGel7TxpUGkbKv3OsELD7QgvM6zUsALhHwx3aFiJ8ArDKg13IPyH4U4NqxDeZFit4U6EtzjEXbJMV7ksZ1lpN5cNlc6g0ncM9/CzjXAXwosM9+qMSxD+zHCfhpsR/sqwRsMNCK8x3K9hGcIb8tPY+A40f+N/YHCwOfiewSFZ0i5NwY+cQC1r4LtfQdepq+nDYp79boiut8edG0sfsR8StxN9VN/LgfQxu0HdpvdGfvNH8GsRrKJP2PPS6ccBnqQ5wPkMTjUH0xicbg6mM2hoDvLYZqOMaTb7HI6Vlx5L8JfGf5iJKaSfDAAA");
DefaultFontsZip.set(exports.DefaultFonts.TimesBold, "H4sIAAAAAAACA03Wd1RVRxAG8HeHIsLDkt6IWBBR0YtYQKzYuyJibxEQFETEXiOJpqgxxXSTWAAVC/aKojGJ6b33xPTeizEm+305Myf/vHN/b3Zn5u7du+/5pVHr/LhgWGZ+YU5JMDS9qCA7GEnE/u86Edd+PZEL5SJ10kTO14hEjvODImF5IiFVIlLth4gXSCqNSvHri+fhurb7EC9CvBi/rnhujASSwsWLFC/aTfVC+IWbFQuFOlVCDaEwkdBiqBEU7sSRjaFaqiZQhEgEFQfVFglnlqZQpMuZCsVDUVqhGRRUJUDRmrM5VMdpLdQCqqt9toTq6bxEqL7GWkEXab3W0MWa04cuUSVBl6raQJepkqHLVW2hK1TtoCtV7aGrVB2gq1Up0DWqVChGu+4IXatKgxro3XaCYlWdoYaqLlAjzdkVaixSi8+oG9TE7YUzUHcozikLSoeaaqwHFK/qCTXTkb2gBFfhLNQbau6eJtezD9RC1Rdq6fZdDNQPStTO+kOtdOQAqLVWGAj5rus10CAoSXsZDLXReUOgZO1lKNRWY8OgdjovA2rvRpZAw6EOWi8TStGRI6BUVRbUUffuSChNY6OgTqrRUGfNOQbqos9vLNRVdx1eSK+bxsZD3V1nFdAEKF1XaSLUQ0dOgnpqbDLUS+/oOqi3W2uu2RSoj8ayob4ay4H6ac5cqL/mnAoN0Hl50EDtOh8apPOmQYN15HRoiI4sgIbqG14IDdORM6AMrVcEDdfYTChTVQyN0K5nQVm6l0qgkdrLbGiUzpsDjdYKc6Ex+ozmQWM1Nh8ap1oAjdd6C6EJTvHQImiiiHcaWgxN0tgSaLLLkgAt9aPdw+Bp407KwAZwChsFN4LZrAhuAnOMm8FcYxk41VgO5rEHsALMt+gWcJoV2gpOd7d9jtwGFrhoLlkJFtrc7eAMniDgDrDIUu0EZ1qqXWCxRavAWW4tksndYIlLlU3uAWdb3b3gHOM+cK6l2g/Oc3PXkwfA+Y4Z5EFwgS3sIXChzT0MLrLMR8DFjmXkUXCJ3e8xcKnbn/+xGlxmPO67n5XA9eYT9HKbXUOXckvBJ+kbzKfoG82P0ivMp+mV5sfom8yP0zfzyIGfoG+x+Bn6Vh408JP0KvNT9Grz0/Qa8zP0bXyV4Gfptebn6NvNz9N3mF+g77R+XqTvMr9Er+MxDL9M321+hb7H/Cp9r/k1+j7z6/T9tj3foB+w+Jv0g1b/LXq9+W36IfM79MPmd+lHzO/RG/ijAr9Pb+TxAn9Ab7L98CG92fwRXWb+mC43n6UrzJ/QW8yf0lutn8/obTyY4M/pSvMX9Hbzl/QO81f0TvPX9C4e1vA3dJX5W3q3+Tt6j/l7eq/1+wO9z9bnR3q/xX+iD5h/pg+af6EPmX+lD5t/o4/YmfI7fdTif9DHrP6fdLX5HH3c/Bd9wnyerrF8f9MnLX6BPmXxf/Bm4nRwf7MD/wJjRXkFmAsAAA==");
DefaultFontsZip.set(exports.DefaultFonts.TimesBoldItalic, "H4sIAAAAAAACA03Wd1iXVRQH8Pe9yBB+JJRaVhS4UdH3Jw5wixP3QFScxFAURAT3ptIW2bZhJU5E3LhxV2Z7mznKzPaynZl2v1+fc57+4Xk+99xzzn3vvVzwisMqvERfYEpOXlahLywpPzczOrkoPTcnwxfJsej/D0VwKA5D10e8CGOulhrju2jMleXGhMZ7PmMC04wJqDTGVHnBJtC5dslx/MVhCV6kcV3jOv7q9odxQ4wb5dUwrp1nHH+QcUONG27T3QAOBBg3Gqpma0VBMVCgMdUKoLpQkBVn1oOCRfWhEGOCyqEGUHWrRKghFGo7UI2gMCvObAz5RLFQuNRsAt1gtQxqCtWQdTaDIiQvDoqUWHPoRunXArpJanpQTZEfqiVqCdUWYVvdm0WtoFtEraE6ojbQraK20G2iBOh2USIUJatuB90hag/dKV/bAYoWdYRiRJ2gulKzM1TP7nUZ1AWqb+9DKtQVaiBKghqKukGNrI5D3aHGEusBxYp6Qk1kZi+oqZxtb6iZ3JdkKE5W1gdqLlX6Qi1s7ALUD/KMCWZef8gvHQZALUUDoXjJGwS1kthgqLV0GAK1sTMLoaFQW8lLgRIkbxiUKHmpUDtZy3CovcRGQB2kykiooygN6iTnNwrqLLduNNRFYmOgrnJ+Y6Ek2aVxUDeZOR7qLrF0qIfoLqin3esSKAPqJbFMqLfEsqBkqZkN9ZGZE6C+sksToX6y6hyov2gSNEDyJkMDJZYLDZJbkAcNlppToCGSlw8NFU2FUkQF0DC5PdOgVFEhNFz6FUEjpMN0aKR87QwoTU5sJjRKOsyCRsvM2dAY6TAHGms7nIDmQuOMcY9B86DxEpsPpcv5LfDC7WHwtbEvpbMSzGBRsBTMZH9wFZilXA1mK9eAE5RrwYlcA7gOzNHoenASTxUsAyfbz75MbgBzbTSGLAfzNHcjOMXyFFkB5mupTeBULbUZLNDoFnCa/cB4citYaEtlktvAIjs5m9wOTlfuAGdoqUpwps1dQe4EZ+kid4GzdWN3g3M0dw84VyvvBecp94HztdR+cIG9n9dZBS5UHvDsnxVnkfogvVizD9HFvFLwYfpu9RH6HvVR+l71MXqJ+iV6qfpl+j775JTQr9D3a/w4/YD6VfpB9Qn6IfVrdIn6dfphvZNv0MvUb9KPqN+iH1W/TT/G5xJ+h35c/S79hPo9+kn1+/RT6g/o5eoP6afVH9HP8BcMPkk/q/GP6efUp+gV6k/o59Wn6RfUZ+gX+XDDZ+mV6nN0qZ7/p/Qq9Wf0avV5eo36c3qt+gK9Tv0FvV59kS7T9X1Jb+AzBX9Fl6u/pjeqv6Er1N/Sm6zP09/Rm/l4wt/TW9Q/0FvVP9LbbH4s/RO9Xdf7M72Dzy98ia7U+C/0TvWv9C71b/Ru9e/0HvUf9F59U/6k92n8L3q/9v+brlJfpg+o/6EPqq/Qh3S//qUPa/2r9BGNXzMmxMHrYP/Vdv4Dl4kV7bALAAA=");
DefaultFontsZip.set(exports.DefaultFonts.TimesItalic, "H4sIAAAAAAACA1XWd1iXVRQH8Pe9yJIfqTkaRuEeiLw/EQX3VtwDcaFCDEXBBU4cRakty2znyD1wo+LelqvS9k7NynaZszLtfr885zxP/MHzfDj3nnvu+V0OeIVhS7woX2BSdm5mni8oMT8tJzvd5yMj/6foUnnljbk925jwRGNuFRsTes7zGRMYb0zAAmPc+V6wCXTuXHYcf2FYvFfBuK5xHX+o/WbcEONGeOWMa+yX4w8yblnjhtvtbgB/EGDcSKiMVRFUDQq0mVOg6lCQMWW4sgYULKoJhRgTxH21oFCrBKg2VNbWVgLVgcLkhLqQT1QPCpec9aG77N2yoCionNTZACov+6KhChJrCN1txdNjoIqS04MqifxQZVEjqIooFrpH1Bi6VxQH3SdqAt0vagpVFcVDD4gSoAipuhn0oKg59JDctgUUKWoJVRO1gqpLztZQDWOC+Rm1gWra2EWoLVRL1A6qbbMkQ+2hOlbHoQ5QXVnZEaon6gTVl5WdoShRF6iB3CERirbvZR7UFWoo53WDYmzOPKg75Ml76QH5ZWVPqJGc0AuKlVp6Q40l1geKk1hfqIn0pR/UVM5LguJlX38oQfYlQ82klgFQc4kNhFpIlkFQS9FgqJW9bQQ0BGotry4FaiOxoVBbq1RoGNRO6hwOtZcOpkIdJJYGdRQ9DHWS7qZDnSWWAXWRWCaUKLVkQV1l5Qiom2gk1F1WZkM9RKOgnpJzNNRLYjlQb+lnLtRHco6B+orGQv1E46Ak0Xiov3RpApQsyoMGyHn50EDZNxEaJJVNggbL65kMDZHYFChFNBUaKidMg4ZZxUIF0HB7HjUdSpXYDCjNnp4EzfTC7YfBaWMnpbMUTGdScBmYwUrB5WCmcgWYpVwJjlCuAkeyBnA1mK3RNeAovhRwLTjaPttK5Dowx0bjyCIwV/euB8dwgoAbwLGaaiM4TlNtAsdrdDM4gb0At4B5NnMGuRXMt4tLMxeDE5XbwEmaajs42e5dRO4Ap1jGkCXgVG3sTnCa7t0FFmjm3eB0ywJyDzhD77sXnGlvVMp94Czlfs/+WXEeUR+gH9XdB+lCDgH4EP2Y+jD9uPoIPVt9lJ6jPkbPVb9JP2GHdumbeYt+kk8YPk4/petP0E+rT9LPqE/R89Sn6We1dW/Tz6nfoeer36WfV5+hF/DXGz5Lv6D1vUe/qPH36ZfUH9Avqz+kX1F/RL+q/ph+TZ/nJ/TrGv+UXqj+jF6k/pxerP6CXqL+kn6Dgxv+il6q/fqaXqaf/zl6ufo8vUJ9gV6p/oZepb5Ir1Z/S69Rf0ev1X5+T6/jmIIv0UXqH+j16h/pDeqf6I3qn+lNHJ7wL/Rm9a/0FvVv9Fb173Sx1vsHvU19md6u/pPeob5Cl6iv0jvV1+hd6uv0bp0pN+g9Gr9J71X/Re9T/03vV/9DH1Dfog9qf/6lD2n8Nn1Y43eMCXEwHey/2s5/rhWRJaILAAA=");
DefaultFontsZip.set(exports.DefaultFonts.TimesRoman, "H4sIAAAAAAACAz3Wd1zWVRQG8Pd3kSEjtWxH4VYU/SGi4B44cSLiRkmGKENAXDgKS1uW2ZSswC3uvQct27tsL9t7T7PO89Q5/MGHL+fcc88d3Be/MmK1HxsZnJ5fmFMWGZqWk1dekFUaGUHHpBUXZhX9jzjCb+jc+VrnoqqcO7fKufB2fqRzwanOBdU45630g5wXiK+MSPIbOc/Dz/Xlm/PCnBftN3Cek69AfIjzwp0XJUO9IP5CRsVA9US1UBMoWKqmQE2hEOfqMbMZFKpqDoU5F8JxLaD6omSoJRQufZVAraAInaE1FKlqA0VpzVjoAtFSqC3UQPvEgr2GOi4OaqSx9tCFIs7eAbpIa/pQY1U8dLGqI3SJKgG6VNUJukyVCF2u6gxdoeoCXalKgq5SJUPR2llX6GpVN+gaXW13KEbVA2qi6gk1lVNZAfWCmjkXmgn1hprLXTgN9YFaiDKgvlBLVT+olWamQK1lhrNQf6iNqAwaAMVq5kCorWoQ1E7PYTAUJ51FQ0Og9pqZCnXQGYZCvnTNzGFQvGYOhzqqRkAJ2stIqJPGRkGJuqI0qLNmjoa66HzpUJKOGwMlqzKgrtIL93Ms1E1j46DuqvFQD605Aeqpa58I9dLTnAT11thkqI/sSx2UCfXVOzEF6qeZU6EUPdssqL9mXgsN0Ng0aKDGsqFBGsuBBmvNXGiIZuZBqarp0FDtOh8appoBDdfMmdAIjRVAI/UvvBAapZlFUJqqGBqtmgWlq0qgMdpnKZSht6cMGqvzzYbG6bhyaLxqDjRBz2guNFFj86BJqvnQZN2lBVCm6AxUAU2RV6oKWghN1dgiKEuqpEOL/Sg5DL428lIGqsFpXARYA2ZzRnAtmGNcB+Ya14N5xg3gdPYAbgTzLboJnGETbQZnyhE0JreABRJNJGvBQhu7FSziCwJuA4ut1HZwlpXaAZZYdCdYKnuRQO4Cy6RUNrkbnC3JueQesNy4F5xjpfaBc2XsGnI/OE8qV5MHwPm2sQfBBTb2EFhhlQ+DC4UV5BFwka33KLhYVvQfj4FLjMd9+VgJXGc+QV/PiwGfpCt5peBT9FJzHX2D+RH6RvOj9DLzY/Ry8+P0TXz+4Cfom/mQwafpW/jQwE/St5qfom8zP02vMD9D325b9yx9h/k5eqX5efpO8wv0Kuv3Rfou80v03eaX6XvMr9D3ml+l7zO/Rt9vfp1ebdfzDF1l8TfoB8xv0mvMb9EPmt+mHzK/Qz9sfpeu5kcF/B5dY7fnfXqt3YcP6HXmD+n15o/oDeaz9Ebzx/Qm8yf0ZjvvT+ktFv+MrjV/Tm81f0FvM39Jbzd/Re/g4wl/Te80f0PvMn9L7zZ/R++x/fie3mv+gd5n/pHeb/6JPmD+mT5o/oU+ZP6VPmxvym/0EYv/Th81/0EfM/9JHzf/RZ8wn6NPmv+mT5nP03Xmf5wLC+B1kH+zA/8CI6LPsZ0LAAA=");
DefaultFontsZip.set(exports.DefaultFonts.ZapfDingbats, "H4sIAAAAAAACA13X11cVVxQGcO4gcDEgiNgbqDCx36ti770XYoxiiSBF7A27ImBv2GMXe8PeFU2M0cSYFR998CH/QB7ykIeslSxXvu876+6sFR5Y97f3OXvOzJxzZiZUnvB3qGdCYk7uksK0ocWLivJyVyxPiMsuKCpZkLvs//EkMqJRk4eEkrxAlOfFvfe8Tx89L7YiVJsBxgL7QtH4ES5PqAzV9QIB/o5XMugFmrOjh79e4VgvgD6JDERHAmiXFkr0ArVQ+l0Y//0AGQPeFj0y1rLRZBz4QaxFBj0v5iWZWYeMx+gmKhtL1gazxTjyM3CyGCQT0HeLGE8movJNlWpK1gErxBZkkufVylfjBDIZpdwwEsm6aDxa1DBSwFViElnPsslkKlgp1iXr2wmmkA1QubZYj2wIvhZTyUZgY7E+2RhsKDYgm2CQ+8WGZFOc4DyxEdkMjZuKjcnmYKrYhGwBpog6/ZZgUGxGpnle9J9iczIdB3KVdXFagWPFlmRr8LSo+9sGw9ghppMZqOyuRisyExwvtiZ9Yxvyc7uDGWRbcKqYSbYDc0SfbA9u0y2LITuAR5RtS3a0udGO7AQ+FduTna1xBzIEXhM7kuFIZb8T2QW8JHYmu+IO5okhshvO112rMJkFvhW7kN3BT2JXsoedYDeyJzhFzCJ7obGbKt3J3shmiT3IPmCG2JPsa317kf3shvYm+6PUFbEPOQB0J9iXHAiWiP3IQeBJsT85GKUcB5BDQLdwBpJD7cIOIocZB5PD7bhDyBFgqTiUHAm6GTuMHAVq0fnDydE2VUaQY0A3zUaSY9H4vjiKHGerezQ5HhwpjiEnRLIZ78mJ4D/KjiMnRdZRRhWZbatsAvmFcSI52S7sJPJLYzY5BZOhtUrdJb8y1pBTI9M74w05DRyuvlPIHKyyMmU/kNOxv7oFO5WcgY2zhziNnInGbubkkLNAHcifTn5tnEHOxrVyC2cmmWucFUr2Anlo3DIcp+Xmz2VkTiSCFecXs0s+ju5W8TyywDifG38hmBXGbuwv8LxQkKEiCy1EKJ6hudgYUhhKw8T2FzFUbCFMbn8xS8/Dsd2dW0LONy5lB9QP/Kayy1A2laGFFlqOUH2OfxEOXs3xr0N0BSOLI5ENiJSw8BJchI8qnEsuxUjcZpJHLjPOIVE5zo0in1yBvm6tFZAltpcWkiuNReSqyLLNVKnVqPxKVOM1KLVHVKm1oCfOJtdFJkwbcb1RY95g1Jg3GnWgUmN+CI+zqE3mArnMXCiXm4vkCvNcebO5WN5ie/VKeat5lbzNvFrebl4j7zCvlXea18m7zOvl3eYN8h7zRnmvuVSuNG+S95nL5P3mcvmAuUI+aN4sHzJvkQ+bt8pHzNvkb8zb5aPmHfIx8075uHmXfMK8Wz5p3iOfMu+VT5sr5TPmfXKVeb981nxAPmc+KJ/HnPflQ/IF5LXhprv2Fz0vmC67/CWsVD1T0g/LlzGV3SZ7VL6Ceu4d6ph81fLH5WvIu13phHwddm8ZJ+VqeKF8Sr5hPi3fxPiq5TPyLdvkq+TbcJV8Vr5j4zkn3zWfl+/BbpFfkO/DS+WL8gN4uXxJfojzdw+ky/Ij5JPlK/JjHN+92V6Vn5ivyU/hP+Tr8jNztVxjD8sb8nPzTfkF2rtXi1vyt+Y78ne2Ld2VX2J8rv89+Xvk28v35Vfw7/ID+QfLP5Rfo797Pj2S38A18mP5R8s/kX+y16an8lu7P8/kn+1+18jvYG2U/nP5F5sfL/Ah4UX9qi+JGC866q9SBd7/F8BGGYzitwq+WY78C/+AGgf/DAAA");
exports.FontGlyph = class FontGlyph {
constructor(params = {}) {
this.index = 0;
this.advanceWidth = 0;
this.unicode = [];
Object.assign(this, params);
}
};
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontGlyph.prototype, "index", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontGlyph.prototype, "advanceWidth", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer, repeated: "set" })
], exports.FontGlyph.prototype, "unicode", void 0);
exports.FontGlyph = tslib.__decorate([
asn__namespace.AsnType({ type: asn__namespace.AsnTypeTypes.Sequence })
], exports.FontGlyph);
exports.FontHead = class FontHead {
constructor() {
this.xMin = 0;
this.xMax = 0;
this.yMin = 0;
this.yMax = 0;
}
};
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontHead.prototype, "xMin", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontHead.prototype, "xMax", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontHead.prototype, "yMin", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontHead.prototype, "yMax", void 0);
exports.FontHead = tslib.__decorate([
asn__namespace.AsnType({ type: asn__namespace.AsnTypeTypes.Sequence })
], exports.FontHead);
exports.FontName = class FontName {
constructor() {
this.fontFamily = "";
this.fontSubfamily = "";
this.fullName = "";
this.postScriptName = "";
}
};
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Utf8String })
], exports.FontName.prototype, "fontFamily", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Utf8String })
], exports.FontName.prototype, "fontSubfamily", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Utf8String })
], exports.FontName.prototype, "fullName", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Utf8String })
], exports.FontName.prototype, "postScriptName", void 0);
exports.FontName = tslib.__decorate([
asn__namespace.AsnType({ type: asn__namespace.AsnTypeTypes.Sequence })
], exports.FontName);
exports.FontOS2 = class FontOS2 {
constructor() {
this.sCapHeight = 0;
this.sxHeight = 0;
this.usWeightClass = 0;
}
};
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontOS2.prototype, "sCapHeight", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontOS2.prototype, "sxHeight", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontOS2.prototype, "usWeightClass", void 0);
exports.FontOS2 = tslib.__decorate([
asn__namespace.AsnType({ type: asn__namespace.AsnTypeTypes.Sequence })
], exports.FontOS2);
let FontPost = class FontPost {
constructor() {
this.italicAngle = 0;
}
};
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], FontPost.prototype, "italicAngle", void 0);
FontPost = tslib.__decorate([
asn__namespace.AsnType({ type: asn__namespace.AsnTypeTypes.Sequence })
], FontPost);
var FontInfo_1;
exports.FontInfo = FontInfo_1 = class FontInfo {
constructor() {
this.name = new exports.FontName();
this.head = new exports.FontHead();
this.os2 = new exports.FontOS2();
this.post = new FontPost();
this.glyphs = [];
this.unitsPerEm = 0;
this.ascent = 0;
this.descent = 0;
}
findGlyph(code) {
for (const glyph of this.glyphs) {
if (glyph.unicode.includes(code)) {
return glyph;
}
}
return null;
}
getGlyphs(text) {
const res = [];
let unique = "";
for (const char of text) {
if (!unique.includes(char)) {
unique += char;
const code = char.charCodeAt(0);
const glyph = this.findGlyph(code);
if (glyph && !res.includes(glyph)) {
res.push(glyph);
}
}
}
res.sort(FontInfo_1.sortByIndex);
return res;
}
static sortByIndex(a, b) {
if (a.index < b.index) {
return -1;
}
if (a.index > b.index) {
return 1;
}
return 0;
}
};
tslib.__decorate([
asn__namespace.AsnProp({ type: exports.FontName })
], exports.FontInfo.prototype, "name", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: exports.FontHead })
], exports.FontInfo.prototype, "head", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: exports.FontOS2 })
], exports.FontInfo.prototype, "os2", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: FontPost })
], exports.FontInfo.prototype, "post", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: exports.FontGlyph, repeated: "set" })
], exports.FontInfo.prototype, "glyphs", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontInfo.prototype, "unitsPerEm", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontInfo.prototype, "ascent", void 0);
tslib.__decorate([
asn__namespace.AsnProp({ type: asn__namespace.AsnPropTypes.Integer })
], exports.FontInfo.prototype, "descent", void 0);
exports.FontInfo = FontInfo_1 = tslib.__decorate([
asn__namespace.AsnType({ type: asn__namespace.AsnTypeTypes.Sequence })
], exports.FontInfo);
class FontFactory {
static { this.cache = new Map(); }
static create(source) {
if (pvtsutils.BufferSourceConverter.isBufferSource(source)) {
return this.createFile(source);
}
return this.createDefault(source);
}
static createDefault(source) {
let font = this.cache.get(source);
if (font) {
return font;
}
const fontZip = DefaultFontsZip.get(source);
if (!fontZip) {
throw new Error(`Cannot get default font '${source}. ZIP cached value doesn't exist'`);
}
font = asn.AsnConvert.parse(pako__namespace.ungzip(new Uint8Array(pvtsutils.Convert.FromBase64(fontZip))), exports.FontInfo);
this.cache.set(source, font);
return font;
}
static createFile(source) {
const buffer = pvtsutils.BufferSourceConverter.toArrayBuffer(source);
const font = fontjs__namespace.Font.fromStream(new bs__namespace.SeqStream({ stream: new bs__namespace.ByteStream({ buffer }) }));
const fontInfo = new exports.FontInfo();
const name = font.tables.get(fontjs__namespace.Tables.NAME.tag);
if (name) {
fontInfo.name.fontFamily =
name.getName(fontjs__namespace.Tables.NameIDs.fontFamilyName) || "";
fontInfo.name.fontSubfamily =
name.getName(fontjs__namespace.Tables.NameIDs.fontSubFamilyName) || "";
fontInfo.name.fullName =
name.getName(fontjs__namespace.Tables.NameIDs.fullFontName) || "";
fontInfo.name.postScriptName =
name.getName(fontjs__namespace.Tables.NameIDs.postScriptFontName) || "";
}
const head = font.tables.get(fontjs__namespace.Tables.HEAD.tag);
if (!head) {
throw new Error("Required HEAD table is missing");
}
fontInfo.head.xMin = head.xMin;
fontInfo.head.xMax = head.xMax;
fontInfo.head.yMin = head.yMin;
fontInfo.head.yMax = head.yMax;
fontInfo.unitsPerEm = font.unitsPerEm;
const os2 = font.tables.get(fontjs__namespace.Tables.OS2.tag);
fontInfo.os2.sCapHeight = os2.sCapHeight || 0;
fontInfo.os2.sxHeight = os2.sxHeight || 0;
fontInfo.os2.usWeightClass = os2.usWeightClass || 0;
const post = font.tables.get(fontjs__namespace.Tables.POST.tag);
if (post) {
fontInfo.post.italicAngle = post.italicAngle;
}
const hhea = font.tables.get(fontjs__namespace.Tables.HHEA.tag);
if (!hhea) {
throw new Error("Required HHEA table is missing");
}
fontInfo.ascent = hhea.ascent;
fontInfo.descent = hhea.descent;
for (let i = 0; i < font.glyphs.length; i++) {
const item = font.glyphs[i];
const glyph = new exports.FontGlyph({
index: i,
advanceWidth: item.hAdvanceWidth || 0,
unicode: item.unicodes || []
});
fontInfo.glyphs.push(glyph);
}
return fontInfo;
}
static getIndexes(fontjs, text) {
const indexes = [0, 0];
for (const char of text) {
const glyph = fontjs.findUnicodeGlyph(char);
if (glyph && glyph.index) {
if (!glyph.unicodes) {
glyph.unicodes = [];
}
glyph.unicodes.push(char.charCodeAt(0));
if (!indexes.includes(glyph.index)) {
indexes.push(glyph.index);
}
}
}
return indexes;
}
static subsetFont(source, text) {
const buffer = pvtsutils.BufferSourceConverter.toArrayBuffer(source);
const font = fontjs__namespace.Font.fromStream(new bs__namespace.SeqStream({ stream: new bs__namespace.ByteStream({ buffer }) }));
const gids = this.getIndexes(font, text);
const glyphs = font.glyphs;
const yMax = [];
const yMin = [];
for (const element of gids) {
const glyph = glyphs[element];
yMax.push(glyph.yMax);
yMin.push(glyph.yMin);
}
const post = font.tables.get(fontjs__namespace.Tables.POST.tag);
post.glyphNameIndex = [];
post.names = [];
const hhea = font.tables.get(fontjs__namespace.Tables.HHEA.tag);
const head = font.tables.get(fontjs__namespace.Tables.HEAD.tag);
const name = font.tables.get(fontjs__namespace.Tables.NAME.tag);
const name2 = new fontjs__namespace.Tables.NAME();
name2.nameRecords = [];
for (const nameRecord of name.nameRecords) {
if ([
fontjs__namespace.Tables.NameIDs.fontFamilyName,
fontjs__namespace.Tables.NameIDs.fontSubFamilyName,
fontjs__namespace.Tables.NameIDs.fullFontName,
fontjs__namespace.Tables.NameIDs.postScriptFontName
].includes(nameRecord.nameID)) {
const newRecord = {
platformID: nameRecord.platformID,
platformSpecificID: nameRecord.platformSpecificID,
languageID: nameRecord.languageID,
nameID: nameRecord.nameID,
value: nameRecord.value
};
name2.nameRecords.push(newRecord);
}
}
const newFont = font.subset({
tables: new Map([
[fontjs__namespace.Tables.OS2.tag, font.tables.get(fontjs__namespace.Tables.OS2.tag)],
[fontjs__namespace.Tables.POST.tag, post],
[fontjs__namespace.Tables.NAME.tag, name2]
]),
glyphIndexes: gids,
fontValues: {
unitsPerEm: head.unitsPerEm,
ascent: hhea.ascent,
descent: hhea.descent,
lineGap: hhea.lineGap
},
cmaps: [
{
format: 4,
language: 0,
platformID: 3,
platformSpecificID: 1
}
],
cmapLanguage: 0
});
const newFontStream = new bs__namespace.SeqStream();
newFont.toStream(newFontStream);
return newFontStream.buffer;
}
}
exports.DefaultFontsZip = DefaultFontsZip;
exports.FontFactory = FontFactory;