File Coverage

blib/lib/LaTeX/Decode/Data.pm
Criterion Covered Total %
statement 9 9 100.0
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 12 12 100.0


line stmt bran cond sub pod time code
1             package LaTeX::Decode::Data;
2 2     2   10 use strict;
  2         4  
  2         72  
3 2     2   11 use warnings;
  2         3  
  2         53  
4 2     2   10 use base qw(Exporter);
  2         4  
  2         10338  
5             our @EXPORT = qw[ %ACCENTS %WORDMACROS %DIACRITICS %WORDMACROSEXTRA %DIACRITICSEXTRA %PUNCTUATION %NEGATEDSYMBOLS %SUPERSCRIPTS %SYMBOLS %CMDSUPERSCRIPTS %DINGS %GREEK $ACCENTS_RE $DIAC_RE_BASE $DIAC_RE_EXTRA $NEG_SYMB_RE $SUPER_RE $SUPERCMD_RE ];
6             #our @EXPORT_OK = qw[
7             # %WORDMACROSEXTRA %DIACRITICSEXTRA %PUNCTUATION %NEGATEDSYMBOLS %SUPERSCRIPTS %SYMBOLS %CMDSUPERSCRIPTS %DINGS %GREEK
8             #];
9             #
10             #our %EXPORT_TAGS = (
11             # all => [ @EXPORT, @EXPORT_OK ],
12             # full => [ @EXPORT, @EXPORT_OK ],
13             # extra => [ @EXPORT, qw( %WORDMACROSEXTRA %DIACRITICSEXTRA ) ],
14             # letters => [ @EXPORT, qw( %WORDMACROSEXTRA %DIACRITICSEXTRA %SUPERSCRIPTS %GREEK ) ],
15             # symbols => [ @EXPORT, qw( %DINGS %SYMBOLS %NEGATEDSYMBOLS %PUNCTUATION %SUPERSCRIPTS %CMDSUPERSCRIPTS %GREEK )]
16             #);
17              
18             our %ACCENTS = (
19             chr(0x60) => "\x{300}", #`
20             chr(0x27) => "\x{301}", #'
21             chr(0x5e) => "\x{302}", #^
22             chr(0x7e) => "\x{303}", #~
23             chr(0x3d) => "\x{304}", #=
24             chr(0x2e) => "\x{307}", #.
25             chr(0x22) => "\x{308}", #"
26             );
27              
28             our %WORDMACROS = (
29             textquotedbl => "\x{0022}",
30             texthash => "\x{0023}",
31             textdollar => "\x{0024}",
32             textpercent => "\x{0025}",
33             textampersand => "\x{0026}",
34             textquotesingle => "\x{0027}",
35             textasteriskcentered => "\x{002A}",
36             textless => "\x{003C}",
37             textequals => "\x{003D}",
38             textgreater => "\x{003E}",
39             textbackslash => "\x{005C}",
40             textasciicircum => "\x{005E}",
41             textunderscore => "\x{005F}",
42             textasciigrave => "\x{0060}",
43             textg => "\x{0067}",
44             textbraceleft => "\x{007B}",
45             textbar => "\x{007C}",
46             textbraceright => "\x{007D}",
47             textasciitilde => "\x{007E}",
48             nobreakspace => "\x{00A0}",
49             textexclamdown => "\x{00A1}",
50             textcent => "\x{00A2}",
51             pounds => "\x{00A3}",
52             textsterling => "\x{00A3}",
53             textcurrency => "\x{00A4}",
54             textyen => "\x{00A5}",
55             textbrokenbar => "\x{00A6}",
56             S => "\x{00A7}",
57             textsection => "\x{00A7}",
58             textasciidieresis => "\x{00A8}",
59             copyright => "\x{00A9}",
60             textcopyright => "\x{00A9}",
61             textordfeminine => "\x{00AA}",
62             guillemotleft => "\x{00AB}",
63             lnot => "\x{00AC}",
64             textlogicalnot => "\x{00AC}",
65             textminus => "\x{2212}",
66             textregistered => "\x{00AE}",
67             textasciimacron => "\x{00AF}",
68             textdegree => "\x{00B0}",
69             pm => "\x{00B1}",
70             textpm => "\x{00B1}",
71             texttwosuperior => "\x{00B2}",
72             textthreesuperior => "\x{00B3}",
73             textasciiacute => "\x{00B4}",
74             mu => "\x{00B5}",
75             textmu => "\x{00B5}",
76             P => "\x{00B6}",
77             textparagraph => "\x{00B6}",
78             textperiodcentered => "\x{00B7}",
79             textcentereddot => "\x{00B7}",
80             textasciicedilla => "\x{00B8}",
81             textonesuperior => "\x{00B9}",
82             textordmasculine => "\x{00BA}",
83             guillemotright => "\x{00BB}",
84             textonequarter => "\x{00BC}",
85             textonehalf => "\x{00BD}",
86             textthreequarters => "\x{00BE}",
87             textquestiondown => "\x{00BF}",
88             AA => "\x{00C5}",
89             AE => "\x{00C6}",
90             DH => "\x{00D0}",
91             times => "\x{00D7}",
92             texttimes => "\x{00D7}",
93             O => "\x{00D8}",
94             TH => "\x{00DE}",
95             Thorn => "\x{00DE}",
96             ss => "\x{00DF}",
97             aa => "\x{00E5}",
98             ae => "\x{00E6}",
99             dh => "\x{00F0}",
100             div => "\x{00F7}",
101             textdiv => "\x{00F7}",
102             o => "\x{00F8}",
103             th => "\x{00FE}",
104             textthorn => "\x{00FE}",
105             textthornvari => "\x{00FE}",
106             textthornvarii => "\x{00FE}",
107             textthornvariii => "\x{00FE}",
108             textthornvariv => "\x{00FE}",
109             DJ => "\x{0110}",
110             dj => "\x{0111}",
111             textcrd => "\x{0111}",
112             textHbar => "\x{0126}",
113             textcrh => "\x{0127}",
114             texthbar => "\x{0127}",
115             i => "\x{0131}",
116             IJ => "\x{0132}",
117             ij => "\x{0133}",
118             textkra => "\x{0138}",
119             L => "\x{0141}",
120             l => "\x{0142}",
121             textbarl => "\x{0142}",
122             NG => "\x{014A}",
123             ng => "\x{014B}",
124             OE => "\x{0152}",
125             oe => "\x{0153}"
126             );
127              
128             our %WORDMACROSEXTRA = (
129             textTbar => "\x{0166}",
130             textTstroke => "\x{0166}",
131             texttbar => "\x{0167}",
132             texttstroke => "\x{0167}",
133             textcrb => "\x{0180}",
134             textBhook => "\x{0181}",
135             textOopen => "\x{0186}",
136             textChook => "\x{0187}",
137             textchook => "\x{0188}",
138             texthtc => "\x{0188}",
139             textDafrican => "\x{0189}",
140             textDhook => "\x{018A}",
141             textEreversed => "\x{018E}",
142             textEopen => "\x{0190}",
143             textFhook => "\x{0191}",
144             textflorin => "\x{0192}",
145             textGammaafrican => "\x{0194}",
146             texthvlig => "\x{0195}",
147             hv => "\x{0195}",
148             textIotaafrican => "\x{0196}",
149             textKhook => "\x{0198}",
150             textkhook => "\x{0199}",
151             texthtk => "\x{0199}",
152             textcrlambda => "\x{019B}",
153             textNhookleft => "\x{019D}",
154             OHORN => "\x{01A0}",
155             ohorn => "\x{01A1}",
156             textPhook => "\x{01A4}",
157             textphook => "\x{01A5}",
158             texthtp => "\x{01A5}",
159             textEsh => "\x{01A9}",
160             ESH => "\x{01A9}",
161             textlooptoprevesh => "\x{01AA}",
162             textpalhookbelow => "\x{01AB}",
163             textThook => "\x{01AC}",
164             textthook => "\x{01AD}",
165             texthtt => "\x{01AD}",
166             textTretroflexhook => "\x{01AE}",
167             UHORN => "\x{01AF}",
168             uhorn => "\x{01B0}",
169             textVhook => "\x{01B2}",
170             textYhook => "\x{01B3}",
171             textyhook => "\x{01B4}",
172             textEzh => "\x{01B7}",
173             texteturned => "\x{01DD}",
174             textturna => "\x{0250}",
175             textscripta => "\x{0251}",
176             textturnscripta => "\x{0252}",
177             textbhook => "\x{0253}",
178             texthtb => "\x{0253}",
179             textoopen => "\x{0254}",
180             textopeno => "\x{0254}",
181             textctc => "\x{0255}",
182             textdtail => "\x{0256}",
183             textrtaild => "\x{0256}",
184             textdhook => "\x{0257}",
185             texthtd => "\x{0257}",
186             textreve => "\x{0258}",
187             textschwa => "\x{0259}",
188             textrhookschwa => "\x{025A}",
189             texteopen => "\x{025B}",
190             textepsilon => "\x{025B}",
191             textrevepsilon => "\x{025C}",
192             textrhookrevepsilon => "\x{025D}",
193             textcloserevepsilon => "\x{025E}",
194             textbardotlessj => "\x{025F}",
195             texthtg => "\x{0260}",
196             textscriptg => "\x{0261}",
197             textscg => "\x{0262}",
198             textgammalatinsmall => "\x{0263}",
199             textgamma => "\x{0263}",
200             textramshorns => "\x{0264}",
201             textturnh => "\x{0265}",
202             texthth => "\x{0266}",
203             texththeng => "\x{0267}",
204             textbari => "\x{0268}",
205             textiotalatin => "\x{0269}",
206             textiota => "\x{0269}",
207             textsci => "\x{026A}",
208             textltilde => "\x{026B}",
209             textbeltl => "\x{026C}",
210             textrtaill => "\x{026D}",
211             textlyoghlig => "\x{026E}",
212             textturnm => "\x{026F}",
213             textturnmrleg => "\x{0270}",
214             textltailm => "\x{0271}",
215             textltailn => "\x{0272}",
216             textnhookleft => "\x{0272}",
217             textrtailn => "\x{0273}",
218             textscn => "\x{0274}",
219             textbaro => "\x{0275}",
220             textscoelig => "\x{0276}",
221             textcloseomega => "\x{0277}",
222             textphi => "\x{0278}",
223             textturnr => "\x{0279}",
224             textturnlonglegr => "\x{027A}",
225             textturnrrtail => "\x{027B}",
226             textlonglegr => "\x{027C}",
227             textrtailr => "\x{027D}",
228             textfishhookr => "\x{027E}",
229             textlhti => "\x{027F}", # ??
230             textscr => "\x{0280}",
231             textinvscr => "\x{0281}",
232             textrtails => "\x{0282}",
233             textesh => "\x{0283}",
234             texthtbardotlessj => "\x{0284}",
235             textraisevibyi => "\x{0285}", # ??
236             textctesh => "\x{0286}",
237             textturnt => "\x{0287}",
238             textrtailt => "\x{0288}",
239             texttretroflexhook => "\x{0288}",
240             textbaru => "\x{0289}",
241             textupsilon => "\x{028A}",
242             textscriptv => "\x{028B}",
243             textvhook => "\x{028B}",
244             textturnv => "\x{028C}",
245             textturnw => "\x{028D}",
246             textturny => "\x{028E}",
247             textscy => "\x{028F}",
248             textrtailz => "\x{0290}",
249             textctz => "\x{0291}",
250             textezh => "\x{0292}",
251             textyogh => "\x{0292}",
252             textctyogh => "\x{0293}",
253             textglotstop => "\x{0294}",
254             textrevglotstop => "\x{0295}",
255             textinvglotstop => "\x{0296}",
256             textstretchc => "\x{0297}",
257             textbullseye => "\x{0298}",
258             textscb => "\x{0299}",
259             textcloseepsilon => "\x{029A}",
260             texthtscg => "\x{029B}",
261             textsch => "\x{029C}",
262             textctj => "\x{029D}",
263             textturnk => "\x{029E}",
264             textscl => "\x{029F}",
265             texthtq => "\x{02A0}",
266             textbarglotstop => "\x{02A1}",
267             textbarrevglotstop => "\x{02A2}",
268             textdzlig => "\x{02A3}",
269             textdyoghlig => "\x{02A4}",
270             textdctzlig => "\x{02A5}",
271             texttslig => "\x{02A6}",
272             textteshlig => "\x{02A7}",
273             texttesh => "\x{02A7}",
274             texttctclig => "\x{02A8}",
275             hamza => "\x{02BE}",
276             ain => "\x{02BF}",
277             ayn => "\x{02BF}",
278             textprimstress => "\x{02C8}",
279             textlengthmark => "\x{02D0}"
280             );
281              
282             our %DIACRITICS = (
283             r => "\x{030A}",
284             H => "\x{030B}",
285             u => "\x{0306}",
286             v => "\x{030C}",
287             G => "\x{030F}",
288             M => "\x{0322}",
289             d => "\x{0323}",
290             c => "\x{0327}",
291             k => "\x{0328}",
292             b => "\x{0331}",
293             B => "\x{0335}",
294             t => "\x{0311}",
295             );
296              
297             our %DIACRITICSEXTRA = (
298             capitalring => "\x{030A}",
299             capitalhungarumlaut => "\x{030B}",
300             capitalcaron => "\x{030C}", # ??
301             textvbaraccent => "\x{030D}",
302             textdoublevbaraccent => "\x{030E}",
303             textdoublegrave => "\x{030F}",
304             textdotbreve => "\x{0310}",
305             textroundcap => "\x{0311}",
306             newtie => "\x{0311}",
307             capitalnewtie => "\x{0311}",
308             textturncommaabove => "\x{0312}",
309             textcommaabove => "\x{0313}",
310             textrevcommaabove => "\x{0314}",
311             textcommaabover => "\x{0315}",
312             textsubgrave => "\x{0316}",
313             textsubacute => "\x{0317}",
314             textadvancing => "\x{0318}",
315             textretracting => "\x{0319}",
316             textlangleabove => "\x{031A}",
317             textrighthorn => "\x{031B}",
318             textsublhalfring => "\x{031C}",
319             textraising => "\x{031D}",
320             textlowering => "\x{031E}",
321             textsubplus => "\x{031F}",
322             textsubbar => "\x{0320}",
323             textsubminus => "\x{0320}",
324             textpalhookbelow => "\x{0321}",
325             textrethookbelow => "\x{0322}",
326             textsubdot => "\x{0323}",
327             textsubumlaut => "\x{0324}",
328             textsubring => "\x{0325}",
329             textcommabelow => "\x{0326}",
330             capitalcedilla => "\x{0327}",
331             textpolhook => "\x{0328}",
332             capitalogonek => "\x{0328}",
333             textsyllabic => "\x{0329}",
334             textsubbridge => "\x{032A}",
335             textsubw => "\x{032B}",
336             textsubwedge => "\x{032C}",
337             textsubcircnum => "\x{032D}",
338             textsubbreve => "\x{032E}",
339             textundertie => "\x{032E}",
340             textsubarch => "\x{032F}",
341             textsubtilde => "\x{0330}",
342             textsubbar => "\x{0331}",
343             subdoublebar => "\x{0333}",
344             textsuperimposetilde => "\x{0334}",
345             textsstrokethru => "\x{0335}",
346             textlstrokethru => "\x{0336}",
347             textsstrikethru => "\x{0337}",
348             textlstrikethru => "\x{0338}",
349             textsubrhalfring => "\x{0339}",
350             textinvsubbridge => "\x{033A}",
351             textsubsquare => "\x{033B}",
352             textseagull => "\x{033C}",
353             textovercross => "\x{033D}",
354             overbridge => "\x{0346}",
355             subdoublebar => "\x{0347}", ## ??
356             subdoublevert => "\x{0348}",
357             subcorner => "\x{0349}",
358             crtilde => "\x{034A}",
359             textoverw => "\x{034A}",
360             dottedtilde => "\x{034B}",
361             doubletilde => "\x{034C}",
362             spreadlips => "\x{034D}",
363             whistle => "\x{034E}",
364             textrightarrowhead => "\x{0350}",
365             textlefthalfring => "\x{0351}",
366             sublptr => "\x{0354}",
367             subrptr => "\x{0355}",
368             textrightuparrowhead => "\x{0356}",
369             textrighthalfring => "\x{0357}",
370             textdoublebreve => "\x{035D}",
371             textdoublemacron => "\x{035E}",
372             textdoublemacronbelow => "\x{035F}",
373             textdoubletilde => "\x{0360}",
374             texttoptiebar => "\x{0361}",
375             sliding => "\x{0362}"
376             );
377              
378             # "\\prime" => "\x{2032}",
379             # "\\prime\\prime" => "\x{2033}",
380             # "\\prime\\prime\\prime" => "\x{2034}",
381              
382             our %PUNCTUATION = (
383             textendash => "\x{2013}",
384             textemdash => "\x{2014}",
385             textquoteleft => "\x{2018}",
386             textquoteright => "\x{2019}",
387             quotesinglbase => "\x{201A}",
388             textquotedblleft => "\x{201C}",
389             textquotedblright => "\x{201D}",
390             quotedblbase => "\x{201E}",
391             dag => "\x{2020}",
392             ddag => "\x{2021}",
393             textbullet => "\x{2022}",
394             dots => "\x{2026}",
395             textperthousand => "\x{2030}",
396             textpertenthousand => "\x{2031}",
397             guilsinglleft => "\x{2039}",
398             guilsinglright => "\x{203A}",
399             textreferencemark => "\x{203B}",
400             textinterrobang => "\x{203D}",
401             textoverline => "\x{203E}",
402             langle => "\x{27E8}",
403             rangle => "\x{27E9}"
404             );
405              
406             # \not\xxx
407             our %NEGATEDSYMBOLS = (
408             asymp => "\x{226D}",
409             lesssim => "\x{2274}",
410             gtrsim => "\x{2275}",
411             subset => "\x{2284}",
412             supset => "\x{2285}",
413             ni => "\x{220C}",
414             simeq => "\x{2244}",
415             approx => "\x{2249}",
416             equiv => "\x{2262}",
417             preccurlyeq => "\x{22E0}",
418             succcurlyeq => "\x{22E1}",
419             sqsubseteq => "\x{22E2}",
420             sqsupseteq => "\x{22E3}",
421             );
422              
423             # \textsuperscript{x}
424             our %SUPERSCRIPTS = (
425             0 => "\x{2070}",
426             i => "\x{2071}",
427             4 => "\x{2074}",
428             5 => "\x{2075}",
429             6 => "\x{2076}",
430             7 => "\x{2077}",
431             8 => "\x{2078}",
432             9 => "\x{2079}",
433             '+' => "\x{207A}",
434             '-' => "\x{207B}",
435             '=' => "\x{207C}",
436             '(' => "\x{207D}",
437             ')' => "\x{207E}",
438             n => "\x{207F}",
439             SM => "\x{2120}",
440             h => "\x{02b0}",
441             j => "\x{02b2}",
442             r => "\x{02b3}",
443             w => "\x{02b7}",
444             y => "\x{02b8}"
445             );
446              
447             # \textsuperscript{\xxx}
448             our %CMDSUPERSCRIPTS = (
449             texthth => "\x{02b1}",
450             textturnr => "\x{02b4}",
451             textturnrrtail => "\x{02b5}",
452             textinvscr => "\x{02b6}"
453             );
454              
455             our %SYMBOLS = (
456             textcolonmonetary => "\x{20A1}",
457             textlira => "\x{20A4}",
458             textnaira => "\x{20A6}",
459             textwon => "\x{20A9}",
460             textdong => "\x{20AB}",
461             euro => "\x{20AC}",
462             texteuro => "\x{20AC}",
463             textnumero => "\x{2116}",
464             texttrademark => "\x{2122}",
465             leftarrow => "\x{2190}",
466             uparrow => "\x{2191}",
467             rightarrow => "\x{2192}",
468             downarrow => "\x{2193}",
469             leftrightarrow => "\x{2194}",
470             updownarrow => "\x{2195}",
471             leadsto => "\x{219D}",
472             rightleftharpoons => "\x{21CC}",
473             Rightarrow => "\x{21D2}",
474             Leftrightarrow => "\x{21D4}",
475             forall => "\x{2200}",
476             complement => "\x{2201}",
477             partial => "\x{2202}",
478             exists => "\x{2203}",
479             nexists => "\x{2204}",
480             set => "\x{2205}",
481             Delta => "\x{2206}",
482             nabla => "\x{2207}",
483             in => "\x{2208}",
484             notin => "\x{2209}",
485             ni => "\x{220B}",
486             prod => "\x{220F}",
487             coprod => "\x{2210}",
488             sum => "\x{2211}",
489             mp => "\x{2213}",
490             dotplus => "\x{2214}",
491             setminus => "\x{2216}",
492             ast => "\x{2217}",
493             circ => "\x{2218}",
494             bullet => "\x{2219}",
495             surd => "\x{221A}",
496             propto => "\x{221D}",
497             infty => "\x{221E}",
498             angle => "\x{2220}",
499             measuredangle => "\x{2221}",
500             sphericalangle => "\x{2222}",
501             mid => "\x{2223}",
502             nmid => "\x{2224}",
503             parallel => "\x{2225}",
504             nparallel => "\x{2226}",
505             wedge => "\x{2227}",
506             vee => "\x{2228}",
507             cap => "\x{2229}",
508             cup => "\x{222A}",
509             int => "\x{222B}",
510             iint => "\x{222C}",
511             iiint => "\x{222D}",
512             oint => "\x{222E}",
513             therefore => "\x{2234}",
514             because => "\x{2235}",
515             sim => "\x{223C}",
516             backsim => "\x{223D}",
517             wr => "\x{2240}",
518             nsim => "\x{2241}",
519             simeq => "\x{2243}",
520             cong => "\x{2245}",
521             ncong => "\x{2247}",
522             approx => "\x{2248}",
523             approxeq => "\x{224A}",
524             asymp => "\x{224D}",
525             Bumpeq => "\x{224E}",
526             bumpeq => "\x{224F}",
527             doteq => "\x{2250}",
528             doteqdot => "\x{2251}",
529             fallingdotseq => "\x{2252}",
530             risingdotseq => "\x{2253}",
531             eqcirc => "\x{2256}",
532             circeq => "\x{2257}",
533             triangleq => "\x{225C}",
534             neq => "\x{2260}",
535             equiv => "\x{2261}",
536             leq => "\x{2264}",
537             geq => "\x{2265}",
538             leqq => "\x{2266}",
539             geqq => "\x{2267}",
540             lneqq => "\x{2268}",
541             gneqq => "\x{2269}",
542             ll => "\x{226A}",
543             gg => "\x{226B}",
544             between => "\x{226C}",
545             nless => "\x{226E}",
546             ngtr => "\x{226F}",
547             nleq => "\x{2270}",
548             ngeq => "\x{2271}",
549             lesssim => "\x{2272}",
550             gtrsim => "\x{2273}",
551             lessgtr => "\x{2276}",
552             gtrless => "\x{2277}",
553             prec => "\x{227A}",
554             succ => "\x{227B}",
555             preccurlyeq => "\x{227C}",
556             succcurlyeq => "\x{227D}",
557             precsim => "\x{227E}",
558             succsim => "\x{227F}",
559             nprec => "\x{2280}",
560             nsucc => "\x{2281}",
561             subset => "\x{2282}",
562             supset => "\x{2283}",
563             subseteq => "\x{2286}",
564             supseteq => "\x{2287}",
565             nsubseteq => "\x{2288}",
566             nsupseteq => "\x{2289}",
567             subsetneq => "\x{228A}",
568             supsetneq => "\x{228B}",
569             uplus => "\x{228E}",
570             sqsubset => "\x{228F}",
571             sqsupset => "\x{2290}",
572             sqsubseteq => "\x{2291}",
573             sqsupseteq => "\x{2292}",
574             sqcap => "\x{2293}",
575             sqcup => "\x{2294}",
576             oplus => "\x{2295}",
577             ominus => "\x{2296}",
578             otimes => "\x{2297}",
579             oslash => "\x{2298}",
580             odot => "\x{2299}",
581             circledcirc => "\x{229A}",
582             circledast => "\x{229B}",
583             circleddash => "\x{229D}",
584             boxplus => "\x{229E}",
585             boxminus => "\x{229F}",
586             boxtimes => "\x{22A0}",
587             boxdot => "\x{22A1}",
588             vdash => "\x{22A2}",
589             dashv => "\x{22A3}",
590             top => "\x{22A4}",
591             bot => "\x{22A5}",
592             Vdash => "\x{22A9}",
593             Vvdash => "\x{22AA}",
594             nVdash => "\x{22AE}",
595             lhd => "\x{22B2}",
596             rhd => "\x{22B3}",
597             unlhd => "\x{22B4}",
598             unrhd => "\x{22B5}",
599             multimap => "\x{22B8}",
600             intercal => "\x{22BA}",
601             veebar => "\x{22BB}",
602             barwedge => "\x{22BC}",
603             bigwedge => "\x{22C0}",
604             bigvee => "\x{22C1}",
605             bigcap => "\x{22C2}",
606             bigcup => "\x{22C3}",
607             diamond => "\x{22C4}",
608             cdot => "\x{22C5}",
609             star => "\x{22C6}",
610             divideontimes => "\x{22C7}",
611             bowtie => "\x{22C8}",
612             ltimes => "\x{22C9}",
613             rtimes => "\x{22CA}",
614             leftthreetimes => "\x{22CB}",
615             rightthreetimes => "\x{22CC}",
616             backsimeq => "\x{22CD}",
617             curlyvee => "\x{22CE}",
618             curlywedge => "\x{22CF}",
619             Subset => "\x{22D0}",
620             Supset => "\x{22D1}",
621             Cap => "\x{22D2}",
622             Cup => "\x{22D3}",
623             pitchfork => "\x{22D4}",
624             lessdot => "\x{22D6}",
625             gtrdot => "\x{22D7}",
626             lll => "\x{22D8}",
627             ggg => "\x{22D9}",
628             lesseqgtr => "\x{22DA}",
629             gtreqless => "\x{22DB}",
630             curlyeqprec => "\x{22DE}",
631             curlyeqsucc => "\x{22DF}",
632             lnsim => "\x{22E6}",
633             gnsim => "\x{22E7}",
634             precnsim => "\x{22E8}",
635             succnsim => "\x{22E9}",
636             ntriangleleft => "\x{22EA}",
637             ntriangleright => "\x{22EB}",
638             ntrianglelefteq => "\x{22EC}",
639             ntrianglerighteq => "\x{22ED}",
640             vdots => "\x{22EE}",
641             cdots => "\x{22EF}",
642             ddots => "\x{22F1}",
643             lceil => "\x{2308}",
644             rceil => "\x{2309}",
645             lfloor => "\x{230A}",
646             rfloor => "\x{230B}",
647             Box => "\x{25A1}",
648             spadesuit => "\x{2660}",
649             heartsuit => "\x{2661}",
650             diamondsuit => "\x{2662}",
651             clubsuit => "\x{2663}",
652             flat => "\x{266D}",
653             natural => "\x{266E}",
654             sharp => "\x{266F}",
655             tone5 => "\x{02E5}",
656             tone4 => "\x{02E6}",
657             tone3 => "\x{02E7}",
658             tone2 => "\x{02E8}",
659             tone1 => "\x{02E9}"
660             );
661              
662             our %DINGS = (
663             '21' => "\x{2701}",
664             '22' => "\x{2702}",
665             '23' => "\x{2703}",
666             '24' => "\x{2704}",
667             '25' => "\x{260E}",
668             '26' => "\x{2706}",
669             '27' => "\x{2707}",
670             '28' => "\x{2708}",
671             '29' => "\x{2709}",
672             '2A' => "\x{261B}",
673             '2B' => "\x{261E}",
674             '2C' => "\x{270C}",
675             '2D' => "\x{270D}",
676             '2E' => "\x{270E}",
677             '2F' => "\x{270F}",
678             '30' => "\x{2710}",
679             '31' => "\x{2711}",
680             '32' => "\x{2712}",
681             '33' => "\x{2713}",
682             '34' => "\x{2714}",
683             '35' => "\x{2715}",
684             '36' => "\x{2716}",
685             '37' => "\x{2717}",
686             '38' => "\x{2718}",
687             '39' => "\x{2719}",
688             '3A' => "\x{271A}",
689             '3B' => "\x{271B}",
690             '3C' => "\x{271C}",
691             '3D' => "\x{271D}",
692             '3E' => "\x{271E}",
693             '3F' => "\x{271F}",
694             '40' => "\x{2720}",
695             '41' => "\x{2721}",
696             '42' => "\x{2722}",
697             '43' => "\x{2723}",
698             '44' => "\x{2724}",
699             '45' => "\x{2725}",
700             '46' => "\x{2726}",
701             '47' => "\x{2727}",
702             '48' => "\x{2605}",
703             '49' => "\x{2729}",
704             '4A' => "\x{272A}",
705             '4B' => "\x{272B}",
706             '4C' => "\x{272C}",
707             '4D' => "\x{272D}",
708             '4E' => "\x{272E}",
709             '4F' => "\x{272F}",
710             '50' => "\x{2730}",
711             '51' => "\x{2731}",
712             '52' => "\x{2732}",
713             '53' => "\x{2733}",
714             '54' => "\x{2734}",
715             '55' => "\x{2735}",
716             '56' => "\x{2736}",
717             '57' => "\x{2737}",
718             '58' => "\x{2738}",
719             '59' => "\x{2739}",
720             '5A' => "\x{273A}",
721             '5B' => "\x{273B}",
722             '5C' => "\x{273C}",
723             '5D' => "\x{273D}",
724             '5E' => "\x{273E}",
725             '5F' => "\x{273F}",
726             '60' => "\x{2740}",
727             '61' => "\x{2741}",
728             '62' => "\x{2742}",
729             '63' => "\x{2743}",
730             '64' => "\x{2744}",
731             '65' => "\x{2745}",
732             '66' => "\x{2746}",
733             '67' => "\x{2747}",
734             '68' => "\x{2748}",
735             '69' => "\x{2749}",
736             '6A' => "\x{274A}",
737             '6B' => "\x{274B}",
738             '6C' => "\x{25CF}",
739             '6D' => "\x{274D}",
740             '6E' => "\x{25A0}",
741             '6F' => "\x{274F}",
742             '70' => "\x{2750}",
743             '71' => "\x{2751}",
744             '72' => "\x{2752}",
745             '73' => "\x{25B2}",
746             '74' => "\x{25BC}",
747             '75' => "\x{25C6}",
748             '76' => "\x{2756}",
749             '77' => "\x{25D7}",
750             '78' => "\x{2758}",
751             '79' => "\x{2759}",
752             '7A' => "\x{275A}",
753             '7B' => "\x{275B}",
754             '7C' => "\x{275C}",
755             '7D' => "\x{275D}",
756             '7E' => "\x{275E}",
757             'A1' => "\x{2761}",
758             'A2' => "\x{2762}",
759             'A3' => "\x{2763}",
760             'A4' => "\x{2764}",
761             'A5' => "\x{2765}",
762             'A6' => "\x{2766}",
763             'A7' => "\x{2767}",
764             'A9' => "\x{2666}",
765             'AA' => "\x{2665}",
766             'AC' => "\x{2460}",
767             'AD' => "\x{2461}",
768             'AE' => "\x{2462}",
769             'AF' => "\x{2463}",
770             'B0' => "\x{2464}",
771             'B1' => "\x{2465}",
772             'B2' => "\x{2466}",
773             'B3' => "\x{2467}",
774             'B4' => "\x{2468}",
775             'B5' => "\x{2469}",
776             'B6' => "\x{2776}",
777             'B7' => "\x{2777}",
778             'B8' => "\x{2778}",
779             'B9' => "\x{2779}",
780             'BA' => "\x{277A}",
781             'BB' => "\x{277B}",
782             'BC' => "\x{277C}",
783             'BD' => "\x{277D}",
784             'BE' => "\x{277E}",
785             'BF' => "\x{277F}",
786             'C0' => "\x{2780}",
787             'C1' => "\x{2781}",
788             'C2' => "\x{2782}",
789             'C3' => "\x{2783}",
790             'C4' => "\x{2784}",
791             'C5' => "\x{2785}",
792             'C6' => "\x{2786}",
793             'C7' => "\x{2787}",
794             'C8' => "\x{2788}",
795             'C9' => "\x{2789}",
796             'CA' => "\x{278A}",
797             'CB' => "\x{278B}",
798             'CC' => "\x{278C}",
799             'CD' => "\x{278D}",
800             'CE' => "\x{278E}",
801             'CF' => "\x{278F}",
802             'D0' => "\x{2790}",
803             'D1' => "\x{2791}",
804             'D2' => "\x{2792}",
805             'D3' => "\x{2793}",
806             'D4' => "\x{2794}",
807             'D6' => "\x{2194}",
808             'D7' => "\x{2195}",
809             'D8' => "\x{2798}",
810             'D9' => "\x{2799}",
811             'DA' => "\x{279A}",
812             'DB' => "\x{279B}",
813             'DC' => "\x{279C}",
814             'DD' => "\x{279D}",
815             'DE' => "\x{279E}",
816             'DF' => "\x{279F}",
817             'E0' => "\x{27A0}",
818             'E1' => "\x{27A1}",
819             'E2' => "\x{27A2}",
820             'E3' => "\x{27A3}",
821             'E4' => "\x{27A4}",
822             'E5' => "\x{27A5}",
823             'E6' => "\x{27A6}",
824             'E7' => "\x{27A7}",
825             'E8' => "\x{27A8}",
826             'E9' => "\x{27A9}",
827             'EA' => "\x{27AA}",
828             'EB' => "\x{27AB}",
829             'EC' => "\x{27AC}",
830             'ED' => "\x{27AD}",
831             'EE' => "\x{27AE}",
832             'EF' => "\x{27AF}",
833             'F1' => "\x{27B1}",
834             'F2' => "\x{27B2}",
835             'F3' => "\x{27B3}",
836             'F4' => "\x{27B4}",
837             'F5' => "\x{27B5}",
838             'F6' => "\x{27B6}",
839             'F7' => "\x{27B7}",
840             'F8' => "\x{27B8}",
841             'F9' => "\x{27B9}",
842             'FA' => "\x{27BA}",
843             'FB' => "\x{27BB}",
844             'FC' => "\x{27BC}",
845             'FD' => "\x{27BD}",
846             'FE' => "\x{27BE}"
847             );
848              
849             our %GREEK = (
850             alpha => "\x{3b1}",
851             beta => "\x{3b2}",
852             gamma => "\x{3b3}",
853             delta => "\x{3b4}",
854             varepsilon => "\x{3b5}",
855             zeta => "\x{3b6}",
856             eta => "\x{3b7}",
857             vartheta => "\x{3b8}",
858             iota => "\x{3b9}",
859             kappa => "\x{3ba}",
860             lambda => "\x{3bb}",
861             mu => "\x{3bc}",
862             nu => "\x{3bd}",
863             xi => "\x{3be}",
864             omicron => "\x{3bf}",
865             pi => "\x{3c0}",
866             varrho => "\x{3c1}",
867             varsigma => "\x{3c2}",
868             sigma => "\x{3c3}",
869             tau => "\x{3c4}",
870             upsilon => "\x{3c5}",
871             varphi => "\x{3c6}",
872             chi => "\x{3c7}",
873             psi => "\x{3c8}",
874             omega => "\x{3c9}",
875             Alpha => "\x{391}",
876             Beta => "\x{392}",
877             Gamma => "\x{393}",
878             Delta => "\x{394}",
879             Epsilon => "\x{395}",
880             Zeta => "\x{396}",
881             Eta => "\x{397}",
882             Theta => "\x{398}",
883             Iota => "\x{399}",
884             Kappa => "\x{39a}",
885             Lambda => "\x{39b}",
886             Mu => "\x{39c}",
887             Nu => "\x{39d}",
888             Xi => "\x{39e}",
889             Omicron => "\x{39f}",
890             Pi => "\x{3a0}",
891             Rho => "\x{3a1}",
892             Sigma => "\x{3a3}",
893             Tau => "\x{3a4}",
894             Upsilon => "\x{3a5}",
895             Phi => "\x{3a6}",
896             Chi => "\x{3a7}",
897             Psi => "\x{3a8}",
898             Omega => "\x{3a9}"
899             );
900              
901              
902             our $ACCENTS_RE = qr{[\^\.`'"~=]};
903              
904             our $DIAC_RE_BASE = join('|', keys %DIACRITICS);
905             $DIAC_RE_BASE = qr{$DIAC_RE_BASE};
906              
907             our $DIAC_RE_EXTRA = join('|', sort {length $b <=> length $a} keys %DIACRITICSEXTRA);
908             $DIAC_RE_EXTRA = qr{$DIAC_RE_EXTRA|$DIAC_RE_BASE};
909              
910             our $NEG_SYMB_RE = join('|', sort keys %NEGATEDSYMBOLS);
911             $NEG_SYMB_RE = qr{$NEG_SYMB_RE};
912              
913             our $SUPER_RE;
914             my @_ss = keys %SUPERSCRIPTS;
915             $SUPER_RE = join('|', map { /[\+\-\)\(]/ ? '\\' . $_ : $_ } @_ss);
916             $SUPER_RE = qr{$SUPER_RE};
917              
918             our $SUPERCMD_RE = join('|', keys %CMDSUPERSCRIPTS);
919             $SUPERCMD_RE = qr{$SUPERCMD_RE};
920              
921             =head1 AUTHOR
922              
923             François Charette, C<< >>
924              
925             =head1 BUGS
926              
927             Please report any bugs or feature requests to C
928             rt.cpan.org>, or through the web interface at
929             L. I will be
930             notified, and then you'll automatically be notified of progress on your bug as
931             I make changes.
932              
933             =head1 NOTICE
934              
935             This module is currently distributed with biber, but it is not unlikely that it
936             will eventually make its way to CPAN.
937              
938             =head1 COPYRIGHT & LICENSE
939              
940             Copyright 2009-2010 François Charette, all rights reserved.
941              
942             This module is free software. You can redistribute it and/or
943             modify it under the terms of the Artistic License 2.0.
944              
945             This program is distributed in the hope that it will be useful,
946             but without any warranty; without even the implied warranty of
947             merchantability or fitness for a particular purpose.
948              
949             =cut
950              
951             1;
952              
953             # vim: set tabstop=4 shiftwidth=4 expandtab: