/* Copyright 2015 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { getLookupTableFactory } from "./core_utils.js"; import { normalizeFontName } from "./fonts_utils.js"; /** * Hold a map of decoded fonts and of the standard fourteen Type1 * fonts and their acronyms. */ const getStdFontMap = getLookupTableFactory(function (t) { // The standard 14 fonts: t["Times-Roman"] = "Times-Roman"; t.Helvetica = "Helvetica"; t.Courier = "Courier"; t.Symbol = "Symbol"; t["Times-Bold"] = "Times-Bold"; t["Helvetica-Bold"] = "Helvetica-Bold"; t["Courier-Bold"] = "Courier-Bold"; t.ZapfDingbats = "ZapfDingbats"; t["Times-Italic"] = "Times-Italic"; t["Helvetica-Oblique"] = "Helvetica-Oblique"; t["Courier-Oblique"] = "Courier-Oblique"; t["Times-BoldItalic"] = "Times-BoldItalic"; t["Helvetica-BoldOblique"] = "Helvetica-BoldOblique"; t["Courier-BoldOblique"] = "Courier-BoldOblique"; // Extra mappings t.ArialNarrow = "Helvetica"; t["ArialNarrow-Bold"] = "Helvetica-Bold"; t["ArialNarrow-BoldItalic"] = "Helvetica-BoldOblique"; t["ArialNarrow-Italic"] = "Helvetica-Oblique"; t.ArialBlack = "Helvetica"; t["ArialBlack-Bold"] = "Helvetica-Bold"; t["ArialBlack-BoldItalic"] = "Helvetica-BoldOblique"; t["ArialBlack-Italic"] = "Helvetica-Oblique"; t["Arial-Black"] = "Helvetica"; t["Arial-Black-Bold"] = "Helvetica-Bold"; t["Arial-Black-BoldItalic"] = "Helvetica-BoldOblique"; t["Arial-Black-Italic"] = "Helvetica-Oblique"; t.Arial = "Helvetica"; t["Arial-Bold"] = "Helvetica-Bold"; t["Arial-BoldItalic"] = "Helvetica-BoldOblique"; t["Arial-Italic"] = "Helvetica-Oblique"; t["Arial-BoldItalicMT"] = "Helvetica-BoldOblique"; t["Arial-BoldMT"] = "Helvetica-Bold"; t["Arial-ItalicMT"] = "Helvetica-Oblique"; t.ArialMT = "Helvetica"; t["Courier-BoldItalic"] = "Courier-BoldOblique"; t["Courier-Italic"] = "Courier-Oblique"; t.CourierNew = "Courier"; t["CourierNew-Bold"] = "Courier-Bold"; t["CourierNew-BoldItalic"] = "Courier-BoldOblique"; t["CourierNew-Italic"] = "Courier-Oblique"; t["CourierNewPS-BoldItalicMT"] = "Courier-BoldOblique"; t["CourierNewPS-BoldMT"] = "Courier-Bold"; t["CourierNewPS-ItalicMT"] = "Courier-Oblique"; t.CourierNewPSMT = "Courier"; t["Helvetica-BoldItalic"] = "Helvetica-BoldOblique"; t["Helvetica-Italic"] = "Helvetica-Oblique"; t["Symbol-Bold"] = "Symbol"; t["Symbol-BoldItalic"] = "Symbol"; t["Symbol-Italic"] = "Symbol"; t.TimesNewRoman = "Times-Roman"; t["TimesNewRoman-Bold"] = "Times-Bold"; t["TimesNewRoman-BoldItalic"] = "Times-BoldItalic"; t["TimesNewRoman-Italic"] = "Times-Italic"; t.TimesNewRomanPS = "Times-Roman"; t["TimesNewRomanPS-Bold"] = "Times-Bold"; t["TimesNewRomanPS-BoldItalic"] = "Times-BoldItalic"; t["TimesNewRomanPS-BoldItalicMT"] = "Times-BoldItalic"; t["TimesNewRomanPS-BoldMT"] = "Times-Bold"; t["TimesNewRomanPS-Italic"] = "Times-Italic"; t["TimesNewRomanPS-ItalicMT"] = "Times-Italic"; t.TimesNewRomanPSMT = "Times-Roman"; t["TimesNewRomanPSMT-Bold"] = "Times-Bold"; t["TimesNewRomanPSMT-BoldItalic"] = "Times-BoldItalic"; t["TimesNewRomanPSMT-Italic"] = "Times-Italic"; }); // Contains mapping for standard fonts and xfa fonts. const getFontNameToFileMap = getLookupTableFactory(function (t) { t.Courier = "FoxitFixed.pfb"; t["Courier-Bold"] = "FoxitFixedBold.pfb"; t["Courier-BoldOblique"] = "FoxitFixedBoldItalic.pfb"; t["Courier-Oblique"] = "FoxitFixedItalic.pfb"; t.Helvetica = "FoxitSans.pfb"; t["Helvetica-Bold"] = "FoxitSansBold.pfb"; t["Helvetica-BoldOblique"] = "FoxitSansBoldItalic.pfb"; t["Helvetica-Oblique"] = "FoxitSansItalic.pfb"; t["Times-Roman"] = "FoxitSerif.pfb"; t["Times-Bold"] = "FoxitSerifBold.pfb"; t["Times-BoldItalic"] = "FoxitSerifBoldItalic.pfb"; t["Times-Italic"] = "FoxitSerifItalic.pfb"; t.Symbol = "FoxitSymbol.pfb"; t.ZapfDingbats = "FoxitDingbats.pfb"; t["LiberationSans-Regular"] = "LiberationSans-Regular.ttf"; t["LiberationSans-Bold"] = "LiberationSans-Bold.ttf"; t["LiberationSans-Italic"] = "LiberationSans-Italic.ttf"; t["LiberationSans-BoldItalic"] = "LiberationSans-BoldItalic.ttf"; }); /** * Holds the map of the non-standard fonts that might be included as * a standard fonts without glyph data. */ const getNonStdFontMap = getLookupTableFactory(function (t) { t.Calibri = "Helvetica"; t["Calibri-Bold"] = "Helvetica-Bold"; t["Calibri-BoldItalic"] = "Helvetica-BoldOblique"; t["Calibri-Italic"] = "Helvetica-Oblique"; t.CenturyGothic = "Helvetica"; t["CenturyGothic-Bold"] = "Helvetica-Bold"; t["CenturyGothic-BoldItalic"] = "Helvetica-BoldOblique"; t["CenturyGothic-Italic"] = "Helvetica-Oblique"; t.ComicSansMS = "Comic Sans MS"; t["ComicSansMS-Bold"] = "Comic Sans MS-Bold"; t["ComicSansMS-BoldItalic"] = "Comic Sans MS-BoldItalic"; t["ComicSansMS-Italic"] = "Comic Sans MS-Italic"; t["ItcSymbol-Bold"] = "Helvetica-Bold"; t["ItcSymbol-BoldItalic"] = "Helvetica-BoldOblique"; t["ItcSymbol-Book"] = "Helvetica"; t["ItcSymbol-BookItalic"] = "Helvetica-Oblique"; t["ItcSymbol-Medium"] = "Helvetica"; t["ItcSymbol-MediumItalic"] = "Helvetica-Oblique"; t.LucidaConsole = "Courier"; t["LucidaConsole-Bold"] = "Courier-Bold"; t["LucidaConsole-BoldItalic"] = "Courier-BoldOblique"; t["LucidaConsole-Italic"] = "Courier-Oblique"; t["LucidaSans-Demi"] = "Helvetica-Bold"; t["MS-Gothic"] = "MS Gothic"; t["MS-Gothic-Bold"] = "MS Gothic-Bold"; t["MS-Gothic-BoldItalic"] = "MS Gothic-BoldItalic"; t["MS-Gothic-Italic"] = "MS Gothic-Italic"; t["MS-Mincho"] = "MS Mincho"; t["MS-Mincho-Bold"] = "MS Mincho-Bold"; t["MS-Mincho-BoldItalic"] = "MS Mincho-BoldItalic"; t["MS-Mincho-Italic"] = "MS Mincho-Italic"; t["MS-PGothic"] = "MS PGothic"; t["MS-PGothic-Bold"] = "MS PGothic-Bold"; t["MS-PGothic-BoldItalic"] = "MS PGothic-BoldItalic"; t["MS-PGothic-Italic"] = "MS PGothic-Italic"; t["MS-PMincho"] = "MS PMincho"; t["MS-PMincho-Bold"] = "MS PMincho-Bold"; t["MS-PMincho-BoldItalic"] = "MS PMincho-BoldItalic"; t["MS-PMincho-Italic"] = "MS PMincho-Italic"; t.NuptialScript = "Times-Italic"; t.SegoeUISymbol = "Helvetica"; t.Wingdings = "ZapfDingbats"; t["Wingdings-Regular"] = "ZapfDingbats"; }); const getSerifFonts = getLookupTableFactory(function (t) { t["Adobe Jenson"] = true; t["Adobe Text"] = true; t.Albertus = true; t.Aldus = true; t.Alexandria = true; t.Algerian = true; t["American Typewriter"] = true; t.Antiqua = true; t.Apex = true; t.Arno = true; t.Aster = true; t.Aurora = true; t.Baskerville = true; t.Bell = true; t.Bembo = true; t["Bembo Schoolbook"] = true; t.Benguiat = true; t["Berkeley Old Style"] = true; t["Bernhard Modern"] = true; t["Berthold City"] = true; t.Bodoni = true; t["Bauer Bodoni"] = true; t["Book Antiqua"] = true; t.Bookman = true; t["Bordeaux Roman"] = true; t["Californian FB"] = true; t.Calisto = true; t.Calvert = true; t.Capitals = true; t.Cambria = true; t.Cartier = true; t.Caslon = true; t.Catull = true; t.Centaur = true; t["Century Old Style"] = true; t["Century Schoolbook"] = true; t.Chaparral = true; t["Charis SIL"] = true; t.Cheltenham = true; t["Cholla Slab"] = true; t.Clarendon = true; t.Clearface = true; t.Cochin = true; t.Colonna = true; t["Computer Modern"] = true; t["Concrete Roman"] = true; t.Constantia = true; t["Cooper Black"] = true; t.Corona = true; t.Ecotype = true; t.Egyptienne = true; t.Elephant = true; t.Excelsior = true; t.Fairfield = true; t["FF Scala"] = true; t.Folkard = true; t.Footlight = true; t.FreeSerif = true; t["Friz Quadrata"] = true; t.Garamond = true; t.Gentium = true; t.Georgia = true; t.Gloucester = true; t["Goudy Old Style"] = true; t["Goudy Schoolbook"] = true; t["Goudy Pro Font"] = true; t.Granjon = true; t["Guardian Egyptian"] = true; t.Heather = true; t.Hercules = true; t["High Tower Text"] = true; t.Hiroshige = true; t["Hoefler Text"] = true; t["Humana Serif"] = true; t.Imprint = true; t["Ionic No. 5"] = true; t.Janson = true; t.Joanna = true; t.Korinna = true; t.Lexicon = true; t.LiberationSerif = true; t["Liberation Serif"] = true; t["Linux Libertine"] = true; t.Literaturnaya = true; t.Lucida = true; t["Lucida Bright"] = true; t.Melior = true; t.Memphis = true; t.Miller = true; t.Minion = true; t.Modern = true; t["Mona Lisa"] = true; t["Mrs Eaves"] = true; t["MS Serif"] = true; t["Museo Slab"] = true; t["New York"] = true; t["Nimbus Roman"] = true; t["NPS Rawlinson Roadway"] = true; t.NuptialScript = true; t.Palatino = true; t.Perpetua = true; t.Plantin = true; t["Plantin Schoolbook"] = true; t.Playbill = true; t["Poor Richard"] = true; t["Rawlinson Roadway"] = true; t.Renault = true; t.Requiem = true; t.Rockwell = true; t.Roman = true; t["Rotis Serif"] = true; t.Sabon = true; t.Scala = true; t.Seagull = true; t.Sistina = true; t.Souvenir = true; t.STIX = true; t["Stone Informal"] = true; t["Stone Serif"] = true; t.Sylfaen = true; t.Times = true; t.Trajan = true; t["Trinité"] = true; t["Trump Mediaeval"] = true; t.Utopia = true; t["Vale Type"] = true; t["Bitstream Vera"] = true; t["Vera Serif"] = true; t.Versailles = true; t.Wanted = true; t.Weiss = true; t["Wide Latin"] = true; t.Windsor = true; t.XITS = true; }); const getSymbolsFonts = getLookupTableFactory(function (t) { t.Dingbats = true; t.Symbol = true; t.ZapfDingbats = true; }); // Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID // fonts, but does not embed the CID to GID mapping. The mapping is incomplete // for all glyphs, but common for some set of the standard fonts. const getGlyphMapForStandardFonts = getLookupTableFactory(function (t) { t[2] = 10; t[3] = 32; t[4] = 33; t[5] = 34; t[6] = 35; t[7] = 36; t[8] = 37; t[9] = 38; t[10] = 39; t[11] = 40; t[12] = 41; t[13] = 42; t[14] = 43; t[15] = 44; t[16] = 45; t[17] = 46; t[18] = 47; t[19] = 48; t[20] = 49; t[21] = 50; t[22] = 51; t[23] = 52; t[24] = 53; t[25] = 54; t[26] = 55; t[27] = 56; t[28] = 57; t[29] = 58; t[30] = 894; t[31] = 60; t[32] = 61; t[33] = 62; t[34] = 63; t[35] = 64; t[36] = 65; t[37] = 66; t[38] = 67; t[39] = 68; t[40] = 69; t[41] = 70; t[42] = 71; t[43] = 72; t[44] = 73; t[45] = 74; t[46] = 75; t[47] = 76; t[48] = 77; t[49] = 78; t[50] = 79; t[51] = 80; t[52] = 81; t[53] = 82; t[54] = 83; t[55] = 84; t[56] = 85; t[57] = 86; t[58] = 87; t[59] = 88; t[60] = 89; t[61] = 90; t[62] = 91; t[63] = 92; t[64] = 93; t[65] = 94; t[66] = 95; t[67] = 96; t[68] = 97; t[69] = 98; t[70] = 99; t[71] = 100; t[72] = 101; t[73] = 102; t[74] = 103; t[75] = 104; t[76] = 105; t[77] = 106; t[78] = 107; t[79] = 108; t[80] = 109; t[81] = 110; t[82] = 111; t[83] = 112; t[84] = 113; t[85] = 114; t[86] = 115; t[87] = 116; t[88] = 117; t[89] = 118; t[90] = 119; t[91] = 120; t[92] = 121; t[93] = 122; t[94] = 123; t[95] = 124; t[96] = 125; t[97] = 126; t[98] = 196; t[99] = 197; t[100] = 199; t[101] = 201; t[102] = 209; t[103] = 214; t[104] = 220; t[105] = 225; t[106] = 224; t[107] = 226; t[108] = 228; t[109] = 227; t[110] = 229; t[111] = 231; t[112] = 233; t[113] = 232; t[114] = 234; t[115] = 235; t[116] = 237; t[117] = 236; t[118] = 238; t[119] = 239; t[120] = 241; t[121] = 243; t[122] = 242; t[123] = 244; t[124] = 246; t[125] = 245; t[126] = 250; t[127] = 249; t[128] = 251; t[129] = 252; t[130] = 8224; t[131] = 176; t[132] = 162; t[133] = 163; t[134] = 167; t[135] = 8226; t[136] = 182; t[137] = 223; t[138] = 174; t[139] = 169; t[140] = 8482; t[141] = 180; t[142] = 168; t[143] = 8800; t[144] = 198; t[145] = 216; t[146] = 8734; t[147] = 177; t[148] = 8804; t[149] = 8805; t[150] = 165; t[151] = 181; t[152] = 8706; t[153] = 8721; t[154] = 8719; t[156] = 8747; t[157] = 170; t[158] = 186; t[159] = 8486; t[160] = 230; t[161] = 248; t[162] = 191; t[163] = 161; t[164] = 172; t[165] = 8730; t[166] = 402; t[167] = 8776; t[168] = 8710; t[169] = 171; t[170] = 187; t[171] = 8230; t[200] = 193; t[203] = 205; t[210] = 218; t[223] = 711; t[224] = 321; t[225] = 322; t[226] = 352; t[227] = 353; t[228] = 381; t[229] = 382; t[233] = 221; t[234] = 253; t[252] = 263; t[253] = 268; t[254] = 269; t[258] = 258; t[260] = 260; t[261] = 261; t[265] = 280; t[266] = 281; t[267] = 282; t[268] = 283; t[269] = 313; t[275] = 323; t[276] = 324; t[278] = 328; t[283] = 344; t[284] = 345; t[285] = 346; t[286] = 347; t[292] = 367; t[295] = 377; t[296] = 378; t[298] = 380; t[305] = 963; t[306] = 964; t[307] = 966; t[308] = 8215; t[309] = 8252; t[310] = 8319; t[311] = 8359; t[312] = 8592; t[313] = 8593; t[337] = 9552; t[493] = 1039; t[494] = 1040; t[705] = 1524; t[706] = 8362; t[710] = 64288; t[711] = 64298; t[759] = 1617; t[761] = 1776; t[763] = 1778; t[775] = 1652; t[777] = 1764; t[778] = 1780; t[779] = 1781; t[780] = 1782; t[782] = 771; t[783] = 64726; t[786] = 8363; t[788] = 8532; t[790] = 768; t[791] = 769; t[792] = 768; t[795] = 803; t[797] = 64336; t[798] = 64337; t[799] = 64342; t[800] = 64343; t[801] = 64344; t[802] = 64345; t[803] = 64362; t[804] = 64363; t[805] = 64364; t[2424] = 7821; t[2425] = 7822; t[2426] = 7823; t[2427] = 7824; t[2428] = 7825; t[2429] = 7826; t[2430] = 7827; t[2433] = 7682; t[2678] = 8045; t[2679] = 8046; t[2830] = 1552; t[2838] = 686; t[2840] = 751; t[2842] = 753; t[2843] = 754; t[2844] = 755; t[2846] = 757; t[2856] = 767; t[2857] = 848; t[2858] = 849; t[2862] = 853; t[2863] = 854; t[2864] = 855; t[2865] = 861; t[2866] = 862; t[2906] = 7460; t[2908] = 7462; t[2909] = 7463; t[2910] = 7464; t[2912] = 7466; t[2913] = 7467; t[2914] = 7468; t[2916] = 7470; t[2917] = 7471; t[2918] = 7472; t[2920] = 7474; t[2921] = 7475; t[2922] = 7476; t[2924] = 7478; t[2925] = 7479; t[2926] = 7480; t[2928] = 7482; t[2929] = 7483; t[2930] = 7484; t[2932] = 7486; t[2933] = 7487; t[2934] = 7488; t[2936] = 7490; t[2937] = 7491; t[2938] = 7492; t[2940] = 7494; t[2941] = 7495; t[2942] = 7496; t[2944] = 7498; t[2946] = 7500; t[2948] = 7502; t[2950] = 7504; t[2951] = 7505; t[2952] = 7506; t[2954] = 7508; t[2955] = 7509; t[2956] = 7510; t[2958] = 7512; t[2959] = 7513; t[2960] = 7514; t[2962] = 7516; t[2963] = 7517; t[2964] = 7518; t[2966] = 7520; t[2967] = 7521; t[2968] = 7522; t[2970] = 7524; t[2971] = 7525; t[2972] = 7526; t[2974] = 7528; t[2975] = 7529; t[2976] = 7530; t[2978] = 1537; t[2979] = 1538; t[2980] = 1539; t[2982] = 1549; t[2983] = 1551; t[2984] = 1552; t[2986] = 1554; t[2987] = 1555; t[2988] = 1556; t[2990] = 1623; t[2991] = 1624; t[2995] = 1775; t[2999] = 1791; t[3002] = 64290; t[3003] = 64291; t[3004] = 64292; t[3006] = 64294; t[3007] = 64295; t[3008] = 64296; t[3011] = 1900; t[3014] = 8223; t[3015] = 8244; t[3017] = 7532; t[3018] = 7533; t[3019] = 7534; t[3075] = 7590; t[3076] = 7591; t[3079] = 7594; t[3080] = 7595; t[3083] = 7598; t[3084] = 7599; t[3087] = 7602; t[3088] = 7603; t[3091] = 7606; t[3092] = 7607; t[3095] = 7610; t[3096] = 7611; t[3099] = 7614; t[3100] = 7615; t[3103] = 7618; t[3104] = 7619; t[3107] = 8337; t[3108] = 8338; t[3116] = 1884; t[3119] = 1885; t[3120] = 1885; t[3123] = 1886; t[3124] = 1886; t[3127] = 1887; t[3128] = 1887; t[3131] = 1888; t[3132] = 1888; t[3135] = 1889; t[3136] = 1889; t[3139] = 1890; t[3140] = 1890; t[3143] = 1891; t[3144] = 1891; t[3147] = 1892; t[3148] = 1892; t[3153] = 580; t[3154] = 581; t[3157] = 584; t[3158] = 585; t[3161] = 588; t[3162] = 589; t[3165] = 891; t[3166] = 892; t[3169] = 1274; t[3170] = 1275; t[3173] = 1278; t[3174] = 1279; t[3181] = 7622; t[3182] = 7623; t[3282] = 11799; t[3316] = 578; t[3379] = 42785; t[3393] = 1159; t[3416] = 8377; }); // The glyph map for ArialBlack differs slightly from the glyph map used for // other well-known standard fonts. Hence we use this (incomplete) CID to GID // mapping to adjust the glyph map for non-embedded ArialBlack fonts. const getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function ( t ) { t[227] = 322; t[264] = 261; t[291] = 346; }); // The glyph map for Calibri (a Windows font) differs from the glyph map used // in the standard fonts. Hence we use this (incomplete) CID to GID mapping to // adjust the glyph map for non-embedded Calibri fonts. const getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) { t[1] = 32; t[4] = 65; t[6] = 193; t[17] = 66; t[18] = 67; t[21] = 268; t[24] = 68; t[28] = 69; t[30] = 201; t[32] = 282; t[38] = 70; t[39] = 71; t[44] = 72; t[47] = 73; t[49] = 205; t[58] = 74; t[60] = 75; t[62] = 76; t[68] = 77; t[69] = 78; t[75] = 79; t[87] = 80; t[89] = 81; t[90] = 82; t[92] = 344; t[94] = 83; t[97] = 352; t[100] = 84; t[104] = 85; t[115] = 86; t[116] = 87; t[121] = 88; t[122] = 89; t[124] = 221; t[127] = 90; t[129] = 381; t[258] = 97; t[260] = 225; t[268] = 261; t[271] = 98; t[272] = 99; t[273] = 263; t[275] = 269; t[282] = 100; t[286] = 101; t[288] = 233; t[290] = 283; t[295] = 281; t[296] = 102; t[336] = 103; t[346] = 104; t[349] = 105; t[351] = 237; t[361] = 106; t[364] = 107; t[367] = 108; t[371] = 322; t[373] = 109; t[374] = 110; t[381] = 111; t[383] = 243; t[393] = 112; t[395] = 113; t[396] = 114; t[398] = 345; t[400] = 115; t[401] = 347; t[403] = 353; t[410] = 116; t[437] = 117; t[448] = 118; t[449] = 119; t[454] = 120; t[455] = 121; t[457] = 253; t[460] = 122; t[462] = 382; t[463] = 380; t[853] = 44; t[855] = 58; t[856] = 46; t[876] = 47; t[878] = 45; t[882] = 45; t[894] = 40; t[895] = 41; t[896] = 91; t[897] = 93; t[923] = 64; t[1004] = 48; t[1005] = 49; t[1006] = 50; t[1007] = 51; t[1008] = 52; t[1009] = 53; t[1010] = 54; t[1011] = 55; t[1012] = 56; t[1013] = 57; t[1081] = 37; t[1085] = 43; t[1086] = 45; }); function getStandardFontName(name) { const fontName = normalizeFontName(name); const stdFontMap = getStdFontMap(); return stdFontMap[fontName]; } export { getFontNameToFileMap, getGlyphMapForStandardFonts, getNonStdFontMap, getSerifFonts, getStandardFontName, getStdFontMap, getSupplementalGlyphMapForArialBlack, getSupplementalGlyphMapForCalibri, getSymbolsFonts, };