Serenity Operating System
at master 655 lines 38 kB view raw
1/* 2 * Copyright (c) 2022, Matthew Olsson <mattco@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/HashMap.h> 10#include <LibPDF/ObjectDerivatives.h> 11 12// Appendix D.2: Latin Character Set and Encodings 13#define ENUMERATE_LATIN_CHARACTER_SET(FN) \ 14 FN(A, 65, 65, 65, 65) \ 15 FN(AE, 225, 174, 198, 198) \ 16 FN(Aacute, -1, 231, 193, 193) \ 17 FN(Acircumflex, -1, 229, 194, 194) \ 18 FN(Adieresis, -1, 128, 196, 196) \ 19 FN(Agrave, -1, 203, 192, 192) \ 20 FN(Aring, -1, 129, 197, 197) \ 21 FN(Atilde, -1, 204, 195, 195) \ 22 FN(B, 66, 66, 66, 66) \ 23 FN(C, 67, 67, 67, 67) \ 24 FN(Ccedilla, -1, 130, 199, 199) \ 25 FN(D, 68, 68, 68, 68) \ 26 FN(E, 69, 69, 69, 69) \ 27 FN(Eacute, -1, 131, 201, 201) \ 28 FN(Ecircumflex, -1, 230, 202, 202) \ 29 FN(Edieresis, -1, 232, 203, 203) \ 30 FN(Egrave, -1, 233, 200, 200) \ 31 FN(Eth, -1, -1, 208, 208) \ 32 FN(Euro, -1, -1, 128, 160) /* FIXME: Note 1 */ \ 33 FN(F, 70, 70, 70, 70) \ 34 FN(G, 71, 71, 71, 71) \ 35 FN(H, 72, 72, 72, 72) \ 36 FN(I, 73, 73, 73, 73) \ 37 FN(Iacute, -1, 234, 205, 205) \ 38 FN(Icircumflex, -1, 235, 206, 206) \ 39 FN(Idieresis, -1, 236, 207, 207) \ 40 FN(Igrave, -1, 237, 204, 204) \ 41 FN(J, 74, 74, 74, 74) \ 42 FN(K, 75, 75, 75, 75) \ 43 FN(L, 76, 76, 76, 76) \ 44 FN(Lslash, 232, -1, -1, 149) \ 45 FN(M, 77, 77, 77, 77) \ 46 FN(N, 78, 78, 78, 78) \ 47 FN(Ntilde, -1, 132, 209, 209) \ 48 FN(O, 79, 79, 79, 79) \ 49 FN(OE, 234, 206, 140, 150) \ 50 FN(Oacute, -1, 238, 211, 211) \ 51 FN(Ocircumflex, -1, 239, 212, 212) \ 52 FN(Odieresis, -1, 133, 214, 214) \ 53 FN(Ograve, -1, 241, 210, 210) \ 54 FN(Oslash, 233, 175, 216, 216) \ 55 FN(Otilde, -1, 205, 213, 213) \ 56 FN(P, 80, 80, 80, 80) \ 57 FN(Q, 81, 81, 81, 81) \ 58 FN(R, 82, 82, 82, 82) \ 59 FN(S, 83, 83, 83, 83) \ 60 FN(Scaron, -1, -1, 138, 151) \ 61 FN(T, 84, 84, 84, 84) \ 62 FN(Thorn, -1, -1, 222, 222) \ 63 FN(U, 85, 85, 85, 85) \ 64 FN(Uacute, -1, 242, 218, 218) \ 65 FN(Ucircumflex, -1, 243, 219, 219) \ 66 FN(Udieresis, -1, 134, 220, 220) \ 67 FN(Ugrave, -1, 244, 217, 217) \ 68 FN(V, 86, 86, 86, 86) \ 69 FN(W, 87, 87, 87, 87) \ 70 FN(X, 88, 88, 88, 88) \ 71 FN(Y, 89, 89, 89, 89) \ 72 FN(Yacute, -1, -1, 221, 221) \ 73 FN(Ydieresis, -1, 217, 159, 152) \ 74 FN(Z, 90, 90, 90, 90) \ 75 FN(Zcaron, -1, -1, 142, 153) /* FIXME: Note 2 */ \ 76 FN(a, 97, 97, 97, 97) \ 77 FN(aacute, -1, 135, 225, 225) \ 78 FN(acircumflex, -1, 137, 226, 226) \ 79 FN(acute, 194, 171, 180, 180) \ 80 FN(adieresis, -1, 138, 228, 228) \ 81 FN(ae, 241, 190, 230, 230) \ 82 FN(agrave, -1, 136, 224, 224) \ 83 FN(ampersand, 38, 38, 38, 38) \ 84 FN(aring, -1, 140, 229, 229) \ 85 FN(asciicircum, 94, 94, 94, 94) \ 86 FN(asciitilde, 126, 126, 126, 126) \ 87 FN(asterisk, 42, 42, 42, 42) \ 88 FN(at, 64, 64, 64, 64) \ 89 FN(atilde, -1, 139, 227, 227) \ 90 FN(b, 98, 98, 98, 98) \ 91 FN(backslash, 92, 92, 92, 92) \ 92 FN(bar, 124, 124, 124, 124) \ 93 FN(braceleft, 123, 123, 123, 123) \ 94 FN(braceright, 125, 125, 125, 125) \ 95 FN(bracketleft, 91, 91, 91, 91) \ 96 FN(bracketright, 93, 93, 93, 93) \ 97 FN(breve, 198, 249, -1, 24) \ 98 FN(brokenbar, -1, -1, 166, 166) \ 99 FN(bullet, 183, 165, 149, 128) \ 100 FN(c, 99, 99, 99, 99) \ 101 FN(caron, 207, 255, -1, 25) \ 102 FN(ccedilla, -1, 141, 231, 231) \ 103 FN(cedilla, 203, 252, 184, 184) \ 104 FN(cent, 162, 162, 162, 162) \ 105 FN(circumflex, 195, 246, 136, 26) \ 106 FN(colon, 58, 58, 58, 58) \ 107 FN(comma, 44, 44, 44, 44) \ 108 FN(copyright, -1, 169, 169, 169) \ 109 FN(currency, 168, 219, 164, 164) /* FIXME: Note 1 */ \ 110 FN(d, 100, 100, 100, 100) \ 111 FN(dagger, 178, 160, 134, 129) \ 112 FN(daggerdbl, 179, 224, 135, 130) \ 113 FN(degree, -1, 161, 176, 176) \ 114 FN(dieresis, 200, 172, 168, 168) \ 115 FN(divide, -1, 214, 247, 247) \ 116 FN(dollar, 36, 36, 36, 36) \ 117 FN(dotaccent, 199, 250, -1, 27) \ 118 FN(dotlessi, 245, 245, -1, 154) \ 119 FN(e, 101, 101, 101, 101) \ 120 FN(eacute, -1, 142, 233, 233) \ 121 FN(ecircumflex, -1, 144, 234, 234) \ 122 FN(edieresis, -1, 145, 235, 235) \ 123 FN(egrave, -1, 143, 232, 232) \ 124 FN(eight, 56, 56, 56, 56) \ 125 FN(ellipsis, 188, 201, 133, 131) \ 126 FN(emdash, 208, 209, 151, 132) \ 127 FN(endash, 177, 208, 150, 133) \ 128 FN(equal, 61, 61, 61, 61) \ 129 FN(eth, -1, -1, 240, 240) \ 130 FN(exclam, 33, 33, 33, 33) \ 131 FN(exclamdown, 161, 193, 161, 161) \ 132 FN(f, 102, 102, 102, 102) \ 133 FN(fi, 174, 222, -1, 147) \ 134 FN(five, 53, 53, 53, 53) \ 135 FN(fl, 175, 223, -1, 148) \ 136 FN(florin, 166, 196, 131, 134) \ 137 FN(four, 52, 52, 52, 52) \ 138 FN(fraction, 164, 218, -1, 135) \ 139 FN(g, 103, 103, 103, 103) \ 140 FN(germandbls, 251, 167, 223, 223) \ 141 FN(grave, 193, 96, 96, 96) \ 142 FN(greater, 62, 62, 62, 62) \ 143 FN(guillemotleft, 171, 199, 171, 171) /* FIXME: Note 4 */ \ 144 FN(guillemotright, 187, 200, 187, 187) /* FIXME: Note 4 */ \ 145 FN(guilsinglleft, 172, 220, 139, 136) \ 146 FN(guilsinglright, 173, 221, 155, 137) \ 147 FN(h, 104, 104, 104, 104) \ 148 FN(hungarumlaut, 205, 253, -1, 28) \ 149 FN(hyphen, 45, 45, 45, 45) /* FIXME: Note 5 */ \ 150 FN(i, 105, 105, 105, 105) \ 151 FN(iacute, -1, 146, 237, 237) \ 152 FN(icircumflex, -1, 148, 238, 238) \ 153 FN(idieresis, -1, 149, 239, 239) \ 154 FN(igrave, -1, 147, 236, 236) \ 155 FN(j, 106, 106, 106, 106) \ 156 FN(k, 107, 107, 107, 107) \ 157 FN(l, 108, 108, 108, 108) \ 158 FN(less, 60, 60, 60, 60) \ 159 FN(logicalnot, -1, 194, 172, 172) \ 160 FN(lslash, 248, -1, -1, 155) \ 161 FN(m, 109, 109, 109, 109) \ 162 FN(macron, 197, 248, 175, 175) \ 163 FN(minus, -1, -1, -1, 138) \ 164 FN(mu, -1, 181, 181, 181) \ 165 FN(multiply, -1, -1, 215, 215) \ 166 FN(n, 110, 110, 110, 110) \ 167 FN(nine, 57, 57, 57, 57) \ 168 FN(ntilde, -1, 150, 241, 241) \ 169 FN(numbersign, 35, 35, 35, 35) \ 170 FN(o, 111, 111, 111, 111) \ 171 FN(oacute, -1, 151, 243, 243) \ 172 FN(ocircumflex, -1, 153, 244, 244) \ 173 FN(odieresis, -1, 154, 246, 246) \ 174 FN(oe, 250, 207, 156, 156) \ 175 FN(ogonek, 206, 254, -1, 29) \ 176 FN(ograve, -1, 152, 242, 242) \ 177 FN(one, 49, 49, 49, 49) \ 178 FN(onehalf, -1, -1, 189, 189) \ 179 FN(onequarter, -1, -1, 188, 188) \ 180 FN(onesuperior, -1, -1, 185, 185) \ 181 FN(ordfeminine, 227, 187, 170, 170) \ 182 FN(ordmasculine, 235, 188, 186, 186) \ 183 FN(oslash, 249, 191, 248, 248) \ 184 FN(otilde, -1, 155, 245, 245) \ 185 FN(p, 112, 112, 112, 112) \ 186 FN(paragraph, 182, 166, 182, 182) \ 187 FN(parenleft, 40, 40, 40, 40) \ 188 FN(parenright, 41, 41, 41, 41) \ 189 FN(percent, 37, 37, 37, 37) \ 190 FN(period, 46, 46, 46, 46) \ 191 FN(periodcentered, 180, 225, 183, 183) \ 192 FN(perthousand, 189, 228, 137, 139) \ 193 FN(plus, 43, 43, 43, 43) \ 194 FN(plusminus, -1, 177, 177, 177) \ 195 FN(q, 113, 113, 113, 113) \ 196 FN(question, 63, 63, 63, 63) \ 197 FN(questiondown, 191, 192, 191, 191) \ 198 FN(quotedbl, 34, 34, 34, 34) \ 199 FN(quotedblbase, 185, 227, 132, 140) \ 200 FN(quotedblleft, 170, 210, 147, 141) \ 201 FN(quotedblright, 186, 211, 148, 142) \ 202 FN(quoteleft, 96, 212, 145, 143) \ 203 FN(quoteright, 39, 213, 146, 144) \ 204 FN(quotesinglbase, 184, 226, 130, 145) \ 205 FN(quotesingle, 169, 39, 39, 39) \ 206 FN(r, 114, 114, 114, 114) \ 207 FN(registered, -1, 168, 174, 174) \ 208 FN(ring, 202, 251, -1, 30) \ 209 FN(s, 115, 115, 115, 115) \ 210 FN(scaron, -1, -1, 154, 157) \ 211 FN(section, 167, 164, 167, 167) \ 212 FN(semicolon, 59, 59, 59, 59) \ 213 FN(seven, 55, 55, 55, 55) \ 214 FN(six, 54, 54, 54, 54) \ 215 FN(slash, 47, 47, 47, 47) \ 216 FN(space, 32, 32, 32, 32) /* FIXME: Note 6 */ \ 217 FN(sterling, 163, 163, 163, 163) \ 218 FN(t, 116, 116, 116, 116) \ 219 FN(thorn, -1, -1, 254, 254) \ 220 FN(three, 51, 51, 51, 51) \ 221 FN(threequarters, -1, -1, 190, 190) \ 222 FN(threesuperior, -1, -1, 179, 179) \ 223 FN(tilde, 196, 247, 152, 31) \ 224 FN(trademark, -1, 170, 153, 146) \ 225 FN(two, 50, 50, 50, 50) \ 226 FN(twosuperior, -1, -1, 178, 178) \ 227 FN(u, 117, 117, 117, 117) \ 228 FN(uacute, -1, 156, 250, 250) \ 229 FN(ucircumflex, -1, 158, 251, 251) \ 230 FN(udieresis, -1, 159, 252, 252) \ 231 FN(ugrave, -1, 157, 249, 249) \ 232 FN(underscore, 95, 95, 95, 95) \ 233 FN(v, 118, 118, 118, 118) \ 234 FN(w, 119, 119, 119, 119) \ 235 FN(x, 120, 120, 120, 120) \ 236 FN(y, 121, 121, 121, 121) \ 237 FN(yacute, -1, -1, 253, 253) \ 238 FN(ydieresis, -1, 216, 255, 255) \ 239 FN(yen, 165, 180, 165, 165) \ 240 FN(z, 122, 122, 122, 122) \ 241 FN(zcaron, -1, -1, 158, 158) /* FIXME: Note 2 */ \ 242 FN(zero, 48, 48, 48, 48) 243 244// https://help.adobe.com/en_US/framemaker/2015/using/using-framemaker-2015/frm_references_re/frm_character_sets_cs/Symbol_and_ZapfDingbats_character_sets-.htm 245#define ENUMERATE_SYMBOL_CHARACTER_SET(V) \ 246 V(Alpha, 65) \ 247 V(Beta, 66) \ 248 V(Chi, 67) \ 249 V(Delta, 68) \ 250 V(Epsilon, 69) \ 251 V(Eta, 72) \ 252 V(Euro, 160) \ 253 V(Gamma, 71) \ 254 V(Ifraktur, 193) \ 255 V(Iota, 73) \ 256 V(Kappa, 75) \ 257 V(Lambda, 76) \ 258 V(Mu, 77) \ 259 V(Nu, 78) \ 260 V(Omega, 87) \ 261 V(Omicron, 79) \ 262 V(Phi, 70) \ 263 V(Pi, 80) \ 264 V(Psi, 89) \ 265 V(Rfraktur, 194) \ 266 V(Rho, 82) \ 267 V(Sigma, 83) \ 268 V(Tau, 84) \ 269 V(Theta, 81) \ 270 V(Upsilon, 85) \ 271 V(Upsilon1, 161) \ 272 V(Xi, 88) \ 273 V(Zeta, 90) \ 274 V(aleph, 192) \ 275 V(alpha, 97) \ 276 V(ampersand, 38) \ 277 V(angle, 208) \ 278 V(angleleft, 225) \ 279 V(angleright, 241) \ 280 V(approxequal, 187) \ 281 V(arrowboth, 171) \ 282 V(arrowdblboth, 219) \ 283 V(arrowdbldown, 223) \ 284 V(arrowdblleft, 220) \ 285 V(arrowdblright, 222) \ 286 V(arrowdblup, 221) \ 287 V(arrowdown, 175) \ 288 V(arrowhorizex, 190) \ 289 V(arrowleft, 172) \ 290 V(arrowright, 174) \ 291 V(arrowup, 173) \ 292 V(arrowvertex, 189) \ 293 V(asteriskmath, 42) \ 294 V(bar, 124) \ 295 V(beta, 98) \ 296 V(braceleft, 123) \ 297 V(braceright, 125) \ 298 V(bracelefttp, 236) \ 299 V(braceleftmid, 237) \ 300 V(braceleftbt, 238) \ 301 V(bracerighttp, 252) \ 302 V(bracerightmid, 253) \ 303 V(bracerightbt, 254) \ 304 V(braceex, 239) \ 305 V(bracketleft, 91) \ 306 V(bracketright, 93) \ 307 V(bracketlefttp, 233) \ 308 V(bracketleftex, 234) \ 309 V(bracketleftbt, 235) \ 310 V(bracketrighttp, 249) \ 311 V(bracketrightex, 250) \ 312 V(bracketrightbt, 251) \ 313 V(bullet, 183) \ 314 V(carriagereturn, 191) \ 315 V(chi, 99) \ 316 V(circlemultiply, 196) \ 317 V(circleplus, 197) \ 318 V(club, 167) \ 319 V(colon, 58) \ 320 V(comma, 44) \ 321 V(congruent, 64) \ 322 V(copyrightsans, 227) \ 323 V(copyrightserif, 211) \ 324 V(degree, 176) \ 325 V(delta, 100) \ 326 V(diamond, 168) \ 327 V(divide, 184) \ 328 V(dotmath, 215) \ 329 V(eight, 56) \ 330 V(element, 206) \ 331 V(ellipsis, 188) \ 332 V(emptyset, 198) \ 333 V(epsilon, 101) \ 334 V(equal, 61) \ 335 V(equivalence, 186) \ 336 V(eta, 104) \ 337 V(exclam, 33) \ 338 V(existential, 36) \ 339 V(five, 53) \ 340 V(florin, 166) \ 341 V(four, 52) \ 342 V(fraction, 164) \ 343 V(gamma, 103) \ 344 V(gradient, 209) \ 345 V(greater, 62) \ 346 V(greaterequal, 179) \ 347 V(heart, 169) \ 348 V(infinity, 165) \ 349 V(integral, 242) \ 350 V(integraltp, 243) \ 351 V(integralex, 244) \ 352 V(integralbt, 245) \ 353 V(intersection, 199) \ 354 V(iota, 105) \ 355 V(kappa, 107) \ 356 V(lambda, 108) \ 357 V(less, 60) \ 358 V(lessequal, 163) \ 359 V(logicaland, 217) \ 360 V(logicalnot, 216) \ 361 V(logicalor, 218) \ 362 V(lozenge, 224) \ 363 V(minus, 45) \ 364 V(minute, 162) \ 365 V(mu, 109) \ 366 V(multiply, 180) \ 367 V(nine, 57) \ 368 V(notelement, 207) \ 369 V(notequal, 185) \ 370 V(notsubset, 203) \ 371 V(nu, 110) \ 372 V(numbersign, 35) \ 373 V(omega, 119) \ 374 V(omega1, 118) \ 375 V(omicron, 111) \ 376 V(one, 49) \ 377 V(parenleft, 40) \ 378 V(parenright, 41) \ 379 V(parenlefttp, 230) \ 380 V(parenleftex, 231) \ 381 V(parenleftbt, 232) \ 382 V(parenrighttp, 246) \ 383 V(parenrightex, 247) \ 384 V(parenrightbt, 248) \ 385 V(partialdiff, 182) \ 386 V(percent, 37) \ 387 V(period, 46) \ 388 V(perpendicular, 94) \ 389 V(phi, 102) \ 390 V(phi1, 106) \ 391 V(pi, 112) \ 392 V(plus, 43) \ 393 V(plusminus, 177) \ 394 V(product, 213) \ 395 V(propersubset, 204) \ 396 V(propersuperset, 201) \ 397 V(proportional, 181) \ 398 V(psi, 121) \ 399 V(question, 63) \ 400 V(radical, 214) \ 401 V(radicalex, 96) /* FIXME: What is this character, ? */ \ 402 V(reflexsubset, 205) \ 403 V(reflexsuperset, 202) \ 404 V(registersans, 226) \ 405 V(registerserif, 210) \ 406 V(rho, 114) \ 407 V(second, 178) \ 408 V(semicolon, 59) \ 409 V(seven, 55) \ 410 V(sigma, 115) \ 411 V(sigma1, 86) \ 412 V(similar, 126) \ 413 V(six, 54) \ 414 V(slash, 47) \ 415 V(space, 32) \ 416 V(spade, 170) \ 417 V(suchthat, 39) \ 418 V(summation, 229) \ 419 V(tau, 116) \ 420 V(therefore, 92) \ 421 V(theta, 113) \ 422 V(theta1, 74) \ 423 V(three, 51) \ 424 V(trademarksans, 228) \ 425 V(trademarkserif, 212) \ 426 V(two, 50) \ 427 V(underscore, 95) \ 428 V(union, 200) \ 429 V(universal, 34) \ 430 V(upsilon, 117) \ 431 V(weierstrass, 195) \ 432 V(xi, 120) \ 433 V(zero, 48) \ 434 V(zeta, 15) 435 436#define ENUMERATE_ZAPF_DINGBATS_CHARACTER_SET(V) \ 437 V(space, 040) \ 438 V(a1, 041) \ 439 V(a2, 042) \ 440 V(a202, 043) \ 441 V(a3, 044) \ 442 V(a4, 045) \ 443 V(a5, 046) \ 444 V(a119, 047) \ 445 V(a118, 050) \ 446 V(a117, 051) \ 447 V(a11, 052) \ 448 V(a12, 053) \ 449 V(a13, 054) \ 450 V(a14, 055) \ 451 V(a15, 056) \ 452 V(a16, 057) \ 453 V(a105, 060) \ 454 V(a17, 061) \ 455 V(a18, 062) \ 456 V(a19, 063) \ 457 V(a20, 064) \ 458 V(a21, 065) \ 459 V(a22, 066) \ 460 V(a23, 067) \ 461 V(a24, 070) \ 462 V(a25, 071) \ 463 V(a26, 072) \ 464 V(a27, 073) \ 465 V(a28, 074) \ 466 V(a6, 075) \ 467 V(a7, 076) \ 468 V(a8, 077) \ 469 V(a9, 0100) \ 470 V(a10, 0101) \ 471 V(a29, 0102) \ 472 V(a30, 0103) \ 473 V(a31, 0104) \ 474 V(a32, 0105) \ 475 V(a33, 0106) \ 476 V(a34, 0107) \ 477 V(a35, 0110) \ 478 V(a36, 0111) \ 479 V(a37, 0112) \ 480 V(a38, 0113) \ 481 V(a39, 0114) \ 482 V(a40, 0115) \ 483 V(a41, 0116) \ 484 V(a42, 0117) \ 485 V(a43, 0120) \ 486 V(a44, 0121) \ 487 V(a45, 0122) \ 488 V(a46, 0123) \ 489 V(a47, 0124) \ 490 V(a48, 0125) \ 491 V(a49, 0126) \ 492 V(a50, 0127) \ 493 V(a51, 0130) \ 494 V(a52, 0131) \ 495 V(a53, 0132) \ 496 V(a54, 0133) \ 497 V(a55, 0134) \ 498 V(a56, 0135) \ 499 V(a57, 0136) \ 500 V(a58, 0137) \ 501 V(a59, 0140) \ 502 V(a60, 0141) \ 503 V(a61, 0142) \ 504 V(a62, 0143) \ 505 V(a63, 0144) \ 506 V(a64, 0145) \ 507 V(a65, 0146) \ 508 V(a66, 0147) \ 509 V(a67, 0150) \ 510 V(a68, 0151) \ 511 V(a69, 0152) \ 512 V(a70, 0153) \ 513 V(a71, 0154) \ 514 V(a72, 0155) \ 515 V(a73, 0156) \ 516 V(a74, 0157) \ 517 V(a203, 0160) \ 518 V(a75, 0161) \ 519 V(a204, 0162) \ 520 V(a76, 0163) \ 521 V(a77, 0164) \ 522 V(a78, 0165) \ 523 V(a79, 0166) \ 524 V(a81, 0167) \ 525 V(a82, 0170) \ 526 V(a83, 0171) \ 527 V(a84, 0172) \ 528 V(a97, 0173) \ 529 V(a98, 0174) \ 530 V(a99, 0175) \ 531 V(a100, 0176) \ 532 V(a101, 0241) \ 533 V(a102, 0242) \ 534 V(a103, 0243) \ 535 V(a104, 0244) \ 536 V(a106, 0245) \ 537 V(a107, 0246) \ 538 V(a108, 0247) \ 539 V(a112, 0250) \ 540 V(a111, 0251) \ 541 V(a110, 0252) \ 542 V(a109, 0253) \ 543 V(a120, 0254) \ 544 V(a121, 0255) \ 545 V(a122, 0256) \ 546 V(a123, 0257) \ 547 V(a124, 0260) \ 548 V(a125, 0261) \ 549 V(a126, 0262) \ 550 V(a127, 0263) \ 551 V(a128, 0264) \ 552 V(a129, 0265) \ 553 V(a130, 0266) \ 554 V(a131, 0267) \ 555 V(a132, 0270) \ 556 V(a133, 0271) \ 557 V(a134, 0272) \ 558 V(a135, 0273) \ 559 V(a136, 0274) \ 560 V(a137, 0275) \ 561 V(a138, 0276) \ 562 V(a139, 0277) \ 563 V(a140, 0300) \ 564 V(a141, 0301) \ 565 V(a142, 0302) \ 566 V(a143, 0303) \ 567 V(a144, 0304) \ 568 V(a145, 0305) \ 569 V(a146, 0306) \ 570 V(a147, 0307) \ 571 V(a148, 0310) \ 572 V(a149, 0311) \ 573 V(a150, 0312) \ 574 V(a151, 0313) \ 575 V(a152, 0314) \ 576 V(a153, 0315) \ 577 V(a154, 0316) \ 578 V(a155, 0317) \ 579 V(a156, 0320) \ 580 V(a157, 0321) \ 581 V(a158, 0322) \ 582 V(a159, 0323) \ 583 V(a160, 0324) \ 584 V(a161, 0325) \ 585 V(a163, 0326) \ 586 V(a164, 0327) \ 587 V(a196, 0330) \ 588 V(a165, 0331) \ 589 V(a192, 0332) \ 590 V(a166, 0333) \ 591 V(a167, 0334) \ 592 V(a168, 0335) \ 593 V(a169, 0336) \ 594 V(a170, 0337) \ 595 V(a171, 0340) \ 596 V(a172, 0341) \ 597 V(a173, 0342) \ 598 V(a162, 0343) \ 599 V(a174, 0344) \ 600 V(a175, 0345) \ 601 V(a176, 0346) \ 602 V(a177, 0347) \ 603 V(a178, 0350) \ 604 V(a179, 0351) \ 605 V(a193, 0352) \ 606 V(a180, 0353) \ 607 V(a199, 0354) \ 608 V(a181, 0355) \ 609 V(a200, 0356) \ 610 V(a182, 0357) \ 611 V(a201, 0361) \ 612 V(a183, 0362) \ 613 V(a184, 0363) \ 614 V(a197, 0364) \ 615 V(a185, 0365) \ 616 V(a194, 0366) \ 617 V(a198, 0367) \ 618 V(a186, 0370) \ 619 V(a195, 0371) \ 620 V(a187, 0372) \ 621 V(a188, 0373) \ 622 V(a189, 0374) \ 623 V(a190, 0375) \ 624 V(a191, 0376) 625 626namespace PDF { 627 628class Encoding : public RefCounted<Encoding> { 629public: 630 using CharCodeType = u8; 631 static NonnullRefPtr<Encoding> create(); 632 static PDFErrorOr<NonnullRefPtr<Encoding>> from_object(Document*, NonnullRefPtr<Object> const&); 633 634 static NonnullRefPtr<Encoding> standard_encoding(); 635 static NonnullRefPtr<Encoding> mac_encoding(); 636 static NonnullRefPtr<Encoding> windows_encoding(); 637 static NonnullRefPtr<Encoding> pdf_doc_encoding(); 638 static NonnullRefPtr<Encoding> symbol_encoding(); 639 static NonnullRefPtr<Encoding> zapf_encoding(); 640 641 HashMap<DeprecatedString, CharCodeType> const& name_mapping() const { return m_name_mapping; } 642 643 u16 get_char_code(DeprecatedString const&) const; 644 DeprecatedFlyString get_name(u8 char_code) const; 645 646 void set(CharCodeType char_code, DeprecatedFlyString const& glyph_name); 647 648protected: 649 HashMap<CharCodeType, DeprecatedFlyString> m_descriptors; 650 HashMap<DeprecatedString, CharCodeType> m_name_mapping; 651 652 bool m_windows { false }; 653}; 654 655}