| Commit | Line | Data |
|---|---|---|
| 92d0a6a6 | 1 | // -*- C++ -*- |
| 4d3e9548 | 2 | /* Copyright (C) 2003, 2004, 2009 Free Software Foundation, Inc. |
| 92d0a6a6 JR |
3 | Written by Jeff Conrad (jeff_conrad@msn.com) |
| 4 | ||
| 5 | This file is part of groff. | |
| 6 | ||
| 7 | groff is free software; you can redistribute it and/or modify it under | |
| 8 | the terms of the GNU General Public License as published by the Free | |
| 4d3e9548 JL |
9 | Software Foundation, either version 3 of the License, or |
| 10 | (at your option) any later version. | |
| 92d0a6a6 JR |
11 | |
| 12 | groff is distributed in the hope that it will be useful, but WITHOUT ANY | |
| 13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 14 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 15 | for more details. | |
| 16 | ||
| 4d3e9548 JL |
17 | You should have received a copy of the GNU General Public License |
| 18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
| 92d0a6a6 JR |
19 | |
| 20 | #include "lib.h" | |
| 21 | #include "stringclass.h" | |
| 22 | #include "ptable.h" | |
| 23 | ||
| 24 | #include "unicode.h" | |
| 25 | ||
| 26 | struct hp_msl_to_unicode { | |
| 27 | char *value; | |
| 28 | }; | |
| 29 | ||
| 30 | declare_ptable(hp_msl_to_unicode) | |
| 31 | implement_ptable(hp_msl_to_unicode) | |
| 32 | ||
| 33 | PTABLE(hp_msl_to_unicode) hp_msl_to_unicode_table; | |
| 34 | ||
| 35 | struct S { | |
| 36 | const char *key; | |
| 37 | const char *value; | |
| 38 | } hp_msl_to_unicode_list[] = { | |
| 39 | { "1", "0021", }, // Exclamation Mark | |
| 40 | { "2", "0022", }, // Neutral Double Quote | |
| 41 | { "3", "0023", }, // Number Sign | |
| 42 | { "4", "0024", }, // Dollar Sign | |
| 43 | { "5", "0025", }, // Per Cent Sign | |
| 44 | { "6", "0026", }, // Ampersand | |
| 45 | { "8", "2019", }, // Single Close Quote (9) | |
| 46 | { "9", "0028", }, // Left Parenthesis | |
| 47 | { "10", "0029", }, // Right Parenthesis | |
| 48 | { "11", "002A", }, // Asterisk | |
| 49 | { "12", "002B", }, // Plus Sign | |
| 50 | { "13", "002C", }, // Comma, or Decimal Separator | |
| 51 | { "14", "002D", }, // Hyphen | |
| 52 | { "15", "002E", }, // Period, or Full Stop | |
| 53 | { "16", "002F", }, // Solidus, or Slash | |
| 54 | { "17", "0030", }, // Numeral Zero | |
| 55 | { "18", "0031", }, // Numeral One | |
| 56 | { "19", "0032", }, // Numeral Two | |
| 57 | { "20", "0033", }, // Numeral Three | |
| 58 | { "21", "0034", }, // Numeral Four | |
| 59 | { "22", "0035", }, // Numeral Five | |
| 60 | { "23", "0036", }, // Numeral Six | |
| 61 | { "24", "0037", }, // Numeral Seven | |
| 62 | { "25", "0038", }, // Numeral Eight | |
| 63 | { "26", "0039", }, // Numeral Nine | |
| 64 | { "27", "003A", }, // Colon | |
| 65 | { "28", "003B", }, // Semicolon | |
| 66 | { "29", "003C", }, // Less Than Sign | |
| 67 | { "30", "003D", }, // Equals Sign | |
| 68 | { "31", "003E", }, // Greater Than Sign | |
| 69 | { "32", "003F", }, // Question Mark | |
| 70 | { "33", "0040", }, // Commercial At | |
| 71 | { "34", "0041", }, // Uppercase A | |
| 72 | { "35", "0042", }, // Uppercase B | |
| 73 | { "36", "0043", }, // Uppercase C | |
| 74 | { "37", "0044", }, // Uppercase D | |
| 75 | { "38", "0045", }, // Uppercase E | |
| 76 | { "39", "0046", }, // Uppercase F | |
| 77 | { "40", "0047", }, // Uppercase G | |
| 78 | { "41", "0048", }, // Uppercase H | |
| 79 | { "42", "0049", }, // Uppercase I | |
| 80 | { "43", "004A", }, // Uppercase J | |
| 81 | { "44", "004B", }, // Uppercase K | |
| 82 | { "45", "004C", }, // Uppercase L | |
| 83 | { "46", "004D", }, // Uppercase M | |
| 84 | { "47", "004E", }, // Uppercase N | |
| 85 | { "48", "004F", }, // Uppercase O | |
| 86 | { "49", "0050", }, // Uppercase P | |
| 87 | { "50", "0051", }, // Uppercase Q | |
| 88 | { "51", "0052", }, // Uppercase R | |
| 89 | { "52", "0053", }, // Uppercase S | |
| 90 | { "53", "0054", }, // Uppercase T | |
| 91 | { "54", "0055", }, // Uppercase U | |
| 92 | { "55", "0056", }, // Uppercase V | |
| 93 | { "56", "0057", }, // Uppercase W | |
| 94 | { "57", "0058", }, // Uppercase X | |
| 95 | { "58", "0059", }, // Uppercase Y | |
| 96 | { "59", "005A", }, // Uppercase Z | |
| 97 | { "60", "005B", }, // Left Bracket | |
| 98 | { "61", "005C", }, // Reverse Solidus, or Backslash | |
| 99 | { "62", "005D", }, // Right Bracket | |
| 100 | { "63", "005E", }, // Circumflex, Exponent, or Pointer | |
| 101 | { "64", "005F", }, // Underline or Underscore Character | |
| 102 | { "66", "2018", }, // Single Open Quote (6) | |
| 103 | { "67", "0061", }, // Lowercase A | |
| 104 | { "68", "0062", }, // Lowercase B | |
| 105 | { "69", "0063", }, // Lowercase C | |
| 106 | { "70", "0064", }, // Lowercase D | |
| 107 | { "71", "0065", }, // Lowercase E | |
| 108 | { "72", "0066", }, // Lowercase F | |
| 109 | { "73", "0067", }, // Lowercase G | |
| 110 | { "74", "0068", }, // Lowercase H | |
| 111 | { "75", "0069", }, // Lowercase I | |
| 112 | { "76", "006A", }, // Lowercase J | |
| 113 | { "77", "006B", }, // Lowercase K | |
| 114 | { "78", "006C", }, // Lowercase L | |
| 115 | { "79", "006D", }, // Lowercase M | |
| 116 | { "80", "006E", }, // Lowercase N | |
| 117 | { "81", "006F", }, // Lowercase O | |
| 118 | { "82", "0070", }, // Lowercase P | |
| 119 | { "83", "0071", }, // Lowercase Q | |
| 120 | { "84", "0072", }, // Lowercase R | |
| 121 | { "85", "0073", }, // Lowercase S | |
| 122 | { "86", "0074", }, // Lowercase T | |
| 123 | { "87", "0075", }, // Lowercase U | |
| 124 | { "88", "0076", }, // Lowercase V | |
| 125 | { "89", "0077", }, // Lowercase W | |
| 126 | { "90", "0078", }, // Lowercase X | |
| 127 | { "91", "0079", }, // Lowercase Y | |
| 128 | { "92", "007A", }, // Lowercase Z | |
| 129 | { "93", "007B", }, // Left Brace | |
| 130 | { "94", "007C", }, // Long Vertical Mark | |
| 131 | { "95", "007D", }, // Right Brace | |
| 132 | { "96", "007E", }, // One Wavy Line Approximate | |
| 133 | { "97", "2592", }, // Medium Shading Character | |
| 134 | { "99", "00C0", }, // Uppercase A Grave | |
| 135 | { "100", "00C2", }, // Uppercase A Circumflex | |
| 136 | { "101", "00C8", }, // Uppercase E Grave | |
| 137 | { "102", "00CA", }, // Uppercase E Circumflex | |
| 138 | { "103", "00CB", }, // Uppercase E Dieresis | |
| 139 | { "104", "00CE", }, // Uppercase I Circumflex | |
| 140 | { "105", "00CF", }, // Uppercase I Dieresis | |
| 141 | { "106", "00B4", }, // Lowercase Acute Accent (Spacing) | |
| 142 | { "107", "0060", }, // Lowercase Grave Accent (Spacing) | |
| 143 | { "108", "02C6", }, // Lowercase Circumflex Accent (Spacing) | |
| 144 | { "109", "00A8", }, // Lowercase Dieresis Accent (Spacing) | |
| 145 | { "110", "02DC", }, // Lowercase Tilde Accent (Spacing) | |
| 146 | { "111", "00D9", }, // Uppercase U Grave | |
| 147 | { "112", "00DB", }, // Uppercase U Circumflex | |
| 148 | { "113", "00AF", }, // Overline, or Overscore Character | |
| 149 | { "114", "00DD", }, // Uppercase Y Acute | |
| 150 | { "115", "00FD", }, // Lowercase Y Acute | |
| 151 | { "116", "00B0", }, // Degree Sign | |
| 152 | { "117", "00C7", }, // Uppercase C Cedilla | |
| 153 | { "118", "00E7", }, // Lowercase C Cedilla | |
| 154 | { "119", "00D1", }, // Uppercase N Tilde | |
| 155 | { "120", "00F1", }, // Lowercase N Tilde | |
| 156 | { "121", "00A1", }, // Inverted Exclamation | |
| 157 | { "122", "00BF", }, // Inverted Question Mark | |
| 158 | { "123", "00A4", }, // Currency Symbol | |
| 159 | { "124", "00A3", }, // Pound Sterling Sign | |
| 160 | { "125", "00A5", }, // Yen Sign | |
| 161 | { "126", "00A7", }, // Section Mark | |
| 162 | { "127", "0192", }, // Florin Sign | |
| 163 | { "128", "00A2", }, // Cent Sign | |
| 164 | { "129", "00E2", }, // Lowercase A Circumflex | |
| 165 | { "130", "00EA", }, // Lowercase E Circumflex | |
| 166 | { "131", "00F4", }, // Lowercase O Circumflex | |
| 167 | { "132", "00FB", }, // Lowercase U Circumflex | |
| 168 | { "133", "00E1", }, // Lowercase A Acute | |
| 169 | { "134", "00E9", }, // Lowercase E Acute | |
| 170 | { "135", "00F3", }, // Lowercase O Acute | |
| 171 | { "136", "00FA", }, // Lowercase U Acute | |
| 172 | { "137", "00E0", }, // Lowercase A Grave | |
| 173 | { "138", "00E8", }, // Lowercase E Grave | |
| 174 | { "139", "00F2", }, // Lowercase O Grave | |
| 175 | { "140", "00F9", }, // Lowercase U Grave | |
| 176 | { "141", "00E4", }, // Lowercase A Dieresis | |
| 177 | { "142", "00EB", }, // Lowercase E Dieresis | |
| 178 | { "143", "00F6", }, // Lowercase O Dieresis | |
| 179 | { "144", "00FC", }, // Lowercase U Dieresis | |
| 180 | { "145", "00C5", }, // Uppercase A Ring | |
| 181 | { "146", "00EE", }, // Lowercase I Circumflex | |
| 182 | { "147", "00D8", }, // Uppercase O Oblique | |
| 183 | { "148", "00C6", }, // Uppercase AE Diphthong | |
| 184 | { "149", "00E5", }, // Lowercase A Ring | |
| 185 | { "150", "00ED", }, // Lowercase I Acute | |
| 186 | { "151", "00F8", }, // Lowercase O Oblique | |
| 187 | { "152", "00E6", }, // Lowercase AE Diphthong | |
| 188 | { "153", "00C4", }, // Uppercase A Dieresis | |
| 189 | { "154", "00EC", }, // Lowercase I Grave | |
| 190 | { "155", "00D6", }, // Uppercase O Dieresis | |
| 191 | { "156", "00DC", }, // Uppercase U Dieresis | |
| 192 | { "157", "00C9", }, // Uppercase E Acute | |
| 193 | { "158", "00EF", }, // Lowercase I Dieresis | |
| 194 | { "159", "00DF", }, // Lowercase Es-zet Ligature | |
| 195 | { "160", "00D4", }, // Uppercase O Circumflex | |
| 196 | { "161", "00C1", }, // Uppercase A Acute | |
| 197 | { "162", "00C3", }, // Uppercase A Tilde | |
| 198 | { "163", "00E3", }, // Lowercase A Tilde | |
| 199 | { "164", "00D0", }, // Uppercase Eth | |
| 200 | //{ "164", "0110", }, // Uppercase D-Stroke | |
| 201 | { "165", "00F0", }, // Lowercase Eth | |
| 202 | { "166", "00CD", }, // Uppercase I Acute | |
| 203 | { "167", "00CC", }, // Uppercase I Grave | |
| 204 | { "168", "00D3", }, // Uppercase O Acute | |
| 205 | { "169", "00D2", }, // Uppercase O Grave | |
| 206 | { "170", "00D5", }, // Uppercase O Tilde | |
| 207 | { "171", "00F5", }, // Lowercase O Tilde | |
| 208 | { "172", "0160", }, // Uppercase S Hacek | |
| 209 | { "173", "0161", }, // Lowercase S Hacek | |
| 210 | { "174", "00DA", }, // Uppercase U Acute | |
| 211 | { "175", "0178", }, // Uppercase Y Dieresis | |
| 212 | { "176", "00FF", }, // Lowercase Y Dieresis | |
| 213 | { "177", "00DE", }, // Uppercase Thorn | |
| 214 | { "178", "00FE", }, // Lowercase Thorn | |
| 215 | { "180", "00B5", }, // Lowercase Greek Mu, or Micro | |
| 216 | { "181", "00B6", }, // Pilcrow, or Paragraph Sign | |
| 217 | { "182", "00BE", }, // Vulgar Fraction 3/4 | |
| 218 | { "183", "2212", }, // Minus Sign | |
| 219 | { "184", "00BC", }, // Vulgar Fraction 1/4 | |
| 220 | { "185", "00BD", }, // Vulgar Fraction 1/2 | |
| 221 | { "186", "00AA", }, // Female Ordinal | |
| 222 | { "187", "00BA", }, // Male Ordinal | |
| 223 | { "188", "00AB", }, // Left Pointing Double Angle Quote | |
| 224 | { "189", "25A0", }, // Medium Solid Square Box | |
| 225 | { "190", "00BB", }, // Right Pointing Double Angle Quote | |
| 226 | { "191", "00B1", }, // Plus Over Minus Sign | |
| 227 | { "192", "00A6", }, // Broken Vertical Mark | |
| 228 | { "193", "00A9", }, // Copyright Sign | |
| 229 | { "194", "00AC", }, // Not Sign | |
| 230 | { "195", "00AD", }, // Soft Hyphen | |
| 231 | { "196", "00AE", }, // Registered Sign | |
| 232 | { "197", "00B2", }, // Superior Numeral 2 | |
| 233 | { "198", "00B3", }, // Superior Numeral 3 | |
| 234 | { "199", "00B8", }, // Lowercase Cedilla (Spacing) | |
| 235 | { "200", "00B9", }, // Superior Numeral 1 | |
| 236 | { "201", "00D7", }, // Multiply Sign | |
| 237 | { "202", "00F7", }, // Divide Sign | |
| 238 | { "203", "263A", }, // Open Smiling Face | |
| 239 | { "204", "263B", }, // Solid Smiling Face | |
| 240 | { "205", "2665", }, // Solid Heart, Card Suit | |
| 241 | { "206", "2666", }, // Solid Diamond, Card Suit | |
| 242 | { "207", "2663", }, // Solid Club, Card Suit | |
| 243 | { "208", "2660", }, // Solid Spade, Card Suit | |
| 244 | { "209", "25CF", }, // Medium Solid Round Bullet | |
| 245 | { "210", "25D8", }, // Large Solid square with White Dot | |
| 246 | { "211", "EFFD", }, // Large Open Round Bullet | |
| 247 | { "212", "25D9", }, // Large Solid square with White Circle | |
| 248 | { "213", "2642", }, // Male Symbol | |
| 249 | { "214", "2640", }, // Female Symbol | |
| 250 | { "215", "266A", }, // Musical Note | |
| 251 | { "216", "266B", }, // Pair Of Musical Notes | |
| 252 | { "217", "263C", }, // Compass, or Eight Pointed Sun | |
| 253 | { "218", "25BA", }, // Right Solid Arrowhead | |
| 254 | { "219", "25C4", }, // Left Solid Arrowhead | |
| 255 | { "220", "2195", }, // Up/Down Arrow | |
| 256 | { "221", "203C", }, // Double Exclamation Mark | |
| 257 | { "222", "25AC", }, // Thick Horizontal Mark | |
| 258 | { "223", "21A8", }, // Up/Down Arrow Baseline | |
| 259 | { "224", "2191", }, // Up Arrow | |
| 260 | { "225", "2193", }, // Down Arrow | |
| 261 | { "226", "2192", }, // Right Arrow | |
| 262 | { "227", "2190", }, // Left Arrow | |
| 263 | { "229", "2194", }, // Left/Right Arrow | |
| 264 | { "230", "25B2", }, // Up Solid Arrowhead | |
| 265 | { "231", "25BC", }, // Down Solid Arrowhead | |
| 266 | { "232", "20A7", }, // Pesetas Sign | |
| 267 | { "233", "2310", }, // Reversed Not Sign | |
| 268 | { "234", "2591", }, // Light Shading Character | |
| 269 | { "235", "2593", }, // Dark Shading Character | |
| 270 | { "236", "2502", }, // Box Draw Line, Vert. 1 | |
| 271 | { "237", "2524", }, // Box Draw Right Tee, Vert. 1 Horiz. 1 | |
| 272 | { "238", "2561", }, // Box Draw Right Tee, Vert. 1 Horiz. 2 | |
| 273 | { "239", "2562", }, // Box Draw Right Tee, Vert. 2 Horiz. 1 | |
| 274 | { "240", "2556", }, // Box Draw Upper Right Corner, Vert. 2 Horiz. 1 | |
| 275 | { "241", "2555", }, // Box Draw Upper Right Corner, Vert. 1 Horiz. 2 | |
| 276 | { "242", "2563", }, // Box Draw Right Tee, Vert. 2 Horiz. 2 | |
| 277 | { "243", "2551", }, // Box Draw Lines, Vert. 2 | |
| 278 | { "244", "2557", }, // Box Draw Upper Right Corner, Vert. 2 Horiz. 2 | |
| 279 | { "245", "255D", }, // Box Draw Lower Right Corner, Vert. 2 Horiz. 2 | |
| 280 | { "246", "255C", }, // Box Draw Lower Right Corner, Vert. 2 Horiz. 1 | |
| 281 | { "247", "255B", }, // Box Draw Lower Right Corner, Vert. 1 Horiz. 2 | |
| 282 | { "248", "2510", }, // Box Draw Upper Right Corner, Vert. 1, Horiz. 1 | |
| 283 | { "249", "2514", }, // Box Draw Lower Left Corner, Vert. 1, Horiz. 1 | |
| 284 | { "250", "2534", }, // Box Draw Bottom Tee, Vert. 1 Horiz. 1 | |
| 285 | { "251", "252C", }, // Box Draw Top Tee, Vert. 1 Horiz. 1 | |
| 286 | { "252", "251C", }, // Box Draw Left Tee, Vert. 1 Horiz. 1 | |
| 287 | { "253", "2500", }, // Box Draw Line, Horiz. 1 | |
| 288 | { "254", "253C", }, // Box Draw Cross, Vert. 1 Horiz. 1 | |
| 289 | { "255", "255E", }, // Box Draw Left Tee, Vert. 1 Horiz. 2 | |
| 290 | { "256", "255F", }, // Box Draw Left Tee, Vert. 2 Horz. 1 | |
| 291 | { "257", "255A", }, // Box Draw Lower Left Corner, Vert. 2 Horiz. 2 | |
| 292 | { "258", "2554", }, // Box Draw Upper Left Corner, Vert. 2 Horiz. 2 | |
| 293 | { "259", "2569", }, // Box Draw Bottom Tee, Vert. 2 Horiz. 2 | |
| 294 | { "260", "2566", }, // Box Draw Top Tee, Vert. 2 Horiz. 2 | |
| 295 | { "261", "2560", }, // Box Draw Left Tee, Vert. 2 Horiz. 2 | |
| 296 | { "262", "2550", }, // Box Draw Lines, Horiz. 2 | |
| 297 | { "263", "256C", }, // Box Draw Cross Open Center, Vert. 2 Horiz. 2 | |
| 298 | { "264", "2567", }, // Box Draw Bottom Tee, Vert. 1 Horiz. 2 | |
| 299 | { "265", "2568", }, // Box Draw Bottom Tee, Vert. 2 Horiz. 1 | |
| 300 | { "266", "2564", }, // Box Draw Top Tee, Vert. 1 Horiz. 2 | |
| 301 | { "267", "2565", }, // Box Draw Top Tee, Vert. 2 Horiz. 1 | |
| 302 | { "268", "2559", }, // Box Draw Lower Left Corner, Vert. 2 Horiz. 1 | |
| 303 | { "269", "2558", }, // Box Draw Lower Left Corner, Vert. 1 Horiz. 2 | |
| 304 | { "270", "2552", }, // Box Draw Upper Left Corner, Vert. 1 Horiz. 2 | |
| 305 | { "271", "2553", }, // Box Draw Upper Left Corner, Vert. 2 Horiz. 1 | |
| 306 | { "272", "256B", }, // Box Draw Cross, Vert. 2 Horiz. 1 | |
| 307 | { "273", "256A", }, // Box Draw Cross, Vert. 1 Horiz. 2 | |
| 308 | { "274", "2518", }, // Box Draw Lower Right Corner, Vert. 1 Horiz. 1 | |
| 309 | { "275", "250C", }, // Box Draw Upper Left Corner, Vert. 1, Horiz. 1 | |
| 310 | { "276", "2588", }, // Solid Full High/Wide | |
| 311 | { "277", "2584", }, // Bottom Half Solid Rectangle | |
| 312 | { "278", "258C", }, // Left Half Solid Rectangle | |
| 313 | { "279", "2590", }, // Right Half Solid Rectangle | |
| 314 | { "280", "2580", }, // Top Half Solid Rectangle | |
| 315 | { "290", "2126", }, // Uppercase Greek Omega, or Ohms | |
| 316 | { "292", "221E", }, // Infinity Symbol | |
| 317 | { "295", "2229", }, // Set Intersection Symbol | |
| 318 | { "296", "2261", }, // Exactly Equals Sign | |
| 319 | { "297", "2265", }, // Greater Than or Equal Sign | |
| 320 | { "298", "2264", }, // Less Than or Equal Sign | |
| 321 | { "299", "2320", }, // Top Integral | |
| 322 | { "300", "2321", }, // Bottom Integral | |
| 323 | { "301", "2248", }, // Two Wavy Line Approximate Sign | |
| 324 | //{ "302", "00B7", }, // Middle Dot, or Centered Period (see 2219) | |
| 325 | //{ "302", "2219", }, // Centered Period, Middle Dot | |
| 326 | { "302", "2219", }, // Math Dot, Centered Period | |
| 327 | { "303", "221A", }, // Radical Symbol, Standalone Diagonal | |
| 328 | { "305", "25AA", }, // Small Solid Square Box | |
| 329 | { "306", "013F", }, // Uppercase L-Dot | |
| 330 | { "307", "0140", }, // Lowercase L-Dot | |
| 331 | { "308", "2113", }, // Litre Symbol | |
| 332 | { "309", "0149", }, // Lowercase Apostrophe-N | |
| 333 | { "310", "2032", }, // Prime, Minutes, or Feet Symbol | |
| 334 | { "311", "2033", }, // Double Prime, Seconds, or Inches Symbol | |
| 335 | { "312", "2020", }, // Dagger Symbol | |
| 336 | { "313", "2122", }, // Trademark Sign | |
| 337 | { "314", "2017", }, // Double Underline Character | |
| 338 | { "315", "02C7", }, // Lowercase Hacek Accent (Spacing) | |
| 339 | { "316", "02DA", }, // Lowercase Ring Accent (Spacing) | |
| 340 | { "317", "EFF9", }, // Uppercase Acute Accent (Spacing) | |
| 341 | { "318", "EFF8", }, // Uppercase Grave Accent (Spacing) | |
| 342 | { "319", "EFF7", }, // Uppercase Circumflex Accent (Spacing) | |
| 343 | { "320", "EFF6", }, // Uppercase Dieresis Accent (Spacing) | |
| 344 | { "321", "EFF5", }, // Uppercase Tilde Accent (Spacing) | |
| 345 | { "322", "EFF4", }, // Uppercase Hacek Accent (Spacing) | |
| 346 | { "323", "EFF3", }, // Uppercase Ring Accent (Spacing) | |
| 347 | { "324", "2215", }, // Vulgar Fraction Bar | |
| 348 | { "325", "2014", }, // Em Dash | |
| 349 | { "326", "2013", }, // En Dash | |
| 350 | { "327", "2021", }, // Double Dagger Symbol | |
| 351 | { "328", "0131", }, // Lowercase Undotted I | |
| 352 | { "329", "0027", }, // Neutral Single Quote | |
| 353 | { "330", "EFF2", }, // Uppercase Cedilla (Spacing) | |
| 354 | { "331", "2022", }, // Small Solid Round Bullet | |
| 355 | { "332", "207F", }, // Superior Lowercase N | |
| 356 | { "333", "2302", }, // Home Plate | |
| 357 | { "335", "0138", }, // Lowercase Kra | |
| 358 | { "338", "0166", }, // Uppercase T-Stroke | |
| 359 | { "339", "0167", }, // Lowercase T-Stroke | |
| 360 | { "340", "014A", }, // Uppercase Eng | |
| 361 | { "341", "014B", }, // Lowercase Eng | |
| 362 | { "342", "0111", }, // Lowercase D-Stroke | |
| 363 | { "400", "0102", }, // Uppercase A Breve | |
| 364 | { "401", "0103", }, // Lowercase A Breve | |
| 365 | { "402", "0100", }, // Uppercase A Macron | |
| 366 | { "403", "0101", }, // Lowercase A Macron | |
| 367 | { "404", "0104", }, // Uppercase A Ogonek | |
| 368 | { "405", "0105", }, // Lowercase A Ogonek | |
| 369 | { "406", "0106", }, // Uppercase C Acute | |
| 370 | { "407", "0107", }, // Lowercase C Acute | |
| 371 | { "410", "010C", }, // Uppercase C Hacek | |
| 372 | { "411", "010D", }, // Lowercase C Hacek | |
| 373 | { "414", "010E", }, // Uppercase D Hacek | |
| 374 | { "415", "010F", }, // Lowercase D Hacek | |
| 375 | { "416", "011A", }, // Uppercase E Hacek | |
| 376 | { "417", "011B", }, // Lowercase E Hacek | |
| 377 | { "418", "0116", }, // Uppercase E Overdot | |
| 378 | { "419", "0117", }, // Lowercase E Overdot | |
| 379 | { "420", "0112", }, // Uppercase E Macron | |
| 380 | { "421", "0113", }, // Lowercase E Macron | |
| 381 | { "422", "0118", }, // Uppercase E Ogonek | |
| 382 | { "423", "0119", }, // Lowercase E Ogonek | |
| 383 | { "428", "0122", }, // Uppercase G Cedilla | |
| 384 | { "429", "0123", }, // Lowercase G Cedilla | |
| 385 | { "432", "012E", }, // Uppercase I Ogonek | |
| 386 | { "433", "012F", }, // Lowercase I Ogonek | |
| 387 | { "434", "012A", }, // Uppercase I Macron | |
| 388 | { "435", "012B", }, // Lowercase I Macron | |
| 389 | { "438", "0136", }, // Uppercase K Cedilla | |
| 390 | { "439", "0137", }, // Lowercase K Cedilla | |
| 391 | { "440", "0139", }, // Uppercase L Acute | |
| 392 | { "441", "013A", }, // Lowercase L Acute | |
| 393 | { "442", "013D", }, // Uppercase L Hacek | |
| 394 | { "443", "013E", }, // Lowercase L Hacek | |
| 395 | { "444", "013B", }, // Uppercase L Cedilla | |
| 396 | { "445", "013C", }, // Lowercase L Cedilla | |
| 397 | { "446", "0143", }, // Uppercase N Acute | |
| 398 | { "447", "0144", }, // Lowercase N Acute | |
| 399 | { "448", "0147", }, // Uppercase N Hacek | |
| 400 | { "449", "0148", }, // Lowercase N Hacek | |
| 401 | { "450", "0145", }, // Uppercase N Cedilla | |
| 402 | { "451", "0146", }, // Lowercase N Cedilla | |
| 403 | { "452", "0150", }, // Uppercase O Double Acute | |
| 404 | { "453", "0151", }, // Lowercase O Double Acute | |
| 405 | { "454", "014C", }, // Uppercase O Macron | |
| 406 | { "455", "014D", }, // Lowercase O Macron | |
| 407 | { "456", "0154", }, // Uppercase R Acute | |
| 408 | { "457", "0155", }, // Lowercase R Acute | |
| 409 | { "458", "0158", }, // Uppercase R Hacek | |
| 410 | { "459", "0159", }, // Lowercase R Hacek | |
| 411 | { "460", "0156", }, // Uppercase R Cedilla | |
| 412 | { "461", "0157", }, // Lowercase R Cedilla | |
| 413 | { "462", "015A", }, // Uppercase S Acute | |
| 414 | { "463", "015B", }, // Lowercase S Acute | |
| 415 | { "466", "0164", }, // Uppercase T Hacek | |
| 416 | { "467", "0165", }, // Lowercase T Hacek | |
| 417 | { "468", "0162", }, // Uppercase T Cedilla | |
| 418 | { "469", "0163", }, // Lowercase T Cedilla | |
| 419 | { "470", "0168", }, // Uppercase U Tilde | |
| 420 | { "471", "0169", }, // Lowercase U Tilde | |
| 421 | { "474", "0170", }, // Uppercase U Double Acute | |
| 422 | { "475", "0171", }, // Lowercase U Double Acute | |
| 423 | { "476", "016E", }, // Uppercase U Ring | |
| 424 | { "477", "016F", }, // Lowercase U Ring | |
| 425 | { "478", "016A", }, // Uppercase U Macron | |
| 426 | { "479", "016B", }, // Lowercase U Macron | |
| 427 | { "480", "0172", }, // Uppercase U Ogonek | |
| 428 | { "481", "0173", }, // Lowercase U Ogonek | |
| 429 | { "482", "0179", }, // Uppercase Z Acute | |
| 430 | { "483", "017A", }, // Lowercase Z Acute | |
| 431 | { "484", "017B", }, // Uppercase Z Overdot | |
| 432 | { "485", "017C", }, // Lowercase Z Overdot | |
| 433 | { "486", "0128", }, // Uppercase I Tilde | |
| 434 | { "487", "0129", }, // Lowercase I Tilde | |
| 435 | { "500", "EFBF", }, // Radical, Diagonal, Composite | |
| 436 | { "501", "221D", }, // Proportional To Symbol | |
| 437 | { "502", "212F", }, // Napierian (italic e) | |
| 438 | { "503", "03F5", }, // Alternate Lowercase Greek Epsilon | |
| 439 | //{ "503", "EFEC", }, // Alternate Lowercase Greek Epsilon | |
| 440 | { "504", "2234", }, // Therefore Symbol | |
| 441 | { "505", "0393", }, // Uppercase Greek Gamma | |
| 442 | { "506", "2206", }, // Increment Symbol (Delta) | |
| 443 | { "507", "0398", }, // Uppercase Greek Theta | |
| 444 | { "508", "039B", }, // Uppercase Greek Lambda | |
| 445 | { "509", "039E", }, // Uppercase Greek Xi | |
| 446 | { "510", "03A0", }, // Uppercase Greek Pi | |
| 447 | { "511", "03A3", }, // Uppercase Greek Sigma | |
| 448 | { "512", "03A5", }, // Uppercase Greek Upsilon | |
| 449 | { "513", "03A6", }, // Uppercase Greek Phi | |
| 450 | { "514", "03A8", }, // Uppercase Greek Psi | |
| 451 | { "515", "03A9", }, // Uppercase Greek Omega | |
| 452 | { "516", "2207", }, // Nabla Symbol (inverted Delta) | |
| 453 | { "517", "2202", }, // Partial Differential Delta Symbol | |
| 454 | { "518", "03C2", }, // Lowercase Sigma, Terminal | |
| 455 | { "519", "2260", }, // Not Equal To Symbol | |
| 456 | { "520", "EFEB", }, // Underline, Composite | |
| 457 | { "521", "2235", }, // Because Symbol | |
| 458 | { "522", "03B1", }, // Lowercase Greek Alpha | |
| 459 | { "523", "03B2", }, // Lowercase Greek Beta | |
| 460 | { "524", "03B3", }, // Lowercase Greek Gamma | |
| 461 | { "525", "03B4", }, // Lowercase Greek Delta | |
| 462 | { "526", "03B5", }, // Lowercase Greek Epsilon | |
| 463 | { "527", "03B6", }, // Lowercase Greek Zeta | |
| 464 | { "528", "03B7", }, // Lowercase Greek Eta | |
| 465 | { "529", "03B8", }, // Lowercase Greek Theta | |
| 466 | { "530", "03B9", }, // Lowercase Greek Iota | |
| 467 | { "531", "03BA", }, // Lowercase Greek Kappa | |
| 468 | { "532", "03BB", }, // Lowercase Greek Lambda | |
| 469 | { "533", "03BC", }, // Lowercase Greek Mu | |
| 470 | { "534", "03BD", }, // Lowercase Greek Nu | |
| 471 | { "535", "03BE", }, // Lowercase Greek Xi | |
| 472 | { "536", "03BF", }, // Lowercase Greek Omicron | |
| 473 | { "537", "03C0", }, // Lowercase Greek Pi | |
| 474 | { "538", "03C1", }, // Lowercase Greek Rho | |
| 475 | { "539", "03C3", }, // Lowercase Greek Sigma | |
| 476 | { "540", "03C4", }, // Lowercase Greek Tau | |
| 477 | { "541", "03C5", }, // Lowercase Greek Upsilon | |
| 478 | { "542", "03C6", }, // Lowercase Greek Phi | |
| 479 | { "543", "03C7", }, // Lowercase Greek Chi | |
| 480 | { "544", "03C8", }, // Lowercase Greek Psi | |
| 481 | { "545", "03C9", }, // Lowercase Greek Omega | |
| 482 | { "546", "03D1", }, // Lowercase Greek Theta, Open | |
| 483 | { "547", "03D5", }, // Lowercase Greek Phi, Open | |
| 484 | { "548", "03D6", }, // Lowercase Pi, Alternate | |
| 485 | { "549", "2243", }, // Wavy Over Straight Approximate Symbol | |
| 486 | { "550", "2262", }, // Not Exactly Equal To Symbol | |
| 487 | { "551", "21D1", }, // Up Arrow Double Stroke | |
| 488 | { "552", "21D2", }, // Right Arrow Double Stroke | |
| 489 | { "553", "21D3", }, // Down Arrow Double Stroke | |
| 490 | { "554", "21D0", }, // Left Arrow Double Stroke | |
| 491 | { "555", "21D5", }, // Up/Down Arrow Double Stroke | |
| 492 | { "556", "21D4", }, // Left/Right Arrow Double Stroke | |
| 493 | { "557", "21C4", }, // Right Over Left Arrow | |
| 494 | { "558", "21C6", }, // Left Over Right Arrow | |
| 495 | { "559", "EFE9", }, // Vector Symbol | |
| 496 | { "560", "0305", }, // Overline, Composite | |
| 497 | { "561", "2200", }, // For All Symbol, or Universal (inverted A) | |
| 498 | { "562", "2203", }, // There Exists Symbol, or Existential (inverted E) | |
| 499 | { "563", "22A4", }, // Top Symbol | |
| 500 | { "564", "22A5", }, // Bottom Symbol | |
| 501 | { "565", "222A", }, // Set Union Symbol | |
| 502 | { "566", "2208", }, // Element-Of Symbol | |
| 503 | { "567", "220B", }, // Contains Symbol | |
| 504 | { "568", "2209", }, // Not-Element-Of Symbol | |
| 505 | { "569", "2282", }, // Proper Subset Symbol | |
| 506 | { "570", "2283", }, // Proper Superset Symbol | |
| 507 | { "571", "2284", }, // Not Proper Subset Symbol | |
| 508 | { "572", "2285", }, // Not Proper Superset Symbol | |
| 509 | { "573", "2286", }, // Subset Symbol | |
| 510 | { "574", "2287", }, // Superset Symbol | |
| 511 | { "575", "2295", }, // Plus In Circle Symbol | |
| 512 | { "576", "2299", }, // Dot In Circle Symbol | |
| 513 | { "577", "2297", }, // Times In Circle Symbol | |
| 514 | { "578", "2296", }, // Minus In Circle Symbol | |
| 515 | { "579", "2298", }, // Slash In Circle Symbol | |
| 516 | { "580", "2227", }, // Logical And Symbol | |
| 517 | { "581", "2228", }, // Logical Or Symbol | |
| 518 | { "582", "22BB", }, // Exclusive Or Symbol | |
| 519 | { "583", "2218", }, // Functional Composition Symbol | |
| 520 | { "584", "20DD", }, // Large Open Circle | |
| 521 | { "585", "22A3", }, // Assertion Symbol | |
| 522 | { "586", "22A2", }, // Backwards Assertion Symbol | |
| 523 | { "587", "222B", }, // Integral Symbol | |
| 524 | { "588", "222E", }, // Curvilinear Integral Symbol | |
| 525 | { "589", "2220", }, // Angle Symbol | |
| 526 | { "590", "2205", }, // Empty Set Symbol | |
| 527 | { "591", "2135", }, // Hebrew Aleph | |
| 528 | { "592", "2136", }, // Hebrew Beth | |
| 529 | { "593", "2137", }, // Hebrew Gimmel | |
| 530 | { "594", "212D", }, // Fraktur Uppercase C | |
| 531 | { "595", "2111", }, // Fraktur Uppercase I | |
| 532 | { "596", "211C", }, // Fraktur Uppercase R | |
| 533 | { "597", "2128", }, // Fraktur Uppercase Z | |
| 534 | { "598", "23A1", }, // Top Segment Left Bracket (Left Square Bracket Upper Corner) | |
| 535 | { "599", "23A3", }, // Bottom Segment Left Bracket (Left Square Bracket Lower Corner) | |
| 536 | { "600", "239B", }, // Top Segment Left Brace (Left Parenthesis Upper Hook) | |
| 537 | //{ "600", "23A7", }, // Top Segment Left Brace (Right Curly Bracket Upper Hook) | |
| 538 | { "601", "23A8", }, // Middle Segment Left Brace (Right Curly Bracket Middle Piece) | |
| 539 | { "602", "239D", }, // Bottom Segment LeftBrace (Left Parenthesis Lower Hook) | |
| 540 | //{ "602", "23A9", }, // Bottom Segment Left Brace (Right Curly Bracket Lower Hook) | |
| 541 | { "603", "EFD4", }, // Middle Segment Curvilinear Integral | |
| 542 | { "604", "EFD3", }, // Top Left Segment Summation | |
| 543 | { "605", "2225", }, // Double Vertical Line, Composite | |
| 544 | { "606", "EFD2", }, // Bottom Left Segment Summation | |
| 545 | { "607", "EFD1", }, // Bottom Diagonal Summation | |
| 546 | { "608", "23A4", }, // Top Segment Right Bracket (Right Square Bracket Upper Corner) | |
| 547 | { "609", "23A6", }, // Bottom Segment Right Bracket (Right Square Bracket Lower Corner) | |
| 548 | { "610", "239E", }, // Top Segment Right Brace (Right Parenthesis Upper Hook) | |
| 549 | //{ "610", "23AB", }, // Top Segment Right Brace (Right Curly Bracket Upper Hook) | |
| 550 | { "611", "23AC", }, // Middle Segment Right Brace (Right Curly Bracket Middle Piece) | |
| 551 | { "612", "23A0", }, // Bottom Segment Right ( Right Parenthesis Lower Hook) | |
| 552 | //{ "612", "23AD", }, // Bottom Segment Right Brace (Right Curly Bracket Lower Hook) | |
| 553 | { "613", "239C", }, // Thick Vertical Line, Composite (Left Parenthesis Extension) | |
| 554 | //{ "613", "239F", }, // Thick Vertical Line, Composite (Right Parenthesis Extension) | |
| 555 | //{ "613", "23AA", }, // Thick Vertical Line, Composite (Curly Bracket Extension) | |
| 556 | //{ "613", "23AE", }, // Thick Vertical Line, Composite (Integral Extension) | |
| 557 | { "614", "2223", }, // Thin Vertical Line, Composite | |
| 558 | { "615", "EFDC", }, // Bottom Segment of Vertical Radical | |
| 559 | { "616", "EFD0", }, // Top Right Segment Summation | |
| 560 | { "617", "EFCF", }, // Middle Segment Summation | |
| 561 | { "618", "EFCE", }, // Bottom Right Segment Summation | |
| 562 | { "619", "EFCD", }, // Top Diagonal Summation | |
| 563 | { "620", "2213", }, // Minus Over Plus Sign | |
| 564 | { "621", "2329", }, // Left Angle Bracket | |
| 565 | { "622", "232A", }, // Right Angle Bracket | |
| 566 | { "623", "EFFF", }, // Mask Symbol | |
| 567 | { "624", "2245", }, // Wavy Over Two Straight Approximate Symbol | |
| 568 | { "625", "2197", }, // 45 Degree Arrow | |
| 569 | { "626", "2198", }, // -45 Degree Arrow | |
| 570 | { "627", "2199", }, // -135 Degree Arrow | |
| 571 | { "628", "2196", }, // 135 Degree Arrow | |
| 572 | { "629", "25B5", }, // Up Open Triangle | |
| 573 | { "630", "25B9", }, // Right Open Triangle | |
| 574 | { "631", "25BF", }, // Down Open Triangle | |
| 575 | { "632", "25C3", }, // Left Open Triangle | |
| 576 | { "633", "226A", }, // Much Less Than Sign | |
| 577 | { "634", "226B", }, // Much Greater Than Sign | |
| 578 | { "635", "2237", }, // Proportional To Symbol (4 dots) | |
| 579 | { "636", "225C", }, // Defined As Symbol | |
| 580 | { "637", "03DD", }, // Lowercase Greek Digamma | |
| 581 | { "638", "210F", }, // Planck's Constant divided by 2 pi | |
| 582 | { "639", "2112", }, // Laplace Transform Symbol | |
| 583 | { "640", "EFFE", }, // Power Set | |
| 584 | { "641", "2118", }, // Weierstrassian Symbol | |
| 585 | { "642", "2211", }, // Summation Symbol (large Sigma) | |
| 586 | { "643", "301A", }, // Left Double Bracket | |
| 587 | { "644", "EFC9", }, // Middle Segment Double Bracket | |
| 588 | { "645", "301B", }, // Right Double Bracket | |
| 589 | { "646", "256D", }, // Box Draw Left Top Round Corner | |
| 590 | { "647", "2570", }, // Box Draw Left Bottom Round Corner | |
| 591 | { "648", "EFC8", }, // Extender Large Union/Product | |
| 592 | { "649", "EFC7", }, // Bottom Segment Large Union | |
| 593 | { "650", "EFC6", }, // Top Segment Large Intersection | |
| 594 | { "651", "EFC5", }, // Top Segment Left Double Bracket | |
| 595 | { "652", "EFC4", }, // Bottom Segment Left Double Bracket | |
| 596 | { "653", "EFFC", }, // Large Open Square Box | |
| 597 | { "654", "25C7", }, // Open Diamond | |
| 598 | { "655", "256E", }, // Box Draw Right Top Round Corner | |
| 599 | { "656", "256F", }, // Box Draw Right Bottom Round Corner | |
| 600 | { "657", "EFC3", }, // Bottom Segment Large Bottom Product | |
| 601 | { "658", "EFC2", }, // Top Segment Large Top Product | |
| 602 | { "659", "EFC1", }, // Top Segment Right Double Bracket | |
| 603 | { "660", "EFC0", }, // Bottom Segment Right Double Bracket | |
| 604 | { "661", "EFFB", }, // Large Solid Square Box | |
| 605 | { "662", "25C6", }, // Solid Diamond | |
| 606 | { "663", "220D", }, // Such That Symbol (rotated lc epsilon) | |
| 607 | { "664", "2217", }, // Math Asterisk | |
| 608 | { "665", "23AF", }, // Horizontal Arrow Extender (Horizontal Line Extension) | |
| 609 | { "666", "EFCB", }, // Double Horizontal Arrow Extender | |
| 610 | { "667", "EFCC", }, // Inverted Complement of 0xEFCF or MSL 617 | |
| 611 | { "668", "221F", }, // Right Angle Symbol | |
| 612 | { "669", "220F", }, // Product Symbol (large Pi) | |
| 613 | { "684", "25CA", }, // Lozenge, Diamond | |
| 614 | { "1000", "2070", }, // Superior Numeral 0 | |
| 615 | { "1001", "2074", }, // Superior Numeral 4 | |
| 616 | { "1002", "2075", }, // Superior Numeral 5 | |
| 617 | { "1003", "2076", }, // Superior Numeral 6 | |
| 618 | { "1004", "2077", }, // Superior Numeral 7 | |
| 619 | { "1005", "2078", }, // Superior Numeral 8 | |
| 620 | { "1006", "2079", }, // Superior Numeral 9 | |
| 621 | { "1017", "201C", }, // Double Open Quote (6) | |
| 622 | { "1018", "201D", }, // Double Close Quote (9) | |
| 623 | { "1019", "201E", }, // Double Baseline Quote (9) | |
| 624 | { "1020", "2003", }, // Em Space | |
| 625 | { "1021", "2002", }, // En Space | |
| 626 | { "1023", "2009", }, // Thin Space | |
| 627 | { "1028", "2026", }, // Ellipsis | |
| 628 | { "1030", "EFF1", }, // Uppercase Ogonek (Spacing) | |
| 629 | { "1031", "017E", }, // Lowercase Z Hacek | |
| 630 | { "1034", "2120", }, // Service Mark | |
| 631 | { "1036", "211E", }, // Prescription Sign | |
| 632 | //{ "1040", "F001", }, // Lowercase FI Ligature | |
| 633 | { "1040", "FB01", }, // Lowercase FI Ligature | |
| 634 | //{ "1041", "F002", }, // Lowercase FL Ligature | |
| 635 | { "1041", "FB02", }, // Lowercase FL Ligature | |
| 636 | { "1042", "FB00", }, // Lowercase FF Ligature | |
| 637 | { "1043", "FB03", }, // Lowercase FFI Ligature | |
| 638 | { "1044", "FB04", }, // Lowercase FFL Ligature | |
| 639 | { "1045", "EFF0", }, // Uppercase Double Acute Accent (Spacing) | |
| 640 | { "1047", "0133", }, // Lowercase IJ Ligature | |
| 641 | { "1060", "2105", }, // Care Of Symbol | |
| 642 | { "1061", "011E", }, // Uppercase G Breve | |
| 643 | { "1062", "011F", }, // Lowercase G Breve | |
| 644 | { "1063", "015E", }, // Uppercase S Cedilla | |
| 645 | { "1064", "015F", }, // Lowercase S Cedilla | |
| 646 | { "1065", "0130", }, // Uppercase I Overdot | |
| 647 | { "1067", "201A", }, // Single Baseline Quote (9) | |
| 648 | { "1068", "2030", }, // Per Mill Sign | |
| 649 | { "1069", "20AC", }, // Euro | |
| 650 | { "1084", "02C9", }, // Lowercase Macron Accent (Spacing) | |
| 651 | { "1086", "02D8", }, // Lowercase Breve Accent (Spacing) | |
| 652 | { "1088", "02D9", }, // Lowercase Overdot Accent (Spacing) | |
| 653 | { "1090", "0153", }, // Lowercase OE Ligature | |
| 654 | { "1091", "0152", }, // Uppercase OE Ligature | |
| 655 | { "1092", "2039", }, // Left Pointing Single Angle Quote | |
| 656 | { "1093", "203A", }, // Right Pointing Single Angle Quote | |
| 657 | { "1094", "25A1", }, // Medium Open Square Box | |
| 658 | { "1095", "0141", }, // Uppercase L-Stroke | |
| 659 | { "1096", "0142", }, // Lowercase L-Stroke | |
| 660 | { "1097", "02DD", }, // Lowercase Double Acute Accent (Spacing) | |
| 661 | { "1098", "02DB", }, // Lowercase Ogonek (Spacing) | |
| 662 | { "1099", "21B5", }, // Carriage Return Symbol | |
| 663 | { "1100", "EFDB", }, // Full Size Serif Registered | |
| 664 | { "1101", "EFDA", }, // Full Size Serif Copyright | |
| 665 | { "1102", "EFD9", }, // Full Size Serif Trademark | |
| 666 | { "1103", "EFD8", }, // Full Size Sans Registered | |
| 667 | { "1104", "EFD7", }, // Full Size Sans Copyright | |
| 668 | { "1105", "EFD6", }, // Full Size Sans Trademark | |
| 669 | { "1106", "017D", }, // Uppercase Z Hacek | |
| 670 | { "1107", "0132", }, // Uppercase IJ Ligature | |
| 671 | { "1108", "25AB", }, // Small Open Square Box | |
| 672 | { "1109", "25E6", }, // Small Open Round Bullet | |
| 673 | { "1110", "25CB", }, // Medium Open Round Bullet | |
| 674 | { "1111", "EFFA", }, // Large Solid Round Bullet | |
| 675 | { "3812", "F000", }, // Ornament, Apple | |
| 676 | }; | |
| 677 | ||
| 678 | // global constructor | |
| 679 | static struct hp_msl_to_unicode_init { | |
| 680 | hp_msl_to_unicode_init(); | |
| 681 | } _hp_msl_to_unicode_init; | |
| 682 | ||
| 683 | hp_msl_to_unicode_init::hp_msl_to_unicode_init() { | |
| 684 | for (unsigned int i = 0; | |
| 685 | i < sizeof(hp_msl_to_unicode_list)/sizeof(hp_msl_to_unicode_list[0]); | |
| 686 | i++) { | |
| 687 | hp_msl_to_unicode *ptu = new hp_msl_to_unicode[1]; | |
| 688 | ptu->value = (char *)hp_msl_to_unicode_list[i].value; | |
| 689 | hp_msl_to_unicode_table.define(hp_msl_to_unicode_list[i].key, ptu); | |
| 690 | } | |
| 691 | } | |
| 692 | ||
| 693 | const char *hp_msl_to_unicode_code(const char *s) | |
| 694 | { | |
| 695 | hp_msl_to_unicode *result = hp_msl_to_unicode_table.lookup(s); | |
| 696 | return result ? result->value : 0; | |
| 697 | } |