Ticket #749: bibtex-translator.sql

File bibtex-translator.sql, 86.2 KB (added by dstillman, 9 years ago)

Updated BibTeX translator

Line 
1REPLACE INTO translators VALUES ('9cb70025-a888-4a29-a210-93ec52da40d4', '1.0.2', '', '2007-12-21 15:30:00', '1', '100', '3', 'BibTeX', 'Simon Kornblith', 'bib', 
2'Zotero.configure("dataMode", "block");
3Zotero.addOption("UTF8", true);
4
5function detectImport() {
6        var block = "";
7        var read;
8        // read 20 chars out of the file
9        while(read = Zotero.read(1)) {
10                if(read == "%") {
11                        // read until next newline
12                        block = "";
13                        while(Zotero.read(1) != "\n") {}
14                } else if(read == "\n" && block) {
15                        break;
16                } else if(" \n\r\t".indexOf(read) == -1) {
17                        block += read;
18                }
19        }
20       
21        var re = /^@[a-zA-Z]+[\(\{]/;
22        if(re.test(block)) {
23                return true;
24        }
25}', 
26'var fieldMap = {
27        address:"place",
28        chapter:"section",
29        edition:"edition",
30//      number:"issue",
31        type:"type",
32        series:"series",
33        title:"title",
34        volume:"volume",
35        copyright:"rights",
36        isbn:"ISBN",
37        issn:"ISSN",
38        location:"archiveLocation",
39        url:"url",
40        doi:"DOI",
41        "abstract":"abstractNote"
42};
43
44var inputFieldMap = {
45        booktitle :"publicationTitle",
46        school:"publisher",
47        publisher:"publisher"
48};
49
50var typeMap = {
51        book:"book",
52        bookSection:"inbook",
53        journalArticle:"article",
54        magazineArticle:"article",
55        newspaperArticle:"article",
56        thesis:"phdthesis",
57        letter:"misc",
58        manuscript:"unpublished",
59        interview:"misc",
60        film:"misc",
61        artwork:"misc",
62        webpage:"misc",
63        conferencePaper:"inproceedings"
64};
65
66// supplements outputTypeMap for importing
67var inputTypeMap = {
68        conference:"inproceedings",
69        techreport:"report",
70        booklet:"book",
71        incollection:"bookSection",
72        manual:"book",
73        mastersthesis:"thesis",
74        misc:"book",
75        proceedings:"book"
76};
77
78/*
79 * three-letter month abbreviations. i assume these are the same ones that the
80 * docs say are defined in some appendix of the LaTeX book. (i don''t have the
81 * LaTeX book.)
82 */
83var months = ["jan", "feb", "mar", "apr", "may", "jun",
84              "jul", "aug", "sep", "oct", "nov", "dec"]
85
86/*
87 * new mapping table based on that from Matthias Steffens,
88 * then enhanced with some fields generated from the unicode table.
89 */
90
91var mappingTable = {
92    "\u00A0":"~", // NO-BREAK SPACE
93    "\u00A1":"{\\textexclamdown}", // INVERTED EXCLAMATION MARK
94    "\u00A2":"{\\textcent}", // CENT SIGN
95    "\u00A3":"{\\textsterling}", // POUND SIGN
96    "\u00A5":"{\\textyen}", // YEN SIGN
97    "\u00A6":"{\\textbrokenbar}", // BROKEN BAR
98    "\u00A7":"{\\textsection}", // SECTION SIGN
99    "\u00A8":"{\\textasciidieresis}", // DIAERESIS
100    "\u00A9":"{\\textcopyright}", // COPYRIGHT SIGN
101    "\u00AA":"{\\textordfeminine}", // FEMININE ORDINAL INDICATOR
102    "\u00AB":"{\\guillemotleft}", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
103    "\u00AC":"{\\textlnot}", // NOT SIGN
104    "\u00AD":"-", // SOFT HYPHEN
105    "\u00AE":"{\\textregistered}", // REGISTERED SIGN
106    "\u00AF":"{\\textasciimacron}", // MACRON
107    "\u00B0":"{\\textdegree}", // DEGREE SIGN
108    "\u00B1":"{\\textpm}", // PLUS-MINUS SIGN
109    "\u00B2":"{\\texttwosuperior}", // SUPERSCRIPT TWO
110    "\u00B3":"{\\textthreesuperior}", // SUPERSCRIPT THREE
111    "\u00B4":"{\\textasciiacute}", // ACUTE ACCENT
112    "\u00B5":"{\\textmu}", // MICRO SIGN
113    "\u00B6":"{\\textparagraph}", // PILCROW SIGN
114    "\u00B7":"{\\textperiodcentered}", // MIDDLE DOT
115    "\u00B8":"{\\c\\ }", // CEDILLA
116    "\u00B9":"{\\textonesuperior}", // SUPERSCRIPT ONE
117    "\u00BA":"{\\textordmasculine}", // MASCULINE ORDINAL INDICATOR
118    "\u00BB":"{\\guillemotright}", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
119    "\u00BC":"{\\textonequarter}", // VULGAR FRACTION ONE QUARTER
120    "\u00BD":"{\\textonehalf}", // VULGAR FRACTION ONE HALF
121    "\u00BE":"{\\textthreequarters}", // VULGAR FRACTION THREE QUARTERS
122    "\u00BF":"{\\textquestiondown}", // INVERTED QUESTION MARK
123    "\u00C6":"{\\AE}", // LATIN CAPITAL LETTER AE
124    "\u00D0":"{\\DH}", // LATIN CAPITAL LETTER ETH
125    "\u00D7":"{\\texttimes}", // MULTIPLICATION SIGN
126    "\u00DE":"{\\TH}", // LATIN CAPITAL LETTER THORN
127    "\u00DF":"{\\ss}", // LATIN SMALL LETTER SHARP S
128    "\u00E6":"{\\ae}", // LATIN SMALL LETTER AE
129    "\u00F0":"{\\dh}", // LATIN SMALL LETTER ETH
130    "\u00F7":"{\\textdiv}", // DIVISION SIGN
131    "\u00FE":"{\\th}", // LATIN SMALL LETTER THORN
132    "\u0131":"{\\i}", // LATIN SMALL LETTER DOTLESS I
133    "\u0132":"IJ", // LATIN CAPITAL LIGATURE IJ
134    "\u0133":"ij", // LATIN SMALL LIGATURE IJ
135    "\u0138":"k", // LATIN SMALL LETTER KRA
136    "\u0149":"''n", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
137    "\u014A":"{\\NG}", // LATIN CAPITAL LETTER ENG
138    "\u014B":"{\\ng}", // LATIN SMALL LETTER ENG
139    "\u0152":"{\\OE}", // LATIN CAPITAL LIGATURE OE
140    "\u0153":"{\\oe}", // LATIN SMALL LIGATURE OE
141    "\u017F":"s", // LATIN SMALL LETTER LONG S
142    "\u02B9":"''", // MODIFIER LETTER PRIME
143    "\u02BB":"''", // MODIFIER LETTER TURNED COMMA
144    "\u02BC":"''", // MODIFIER LETTER APOSTROPHE
145    "\u02BD":"''", // MODIFIER LETTER REVERSED COMMA
146    "\u02C6":"{\\textasciicircum}", // MODIFIER LETTER CIRCUMFLEX ACCENT
147    "\u02C8":"''", // MODIFIER LETTER VERTICAL LINE
148    "\u02C9":"-", // MODIFIER LETTER MACRON
149    "\u02CC":",", // MODIFIER LETTER LOW VERTICAL LINE
150    "\u02D0":":", // MODIFIER LETTER TRIANGULAR COLON
151    "\u02DA":"o", // RING ABOVE
152    "\u02DC":"\\~{}", // SMALL TILDE
153    "\u02DD":"{\\textacutedbl}", // DOUBLE ACUTE ACCENT
154    "\u0374":"''", // GREEK NUMERAL SIGN
155    "\u0375":",", // GREEK LOWER NUMERAL SIGN
156    "\u037E":";", // GREEK QUESTION MARK
157    "\u2000":" ", // EN QUAD
158    "\u2001":"  ", // EM QUAD
159    "\u2002":" ", // EN SPACE
160    "\u2003":"  ", // EM SPACE
161    "\u2004":" ", // THREE-PER-EM SPACE
162    "\u2005":" ", // FOUR-PER-EM SPACE
163    "\u2006":" ", // SIX-PER-EM SPACE
164    "\u2007":" ", // FIGURE SPACE
165    "\u2008":" ", // PUNCTUATION SPACE
166    "\u2009":" ", // THIN SPACE
167    "\u2010":"-", // HYPHEN
168    "\u2011":"-", // NON-BREAKING HYPHEN
169    "\u2012":"-", // FIGURE DASH
170    "\u2013":"{\\textendash}", // EN DASH
171    "\u2014":"{\\textemdash}", // EM DASH
172    "\u2015":"--", // HORIZONTAL BAR
173    "\u2016":"{\\textbardbl}", // DOUBLE VERTICAL LINE
174    "\u2017":"{\\textunderscore}", // DOUBLE LOW LINE
175    "\u2018":"{\\textquoteleft}", // LEFT SINGLE QUOTATION MARK
176    "\u2019":"{\\textquoteright}", // RIGHT SINGLE QUOTATION MARK
177    "\u201A":"{\\quotesinglbase}", // SINGLE LOW-9 QUOTATION MARK
178    "\u201B":"''", // SINGLE HIGH-REVERSED-9 QUOTATION MARK
179    "\u201C":"{\\textquotedblleft}", // LEFT DOUBLE QUOTATION MARK
180    "\u201D":"{\\textquotedblright}", // RIGHT DOUBLE QUOTATION MARK
181    "\u201E":"{\\quotedblbase}", // DOUBLE LOW-9 QUOTATION MARK
182    "\u201F":"{\\quotedblbase}", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK
183    "\u2020":"{\\textdagger}", // DAGGER
184    "\u2021":"{\\textdaggerdbl}", // DOUBLE DAGGER
185    "\u2022":"{\\textbullet}", // BULLET
186    "\u2023":">", // TRIANGULAR BULLET
187    "\u2024":".", // ONE DOT LEADER
188    "\u2025":"..", // TWO DOT LEADER
189    "\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS
190    "\u2027":"-", // HYPHENATION POINT
191    "\u202F":" ", // NARROW NO-BREAK SPACE
192    "\u2030":"{\\textperthousand}", // PER MILLE SIGN
193    "\u2032":"''", // PRIME
194    "\u2033":"''", // DOUBLE PRIME
195    "\u2034":"''''''", // TRIPLE PRIME
196    "\u2035":"`", // REVERSED PRIME
197    "\u2036":"``", // REVERSED DOUBLE PRIME
198    "\u2037":"```", // REVERSED TRIPLE PRIME
199    "\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
200    "\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
201    "\u203C":"!!", // DOUBLE EXCLAMATION MARK
202    "\u203E":"-", // OVERLINE
203    "\u2043":"-", // HYPHEN BULLET
204    "\u2044":"{\\textfractionsolidus}", // FRACTION SLASH
205    "\u2048":"?!", // QUESTION EXCLAMATION MARK
206    "\u2049":"!?", // EXCLAMATION QUESTION MARK
207    "\u204A":"7", // TIRONIAN SIGN ET
208    "\u2070":"$^{0}$", // SUPERSCRIPT ZERO
209    "\u2074":"$^{4}$", // SUPERSCRIPT FOUR
210    "\u2075":"$^{5}$", // SUPERSCRIPT FIVE
211    "\u2076":"$^{6}$", // SUPERSCRIPT SIX
212    "\u2077":"$^{7}$", // SUPERSCRIPT SEVEN
213    "\u2078":"$^{8}$", // SUPERSCRIPT EIGHT
214    "\u2079":"$^{9}$", // SUPERSCRIPT NINE
215    "\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN
216    "\u207B":"$^{-}$", // SUPERSCRIPT MINUS
217    "\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN
218    "\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS
219    "\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS
220    "\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N
221    "\u2080":"$_{0}$", // SUBSCRIPT ZERO
222    "\u2081":"$_{1}$", // SUBSCRIPT ONE
223    "\u2082":"$_{2}$", // SUBSCRIPT TWO
224    "\u2083":"$_{3}$", // SUBSCRIPT THREE
225    "\u2084":"$_{4}$", // SUBSCRIPT FOUR
226    "\u2085":"$_{5}$", // SUBSCRIPT FIVE
227    "\u2086":"$_{6}$", // SUBSCRIPT SIX
228    "\u2087":"$_{7}$", // SUBSCRIPT SEVEN
229    "\u2088":"$_{8}$", // SUBSCRIPT EIGHT
230    "\u2089":"$_{9}$", // SUBSCRIPT NINE
231    "\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN
232    "\u208B":"$_{-}$", // SUBSCRIPT MINUS
233    "\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN
234    "\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS
235    "\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS
236    "\u20AC":"{\\texteuro}", // EURO SIGN
237    "\u2100":"a/c", // ACCOUNT OF
238    "\u2101":"a/s", // ADDRESSED TO THE SUBJECT
239    "\u2103":"{\\textcelsius}", // DEGREE CELSIUS
240    "\u2105":"c/o", // CARE OF
241    "\u2106":"c/u", // CADA UNA
242    "\u2109":"F", // DEGREE FAHRENHEIT
243    "\u2113":"l", // SCRIPT SMALL L
244    "\u2116":"{\\textnumero}", // NUMERO SIGN
245    "\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT
246    "\u2120":"{\\textservicemark}", // SERVICE MARK
247    "\u2121":"TEL", // TELEPHONE SIGN
248    "\u2122":"{\\texttrademark}", // TRADE MARK SIGN
249    "\u2126":"{\\textohm}", // OHM SIGN
250    "\u212A":"K", // KELVIN SIGN
251    "\u212B":"A", // ANGSTROM SIGN
252    "\u212E":"{\\textestimated}", // ESTIMATED SYMBOL
253    "\u2153":" 1/3", // VULGAR FRACTION ONE THIRD
254    "\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS
255    "\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH
256    "\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS
257    "\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS
258    "\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS
259    "\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH
260    "\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS
261    "\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH
262    "\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS
263    "\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS
264    "\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS
265    "\u215F":" 1/", // FRACTION NUMERATOR ONE
266    "\u2160":"I", // ROMAN NUMERAL ONE
267    "\u2161":"II", // ROMAN NUMERAL TWO
268    "\u2162":"III", // ROMAN NUMERAL THREE
269    "\u2163":"IV", // ROMAN NUMERAL FOUR
270    "\u2164":"V", // ROMAN NUMERAL FIVE
271    "\u2165":"VI", // ROMAN NUMERAL SIX
272    "\u2166":"VII", // ROMAN NUMERAL SEVEN
273    "\u2167":"VIII", // ROMAN NUMERAL EIGHT
274    "\u2168":"IX", // ROMAN NUMERAL NINE
275    "\u2169":"X", // ROMAN NUMERAL TEN
276    "\u216A":"XI", // ROMAN NUMERAL ELEVEN
277    "\u216B":"XII", // ROMAN NUMERAL TWELVE
278    "\u216C":"L", // ROMAN NUMERAL FIFTY
279    "\u216D":"C", // ROMAN NUMERAL ONE HUNDRED
280    "\u216E":"D", // ROMAN NUMERAL FIVE HUNDRED
281    "\u216F":"M", // ROMAN NUMERAL ONE THOUSAND
282    "\u2170":"i", // SMALL ROMAN NUMERAL ONE
283    "\u2171":"ii", // SMALL ROMAN NUMERAL TWO
284    "\u2172":"iii", // SMALL ROMAN NUMERAL THREE
285    "\u2173":"iv", // SMALL ROMAN NUMERAL FOUR
286    "\u2174":"v", // SMALL ROMAN NUMERAL FIVE
287    "\u2175":"vi", // SMALL ROMAN NUMERAL SIX
288    "\u2176":"vii", // SMALL ROMAN NUMERAL SEVEN
289    "\u2177":"viii", // SMALL ROMAN NUMERAL EIGHT
290    "\u2178":"ix", // SMALL ROMAN NUMERAL NINE
291    "\u2179":"x", // SMALL ROMAN NUMERAL TEN
292    "\u217A":"xi", // SMALL ROMAN NUMERAL ELEVEN
293    "\u217B":"xii", // SMALL ROMAN NUMERAL TWELVE
294    "\u217C":"l", // SMALL ROMAN NUMERAL FIFTY
295    "\u217D":"c", // SMALL ROMAN NUMERAL ONE HUNDRED
296    "\u217E":"d", // SMALL ROMAN NUMERAL FIVE HUNDRED
297    "\u217F":"m", // SMALL ROMAN NUMERAL ONE THOUSAND
298    "\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW
299    "\u2191":"{\\textuparrow}", // UPWARDS ARROW
300    "\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW
301    "\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW
302    "\u2194":"<->", // LEFT RIGHT ARROW
303    "\u21D0":"<=", // LEFTWARDS DOUBLE ARROW
304    "\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW
305    "\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW
306    "\u2212":"-", // MINUS SIGN
307    "\u2215":"/", // DIVISION SLASH
308    "\u2216":"\\", // SET MINUS
309    "\u2217":"*", // ASTERISK OPERATOR
310    "\u2218":"o", // RING OPERATOR
311    "\u2219":".", // BULLET OPERATOR
312    "\u221E":"$\\infty$", // INFINITY
313    "\u2223":"|", // DIVIDES
314    "\u2225":"||", // PARALLEL TO
315    "\u2236":":", // RATIO
316    "\u223C":"\\~{}", // TILDE OPERATOR
317    "\u2260":"/=", // NOT EQUAL TO
318    "\u2261":"=", // IDENTICAL TO
319    "\u2264":"<=", // LESS-THAN OR EQUAL TO
320    "\u2265":">=", // GREATER-THAN OR EQUAL TO
321    "\u226A":"<<", // MUCH LESS-THAN
322    "\u226B":">>", // MUCH GREATER-THAN
323    "\u2295":"(+)", // CIRCLED PLUS
324    "\u2296":"(-)", // CIRCLED MINUS
325    "\u2297":"(x)", // CIRCLED TIMES
326    "\u2298":"(/)", // CIRCLED DIVISION SLASH
327    "\u22A2":"|-", // RIGHT TACK
328    "\u22A3":"-|", // LEFT TACK
329    "\u22A6":"|-", // ASSERTION
330    "\u22A7":"|=", // MODELS
331    "\u22A8":"|=", // TRUE
332    "\u22A9":"||-", // FORCES
333    "\u22C5":".", // DOT OPERATOR
334    "\u22C6":"*", // STAR OPERATOR
335    "\u22D5":"$\\#$", // EQUAL AND PARALLEL TO
336    "\u22D8":"<<<", // VERY MUCH LESS-THAN
337    "\u22D9":">>>", // VERY MUCH GREATER-THAN
338    "\u22EF":"...", // MIDLINE HORIZONTAL ELLIPSIS
339    "\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET
340    "\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET
341    "\u2400":"NUL", // SYMBOL FOR NULL
342    "\u2401":"SOH", // SYMBOL FOR START OF HEADING
343    "\u2402":"STX", // SYMBOL FOR START OF TEXT
344    "\u2403":"ETX", // SYMBOL FOR END OF TEXT
345    "\u2404":"EOT", // SYMBOL FOR END OF TRANSMISSION
346    "\u2405":"ENQ", // SYMBOL FOR ENQUIRY
347    "\u2406":"ACK", // SYMBOL FOR ACKNOWLEDGE
348    "\u2407":"BEL", // SYMBOL FOR BELL
349    "\u2408":"BS", // SYMBOL FOR BACKSPACE
350    "\u2409":"HT", // SYMBOL FOR HORIZONTAL TABULATION
351    "\u240A":"LF", // SYMBOL FOR LINE FEED
352    "\u240B":"VT", // SYMBOL FOR VERTICAL TABULATION
353    "\u240C":"FF", // SYMBOL FOR FORM FEED
354    "\u240D":"CR", // SYMBOL FOR CARRIAGE RETURN
355    "\u240E":"SO", // SYMBOL FOR SHIFT OUT
356    "\u240F":"SI", // SYMBOL FOR SHIFT IN
357    "\u2410":"DLE", // SYMBOL FOR DATA LINK ESCAPE
358    "\u2411":"DC1", // SYMBOL FOR DEVICE CONTROL ONE
359    "\u2412":"DC2", // SYMBOL FOR DEVICE CONTROL TWO
360    "\u2413":"DC3", // SYMBOL FOR DEVICE CONTROL THREE
361    "\u2414":"DC4", // SYMBOL FOR DEVICE CONTROL FOUR
362    "\u2415":"NAK", // SYMBOL FOR NEGATIVE ACKNOWLEDGE
363    "\u2416":"SYN", // SYMBOL FOR SYNCHRONOUS IDLE
364    "\u2417":"ETB", // SYMBOL FOR END OF TRANSMISSION BLOCK
365    "\u2418":"CAN", // SYMBOL FOR CANCEL
366    "\u2419":"EM", // SYMBOL FOR END OF MEDIUM
367    "\u241A":"SUB", // SYMBOL FOR SUBSTITUTE
368    "\u241B":"ESC", // SYMBOL FOR ESCAPE
369    "\u241C":"FS", // SYMBOL FOR FILE SEPARATOR
370    "\u241D":"GS", // SYMBOL FOR GROUP SEPARATOR
371    "\u241E":"RS", // SYMBOL FOR RECORD SEPARATOR
372    "\u241F":"US", // SYMBOL FOR UNIT SEPARATOR
373    "\u2420":"SP", // SYMBOL FOR SPACE
374    "\u2421":"DEL", // SYMBOL FOR DELETE
375    "\u2423":"{\\textvisiblespace}", // OPEN BOX
376    "\u2424":"NL", // SYMBOL FOR NEWLINE
377    "\u2425":"///", // SYMBOL FOR DELETE FORM TWO
378    "\u2426":"?", // SYMBOL FOR SUBSTITUTE FORM TWO
379    "\u2460":"(1)", // CIRCLED DIGIT ONE
380    "\u2461":"(2)", // CIRCLED DIGIT TWO
381    "\u2462":"(3)", // CIRCLED DIGIT THREE
382    "\u2463":"(4)", // CIRCLED DIGIT FOUR
383    "\u2464":"(5)", // CIRCLED DIGIT FIVE
384    "\u2465":"(6)", // CIRCLED DIGIT SIX
385    "\u2466":"(7)", // CIRCLED DIGIT SEVEN
386    "\u2467":"(8)", // CIRCLED DIGIT EIGHT
387    "\u2468":"(9)", // CIRCLED DIGIT NINE
388    "\u2469":"(10)", // CIRCLED NUMBER TEN
389    "\u246A":"(11)", // CIRCLED NUMBER ELEVEN
390    "\u246B":"(12)", // CIRCLED NUMBER TWELVE
391    "\u246C":"(13)", // CIRCLED NUMBER THIRTEEN
392    "\u246D":"(14)", // CIRCLED NUMBER FOURTEEN
393    "\u246E":"(15)", // CIRCLED NUMBER FIFTEEN
394    "\u246F":"(16)", // CIRCLED NUMBER SIXTEEN
395    "\u2470":"(17)", // CIRCLED NUMBER SEVENTEEN
396    "\u2471":"(18)", // CIRCLED NUMBER EIGHTEEN
397    "\u2472":"(19)", // CIRCLED NUMBER NINETEEN
398    "\u2473":"(20)", // CIRCLED NUMBER TWENTY
399    "\u2474":"(1)", // PARENTHESIZED DIGIT ONE
400    "\u2475":"(2)", // PARENTHESIZED DIGIT TWO
401    "\u2476":"(3)", // PARENTHESIZED DIGIT THREE
402    "\u2477":"(4)", // PARENTHESIZED DIGIT FOUR
403    "\u2478":"(5)", // PARENTHESIZED DIGIT FIVE
404    "\u2479":"(6)", // PARENTHESIZED DIGIT SIX
405    "\u247A":"(7)", // PARENTHESIZED DIGIT SEVEN
406    "\u247B":"(8)", // PARENTHESIZED DIGIT EIGHT
407    "\u247C":"(9)", // PARENTHESIZED DIGIT NINE
408    "\u247D":"(10)", // PARENTHESIZED NUMBER TEN
409    "\u247E":"(11)", // PARENTHESIZED NUMBER ELEVEN
410    "\u247F":"(12)", // PARENTHESIZED NUMBER TWELVE
411    "\u2480":"(13)", // PARENTHESIZED NUMBER THIRTEEN
412    "\u2481":"(14)", // PARENTHESIZED NUMBER FOURTEEN
413    "\u2482":"(15)", // PARENTHESIZED NUMBER FIFTEEN
414    "\u2483":"(16)", // PARENTHESIZED NUMBER SIXTEEN
415    "\u2484":"(17)", // PARENTHESIZED NUMBER SEVENTEEN
416    "\u2485":"(18)", // PARENTHESIZED NUMBER EIGHTEEN
417    "\u2486":"(19)", // PARENTHESIZED NUMBER NINETEEN
418    "\u2487":"(20)", // PARENTHESIZED NUMBER TWENTY
419    "\u2488":"1.", // DIGIT ONE FULL STOP
420    "\u2489":"2.", // DIGIT TWO FULL STOP
421    "\u248A":"3.", // DIGIT THREE FULL STOP
422    "\u248B":"4.", // DIGIT FOUR FULL STOP
423    "\u248C":"5.", // DIGIT FIVE FULL STOP
424    "\u248D":"6.", // DIGIT SIX FULL STOP
425    "\u248E":"7.", // DIGIT SEVEN FULL STOP
426    "\u248F":"8.", // DIGIT EIGHT FULL STOP
427    "\u2490":"9.", // DIGIT NINE FULL STOP
428    "\u2491":"10.", // NUMBER TEN FULL STOP
429    "\u2492":"11.", // NUMBER ELEVEN FULL STOP
430    "\u2493":"12.", // NUMBER TWELVE FULL STOP
431    "\u2494":"13.", // NUMBER THIRTEEN FULL STOP
432    "\u2495":"14.", // NUMBER FOURTEEN FULL STOP
433    "\u2496":"15.", // NUMBER FIFTEEN FULL STOP
434    "\u2497":"16.", // NUMBER SIXTEEN FULL STOP
435    "\u2498":"17.", // NUMBER SEVENTEEN FULL STOP
436    "\u2499":"18.", // NUMBER EIGHTEEN FULL STOP
437    "\u249A":"19.", // NUMBER NINETEEN FULL STOP
438    "\u249B":"20.", // NUMBER TWENTY FULL STOP
439    "\u249C":"(a)", // PARENTHESIZED LATIN SMALL LETTER A
440    "\u249D":"(b)", // PARENTHESIZED LATIN SMALL LETTER B
441    "\u249E":"(c)", // PARENTHESIZED LATIN SMALL LETTER C
442    "\u249F":"(d)", // PARENTHESIZED LATIN SMALL LETTER D
443    "\u24A0":"(e)", // PARENTHESIZED LATIN SMALL LETTER E
444    "\u24A1":"(f)", // PARENTHESIZED LATIN SMALL LETTER F
445    "\u24A2":"(g)", // PARENTHESIZED LATIN SMALL LETTER G
446    "\u24A3":"(h)", // PARENTHESIZED LATIN SMALL LETTER H
447    "\u24A4":"(i)", // PARENTHESIZED LATIN SMALL LETTER I
448    "\u24A5":"(j)", // PARENTHESIZED LATIN SMALL LETTER J
449    "\u24A6":"(k)", // PARENTHESIZED LATIN SMALL LETTER K
450    "\u24A7":"(l)", // PARENTHESIZED LATIN SMALL LETTER L
451    "\u24A8":"(m)", // PARENTHESIZED LATIN SMALL LETTER M
452    "\u24A9":"(n)", // PARENTHESIZED LATIN SMALL LETTER N
453    "\u24AA":"(o)", // PARENTHESIZED LATIN SMALL LETTER O
454    "\u24AB":"(p)", // PARENTHESIZED LATIN SMALL LETTER P
455    "\u24AC":"(q)", // PARENTHESIZED LATIN SMALL LETTER Q
456    "\u24AD":"(r)", // PARENTHESIZED LATIN SMALL LETTER R
457    "\u24AE":"(s)", // PARENTHESIZED LATIN SMALL LETTER S
458    "\u24AF":"(t)", // PARENTHESIZED LATIN SMALL LETTER T
459    "\u24B0":"(u)", // PARENTHESIZED LATIN SMALL LETTER U
460    "\u24B1":"(v)", // PARENTHESIZED LATIN SMALL LETTER V
461    "\u24B2":"(w)", // PARENTHESIZED LATIN SMALL LETTER W
462    "\u24B3":"(x)", // PARENTHESIZED LATIN SMALL LETTER X
463    "\u24B4":"(y)", // PARENTHESIZED LATIN SMALL LETTER Y
464    "\u24B5":"(z)", // PARENTHESIZED LATIN SMALL LETTER Z
465    "\u24B6":"(A)", // CIRCLED LATIN CAPITAL LETTER A
466    "\u24B7":"(B)", // CIRCLED LATIN CAPITAL LETTER B
467    "\u24B8":"(C)", // CIRCLED LATIN CAPITAL LETTER C
468    "\u24B9":"(D)", // CIRCLED LATIN CAPITAL LETTER D
469    "\u24BA":"(E)", // CIRCLED LATIN CAPITAL LETTER E
470    "\u24BB":"(F)", // CIRCLED LATIN CAPITAL LETTER F
471    "\u24BC":"(G)", // CIRCLED LATIN CAPITAL LETTER G
472    "\u24BD":"(H)", // CIRCLED LATIN CAPITAL LETTER H
473    "\u24BE":"(I)", // CIRCLED LATIN CAPITAL LETTER I
474    "\u24BF":"(J)", // CIRCLED LATIN CAPITAL LETTER J
475    "\u24C0":"(K)", // CIRCLED LATIN CAPITAL LETTER K
476    "\u24C1":"(L)", // CIRCLED LATIN CAPITAL LETTER L
477    "\u24C2":"(M)", // CIRCLED LATIN CAPITAL LETTER M
478    "\u24C3":"(N)", // CIRCLED LATIN CAPITAL LETTER N
479    "\u24C4":"(O)", // CIRCLED LATIN CAPITAL LETTER O
480    "\u24C5":"(P)", // CIRCLED LATIN CAPITAL LETTER P
481    "\u24C6":"(Q)", // CIRCLED LATIN CAPITAL LETTER Q
482    "\u24C7":"(R)", // CIRCLED LATIN CAPITAL LETTER R
483    "\u24C8":"(S)", // CIRCLED LATIN CAPITAL LETTER S
484    "\u24C9":"(T)", // CIRCLED LATIN CAPITAL LETTER T
485    "\u24CA":"(U)", // CIRCLED LATIN CAPITAL LETTER U
486    "\u24CB":"(V)", // CIRCLED LATIN CAPITAL LETTER V
487    "\u24CC":"(W)", // CIRCLED LATIN CAPITAL LETTER W
488    "\u24CD":"(X)", // CIRCLED LATIN CAPITAL LETTER X
489    "\u24CE":"(Y)", // CIRCLED LATIN CAPITAL LETTER Y
490    "\u24CF":"(Z)", // CIRCLED LATIN CAPITAL LETTER Z
491    "\u24D0":"(a)", // CIRCLED LATIN SMALL LETTER A
492    "\u24D1":"(b)", // CIRCLED LATIN SMALL LETTER B
493    "\u24D2":"(c)", // CIRCLED LATIN SMALL LETTER C
494    "\u24D3":"(d)", // CIRCLED LATIN SMALL LETTER D
495    "\u24D4":"(e)", // CIRCLED LATIN SMALL LETTER E
496    "\u24D5":"(f)", // CIRCLED LATIN SMALL LETTER F
497    "\u24D6":"(g)", // CIRCLED LATIN SMALL LETTER G
498    "\u24D7":"(h)", // CIRCLED LATIN SMALL LETTER H
499    "\u24D8":"(i)", // CIRCLED LATIN SMALL LETTER I
500    "\u24D9":"(j)", // CIRCLED LATIN SMALL LETTER J
501    "\u24DA":"(k)", // CIRCLED LATIN SMALL LETTER K
502    "\u24DB":"(l)", // CIRCLED LATIN SMALL LETTER L
503    "\u24DC":"(m)", // CIRCLED LATIN SMALL LETTER M
504    "\u24DD":"(n)", // CIRCLED LATIN SMALL LETTER N
505    "\u24DE":"(o)", // CIRCLED LATIN SMALL LETTER O
506    "\u24DF":"(p)", // CIRCLED LATIN SMALL LETTER P
507    "\u24E0":"(q)", // CIRCLED LATIN SMALL LETTER Q
508    "\u24E1":"(r)", // CIRCLED LATIN SMALL LETTER R
509    "\u24E2":"(s)", // CIRCLED LATIN SMALL LETTER S
510    "\u24E3":"(t)", // CIRCLED LATIN SMALL LETTER T
511    "\u24E4":"(u)", // CIRCLED LATIN SMALL LETTER U
512    "\u24E5":"(v)", // CIRCLED LATIN SMALL LETTER V
513    "\u24E6":"(w)", // CIRCLED LATIN SMALL LETTER W
514    "\u24E7":"(x)", // CIRCLED LATIN SMALL LETTER X
515    "\u24E8":"(y)", // CIRCLED LATIN SMALL LETTER Y
516    "\u24E9":"(z)", // CIRCLED LATIN SMALL LETTER Z
517    "\u24EA":"(0)", // CIRCLED DIGIT ZERO
518    "\u2500":"-", // BOX DRAWINGS LIGHT HORIZONTAL
519    "\u2501":"=", // BOX DRAWINGS HEAVY HORIZONTAL
520    "\u2502":"|", // BOX DRAWINGS LIGHT VERTICAL
521    "\u2503":"|", // BOX DRAWINGS HEAVY VERTICAL
522    "\u2504":"-", // BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
523    "\u2505":"=", // BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
524    "\u2506":"|", // BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
525    "\u2507":"|", // BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
526    "\u2508":"-", // BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
527    "\u2509":"=", // BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
528    "\u250A":"|", // BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
529    "\u250B":"|", // BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
530    "\u250C":"+", // BOX DRAWINGS LIGHT DOWN AND RIGHT
531    "\u250D":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
532    "\u250E":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
533    "\u250F":"+", // BOX DRAWINGS HEAVY DOWN AND RIGHT
534    "\u2510":"+", // BOX DRAWINGS LIGHT DOWN AND LEFT
535    "\u2511":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
536    "\u2512":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
537    "\u2513":"+", // BOX DRAWINGS HEAVY DOWN AND LEFT
538    "\u2514":"+", // BOX DRAWINGS LIGHT UP AND RIGHT
539    "\u2515":"+", // BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
540    "\u2516":"+", // BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
541    "\u2517":"+", // BOX DRAWINGS HEAVY UP AND RIGHT
542    "\u2518":"+", // BOX DRAWINGS LIGHT UP AND LEFT
543    "\u2519":"+", // BOX DRAWINGS UP LIGHT AND LEFT HEAVY
544    "\u251A":"+", // BOX DRAWINGS UP HEAVY AND LEFT LIGHT
545    "\u251B":"+", // BOX DRAWINGS HEAVY UP AND LEFT
546    "\u251C":"+", // BOX DRAWINGS LIGHT VERTICAL AND RIGHT
547    "\u251D":"+", // BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
548    "\u251E":"+", // BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
549    "\u251F":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
550    "\u2520":"+", // BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
551    "\u2521":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
552    "\u2522":"+", // BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
553    "\u2523":"+", // BOX DRAWINGS HEAVY VERTICAL AND RIGHT
554    "\u2524":"+", // BOX DRAWINGS LIGHT VERTICAL AND LEFT
555    "\u2525":"+", // BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
556    "\u2526":"+", // BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
557    "\u2527":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
558    "\u2528":"+", // BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
559    "\u2529":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
560    "\u252A":"+", // BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
561    "\u252B":"+", // BOX DRAWINGS HEAVY VERTICAL AND LEFT
562    "\u252C":"+", // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
563    "\u252D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
564    "\u252E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
565    "\u252F":"+", // BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
566    "\u2530":"+", // BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
567    "\u2531":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
568    "\u2532":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
569    "\u2533":"+", // BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
570    "\u2534":"+", // BOX DRAWINGS LIGHT UP AND HORIZONTAL
571    "\u2535":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
572    "\u2536":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
573    "\u2537":"+", // BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
574    "\u2538":"+", // BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
575    "\u2539":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
576    "\u253A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
577    "\u253B":"+", // BOX DRAWINGS HEAVY UP AND HORIZONTAL
578    "\u253C":"+", // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
579    "\u253D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
580    "\u253E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
581    "\u253F":"+", // BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
582    "\u2540":"+", // BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
583    "\u2541":"+", // BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
584    "\u2542":"+", // BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
585    "\u2543":"+", // BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
586    "\u2544":"+", // BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
587    "\u2545":"+", // BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
588    "\u2546":"+", // BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
589    "\u2547":"+", // BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
590    "\u2548":"+", // BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
591    "\u2549":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
592    "\u254A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
593    "\u254B":"+", // BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
594    "\u254C":"-", // BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
595    "\u254D":"=", // BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
596    "\u254E":"|", // BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
597    "\u254F":"|", // BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
598    "\u2550":"=", // BOX DRAWINGS DOUBLE HORIZONTAL
599    "\u2551":"|", // BOX DRAWINGS DOUBLE VERTICAL
600    "\u2552":"+", // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
601    "\u2553":"+", // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
602    "\u2554":"+", // BOX DRAWINGS DOUBLE DOWN AND RIGHT
603    "\u2555":"+", // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
604    "\u2556":"+", // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
605    "\u2557":"+", // BOX DRAWINGS DOUBLE DOWN AND LEFT
606    "\u2558":"+", // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
607    "\u2559":"+", // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
608    "\u255A":"+", // BOX DRAWINGS DOUBLE UP AND RIGHT
609    "\u255B":"+", // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
610    "\u255C":"+", // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
611    "\u255D":"+", // BOX DRAWINGS DOUBLE UP AND LEFT
612    "\u255E":"+", // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
613    "\u255F":"+", // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
614    "\u2560":"+", // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
615    "\u2561":"+", // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
616    "\u2562":"+", // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
617    "\u2563":"+", // BOX DRAWINGS DOUBLE VERTICAL AND LEFT
618    "\u2564":"+", // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
619    "\u2565":"+", // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
620    "\u2566":"+", // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
621    "\u2567":"+", // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
622    "\u2568":"+", // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
623    "\u2569":"+", // BOX DRAWINGS DOUBLE UP AND HORIZONTAL
624    "\u256A":"+", // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
625    "\u256B":"+", // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
626    "\u256C":"+", // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
627    "\u256D":"+", // BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
628    "\u256E":"+", // BOX DRAWINGS LIGHT ARC DOWN AND LEFT
629    "\u256F":"+", // BOX DRAWINGS LIGHT ARC UP AND LEFT
630    "\u2570":"+", // BOX DRAWINGS LIGHT ARC UP AND RIGHT
631    "\u2571":"/", // BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
632    "\u2572":"\\", // BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
633    "\u2573":"X", // BOX DRAWINGS LIGHT DIAGONAL CROSS
634    "\u257C":"-", // BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
635    "\u257D":"|", // BOX DRAWINGS LIGHT UP AND HEAVY DOWN
636    "\u257E":"-", // BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
637    "\u257F":"|", // BOX DRAWINGS HEAVY UP AND LIGHT DOWN
638    "\u25CB":"o", // WHITE CIRCLE
639    "\u25E6":"{\\textopenbullet}", // WHITE BULLET
640    "\u2605":"*", // BLACK STAR
641    "\u2606":"*", // WHITE STAR
642    "\u2612":"X", // BALLOT BOX WITH X
643    "\u2613":"X", // SALTIRE
644    "\u2639":":-(", // WHITE FROWNING FACE
645    "\u263A":":-)", // WHITE SMILING FACE
646    "\u263B":"(-:", // BLACK SMILING FACE
647    "\u266D":"b", // MUSIC FLAT SIGN
648    "\u266F":"$\\#$", // MUSIC SHARP SIGN
649    "\u2701":"$\\%<$", // UPPER BLADE SCISSORS
650    "\u2702":"$\\%<$", // BLACK SCISSORS
651    "\u2703":"$\\%<$", // LOWER BLADE SCISSORS
652    "\u2704":"$\\%<$", // WHITE SCISSORS
653    "\u270C":"V", // VICTORY HAND
654    "\u2713":"v", // CHECK MARK
655    "\u2714":"V", // HEAVY CHECK MARK
656    "\u2715":"x", // MULTIPLICATION X
657    "\u2716":"x", // HEAVY MULTIPLICATION X
658    "\u2717":"X", // BALLOT X
659    "\u2718":"X", // HEAVY BALLOT X
660    "\u2719":"+", // OUTLINED GREEK CROSS
661    "\u271A":"+", // HEAVY GREEK CROSS
662    "\u271B":"+", // OPEN CENTRE CROSS
663    "\u271C":"+", // HEAVY OPEN CENTRE CROSS
664    "\u271D":"+", // LATIN CROSS
665    "\u271E":"+", // SHADOWED WHITE LATIN CROSS
666    "\u271F":"+", // OUTLINED LATIN CROSS
667    "\u2720":"+", // MALTESE CROSS
668    "\u2721":"*", // STAR OF DAVID
669    "\u2722":"+", // FOUR TEARDROP-SPOKED ASTERISK
670    "\u2723":"+", // FOUR BALLOON-SPOKED ASTERISK
671    "\u2724":"+", // HEAVY FOUR BALLOON-SPOKED ASTERISK
672    "\u2725":"+", // FOUR CLUB-SPOKED ASTERISK
673    "\u2726":"+", // BLACK FOUR POINTED STAR
674    "\u2727":"+", // WHITE FOUR POINTED STAR
675    "\u2729":"*", // STRESS OUTLINED WHITE STAR
676    "\u272A":"*", // CIRCLED WHITE STAR
677    "\u272B":"*", // OPEN CENTRE BLACK STAR
678    "\u272C":"*", // BLACK CENTRE WHITE STAR
679    "\u272D":"*", // OUTLINED BLACK STAR
680    "\u272E":"*", // HEAVY OUTLINED BLACK STAR
681    "\u272F":"*", // PINWHEEL STAR
682    "\u2730":"*", // SHADOWED WHITE STAR
683    "\u2731":"*", // HEAVY ASTERISK
684    "\u2732":"*", // OPEN CENTRE ASTERISK
685    "\u2733":"*", // EIGHT SPOKED ASTERISK
686    "\u2734":"*", // EIGHT POINTED BLACK STAR
687    "\u2735":"*", // EIGHT POINTED PINWHEEL STAR
688    "\u2736":"*", // SIX POINTED BLACK STAR
689    "\u2737":"*", // EIGHT POINTED RECTILINEAR BLACK STAR
690    "\u2738":"*", // HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
691    "\u2739":"*", // TWELVE POINTED BLACK STAR
692    "\u273A":"*", // SIXTEEN POINTED ASTERISK
693    "\u273B":"*", // TEARDROP-SPOKED ASTERISK
694    "\u273C":"*", // OPEN CENTRE TEARDROP-SPOKED ASTERISK
695    "\u273D":"*", // HEAVY TEARDROP-SPOKED ASTERISK
696    "\u273E":"*", // SIX PETALLED BLACK AND WHITE FLORETTE
697    "\u273F":"*", // BLACK FLORETTE
698    "\u2740":"*", // WHITE FLORETTE
699    "\u2741":"*", // EIGHT PETALLED OUTLINED BLACK FLORETTE
700    "\u2742":"*", // CIRCLED OPEN CENTRE EIGHT POINTED STAR
701    "\u2743":"*", // HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
702    "\u2744":"*", // SNOWFLAKE
703    "\u2745":"*", // TIGHT TRIFOLIATE SNOWFLAKE
704    "\u2746":"*", // HEAVY CHEVRON SNOWFLAKE
705    "\u2747":"*", // SPARKLE
706    "\u2748":"*", // HEAVY SPARKLE
707    "\u2749":"*", // BALLOON-SPOKED ASTERISK
708    "\u274A":"*", // EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
709    "\u274B":"*", // HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
710    "\uFB00":"ff", // LATIN SMALL LIGATURE FF
711    "\uFB01":"fi", // LATIN SMALL LIGATURE FI
712    "\uFB02":"fl", // LATIN SMALL LIGATURE FL
713    "\uFB03":"ffi", // LATIN SMALL LIGATURE FFI
714    "\uFB04":"ffl", // LATIN SMALL LIGATURE FFL
715    "\uFB05":"st", // LATIN SMALL LIGATURE LONG S T
716    "\uFB06":"st", // LATIN SMALL LIGATURE ST
717/* Derived accented characters */
718    "\u00C0":"\\`{A}", // LATIN CAPITAL LETTER A WITH GRAVE
719    "\u00C1":"\\''{A}", // LATIN CAPITAL LETTER A WITH ACUTE
720    "\u00C2":"\\^{A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
721    "\u00C3":"\\~{A}", // LATIN CAPITAL LETTER A WITH TILDE
722    "\u00C4":"\\~{A}", // LATIN CAPITAL LETTER A WITH DIAERESIS
723    "\u00C7":"\\c{C}", // LATIN CAPITAL LETTER C WITH CEDILLA
724    "\u00C8":"\\`{E}", // LATIN CAPITAL LETTER E WITH GRAVE
725    "\u00C9":"\\''{E}", // LATIN CAPITAL LETTER E WITH ACUTE
726    "\u00CA":"\\^{E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
727    "\u00CB":"\\~{E}", // LATIN CAPITAL LETTER E WITH DIAERESIS
728    "\u00CC":"\\`{I}", // LATIN CAPITAL LETTER I WITH GRAVE
729    "\u00CD":"\\''{I}", // LATIN CAPITAL LETTER I WITH ACUTE
730    "\u00CE":"\\^{I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
731    "\u00CF":"\\~{I}", // LATIN CAPITAL LETTER I WITH DIAERESIS
732    "\u00D1":"\\~{N}", // LATIN CAPITAL LETTER N WITH TILDE
733    "\u00D2":"\\`{O}", // LATIN CAPITAL LETTER O WITH GRAVE
734    "\u00D3":"\\''{O}", // LATIN CAPITAL LETTER O WITH ACUTE
735    "\u00D4":"\\^{O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
736    "\u00D5":"\\~{O}", // LATIN CAPITAL LETTER O WITH TILDE
737    "\u00D6":"\\~{O}", // LATIN CAPITAL LETTER O WITH DIAERESIS
738    "\u00D9":"\\`{U}", // LATIN CAPITAL LETTER U WITH GRAVE
739    "\u00DA":"\\''{U}", // LATIN CAPITAL LETTER U WITH ACUTE
740    "\u00DB":"\\^{U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
741    "\u00DC":"\\~{U}", // LATIN CAPITAL LETTER U WITH DIAERESIS
742    "\u00DD":"\\''{Y}", // LATIN CAPITAL LETTER Y WITH ACUTE
743    "\u00E0":"\\`{a}", // LATIN SMALL LETTER A WITH GRAVE
744    "\u00E1":"\\''{a}", // LATIN SMALL LETTER A WITH ACUTE
745    "\u00E2":"\\^{a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX
746    "\u00E3":"\\~{a}", // LATIN SMALL LETTER A WITH TILDE
747    "\u00E4":"\\~{a}", // LATIN SMALL LETTER A WITH DIAERESIS
748    "\u00E7":"\\c{c}", // LATIN SMALL LETTER C WITH CEDILLA
749    "\u00E8":"\\`{e}", // LATIN SMALL LETTER E WITH GRAVE
750    "\u00E9":"\\''{e}", // LATIN SMALL LETTER E WITH ACUTE
751    "\u00EA":"\\^{e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX
752    "\u00EB":"\\~{e}", // LATIN SMALL LETTER E WITH DIAERESIS
753    "\u00EC":"\\`{i}", // LATIN SMALL LETTER I WITH GRAVE
754    "\u00ED":"\\''{i}", // LATIN SMALL LETTER I WITH ACUTE
755    "\u00EE":"\\^{i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX
756    "\u00EF":"\\~{i}", // LATIN SMALL LETTER I WITH DIAERESIS
757    "\u00F1":"\\~{n}", // LATIN SMALL LETTER N WITH TILDE
758    "\u00F2":"\\`{o}", // LATIN SMALL LETTER O WITH GRAVE
759    "\u00F3":"\\''{o}", // LATIN SMALL LETTER O WITH ACUTE
760    "\u00F4":"\\^{o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX
761    "\u00F5":"\\~{o}", // LATIN SMALL LETTER O WITH TILDE
762    "\u00F6":"\\~{o}", // LATIN SMALL LETTER O WITH DIAERESIS
763    "\u00F9":"\\`{u}", // LATIN SMALL LETTER U WITH GRAVE
764    "\u00FA":"\\''{u}", // LATIN SMALL LETTER U WITH ACUTE
765    "\u00FB":"\\^{u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX
766    "\u00FC":"\\~{u}", // LATIN SMALL LETTER U WITH DIAERESIS
767    "\u00FD":"\\''{y}", // LATIN SMALL LETTER Y WITH ACUTE
768    "\u00FF":"\\~{y}", // LATIN SMALL LETTER Y WITH DIAERESIS
769    "\u0100":"\\={A}", // LATIN CAPITAL LETTER A WITH MACRON
770    "\u0101":"\\={a}", // LATIN SMALL LETTER A WITH MACRON
771    "\u0102":"\\u{A}", // LATIN CAPITAL LETTER A WITH BREVE
772    "\u0103":"\\u{a}", // LATIN SMALL LETTER A WITH BREVE
773    "\u0104":"\\k{A}", // LATIN CAPITAL LETTER A WITH OGONEK
774    "\u0105":"\\k{a}", // LATIN SMALL LETTER A WITH OGONEK
775    "\u0106":"\\''{C}", // LATIN CAPITAL LETTER C WITH ACUTE
776    "\u0107":"\\''{c}", // LATIN SMALL LETTER C WITH ACUTE
777    "\u0108":"\\^{C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
778    "\u0109":"\\^{c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX
779    "\u010A":"\\.{C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE
780    "\u010B":"\\.{c}", // LATIN SMALL LETTER C WITH DOT ABOVE
781    "\u010C":"\\v{C}", // LATIN CAPITAL LETTER C WITH CARON
782    "\u010D":"\\v{c}", // LATIN SMALL LETTER C WITH CARON
783    "\u010E":"\\v{D}", // LATIN CAPITAL LETTER D WITH CARON
784    "\u010F":"\\v{d}", // LATIN SMALL LETTER D WITH CARON
785    "\u0112":"\\={E}", // LATIN CAPITAL LETTER E WITH MACRON
786    "\u0113":"\\={e}", // LATIN SMALL LETTER E WITH MACRON
787    "\u0114":"\\u{E}", // LATIN CAPITAL LETTER E WITH BREVE
788    "\u0115":"\\u{e}", // LATIN SMALL LETTER E WITH BREVE
789    "\u0116":"\\.{E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE
790    "\u0117":"\\.{e}", // LATIN SMALL LETTER E WITH DOT ABOVE
791    "\u0118":"\\k{E}", // LATIN CAPITAL LETTER E WITH OGONEK
792    "\u0119":"\\k{e}", // LATIN SMALL LETTER E WITH OGONEK
793    "\u011A":"\\v{E}", // LATIN CAPITAL LETTER E WITH CARON
794    "\u011B":"\\v{e}", // LATIN SMALL LETTER E WITH CARON
795    "\u011C":"\\^{G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
796    "\u011D":"\\^{g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX
797    "\u011E":"\\u{G}", // LATIN CAPITAL LETTER G WITH BREVE
798    "\u011F":"\\u{g}", // LATIN SMALL LETTER G WITH BREVE
799    "\u0120":"\\.{G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE
800    "\u0121":"\\.{g}", // LATIN SMALL LETTER G WITH DOT ABOVE
801    "\u0122":"\\c{G}", // LATIN CAPITAL LETTER G WITH CEDILLA
802    "\u0123":"\\c{g}", // LATIN SMALL LETTER G WITH CEDILLA
803    "\u0124":"\\^{H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
804    "\u0125":"\\^{h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX
805    "\u0128":"\\~{I}", // LATIN CAPITAL LETTER I WITH TILDE
806    "\u0129":"\\~{i}", // LATIN SMALL LETTER I WITH TILDE
807    "\u012A":"\\={I}", // LATIN CAPITAL LETTER I WITH MACRON
808    "\u012B":"\\={i}", // LATIN SMALL LETTER I WITH MACRON
809    "\u012C":"\\u{I}", // LATIN CAPITAL LETTER I WITH BREVE
810    "\u012D":"\\u{i}", // LATIN SMALL LETTER I WITH BREVE
811    "\u012E":"\\k{I}", // LATIN CAPITAL LETTER I WITH OGONEK
812    "\u012F":"\\k{i}", // LATIN SMALL LETTER I WITH OGONEK
813    "\u0130":"\\.{I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE
814    "\u0134":"\\^{J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
815    "\u0135":"\\^{j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX
816    "\u0136":"\\c{K}", // LATIN CAPITAL LETTER K WITH CEDILLA
817    "\u0137":"\\c{k}", // LATIN SMALL LETTER K WITH CEDILLA
818    "\u0139":"\\''{L}", // LATIN CAPITAL LETTER L WITH ACUTE
819    "\u013A":"\\''{l}", // LATIN SMALL LETTER L WITH ACUTE
820    "\u013B":"\\c{L}", // LATIN CAPITAL LETTER L WITH CEDILLA
821    "\u013C":"\\c{l}", // LATIN SMALL LETTER L WITH CEDILLA
822    "\u013D":"\\v{L}", // LATIN CAPITAL LETTER L WITH CARON
823    "\u013E":"\\v{l}", // LATIN SMALL LETTER L WITH CARON
824    "\u0143":"\\''{N}", // LATIN CAPITAL LETTER N WITH ACUTE
825    "\u0144":"\\''{n}", // LATIN SMALL LETTER N WITH ACUTE
826    "\u0145":"\\c{N}", // LATIN CAPITAL LETTER N WITH CEDILLA
827    "\u0146":"\\c{n}", // LATIN SMALL LETTER N WITH CEDILLA
828    "\u0147":"\\v{N}", // LATIN CAPITAL LETTER N WITH CARON
829    "\u0148":"\\v{n}", // LATIN SMALL LETTER N WITH CARON
830    "\u014C":"\\={O}", // LATIN CAPITAL LETTER O WITH MACRON
831    "\u014D":"\\={o}", // LATIN SMALL LETTER O WITH MACRON
832    "\u014E":"\\u{O}", // LATIN CAPITAL LETTER O WITH BREVE
833    "\u014F":"\\u{o}", // LATIN SMALL LETTER O WITH BREVE
834    "\u0150":"\\H{O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
835    "\u0151":"\\H{o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE
836    "\u0154":"\\''{R}", // LATIN CAPITAL LETTER R WITH ACUTE
837    "\u0155":"\\''{r}", // LATIN SMALL LETTER R WITH ACUTE
838    "\u0156":"\\c{R}", // LATIN CAPITAL LETTER R WITH CEDILLA
839    "\u0157":"\\c{r}", // LATIN SMALL LETTER R WITH CEDILLA
840    "\u0158":"\\v{R}", // LATIN CAPITAL LETTER R WITH CARON
841    "\u0159":"\\v{r}", // LATIN SMALL LETTER R WITH CARON
842    "\u015A":"\\''{S}", // LATIN CAPITAL LETTER S WITH ACUTE
843    "\u015B":"\\''{s}", // LATIN SMALL LETTER S WITH ACUTE
844    "\u015C":"\\^{S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
845    "\u015D":"\\^{s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX
846    "\u015E":"\\c{S}", // LATIN CAPITAL LETTER S WITH CEDILLA
847    "\u015F":"\\c{s}", // LATIN SMALL LETTER S WITH CEDILLA
848    "\u0160":"\\v{S}", // LATIN CAPITAL LETTER S WITH CARON
849    "\u0161":"\\v{s}", // LATIN SMALL LETTER S WITH CARON
850    "\u0162":"\\c{T}", // LATIN CAPITAL LETTER T WITH CEDILLA
851    "\u0163":"\\c{t}", // LATIN SMALL LETTER T WITH CEDILLA
852    "\u0164":"\\v{T}", // LATIN CAPITAL LETTER T WITH CARON
853    "\u0165":"\\v{t}", // LATIN SMALL LETTER T WITH CARON
854    "\u0168":"\\~{U}", // LATIN CAPITAL LETTER U WITH TILDE
855    "\u0169":"\\~{u}", // LATIN SMALL LETTER U WITH TILDE
856    "\u016A":"\\={U}", // LATIN CAPITAL LETTER U WITH MACRON
857    "\u016B":"\\={u}", // LATIN SMALL LETTER U WITH MACRON
858    "\u016C":"\\u{U}", // LATIN CAPITAL LETTER U WITH BREVE
859    "\u016D":"\\u{u}", // LATIN SMALL LETTER U WITH BREVE
860    "\u0170":"\\H{U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
861    "\u0171":"\\H{u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE
862    "\u0172":"\\k{U}", // LATIN CAPITAL LETTER U WITH OGONEK
863    "\u0173":"\\k{u}", // LATIN SMALL LETTER U WITH OGONEK
864    "\u0174":"\\^{W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
865    "\u0175":"\\^{w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX
866    "\u0176":"\\^{Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
867    "\u0177":"\\^{y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX
868    "\u0178":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS
869    "\u0179":"\\''{Z}", // LATIN CAPITAL LETTER Z WITH ACUTE
870    "\u017A":"\\''{z}", // LATIN SMALL LETTER Z WITH ACUTE
871    "\u017B":"\\.{Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE
872    "\u017C":"\\.{z}", // LATIN SMALL LETTER Z WITH DOT ABOVE
873    "\u017D":"\\v{Z}", // LATIN CAPITAL LETTER Z WITH CARON
874    "\u017E":"\\v{z}", // LATIN SMALL LETTER Z WITH CARON
875    "\u01CD":"\\v{A}", // LATIN CAPITAL LETTER A WITH CARON
876    "\u01CE":"\\v{a}", // LATIN SMALL LETTER A WITH CARON
877    "\u01CF":"\\v{I}", // LATIN CAPITAL LETTER I WITH CARON
878    "\u01D0":"\\v{i}", // LATIN SMALL LETTER I WITH CARON
879    "\u01D1":"\\v{O}", // LATIN CAPITAL LETTER O WITH CARON
880    "\u01D2":"\\v{o}", // LATIN SMALL LETTER O WITH CARON
881    "\u01D3":"\\v{U}", // LATIN CAPITAL LETTER U WITH CARON
882    "\u01D4":"\\v{u}", // LATIN SMALL LETTER U WITH CARON
883    "\u01E6":"\\v{G}", // LATIN CAPITAL LETTER G WITH CARON
884    "\u01E7":"\\v{g}", // LATIN SMALL LETTER G WITH CARON
885    "\u01E8":"\\v{K}", // LATIN CAPITAL LETTER K WITH CARON
886    "\u01E9":"\\v{k}", // LATIN SMALL LETTER K WITH CARON
887    "\u01EA":"\\k{O}", // LATIN CAPITAL LETTER O WITH OGONEK
888    "\u01EB":"\\k{o}", // LATIN SMALL LETTER O WITH OGONEK
889    "\u01F0":"\\v{j}", // LATIN SMALL LETTER J WITH CARON
890    "\u01F4":"\\''{G}", // LATIN CAPITAL LETTER G WITH ACUTE
891    "\u01F5":"\\''{g}", // LATIN SMALL LETTER G WITH ACUTE
892    "\u1E02":"\\.{B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE
893    "\u1E03":"\\.{b}", // LATIN SMALL LETTER B WITH DOT ABOVE
894    "\u1E04":"\\d{B}", // LATIN CAPITAL LETTER B WITH DOT BELOW
895    "\u1E05":"\\d{b}", // LATIN SMALL LETTER B WITH DOT BELOW
896    "\u1E06":"\\b{B}", // LATIN CAPITAL LETTER B WITH LINE BELOW
897    "\u1E07":"\\b{b}", // LATIN SMALL LETTER B WITH LINE BELOW
898    "\u1E0A":"\\.{D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE
899    "\u1E0B":"\\.{d}", // LATIN SMALL LETTER D WITH DOT ABOVE
900    "\u1E0C":"\\d{D}", // LATIN CAPITAL LETTER D WITH DOT BELOW
901    "\u1E0D":"\\d{d}", // LATIN SMALL LETTER D WITH DOT BELOW
902    "\u1E0E":"\\b{D}", // LATIN CAPITAL LETTER D WITH LINE BELOW
903    "\u1E0F":"\\b{d}", // LATIN SMALL LETTER D WITH LINE BELOW
904    "\u1E10":"\\c{D}", // LATIN CAPITAL LETTER D WITH CEDILLA
905    "\u1E11":"\\c{d}", // LATIN SMALL LETTER D WITH CEDILLA
906    "\u1E1E":"\\.{F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE
907    "\u1E1F":"\\.{f}", // LATIN SMALL LETTER F WITH DOT ABOVE
908    "\u1E20":"\\={G}", // LATIN CAPITAL LETTER G WITH MACRON
909    "\u1E21":"\\={g}", // LATIN SMALL LETTER G WITH MACRON
910    "\u1E22":"\\.{H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE
911    "\u1E23":"\\.{h}", // LATIN SMALL LETTER H WITH DOT ABOVE
912    "\u1E24":"\\d{H}", // LATIN CAPITAL LETTER H WITH DOT BELOW
913    "\u1E25":"\\d{h}", // LATIN SMALL LETTER H WITH DOT BELOW
914    "\u1E26":"\\~{H}", // LATIN CAPITAL LETTER H WITH DIAERESIS
915    "\u1E27":"\\~{h}", // LATIN SMALL LETTER H WITH DIAERESIS
916    "\u1E28":"\\c{H}", // LATIN CAPITAL LETTER H WITH CEDILLA
917    "\u1E29":"\\c{h}", // LATIN SMALL LETTER H WITH CEDILLA
918    "\u1E30":"\\''{K}", // LATIN CAPITAL LETTER K WITH ACUTE
919    "\u1E31":"\\''{k}", // LATIN SMALL LETTER K WITH ACUTE
920    "\u1E32":"\\d{K}", // LATIN CAPITAL LETTER K WITH DOT BELOW
921    "\u1E33":"\\d{k}", // LATIN SMALL LETTER K WITH DOT BELOW
922    "\u1E34":"\\b{K}", // LATIN CAPITAL LETTER K WITH LINE BELOW
923    "\u1E35":"\\b{k}", // LATIN SMALL LETTER K WITH LINE BELOW
924    "\u1E36":"\\d{L}", // LATIN CAPITAL LETTER L WITH DOT BELOW
925    "\u1E37":"\\d{l}", // LATIN SMALL LETTER L WITH DOT BELOW
926    "\u1E3A":"\\b{L}", // LATIN CAPITAL LETTER L WITH LINE BELOW
927    "\u1E3B":"\\b{l}", // LATIN SMALL LETTER L WITH LINE BELOW
928    "\u1E3E":"\\''{M}", // LATIN CAPITAL LETTER M WITH ACUTE
929    "\u1E3F":"\\''{m}", // LATIN SMALL LETTER M WITH ACUTE
930    "\u1E40":"\\.{M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE
931    "\u1E41":"\\.{m}", // LATIN SMALL LETTER M WITH DOT ABOVE
932    "\u1E42":"\\d{M}", // LATIN CAPITAL LETTER M WITH DOT BELOW
933    "\u1E43":"\\d{m}", // LATIN SMALL LETTER M WITH DOT BELOW
934    "\u1E44":"\\.{N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE
935    "\u1E45":"\\.{n}", // LATIN SMALL LETTER N WITH DOT ABOVE
936    "\u1E46":"\\d{N}", // LATIN CAPITAL LETTER N WITH DOT BELOW
937    "\u1E47":"\\d{n}", // LATIN SMALL LETTER N WITH DOT BELOW
938    "\u1E48":"\\b{N}", // LATIN CAPITAL LETTER N WITH LINE BELOW
939    "\u1E49":"\\b{n}", // LATIN SMALL LETTER N WITH LINE BELOW
940    "\u1E54":"\\''{P}", // LATIN CAPITAL LETTER P WITH ACUTE
941    "\u1E55":"\\''{p}", // LATIN SMALL LETTER P WITH ACUTE
942    "\u1E56":"\\.{P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE
943    "\u1E57":"\\.{p}", // LATIN SMALL LETTER P WITH DOT ABOVE
944    "\u1E58":"\\.{R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE
945    "\u1E59":"\\.{r}", // LATIN SMALL LETTER R WITH DOT ABOVE
946    "\u1E5A":"\\d{R}", // LATIN CAPITAL LETTER R WITH DOT BELOW
947    "\u1E5B":"\\d{r}", // LATIN SMALL LETTER R WITH DOT BELOW
948    "\u1E5E":"\\b{R}", // LATIN CAPITAL LETTER R WITH LINE BELOW
949    "\u1E5F":"\\b{r}", // LATIN SMALL LETTER R WITH LINE BELOW
950    "\u1E60":"\\.{S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE
951    "\u1E61":"\\.{s}", // LATIN SMALL LETTER S WITH DOT ABOVE
952    "\u1E62":"\\d{S}", // LATIN CAPITAL LETTER S WITH DOT BELOW
953    "\u1E63":"\\d{s}", // LATIN SMALL LETTER S WITH DOT BELOW
954    "\u1E6A":"\\.{T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE
955    "\u1E6B":"\\.{t}", // LATIN SMALL LETTER T WITH DOT ABOVE
956    "\u1E6C":"\\d{T}", // LATIN CAPITAL LETTER T WITH DOT BELOW
957    "\u1E6D":"\\d{t}", // LATIN SMALL LETTER T WITH DOT BELOW
958    "\u1E6E":"\\b{T}", // LATIN CAPITAL LETTER T WITH LINE BELOW
959    "\u1E6F":"\\b{t}", // LATIN SMALL LETTER T WITH LINE BELOW
960    "\u1E7C":"\\~{V}", // LATIN CAPITAL LETTER V WITH TILDE
961    "\u1E7D":"\\~{v}", // LATIN SMALL LETTER V WITH TILDE
962    "\u1E7E":"\\d{V}", // LATIN CAPITAL LETTER V WITH DOT BELOW
963    "\u1E7F":"\\d{v}", // LATIN SMALL LETTER V WITH DOT BELOW
964    "\u1E80":"\\`{W}", // LATIN CAPITAL LETTER W WITH GRAVE
965    "\u1E81":"\\`{w}", // LATIN SMALL LETTER W WITH GRAVE
966    "\u1E82":"\\''{W}", // LATIN CAPITAL LETTER W WITH ACUTE
967    "\u1E83":"\\''{w}", // LATIN SMALL LETTER W WITH ACUTE
968    "\u1E84":"\\~{W}", // LATIN CAPITAL LETTER W WITH DIAERESIS
969    "\u1E85":"\\~{w}", // LATIN SMALL LETTER W WITH DIAERESIS
970    "\u1E86":"\\.{W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE
971    "\u1E87":"\\.{w}", // LATIN SMALL LETTER W WITH DOT ABOVE
972    "\u1E88":"\\d{W}", // LATIN CAPITAL LETTER W WITH DOT BELOW
973    "\u1E89":"\\d{w}", // LATIN SMALL LETTER W WITH DOT BELOW
974    "\u1E8A":"\\.{X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE
975    "\u1E8B":"\\.{x}", // LATIN SMALL LETTER X WITH DOT ABOVE
976    "\u1E8C":"\\~{X}", // LATIN CAPITAL LETTER X WITH DIAERESIS
977    "\u1E8D":"\\~{x}", // LATIN SMALL LETTER X WITH DIAERESIS
978    "\u1E8E":"\\.{Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE
979    "\u1E8F":"\\.{y}", // LATIN SMALL LETTER Y WITH DOT ABOVE
980    "\u1E90":"\\^{Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
981    "\u1E91":"\\^{z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX
982    "\u1E92":"\\d{Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW
983    "\u1E93":"\\d{z}", // LATIN SMALL LETTER Z WITH DOT BELOW
984    "\u1E94":"\\b{Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW
985    "\u1E95":"\\b{z}", // LATIN SMALL LETTER Z WITH LINE BELOW
986    "\u1E96":"\\b{h}", // LATIN SMALL LETTER H WITH LINE BELOW
987    "\u1E97":"\\~{t}", // LATIN SMALL LETTER T WITH DIAERESIS
988    "\u1EA0":"\\d{A}", // LATIN CAPITAL LETTER A WITH DOT BELOW
989    "\u1EA1":"\\d{a}", // LATIN SMALL LETTER A WITH DOT BELOW
990    "\u1EB8":"\\d{E}", // LATIN CAPITAL LETTER E WITH DOT BELOW
991    "\u1EB9":"\\d{e}", // LATIN SMALL LETTER E WITH DOT BELOW
992    "\u1EBC":"\\~{E}", // LATIN CAPITAL LETTER E WITH TILDE
993    "\u1EBD":"\\~{e}", // LATIN SMALL LETTER E WITH TILDE
994    "\u1ECA":"\\d{I}", // LATIN CAPITAL LETTER I WITH DOT BELOW
995    "\u1ECB":"\\d{i}", // LATIN SMALL LETTER I WITH DOT BELOW
996    "\u1ECC":"\\d{O}", // LATIN CAPITAL LETTER O WITH DOT BELOW
997    "\u1ECD":"\\d{o}", // LATIN SMALL LETTER O WITH DOT BELOW
998    "\u1EE4":"\\d{U}", // LATIN CAPITAL LETTER U WITH DOT BELOW
999    "\u1EE5":"\\d{u}", // LATIN SMALL LETTER U WITH DOT BELOW
1000    "\u1EF2":"\\`{Y}", // LATIN CAPITAL LETTER Y WITH GRAVE
1001    "\u1EF3":"\\`{y}", // LATIN SMALL LETTER Y WITH GRAVE
1002    "\u1EF4":"\\d{Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW
1003    "\u1EF5":"\\d{y}", // LATIN SMALL LETTER Y WITH DOT BELOW
1004    "\u1EF8":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH TILDE
1005    "\u1EF9":"\\~{y}", // LATIN SMALL LETTER Y WITH TILDE
1006
1007};
1008
1009/* unfortunately the mapping isn''t reversible - hence this second table - sigh! */
1010var reversemappingTable = {
1011    "\u00A0":"~", // NO-BREAK SPACE
1012    "\u00A1":"{\\textexclamdown}", // INVERTED EXCLAMATION MARK
1013    "\u00A2":"{\\textcent}", // CENT SIGN
1014    "\u00A3":"{\\textsterling}", // POUND SIGN
1015    "\u00A5":"{\\textyen}", // YEN SIGN
1016    "\u00A6":"{\\textbrokenbar}", // BROKEN BAR
1017    "\u00A7":"{\\textsection}", // SECTION SIGN
1018    "\u00A8":"{\\textasciidieresis}", // DIAERESIS
1019    "\u00A9":"{\\textcopyright}", // COPYRIGHT SIGN
1020    "\u00AA":"{\\textordfeminine}", // FEMININE ORDINAL INDICATOR
1021    "\u00AB":"{\\guillemotleft}", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
1022    "\u00AC":"{\\textlnot}", // NOT SIGN
1023    "\u00AD":"-", // SOFT HYPHEN
1024    "\u00AE":"{\\textregistered}", // REGISTERED SIGN
1025    "\u00AF":"{\\textasciimacron}", // MACRON
1026    "\u00B0":"{\\textdegree}", // DEGREE SIGN
1027    "\u00B1":"{\\textpm}", // PLUS-MINUS SIGN
1028    "\u00B2":"{\\texttwosuperior}", // SUPERSCRIPT TWO
1029    "\u00B3":"{\\textthreesuperior}", // SUPERSCRIPT THREE
1030    "\u00B4":"{\\textasciiacute}", // ACUTE ACCENT
1031    "\u00B5":"{\\textmu}", // MICRO SIGN
1032    "\u00B6":"{\\textparagraph}", // PILCROW SIGN
1033    "\u00B7":"{\\textperiodcentered}", // MIDDLE DOT
1034    "\u00B8":"{\\c\\ }", // CEDILLA
1035    "\u00B9":"{\\textonesuperior}", // SUPERSCRIPT ONE
1036    "\u00BA":"{\\textordmasculine}", // MASCULINE ORDINAL INDICATOR
1037    "\u00BB":"{\\guillemotright}", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
1038    "\u00BC":"{\\textonequarter}", // VULGAR FRACTION ONE QUARTER
1039    "\u00BD":"{\\textonehalf}", // VULGAR FRACTION ONE HALF
1040    "\u00BE":"{\\textthreequarters}", // VULGAR FRACTION THREE QUARTERS
1041    "\u00BF":"{\\textquestiondown}", // INVERTED QUESTION MARK
1042    "\u00C6":"{\\AE}", // LATIN CAPITAL LETTER AE
1043    "\u00D0":"{\\DH}", // LATIN CAPITAL LETTER ETH
1044    "\u00D7":"{\\texttimes}", // MULTIPLICATION SIGN
1045    "\u00DE":"{\\TH}", // LATIN CAPITAL LETTER THORN
1046    "\u00DF":"{\\ss}", // LATIN SMALL LETTER SHARP S
1047    "\u00E6":"{\\ae}", // LATIN SMALL LETTER AE
1048    "\u00F0":"{\\dh}", // LATIN SMALL LETTER ETH
1049    "\u00F7":"{\\textdiv}", // DIVISION SIGN
1050    "\u00FE":"{\\th}", // LATIN SMALL LETTER THORN
1051    "\u0131":"{\\i}", // LATIN SMALL LETTER DOTLESS I
1052    "\u0132":"IJ", // LATIN CAPITAL LIGATURE IJ
1053    "\u0133":"ij", // LATIN SMALL LIGATURE IJ
1054    "\u0149":"''n", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
1055    "\u014A":"{\\NG}", // LATIN CAPITAL LETTER ENG
1056    "\u014B":"{\\ng}", // LATIN SMALL LETTER ENG
1057    "\u0152":"{\\OE}", // LATIN CAPITAL LIGATURE OE
1058    "\u0153":"{\\oe}", // LATIN SMALL LIGATURE OE
1059    "\u02C6":"{\\textasciicircum}", // MODIFIER LETTER CIRCUMFLEX ACCENT
1060    "\u02DC":"\\~{}", // SMALL TILDE
1061    "\u02DD":"{\\textacutedbl}", // DOUBLE ACUTE ACCENT
1062    "\u2001":"  ", // EM QUAD
1063    "\u2013":"{\\textendash}", // EN DASH
1064    "\u2014":"{\\textemdash}", // EM DASH
1065    "\u2015":"--", // HORIZONTAL BAR
1066    "\u2016":"{\\textbardbl}", // DOUBLE VERTICAL LINE
1067    "\u2017":"{\\textunderscore}", // DOUBLE LOW LINE
1068    "\u2018":"{\\textquoteleft}", // LEFT SINGLE QUOTATION MARK
1069    "\u2019":"{\\textquoteright}", // RIGHT SINGLE QUOTATION MARK
1070    "\u201A":"{\\quotesinglbase}", // SINGLE LOW-9 QUOTATION MARK
1071    "\u201C":"{\\textquotedblleft}", // LEFT DOUBLE QUOTATION MARK
1072    "\u201D":"{\\textquotedblright}", // RIGHT DOUBLE QUOTATION MARK
1073    "\u201E":"{\\quotedblbase}", // DOUBLE LOW-9 QUOTATION MARK
1074    "\u201F":"{\\quotedblbase}", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK
1075    "\u2020":"{\\textdagger}", // DAGGER
1076    "\u2021":"{\\textdaggerdbl}", // DOUBLE DAGGER
1077    "\u2022":"{\\textbullet}", // BULLET
1078    "\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS
1079    "\u2030":"{\\textperthousand}", // PER MILLE SIGN
1080    "\u2034":"''''''", // TRIPLE PRIME
1081    "\u2036":"``", // REVERSED DOUBLE PRIME
1082    "\u2037":"```", // REVERSED TRIPLE PRIME
1083    "\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
1084    "\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
1085    "\u203C":"!!", // DOUBLE EXCLAMATION MARK
1086    "\u2044":"{\\textfractionsolidus}", // FRACTION SLASH
1087    "\u2048":"?!", // QUESTION EXCLAMATION MARK
1088    "\u2049":"!?", // EXCLAMATION QUESTION MARK
1089    "\u2070":"$^{0}$", // SUPERSCRIPT ZERO
1090    "\u2074":"$^{4}$", // SUPERSCRIPT FOUR
1091    "\u2075":"$^{5}$", // SUPERSCRIPT FIVE
1092    "\u2076":"$^{6}$", // SUPERSCRIPT SIX
1093    "\u2077":"$^{7}$", // SUPERSCRIPT SEVEN
1094    "\u2078":"$^{8}$", // SUPERSCRIPT EIGHT
1095    "\u2079":"$^{9}$", // SUPERSCRIPT NINE
1096    "\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN
1097    "\u207B":"$^{-}$", // SUPERSCRIPT MINUS
1098    "\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN
1099    "\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS
1100    "\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS
1101    "\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N
1102    "\u2080":"$_{0}$", // SUBSCRIPT ZERO
1103    "\u2081":"$_{1}$", // SUBSCRIPT ONE
1104    "\u2082":"$_{2}$", // SUBSCRIPT TWO
1105    "\u2083":"$_{3}$", // SUBSCRIPT THREE
1106    "\u2084":"$_{4}$", // SUBSCRIPT FOUR
1107    "\u2085":"$_{5}$", // SUBSCRIPT FIVE
1108    "\u2086":"$_{6}$", // SUBSCRIPT SIX
1109    "\u2087":"$_{7}$", // SUBSCRIPT SEVEN
1110    "\u2088":"$_{8}$", // SUBSCRIPT EIGHT
1111    "\u2089":"$_{9}$", // SUBSCRIPT NINE
1112    "\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN
1113    "\u208B":"$_{-}$", // SUBSCRIPT MINUS
1114    "\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN
1115    "\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS
1116    "\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS
1117    "\u20AC":"{\\texteuro}", // EURO SIGN
1118    "\u2100":"a/c", // ACCOUNT OF
1119    "\u2101":"a/s", // ADDRESSED TO THE SUBJECT
1120    "\u2103":"{\\textcelsius}", // DEGREE CELSIUS
1121    "\u2105":"c/o", // CARE OF
1122    "\u2106":"c/u", // CADA UNA
1123    "\u2109":"F", // DEGREE FAHRENHEIT
1124    "\u2116":"{\\textnumero}", // NUMERO SIGN
1125    "\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT
1126    "\u2120":"{\\textservicemark}", // SERVICE MARK
1127    "\u2121":"{TEL}", // TELEPHONE SIGN
1128    "\u2122":"{\\texttrademark}", // TRADE MARK SIGN
1129    "\u2126":"{\\textohm}", // OHM SIGN
1130    "\u212E":"{\\textestimated}", // ESTIMATED SYMBOL
1131    "\u2153":" 1/3", // VULGAR FRACTION ONE THIRD
1132    "\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS
1133    "\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH
1134    "\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS
1135    "\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS
1136    "\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS
1137    "\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH
1138    "\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS
1139    "\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH
1140    "\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS
1141    "\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS
1142    "\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS
1143    "\u215F":" 1/", // FRACTION NUMERATOR ONE
1144    "\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW
1145    "\u2191":"{\\textuparrow}", // UPWARDS ARROW
1146    "\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW
1147    "\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW
1148    "\u2194":"<->", // LEFT RIGHT ARROW
1149    "\u21D0":"<=", // LEFTWARDS DOUBLE ARROW
1150    "\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW
1151    "\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW
1152    "\u221E":"$\\infty$", // INFINITY
1153    "\u2225":"||", // PARALLEL TO
1154    "\u223C":"\\~{}", // TILDE OPERATOR
1155    "\u2260":"/=", // NOT EQUAL TO
1156    "\u2264":"<=", // LESS-THAN OR EQUAL TO
1157    "\u2265":">=", // GREATER-THAN OR EQUAL TO
1158    "\u226A":"<<", // MUCH LESS-THAN
1159    "\u226B":">>", // MUCH GREATER-THAN
1160    "\u2295":"(+)", // CIRCLED PLUS
1161    "\u2296":"(-)", // CIRCLED MINUS
1162    "\u2297":"(x)", // CIRCLED TIMES
1163    "\u2298":"(/)", // CIRCLED DIVISION SLASH
1164    "\u22A2":"|-", // RIGHT TACK
1165    "\u22A3":"-|", // LEFT TACK
1166    "\u22A6":"|-", // ASSERTION
1167    "\u22A7":"|=", // MODELS
1168    "\u22A8":"|=", // TRUE
1169    "\u22A9":"||-", // FORCES
1170    "\u22D5":"$\\#$", // EQUAL AND PARALLEL TO
1171    "\u22D8":"<<<", // VERY MUCH LESS-THAN
1172    "\u22D9":">>>", // VERY MUCH GREATER-THAN
1173    "\u22EF":"...", // MIDLINE HORIZONTAL ELLIPSIS
1174    "\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET
1175    "\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET
1176    "\u2423":"{\\textvisiblespace}", // OPEN BOX
1177    "\u2425":"///", // SYMBOL FOR DELETE FORM TWO
1178    "\u25E6":"{\\textopenbullet}", // WHITE BULLET
1179    "\u2639":":-(", // WHITE FROWNING FACE
1180    "\u263A":":-)", // WHITE SMILING FACE
1181    "\u263B":"(-:", // BLACK SMILING FACE
1182    "\u266F":"$\\#$", // MUSIC SHARP SIGN
1183    "\u2701":"$\\%<$", // UPPER BLADE SCISSORS
1184    "\u2702":"$\\%<$", // BLACK SCISSORS
1185    "\u2703":"$\\%<$", // LOWER BLADE SCISSORS
1186    "\u2704":"$\\%<$", // WHITE SCISSORS
1187    "\uFB00":"ff", // LATIN SMALL LIGATURE FF
1188    "\uFB01":"fi", // LATIN SMALL LIGATURE FI
1189    "\uFB02":"fl", // LATIN SMALL LIGATURE FL
1190    "\uFB03":"ffi", // LATIN SMALL LIGATURE FFI
1191    "\uFB04":"ffl", // LATIN SMALL LIGATURE FFL
1192/* Derived accented characters */
1193    "\u00C0":"\\`{A}", // LATIN CAPITAL LETTER A WITH GRAVE
1194    "\u00C1":"\\''{A}", // LATIN CAPITAL LETTER A WITH ACUTE
1195    "\u00C2":"\\^{A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
1196    "\u00C3":"\\~{A}", // LATIN CAPITAL LETTER A WITH TILDE
1197    "\u00C4":"\\~{A}", // LATIN CAPITAL LETTER A WITH DIAERESIS
1198    "\u00C7":"\\c{C}", // LATIN CAPITAL LETTER C WITH CEDILLA
1199    "\u00C8":"\\`{E}", // LATIN CAPITAL LETTER E WITH GRAVE
1200    "\u00C9":"\\''{E}", // LATIN CAPITAL LETTER E WITH ACUTE
1201    "\u00CA":"\\^{E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
1202    "\u00CB":"\\~{E}", // LATIN CAPITAL LETTER E WITH DIAERESIS
1203    "\u00CC":"\\`{I}", // LATIN CAPITAL LETTER I WITH GRAVE
1204    "\u00CD":"\\''{I}", // LATIN CAPITAL LETTER I WITH ACUTE
1205    "\u00CE":"\\^{I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
1206    "\u00CF":"\\~{I}", // LATIN CAPITAL LETTER I WITH DIAERESIS
1207    "\u00D1":"\\~{N}", // LATIN CAPITAL LETTER N WITH TILDE
1208    "\u00D2":"\\`{O}", // LATIN CAPITAL LETTER O WITH GRAVE
1209    "\u00D3":"\\''{O}", // LATIN CAPITAL LETTER O WITH ACUTE
1210    "\u00D4":"\\^{O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
1211    "\u00D5":"\\~{O}", // LATIN CAPITAL LETTER O WITH TILDE
1212    "\u00D6":"\\~{O}", // LATIN CAPITAL LETTER O WITH DIAERESIS
1213    "\u00D9":"\\`{U}", // LATIN CAPITAL LETTER U WITH GRAVE
1214    "\u00DA":"\\''{U}", // LATIN CAPITAL LETTER U WITH ACUTE
1215    "\u00DB":"\\^{U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
1216    "\u00DC":"\\~{U}", // LATIN CAPITAL LETTER U WITH DIAERESIS
1217    "\u00DD":"\\''{Y}", // LATIN CAPITAL LETTER Y WITH ACUTE
1218    "\u00E0":"\\`{a}", // LATIN SMALL LETTER A WITH GRAVE
1219    "\u00E1":"\\''{a}", // LATIN SMALL LETTER A WITH ACUTE
1220    "\u00E2":"\\^{a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX
1221    "\u00E3":"\\~{a}", // LATIN SMALL LETTER A WITH TILDE
1222    "\u00E4":"\\~{a}", // LATIN SMALL LETTER A WITH DIAERESIS
1223    "\u00E7":"\\c{c}", // LATIN SMALL LETTER C WITH CEDILLA
1224    "\u00E8":"\\`{e}", // LATIN SMALL LETTER E WITH GRAVE
1225    "\u00E9":"\\''{e}", // LATIN SMALL LETTER E WITH ACUTE
1226    "\u00EA":"\\^{e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX
1227    "\u00EB":"\\~{e}", // LATIN SMALL LETTER E WITH DIAERESIS
1228    "\u00EC":"\\`{i}", // LATIN SMALL LETTER I WITH GRAVE
1229    "\u00ED":"\\''{i}", // LATIN SMALL LETTER I WITH ACUTE
1230    "\u00EE":"\\^{i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX
1231    "\u00EF":"\\~{i}", // LATIN SMALL LETTER I WITH DIAERESIS
1232    "\u00F1":"\\~{n}", // LATIN SMALL LETTER N WITH TILDE
1233    "\u00F2":"\\`{o}", // LATIN SMALL LETTER O WITH GRAVE
1234    "\u00F3":"\\''{o}", // LATIN SMALL LETTER O WITH ACUTE
1235    "\u00F4":"\\^{o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX
1236    "\u00F5":"\\~{o}", // LATIN SMALL LETTER O WITH TILDE
1237    "\u00F6":"\\~{o}", // LATIN SMALL LETTER O WITH DIAERESIS
1238    "\u00F9":"\\`{u}", // LATIN SMALL LETTER U WITH GRAVE
1239    "\u00FA":"\\''{u}", // LATIN SMALL LETTER U WITH ACUTE
1240    "\u00FB":"\\^{u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX
1241    "\u00FC":"\\~{u}", // LATIN SMALL LETTER U WITH DIAERESIS
1242    "\u00FD":"\\''{y}", // LATIN SMALL LETTER Y WITH ACUTE
1243    "\u00FF":"\\~{y}", // LATIN SMALL LETTER Y WITH DIAERESIS
1244    "\u0100":"\\={A}", // LATIN CAPITAL LETTER A WITH MACRON
1245    "\u0101":"\\={a}", // LATIN SMALL LETTER A WITH MACRON
1246    "\u0102":"\\u{A}", // LATIN CAPITAL LETTER A WITH BREVE
1247    "\u0103":"\\u{a}", // LATIN SMALL LETTER A WITH BREVE
1248    "\u0104":"\\k{A}", // LATIN CAPITAL LETTER A WITH OGONEK
1249    "\u0105":"\\k{a}", // LATIN SMALL LETTER A WITH OGONEK
1250    "\u0106":"\\''{C}", // LATIN CAPITAL LETTER C WITH ACUTE
1251    "\u0107":"\\''{c}", // LATIN SMALL LETTER C WITH ACUTE
1252    "\u0108":"\\^{C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
1253    "\u0109":"\\^{c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX
1254    "\u010A":"\\.{C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE
1255    "\u010B":"\\.{c}", // LATIN SMALL LETTER C WITH DOT ABOVE
1256    "\u010C":"\\v{C}", // LATIN CAPITAL LETTER C WITH CARON
1257    "\u010D":"\\v{c}", // LATIN SMALL LETTER C WITH CARON
1258    "\u010E":"\\v{D}", // LATIN CAPITAL LETTER D WITH CARON
1259    "\u010F":"\\v{d}", // LATIN SMALL LETTER D WITH CARON
1260    "\u0112":"\\={E}", // LATIN CAPITAL LETTER E WITH MACRON
1261    "\u0113":"\\={e}", // LATIN SMALL LETTER E WITH MACRON
1262    "\u0114":"\\u{E}", // LATIN CAPITAL LETTER E WITH BREVE
1263    "\u0115":"\\u{e}", // LATIN SMALL LETTER E WITH BREVE
1264    "\u0116":"\\.{E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE
1265    "\u0117":"\\.{e}", // LATIN SMALL LETTER E WITH DOT ABOVE
1266    "\u0118":"\\k{E}", // LATIN CAPITAL LETTER E WITH OGONEK
1267    "\u0119":"\\k{e}", // LATIN SMALL LETTER E WITH OGONEK
1268    "\u011A":"\\v{E}", // LATIN CAPITAL LETTER E WITH CARON
1269    "\u011B":"\\v{e}", // LATIN SMALL LETTER E WITH CARON
1270    "\u011C":"\\^{G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
1271    "\u011D":"\\^{g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX
1272    "\u011E":"\\u{G}", // LATIN CAPITAL LETTER G WITH BREVE
1273    "\u011F":"\\u{g}", // LATIN SMALL LETTER G WITH BREVE
1274    "\u0120":"\\.{G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE
1275    "\u0121":"\\.{g}", // LATIN SMALL LETTER G WITH DOT ABOVE
1276    "\u0122":"\\c{G}", // LATIN CAPITAL LETTER G WITH CEDILLA
1277    "\u0123":"\\c{g}", // LATIN SMALL LETTER G WITH CEDILLA
1278    "\u0124":"\\^{H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
1279    "\u0125":"\\^{h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX
1280    "\u0128":"\\~{I}", // LATIN CAPITAL LETTER I WITH TILDE
1281    "\u0129":"\\~{i}", // LATIN SMALL LETTER I WITH TILDE
1282    "\u012A":"\\={I}", // LATIN CAPITAL LETTER I WITH MACRON
1283    "\u012B":"\\={i}", // LATIN SMALL LETTER I WITH MACRON
1284    "\u012C":"\\u{I}", // LATIN CAPITAL LETTER I WITH BREVE
1285    "\u012D":"\\u{i}", // LATIN SMALL LETTER I WITH BREVE
1286    "\u012E":"\\k{I}", // LATIN CAPITAL LETTER I WITH OGONEK
1287    "\u012F":"\\k{i}", // LATIN SMALL LETTER I WITH OGONEK
1288    "\u0130":"\\.{I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE
1289    "\u0134":"\\^{J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
1290    "\u0135":"\\^{j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX
1291    "\u0136":"\\c{K}", // LATIN CAPITAL LETTER K WITH CEDILLA
1292    "\u0137":"\\c{k}", // LATIN SMALL LETTER K WITH CEDILLA
1293    "\u0139":"\\''{L}", // LATIN CAPITAL LETTER L WITH ACUTE
1294    "\u013A":"\\''{l}", // LATIN SMALL LETTER L WITH ACUTE
1295    "\u013B":"\\c{L}", // LATIN CAPITAL LETTER L WITH CEDILLA
1296    "\u013C":"\\c{l}", // LATIN SMALL LETTER L WITH CEDILLA
1297    "\u013D":"\\v{L}", // LATIN CAPITAL LETTER L WITH CARON
1298    "\u013E":"\\v{l}", // LATIN SMALL LETTER L WITH CARON
1299    "\u0143":"\\''{N}", // LATIN CAPITAL LETTER N WITH ACUTE
1300    "\u0144":"\\''{n}", // LATIN SMALL LETTER N WITH ACUTE
1301    "\u0145":"\\c{N}", // LATIN CAPITAL LETTER N WITH CEDILLA
1302    "\u0146":"\\c{n}", // LATIN SMALL LETTER N WITH CEDILLA
1303    "\u0147":"\\v{N}", // LATIN CAPITAL LETTER N WITH CARON
1304    "\u0148":"\\v{n}", // LATIN SMALL LETTER N WITH CARON
1305    "\u014C":"\\={O}", // LATIN CAPITAL LETTER O WITH MACRON
1306    "\u014D":"\\={o}", // LATIN SMALL LETTER O WITH MACRON
1307    "\u014E":"\\u{O}", // LATIN CAPITAL LETTER O WITH BREVE
1308    "\u014F":"\\u{o}", // LATIN SMALL LETTER O WITH BREVE
1309    "\u0150":"\\H{O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
1310    "\u0151":"\\H{o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE
1311    "\u0154":"\\''{R}", // LATIN CAPITAL LETTER R WITH ACUTE
1312    "\u0155":"\\''{r}", // LATIN SMALL LETTER R WITH ACUTE
1313    "\u0156":"\\c{R}", // LATIN CAPITAL LETTER R WITH CEDILLA
1314    "\u0157":"\\c{r}", // LATIN SMALL LETTER R WITH CEDILLA
1315    "\u0158":"\\v{R}", // LATIN CAPITAL LETTER R WITH CARON
1316    "\u0159":"\\v{r}", // LATIN SMALL LETTER R WITH CARON
1317    "\u015A":"\\''{S}", // LATIN CAPITAL LETTER S WITH ACUTE
1318    "\u015B":"\\''{s}", // LATIN SMALL LETTER S WITH ACUTE
1319    "\u015C":"\\^{S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
1320    "\u015D":"\\^{s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX
1321    "\u015E":"\\c{S}", // LATIN CAPITAL LETTER S WITH CEDILLA
1322    "\u015F":"\\c{s}", // LATIN SMALL LETTER S WITH CEDILLA
1323    "\u0160":"\\v{S}", // LATIN CAPITAL LETTER S WITH CARON
1324    "\u0161":"\\v{s}", // LATIN SMALL LETTER S WITH CARON
1325    "\u0162":"\\c{T}", // LATIN CAPITAL LETTER T WITH CEDILLA
1326    "\u0163":"\\c{t}", // LATIN SMALL LETTER T WITH CEDILLA
1327    "\u0164":"\\v{T}", // LATIN CAPITAL LETTER T WITH CARON
1328    "\u0165":"\\v{t}", // LATIN SMALL LETTER T WITH CARON
1329    "\u0168":"\\~{U}", // LATIN CAPITAL LETTER U WITH TILDE
1330    "\u0169":"\\~{u}", // LATIN SMALL LETTER U WITH TILDE
1331    "\u016A":"\\={U}", // LATIN CAPITAL LETTER U WITH MACRON
1332    "\u016B":"\\={u}", // LATIN SMALL LETTER U WITH MACRON
1333    "\u016C":"\\u{U}", // LATIN CAPITAL LETTER U WITH BREVE
1334    "\u016D":"\\u{u}", // LATIN SMALL LETTER U WITH BREVE
1335    "\u0170":"\\H{U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
1336    "\u0171":"\\H{u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE
1337    "\u0172":"\\k{U}", // LATIN CAPITAL LETTER U WITH OGONEK
1338    "\u0173":"\\k{u}", // LATIN SMALL LETTER U WITH OGONEK
1339    "\u0174":"\\^{W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
1340    "\u0175":"\\^{w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX
1341    "\u0176":"\\^{Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
1342    "\u0177":"\\^{y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX
1343    "\u0178":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS
1344    "\u0179":"\\''{Z}", // LATIN CAPITAL LETTER Z WITH ACUTE
1345    "\u017A":"\\''{z}", // LATIN SMALL LETTER Z WITH ACUTE
1346    "\u017B":"\\.{Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE
1347    "\u017C":"\\.{z}", // LATIN SMALL LETTER Z WITH DOT ABOVE
1348    "\u017D":"\\v{Z}", // LATIN CAPITAL LETTER Z WITH CARON
1349    "\u017E":"\\v{z}", // LATIN SMALL LETTER Z WITH CARON
1350    "\u01CD":"\\v{A}", // LATIN CAPITAL LETTER A WITH CARON
1351    "\u01CE":"\\v{a}", // LATIN SMALL LETTER A WITH CARON
1352    "\u01CF":"\\v{I}", // LATIN CAPITAL LETTER I WITH CARON
1353    "\u01D0":"\\v{i}", // LATIN SMALL LETTER I WITH CARON
1354    "\u01D1":"\\v{O}", // LATIN CAPITAL LETTER O WITH CARON
1355    "\u01D2":"\\v{o}", // LATIN SMALL LETTER O WITH CARON
1356    "\u01D3":"\\v{U}", // LATIN CAPITAL LETTER U WITH CARON
1357    "\u01D4":"\\v{u}", // LATIN SMALL LETTER U WITH CARON
1358    "\u01E6":"\\v{G}", // LATIN CAPITAL LETTER G WITH CARON
1359    "\u01E7":"\\v{g}", // LATIN SMALL LETTER G WITH CARON
1360    "\u01E8":"\\v{K}", // LATIN CAPITAL LETTER K WITH CARON
1361    "\u01E9":"\\v{k}", // LATIN SMALL LETTER K WITH CARON
1362    "\u01EA":"\\k{O}", // LATIN CAPITAL LETTER O WITH OGONEK
1363    "\u01EB":"\\k{o}", // LATIN SMALL LETTER O WITH OGONEK
1364    "\u01F0":"\\v{j}", // LATIN SMALL LETTER J WITH CARON
1365    "\u01F4":"\\''{G}", // LATIN CAPITAL LETTER G WITH ACUTE
1366    "\u01F5":"\\''{g}", // LATIN SMALL LETTER G WITH ACUTE
1367    "\u1E02":"\\.{B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE
1368    "\u1E03":"\\.{b}", // LATIN SMALL LETTER B WITH DOT ABOVE
1369    "\u1E04":"\\d{B}", // LATIN CAPITAL LETTER B WITH DOT BELOW
1370    "\u1E05":"\\d{b}", // LATIN SMALL LETTER B WITH DOT BELOW
1371    "\u1E06":"\\b{B}", // LATIN CAPITAL LETTER B WITH LINE BELOW
1372    "\u1E07":"\\b{b}", // LATIN SMALL LETTER B WITH LINE BELOW
1373    "\u1E0A":"\\.{D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE
1374    "\u1E0B":"\\.{d}", // LATIN SMALL LETTER D WITH DOT ABOVE
1375    "\u1E0C":"\\d{D}", // LATIN CAPITAL LETTER D WITH DOT BELOW
1376    "\u1E0D":"\\d{d}", // LATIN SMALL LETTER D WITH DOT BELOW
1377    "\u1E0E":"\\b{D}", // LATIN CAPITAL LETTER D WITH LINE BELOW
1378    "\u1E0F":"\\b{d}", // LATIN SMALL LETTER D WITH LINE BELOW
1379    "\u1E10":"\\c{D}", // LATIN CAPITAL LETTER D WITH CEDILLA
1380    "\u1E11":"\\c{d}", // LATIN SMALL LETTER D WITH CEDILLA
1381    "\u1E1E":"\\.{F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE
1382    "\u1E1F":"\\.{f}", // LATIN SMALL LETTER F WITH DOT ABOVE
1383    "\u1E20":"\\={G}", // LATIN CAPITAL LETTER G WITH MACRON
1384    "\u1E21":"\\={g}", // LATIN SMALL LETTER G WITH MACRON
1385    "\u1E22":"\\.{H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE
1386    "\u1E23":"\\.{h}", // LATIN SMALL LETTER H WITH DOT ABOVE
1387    "\u1E24":"\\d{H}", // LATIN CAPITAL LETTER H WITH DOT BELOW
1388    "\u1E25":"\\d{h}", // LATIN SMALL LETTER H WITH DOT BELOW
1389    "\u1E26":"\\~{H}", // LATIN CAPITAL LETTER H WITH DIAERESIS
1390    "\u1E27":"\\~{h}", // LATIN SMALL LETTER H WITH DIAERESIS
1391    "\u1E28":"\\c{H}", // LATIN CAPITAL LETTER H WITH CEDILLA
1392    "\u1E29":"\\c{h}", // LATIN SMALL LETTER H WITH CEDILLA
1393    "\u1E30":"\\''{K}", // LATIN CAPITAL LETTER K WITH ACUTE
1394    "\u1E31":"\\''{k}", // LATIN SMALL LETTER K WITH ACUTE
1395    "\u1E32":"\\d{K}", // LATIN CAPITAL LETTER K WITH DOT BELOW
1396    "\u1E33":"\\d{k}", // LATIN SMALL LETTER K WITH DOT BELOW
1397    "\u1E34":"\\b{K}", // LATIN CAPITAL LETTER K WITH LINE BELOW
1398    "\u1E35":"\\b{k}", // LATIN SMALL LETTER K WITH LINE BELOW
1399    "\u1E36":"\\d{L}", // LATIN CAPITAL LETTER L WITH DOT BELOW
1400    "\u1E37":"\\d{l}", // LATIN SMALL LETTER L WITH DOT BELOW
1401    "\u1E3A":"\\b{L}", // LATIN CAPITAL LETTER L WITH LINE BELOW
1402    "\u1E3B":"\\b{l}", // LATIN SMALL LETTER L WITH LINE BELOW
1403    "\u1E3E":"\\''{M}", // LATIN CAPITAL LETTER M WITH ACUTE
1404    "\u1E3F":"\\''{m}", // LATIN SMALL LETTER M WITH ACUTE
1405    "\u1E40":"\\.{M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE
1406    "\u1E41":"\\.{m}", // LATIN SMALL LETTER M WITH DOT ABOVE
1407    "\u1E42":"\\d{M}", // LATIN CAPITAL LETTER M WITH DOT BELOW
1408    "\u1E43":"\\d{m}", // LATIN SMALL LETTER M WITH DOT BELOW
1409    "\u1E44":"\\.{N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE
1410    "\u1E45":"\\.{n}", // LATIN SMALL LETTER N WITH DOT ABOVE
1411    "\u1E46":"\\d{N}", // LATIN CAPITAL LETTER N WITH DOT BELOW
1412    "\u1E47":"\\d{n}", // LATIN SMALL LETTER N WITH DOT BELOW
1413    "\u1E48":"\\b{N}", // LATIN CAPITAL LETTER N WITH LINE BELOW
1414    "\u1E49":"\\b{n}", // LATIN SMALL LETTER N WITH LINE BELOW
1415    "\u1E54":"\\''{P}", // LATIN CAPITAL LETTER P WITH ACUTE
1416    "\u1E55":"\\''{p}", // LATIN SMALL LETTER P WITH ACUTE
1417    "\u1E56":"\\.{P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE
1418    "\u1E57":"\\.{p}", // LATIN SMALL LETTER P WITH DOT ABOVE
1419    "\u1E58":"\\.{R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE
1420    "\u1E59":"\\.{r}", // LATIN SMALL LETTER R WITH DOT ABOVE
1421    "\u1E5A":"\\d{R}", // LATIN CAPITAL LETTER R WITH DOT BELOW
1422    "\u1E5B":"\\d{r}", // LATIN SMALL LETTER R WITH DOT BELOW
1423    "\u1E5E":"\\b{R}", // LATIN CAPITAL LETTER R WITH LINE BELOW
1424    "\u1E5F":"\\b{r}", // LATIN SMALL LETTER R WITH LINE BELOW
1425    "\u1E60":"\\.{S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE
1426    "\u1E61":"\\.{s}", // LATIN SMALL LETTER S WITH DOT ABOVE
1427    "\u1E62":"\\d{S}", // LATIN CAPITAL LETTER S WITH DOT BELOW
1428    "\u1E63":"\\d{s}", // LATIN SMALL LETTER S WITH DOT BELOW
1429    "\u1E6A":"\\.{T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE
1430    "\u1E6B":"\\.{t}", // LATIN SMALL LETTER T WITH DOT ABOVE
1431    "\u1E6C":"\\d{T}", // LATIN CAPITAL LETTER T WITH DOT BELOW
1432    "\u1E6D":"\\d{t}", // LATIN SMALL LETTER T WITH DOT BELOW
1433    "\u1E6E":"\\b{T}", // LATIN CAPITAL LETTER T WITH LINE BELOW
1434    "\u1E6F":"\\b{t}", // LATIN SMALL LETTER T WITH LINE BELOW
1435    "\u1E7C":"\\~{V}", // LATIN CAPITAL LETTER V WITH TILDE
1436    "\u1E7D":"\\~{v}", // LATIN SMALL LETTER V WITH TILDE
1437    "\u1E7E":"\\d{V}", // LATIN CAPITAL LETTER V WITH DOT BELOW
1438    "\u1E7F":"\\d{v}", // LATIN SMALL LETTER V WITH DOT BELOW
1439    "\u1E80":"\\`{W}", // LATIN CAPITAL LETTER W WITH GRAVE
1440    "\u1E81":"\\`{w}", // LATIN SMALL LETTER W WITH GRAVE
1441    "\u1E82":"\\''{W}", // LATIN CAPITAL LETTER W WITH ACUTE
1442    "\u1E83":"\\''{w}", // LATIN SMALL LETTER W WITH ACUTE
1443    "\u1E84":"\\~{W}", // LATIN CAPITAL LETTER W WITH DIAERESIS
1444    "\u1E85":"\\~{w}", // LATIN SMALL LETTER W WITH DIAERESIS
1445    "\u1E86":"\\.{W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE
1446    "\u1E87":"\\.{w}", // LATIN SMALL LETTER W WITH DOT ABOVE
1447    "\u1E88":"\\d{W}", // LATIN CAPITAL LETTER W WITH DOT BELOW
1448    "\u1E89":"\\d{w}", // LATIN SMALL LETTER W WITH DOT BELOW
1449    "\u1E8A":"\\.{X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE
1450    "\u1E8B":"\\.{x}", // LATIN SMALL LETTER X WITH DOT ABOVE
1451    "\u1E8C":"\\~{X}", // LATIN CAPITAL LETTER X WITH DIAERESIS
1452    "\u1E8D":"\\~{x}", // LATIN SMALL LETTER X WITH DIAERESIS
1453    "\u1E8E":"\\.{Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE
1454    "\u1E8F":"\\.{y}", // LATIN SMALL LETTER Y WITH DOT ABOVE
1455    "\u1E90":"\\^{Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
1456    "\u1E91":"\\^{z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX
1457    "\u1E92":"\\d{Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW
1458    "\u1E93":"\\d{z}", // LATIN SMALL LETTER Z WITH DOT BELOW
1459    "\u1E94":"\\b{Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW
1460    "\u1E95":"\\b{z}", // LATIN SMALL LETTER Z WITH LINE BELOW
1461    "\u1E96":"\\b{h}", // LATIN SMALL LETTER H WITH LINE BELOW
1462    "\u1E97":"\\~{t}", // LATIN SMALL LETTER T WITH DIAERESIS
1463    "\u1EA0":"\\d{A}", // LATIN CAPITAL LETTER A WITH DOT BELOW
1464    "\u1EA1":"\\d{a}", // LATIN SMALL LETTER A WITH DOT BELOW
1465    "\u1EB8":"\\d{E}", // LATIN CAPITAL LETTER E WITH DOT BELOW
1466    "\u1EB9":"\\d{e}", // LATIN SMALL LETTER E WITH DOT BELOW
1467    "\u1EBC":"\\~{E}", // LATIN CAPITAL LETTER E WITH TILDE
1468    "\u1EBD":"\\~{e}", // LATIN SMALL LETTER E WITH TILDE
1469    "\u1ECA":"\\d{I}", // LATIN CAPITAL LETTER I WITH DOT BELOW
1470    "\u1ECB":"\\d{i}", // LATIN SMALL LETTER I WITH DOT BELOW
1471    "\u1ECC":"\\d{O}", // LATIN CAPITAL LETTER O WITH DOT BELOW
1472    "\u1ECD":"\\d{o}", // LATIN SMALL LETTER O WITH DOT BELOW
1473    "\u1EE4":"\\d{U}", // LATIN CAPITAL LETTER U WITH DOT BELOW
1474    "\u1EE5":"\\d{u}", // LATIN SMALL LETTER U WITH DOT BELOW
1475    "\u1EF2":"\\`{Y}", // LATIN CAPITAL LETTER Y WITH GRAVE
1476    "\u1EF3":"\\`{y}", // LATIN SMALL LETTER Y WITH GRAVE
1477    "\u1EF4":"\\d{Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW
1478    "\u1EF5":"\\d{y}", // LATIN SMALL LETTER Y WITH DOT BELOW
1479    "\u1EF8":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH TILDE
1480    "\u1EF9":"\\~{y}", // LATIN SMALL LETTER Y WITH TILDE
1481       
1482};
1483
1484var alwaysMap = {
1485        "|":"{\\textbar}",
1486        "<":"{\\textless}",
1487        ">":"{\\textgreater}",
1488        "~":"{\\textasciitilde}",
1489        "^":"{\\textasciicircum}",
1490        "\\":"{\\textbackslash}"
1491};
1492
1493function processField(item, field, value) {
1494        if(fieldMap[field]) {
1495                item[fieldMap[field]] = value;
1496        } else if(inputFieldMap[field]) {
1497                item[inputFieldMap[field]] = value;
1498        } else if(field == "journal") {
1499                if(item.publicationTitle) {
1500                        // we already had an fjournal
1501                        item.journalAbbreviation = value
1502                } else {
1503                        item.publicationTitle = value;
1504                }
1505        } else if(field == "fjournal") {
1506                if(item.publicationTitle) {
1507                        // move publicationTitle to abbreviation
1508                        item.journalAbbreviation = value;
1509                }
1510                item.publicationTitle = value;
1511        } else if(field == "author" || field == "editor") {
1512                // parse authors/editors
1513                var names = value.split(" and ");
1514                for each(var name in names) {
1515                        item.creators.push(Zotero.Utilities.cleanAuthor(name, field,
1516                                                          (name.indexOf(",") != -1)));
1517                }
1518        } else if(field == "institution" || field == "organization") {
1519                item.backupPublisher = value;
1520        } else if(field == "number"){ // fix for techreport
1521                if (item.itemType == "report") {
1522                        item.reportNumber = value;
1523                } else {
1524                        item.issue = value;
1525                }
1526        } else if(field == "month") {
1527                var monthIndex = months.indexOf(value.toLowerCase());
1528                if(monthIndex != -1) {
1529                        value = Zotero.Utilities.formatDate({month:monthIndex});
1530                } else {
1531                        value += " ";
1532                }
1533               
1534                if(item.date) {
1535                        if(value.indexOf(item.date) != -1) {
1536                                // value contains year and more
1537                                item.date = value;
1538                        } else {
1539                                item.date = value+item.date;
1540                        }
1541                } else {
1542                        item.date = value;
1543                }
1544        } else if(field == "year") {
1545                if(item.date) {
1546                        if(item.date.indexOf(value) == -1) {
1547                                // date does not already contain year
1548                                item.date += value;
1549                        }
1550                } else {
1551                        item.date = value;
1552                }
1553        } else if(field == "pages") {
1554                item.pages = value.replace(/--/g, "-");
1555        } else if(field == "note" || field == "annote") {
1556                item.extra += "\n"+value;
1557        } else if(field == "howpublished") {
1558                item.extra += "\nPublished: "+value;
1559        } else if(field == "keywords") {
1560                if(value.indexOf(",") == -1) {
1561                        // keywords/tags
1562                        item.tags = value.split(" ");
1563                } else {
1564                        item.tags = value.split(/, ?/g);
1565                }
1566        }
1567}
1568
1569function getFieldValue() {
1570        // read whitespace
1571        var read = Zotero.read(1);
1572        while(" \n\r\t".indexOf(read) != -1) {
1573                read = Zotero.read(1);
1574        }
1575       
1576        var value = "";
1577        // now, we have the first character of the field
1578        if("0123456789".indexOf(read) != -1) {
1579                value += read;
1580                // character is a number
1581                while((read = Zotero.read(1)) && ("0123456789".indexOf(read) != -1)) {
1582                        value += read;
1583                }
1584        } else if(read == "{") {
1585                // character is a brace
1586                var openBraces = 1;
1587                while(read = Zotero.read(1)) {
1588                        if(read == "{" && value[value.length-1] != "\\") {
1589                                openBraces++;
1590                                value += "{";
1591                        } else if(read == "}" && value[value.length-1] != "\\") {
1592                                openBraces--;
1593                                if(openBraces == 0) {
1594                                        break;
1595                                } else {
1596                                        value += "}";
1597                                }
1598                        } else {
1599                                value += read;
1600                        }
1601                }
1602        } else if(read == ''"'') {
1603                var openBraces = 0;
1604                while(read = Zotero.read(1)) {
1605                        if(read == "{" && value[value.length-1] != "\\") {
1606                                openBraces++;
1607                                value += "{";
1608                        } else if(read == "}" && value[value.length-1] != "\\") {
1609                                openBraces--;
1610                                value += "}";
1611                        } else if(read == ''"'' && openBraces == 0) {
1612                                break;
1613                        } else {
1614                                value += read;
1615                        }
1616                }
1617        }
1618       
1619        if(value.length > 1) {
1620                // replace accented characters (yucky slow)
1621                for (var i in reversemappingTable) { // really really slow!
1622                        var mapped = reversemappingTable[i];
1623                        if (value.indexOf(mapped) != -1) {
1624                                Zotero.debug("Replace " + mapped + " in " + value + " with " + i);
1625                                value = value.replace(mapped, i, "g");
1626                        }
1627                        mapped = mapped.replace(/[{}]/, "");
1628                        if (value.indexOf(mapped) != -1) {
1629                                Zotero.debug("Replace(2) " + mapped + " in " + value + " with " + i);
1630                                value = value.replace(mapped, i, "g");
1631                        }
1632                }
1633               
1634                // kill braces
1635                value = value.replace(/([^\\])[{}]+/g, "$1");
1636                if(value[0] == "{") {
1637                        value = value.substr(1);
1638                }
1639               
1640                // chop off backslashes
1641                value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2");
1642                value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2");
1643                if(value[0] == "\\" && "#$%&~_^\\{}".indexOf(value[1]) != -1) {
1644                        value = value.substr(1);
1645                }
1646                if(value[value.length-1] == "\\" &&  "#$%&~_^\\{}".indexOf(value[value.length-2]) != -1) {
1647                        value = value.substr(0, value.length-1);
1648                }
1649                value = value.replace(/\\\\/g, "\\");
1650                value = value.replace(/\s+/g, " ");
1651        }
1652       
1653        return value;
1654}
1655
1656function beginRecord(type, closeChar) {
1657        type = Zotero.Utilities.cleanString(type.toLowerCase());
1658        if(inputTypeMap[type]) {
1659                var item = new Zotero.Item(inputTypeMap[type]);
1660        } else {
1661                for(var i in typeMap) {
1662                        if(typeMap[i] == type) {
1663                                var item = new Zotero.Item(i);
1664                                break;
1665                        }
1666                }
1667                if(!item) {
1668                        Zotero.debug("discarded item from BibTeX; type was "+type);
1669                }
1670        }
1671       
1672        item.extra = "";
1673       
1674        var field = "";
1675        while(read = Zotero.read(1)) {
1676                if(read == "=") {                                                               // equals begin a field
1677                        var value = getFieldValue();
1678                        if(item) {
1679                                processField(item, field.toLowerCase(), value);
1680                        }
1681                        field = "";
1682                } else if(read == ",") {                                                // commas reset
1683                        field = "";
1684                } else if(read == closeChar) {
1685                        if(item) {
1686                                if(item.extra) item.extra = item.extra.substr(1); // chop \n
1687                                item.complete();
1688                        }
1689                        return;
1690                } else if(" \n\r\t".indexOf(read) == -1) {              // skip whitespace
1691                        field += read;
1692                }
1693        }
1694}
1695
1696function doImport() {
1697        var read = "", text = "", recordCloseElement = false;
1698        var type = false;
1699       
1700        Zotero.setCharacterSet("UTF-8");
1701       
1702        while(read = Zotero.read(1)) {
1703                if(read == "@") {
1704                        type = "";
1705                } else if(type !== false) {
1706                        if(read == "{") {                               // possible open character
1707                                beginRecord(type, "}");
1708                                type = false;
1709                        } else if(read == "(") {                // possible open character
1710                                beginRecord(type, ")");
1711                                type = false;
1712                        } else {
1713                                type += read;
1714                        }
1715                }
1716        }
1717}
1718
1719// some fields are, in fact, macros.  If that is the case then we should not put the
1720// data in the braces as it will cause the macros to not expand properly
1721function writeField(field, value, isMacro) {
1722        if(!value) return;
1723        value = value + ""; // convert integers (such as years) to strings
1724        Zotero.write(",\n\t"+field+" = ");
1725        if(!isMacro) Zotero.write("{");
1726        // I hope these are all the escape characters!
1727        value = value.replace(/[|\<\>\~\^\\]/g, mapEscape).replace(/([\#\$\%\&\_])/g, "\\$1");
1728        if (!Zotero.getOption("UTF8")) {
1729                value = value.replace(/[\u0080-\uFFFF]/g, mapAccent);
1730        }
1731        Zotero.write(value);
1732        if(!isMacro) Zotero.write("}");
1733}
1734
1735function mapEscape(character) {
1736        return alwaysMap[character];
1737}
1738
1739function mapAccent(character) {
1740        return (mappingTable[character] ? mappingTable[character] : "?");
1741}
1742
1743var numberRe = /^[0-9]+/;
1744function doExport() {
1745        if(Zotero.getOption("UTF8")) {
1746            Zotero.setCharacterSet("UTF-8");
1747        }
1748        else {
1749                Zotero.setCharacterSet("us-ascii");
1750        }
1751       
1752        //Zotero.write("% BibTeX export generated by Zotero "+Zotero.Utilities.getVersion());
1753       
1754        var first = true;
1755        var citekeys = new Object();
1756        var item;
1757        while(item = Zotero.nextItem()) {
1758                // determine type
1759                var type = typeMap[item.itemType];
1760                if(!type) type = "misc";
1761               
1762                // create a unique citation key
1763                var basekey = "";
1764                if(item.creators && item.creators[0] && item.creators[0].lastName) {
1765                        basekey += "_" + item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,"");
1766                }
1767               
1768                // include the item title as part of the citation key
1769                if (item["title"]) {
1770                        // this is a list of words that should not appear as part of the citation key
1771                        var bannedTitleKeys = ["a", "an", "from", "does", "how", "it''s", "its", "on", "some", "the", "this", "why"];
1772                        var titleElements = item["title"].toLowerCase().split(" ");
1773                        for(var te in titleElements) {
1774                                if (bannedTitleKeys.indexOf(titleElements[te]) == -1) {
1775                                        basekey += "_" + titleElements[te];
1776                                        break;
1777                                }
1778                        }
1779        }
1780
1781                if(item.date) {
1782                        var date = Zotero.Utilities.strToDate(item.date);
1783                        if(date.year && numberRe.test(date.year)) {
1784                                basekey += "_" + date.year;
1785                        }
1786                }
1787               
1788                // for now, remove any characters not explicitly known to be allowed;
1789                // we might want to allow UTF-8 citation keys in the future, depending
1790                // on implementation support.
1791                //
1792                // no matter what, we want to make sure we exclude
1793                // " # % '' ( ) , = { } ~ and backslash
1794               
1795                basekey = basekey.substr(1).replace(/[^a-z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+/g,"");
1796                var citekey = basekey;
1797                var i = 0;
1798                while(citekeys[citekey]) {
1799                        i++;
1800                        citekey = basekey+"-"+i;
1801                }
1802                citekeys[citekey] = true;
1803               
1804                // write citation key
1805                Zotero.write((first ? "" : ",\n\n") + "@"+type+"{"+citekey);
1806                first = false;
1807               
1808                for(var field in fieldMap) {
1809                        if(item[fieldMap[field]]) {
1810                                writeField(field, item[fieldMap[field]]);
1811                        }
1812                }
1813               
1814                if(item.conferenceName) {
1815                        writeField("booktitle", item.conferenceName);
1816                }
1817
1818                if(item.publicationTitle) {
1819                        if(item.itemType == "chapter") {
1820                                writeField("booktitle", item.publicationTitle);
1821                        } else {
1822                                writeField("journal", item.publicationTitle);
1823                        }
1824                }
1825               
1826                if(item.publisher) {
1827                        if(item.itemType == "thesis") {
1828                                writeField("school", item.publisher);
1829                        } else {
1830                                writeField("publisher", item.publisher);
1831                        }
1832                }
1833               
1834                if(item.creators && item.creators.length) {
1835                        // split creators into subcategories
1836                        var author = "";
1837                        var editor = "";
1838                        for each(var creator in item.creators) {
1839                                var creatorString = creator.lastName;
1840
1841                                if (creator.firstName) {
1842                                        creatorString = creator.firstName + " " + creator.lastName;
1843                                }
1844
1845                                if (creator.creatorType == "editor") {
1846                                        editor += " and "+creatorString;
1847                                } else {
1848                                        author += " and "+creatorString;
1849                                }
1850                        }
1851                       
1852                        if(author) {
1853                                writeField("author", author.substr(5));
1854                        }
1855                        if(editor) {
1856                                writeField("editor", editor.substr(5));
1857                        }
1858                }
1859               
1860                if(item.date) {
1861                        // need to use non-localized abbreviation
1862                        if(date.month) {
1863                                writeField("month", months[date.month], true);
1864                        }
1865                        if(date.year) {
1866                                writeField("year", date.year);
1867                        }
1868                }
1869               
1870                if(item.extra) {
1871                        writeField("note", item.extra);
1872                }
1873               
1874                if(item.tags && item.tags.length) {
1875                        var tagString = "";
1876                        for each(var tag in item.tags) {
1877                                tagString += ","+tag.tag;
1878                        }
1879                        writeField("keywords", tagString.substr(1));
1880                }
1881                if(item.pages) {
1882                        writeField("pages", item.pages);
1883                }
1884               
1885                Zotero.write("\n}");
1886        }
1887}');