use Encode for output.
[chise/omega.git] / chise2otf / chise2otf
1 #!/usr/bin/perl -w -CSD
2
3 use strict;
4 use vars qw($opt_in_cs $opt_order $opt_kage $opt_replace
5             $opt_latin
6             $opt_use_kage_for_Ext_B $opt_allow_unification
7             $opt_help $usage
8             $in_cs $out_cs $i @chars
9             @order $order %order
10             @texmacro
11             $char $char_id $out_char
12             $char_unified @chars_unified
13             $ids $ids_argc %ids $idsdb
14             $idsdata_file $ids_start $font_start
15             $perl56 $perl58
16             @CDP @HZK @GT
17             );
18 use Getopt::Long;
19 use Fcntl ':flock';
20 use utf8;
21 use Encode;
22 use Chise_utils ':all';
23 require 5.008;
24
25 binmode(STDOUT,":encoding(euc-jp)");
26
27 # currently does not work, so...
28 $opt_use_kage_for_Ext_B=0;
29
30 my $makefonts="/usr/local/share/texmf/omega/ocp/chise_rqd/chise/makefonts.pl";
31 my $exec_makefonts=0;
32 my $geta='〓';
33
34 &GetOptions("in=s"=>\$opt_in_cs,
35             "order=s"=>\$opt_order,
36             "replace",\$opt_replace,
37             "kage",\$opt_kage,
38             "latin",\$opt_latin,
39             "unify",\$opt_allow_unification,
40             "help",\$opt_help);
41
42 $usage=<<EOF;
43 Usage: $0 [-i <input coding system>] [-o <order of kanji>] [-klru] <filename>
44     -i: input coding system: (default: ucs\@mcs)
45        ucs\@mcs, ucs\@cns, ucs\@gb, ucs\@jis, ucs\@ks
46     -o: order of kanji: (default: j)
47        c: CNS
48        g: GB
49        j: JIS
50        k: KS
51        G: GT
52        m: Multi, use \\UTFM of otf.sty
53       You can also combine them, ex. jGcgkm
54     -k: use Kage server.
55     -l: preserve latin characters also in ucs\@jis environment.
56     -r: replace r and l with dot below to those with circle below.
57     -u: allow unification.
58 EOF
59
60 %order=('c'=>'UniCNS',
61         'g'=>'UniGB',
62         'j'=>'UniJIS',
63         'k'=>'UniKS',
64         'G'=>'GT',
65         'm'=>'Multi',
66         );
67
68 if($opt_help){
69     print STDERR $usage;
70     exit 1;
71 }
72
73 if(not defined($opt_in_cs)){
74     print STDERR "Assuming input coding system is ucs\@mcs.\n";
75     $in_cs='ucs@mcs';
76 }else{
77     if(($opt_in_cs eq 'ucs@mcs')or
78        ($opt_in_cs eq 'ucs@cns')or
79        ($opt_in_cs eq 'ucs@gb')or
80        ($opt_in_cs eq 'ucs@jis')or
81        ($opt_in_cs eq 'ucs@ks')){
82         $in_cs=$opt_in_cs;
83     }else{
84         print STDERR "Invalid arguments.\n";
85         print STDERR $usage;
86         exit 1;
87     }
88 }
89
90 if(not defined($opt_order)){
91     print STDERR "Using only UniJIS.\n";
92     $opt_order='j';
93 }
94
95 if(defined($opt_order)){
96     if($opt_order=~/^[cgjkGm]+$/){
97         @order=split(//,$opt_order);
98         @order=map {$order{$_}} @order;
99     }else{
100         print STDERR "Invalid option!\n";
101         print STDERR $usage;
102         exit 1;
103     }
104 }
105
106 if($opt_kage){
107     $exec_makefonts=1;
108 }
109
110 &setup_texmacro();
111 if($opt_replace){
112     $texmacro[0x1E36]='{\ifmmode \mbox{\ucirc{L}}\else \ucirc{L}\fi}';
113     $texmacro[0x1E37]='{\ifmmode \mbox{\ucirc{l}}\else \ucirc{l}\fi}';
114     $texmacro[0x1E38]='{\ifmmode \ucirc{\bar{L}}\else \ucirc{\={L}}\fi}';
115     $texmacro[0x1E39]='{\ifmmode \ucirc{\bar{l}}\else \ucirc{\={l}}\fi}';
116     $texmacro[0x1E5A]='{\ifmmode \mbox{\ucirc{R}}\else \ucirc{R}\fi}';
117     $texmacro[0x1E5B]='{\ifmmode \mbox{\ucirc{r}}\else \ucirc{r}\fi}';
118     $texmacro[0x1E5C]='{\ifmmode \ucirc{\bar{R}}\else \ucirc{\={R}}\fi}';
119     $texmacro[0x1E5D]='{\ifmmode \ucirc{\bar{r}}\else \ucirc{\={r}}\fi}';
120 }
121
122 $idsdata_file="$omegadb_path/idsdata.txt";
123 $ids_start=0x00; 
124 $font_start=0;
125
126 if(-e $idsdata_file){
127     open(IDSDATA,"+<:utf8",$idsdata_file) or die;
128     flock(IDSDATA,LOCK_EX);
129     seek(IDSDATA,0,0);
130     while(<IDSDATA>){
131         utf8::decode($_);
132         if(m/^START\t(\d+)\t(\d+)/){
133             $font_start=$1,$ids_start=$2;
134         }elsif(m/^(.*?)\t(\d+)\t(\d+)/){
135             $ids{$1}=[$2,$3,];
136         }else{
137             die "Irregular IDS file: $idsdata_file.\n";
138         }
139     }
140     seek(IDSDATA,0,0);
141     truncate(IDSDATA,0);
142 }else{
143     open(IDSDATA,">:utf8",$idsdata_file) or die;
144     flock(IDSDATA,LOCK_EX);
145     seek(IDSDATA,0,0);
146 }
147
148 $ids_argc=0;
149 $ids="";
150
151 @GT=(#"=gt","=gt-k",
152      "=gt-pj-1","=gt-pj-2","=gt-pj-3","=gt-pj-4","=gt-pj-5",
153      "=gt-pj-6","=gt-pj-7","=gt-pj-8","=gt-pj-9","=gt-pj-10",
154      "=gt-pj-11"
155      #,"=gt-pj-k1","=gt-pj-k2"
156      );
157 @HZK=("=hanziku-1","=hanziku-2","=hanziku-3","=hanziku-4",
158       "=hanziku-5","=hanziku-6","=hanziku-7","=hanziku-8",
159       "=hanziku-9","=hanziku-10","=hanziku-11","=hanziku-12");
160 @CDP=("=big5-cdp");
161
162 while(<>){
163     if($in_cs ne 'ucs@mcs'){
164         s/(.)/&get_char_in_mcs($1,$in_cs)/ge;
165     }
166     s/((?:^|[^\\])(?:\\\\)*)(&.*?;)/&de_tex_er($1,$2)/ge;
167     s/((?:^|[^\\])(?:\\\\)*)\\([$idc])/$1.'\UTFM{'.sprintf("%X",unpack("U",$2)).'}'/ge;
168     @chars=split(//);
169   CHAR:
170     for($i=0;$i<=$#chars;$i++){
171         $char=$chars[$i];
172         $char_id=unpack("U",$chars[$i]);
173
174         if($char_id<=0x7f){
175             # Basic Latin
176             print $char;
177             next CHAR;
178         }elsif(defined($texmacro[$char_id]) and $texmacro[$char_id]){
179             # already defined for 
180             # 0080..00FF; Latin-1 Supplement
181             # 0100..017F; Latin Extended-A
182             # 1E00..1EFF; Latin Extended Additional
183             print $texmacro[$char_id];
184             next CHAR;
185         }elsif($char_id>=0x2ff0 and $char_id<=0x2fff){
186             # Ideographic Description Characters
187             print &ids_parse();
188             next CHAR;
189         }else{
190             if(($out_char=&get_output_char($char))){
191                 print $out_char;
192                 next CHAR;
193             }else{
194                 if($opt_allow_unification){
195                     @chars_unified=&get_chars_unified($char);
196                     if(@chars_unified>0){
197                         foreach $char_unified (@chars_unified){
198                             if(($out_char=&get_output_char($char_unified))){
199                                 print $out_char;
200                                 next CHAR;
201                             }
202                         }
203                     }
204                 }
205                 if($opt_use_kage_for_Ext_B
206                    and $char_id >= 0x20000 and $char_id <=0x2a6df){
207                     # CJK Unified Ideographs Extension B
208                     if(not defined($ids{$char}) and $ids{$char}[1]>=0){
209                         $ids{$char}[0]=$font_start;
210                         $ids{$char}[1]=$ids_start;
211                         $ids_start++;
212                         if($ids_start>255){
213                             $ids_start=0;
214                             $font_start++;
215                         }
216                     }
217                     print "{\\fontencoding{OT1}\\fontfamily{" .
218                         sprintf("chise%03d",$ids{$char}[0]) .
219                             "}\\selectfont\\char$ids{$char}[1]}";
220                     next CHAR;
221                 }
222                 if($ids=&get_ids($char)){
223                     print &get_macro_for_ids($ids);
224                     next CHAR;
225                 }else{
226                     print $geta;
227                 }
228             }
229         }
230     }
231 }
232
233 print IDSDATA 'START',"\t",$font_start,"\t",$ids_start,"\n";
234 foreach $ids (keys %ids){
235     print IDSDATA $ids,"\t",join("\t",@{$ids{$ids}}),"\n";
236 }
237 flock(IDSDATA,LOCK_UN);
238
239 if($exec_makefonts){
240     if(-f $makefonts){
241         system("/usr/bin/env","perl",$makefonts) ==0
242             or die "Could not make fonts: $?";
243     }else{
244         print STDERR "cannot find $makefonts\n";
245     }
246 }
247
248 exit 0;
249
250 sub de_tex_er{
251     my($before_er,$er)=@_;
252     my($prefix,$suffix);
253     my($output_char,$atr,$value);
254     $er=~/^(\&)(.*)(;)$/
255         and $prefix=$1,$er=$2,$suffix=$3;
256     $prefix or $prefix="",$suffix or $suffix="";
257     if($er=~/^U[\+|\-]([a-fA-F\d]+)/){
258         $output_char=pack("U",hex($1));
259     }elsif($er=~/^(?:I\-)?($er_prefix_re)\-?([0-9a-fA-F]+)$/){
260         ($atr,$value)=($1,$2);
261         unless($er_alias{$atr}=~/daikanwa|gt/){
262             $value=hex($value);
263         }
264         ($output_char)=&get_chars_matching($er_alias{$atr},$value);
265     }
266     if($output_char){
267         return $before_er.$output_char;
268     }else{
269         return $before_er.$prefix.$er.$suffix;
270     }
271 }
272
273 sub ids_parse{
274     # arguments: none
275     # return: return character for output,
276     #          TeX macro for ids,
277     #          or GETA character if ids is invalid.
278     my($ids,$ids_argc)=&ids_rest("",0,$chars[$i]);
279
280     while($ids_argc>0){
281         # We are in IDS.
282         $i++;
283         if($i>$#chars){
284             print STDERR "IDS parse error: $ids\n";
285             return $geta;
286         }
287
288         ($ids,$ids_argc)=&ids_rest($ids,$ids_argc,$chars[$i]);
289         if($ids_argc==0){
290             if(($char=&get_char_for_ids($ids))
291                and($out_char=&get_output_char($char))){
292                 return $out_char;
293             }else{
294                 return &get_macro_for_ids($ids);
295             }
296         }
297     }
298 }
299
300 sub ids_rest{
301     # arguments: <ids>, <rest number of arguments for ids>, <character>
302     # return: ids and rest number of arguments for ids.
303     my($ids,$ids_argc,$char)=@_;
304     my($argc);
305     $argc=&ids_argc($char);
306     if($argc){
307         $ids_argc+= $ids_argc==0 ? $argc : $argc-1;
308     }else{
309         $ids_argc--;
310     }
311     $ids.=$char;
312     return ($ids,$ids_argc);
313 }
314
315 sub get_macro_for_ids{
316     # argument: <ids>
317     # return: TeX macro for ids
318     #          or GETA character if ids is invalid for KAGE.
319     my($ids)=@_;
320 #    return $geta if(not $exec_makefonts);
321 #    $ids=&normalize_ids($ids,"UniJIS");
322     return $geta if(($ids!~/[$idc]/)
323                     or($ids=~/[\x{10000}-]/));
324                     #irregular for KAGE.
325     if(not defined($ids{$ids})){
326         $ids{$ids}[0]=$font_start;
327         $ids{$ids}[1]=$ids_start;
328         $ids_start++;
329     }
330     if($ids_start>255){
331         $ids_start=0;
332         $font_start++;
333     }
334     return "{\\fontencoding{T1}\\fontfamily{"
335         .sprintf("chisesub%03d",$ids{$ids}[0])
336         ."}\\selectfont\\char$ids{$ids}[1]}";
337 }
338
339 sub normalize_ids{
340     # argument: <ids>, <output coding system>
341     # return: ids or GETA character if ids is invalid for KAGE.
342     my($ids,$out_cs)=@_;
343     $out_cs=~s/Uni(.+)/'ucs@'.lc($1)/e;
344
345     my $output_ids="";
346     my($char,$output_char_id);
347     while($ids=~m/(.)/g){
348         $char=$1;
349         if($char=~/[$idc]/){
350             $output_ids.=$char;
351         }elsif($output_char_id=&get_char_attribute($char,"=$out_cs")
352                or $output_char_id=&get_char_attribute($char,"=ucs")
353                or $output_char_id=&get_char_attribute($char,"=>$out_cs")
354                or $output_char_id=&get_char_attribute($char,"=>ucs")
355                or $output_char_id=&get_char_attribute($char,"=>ucs*")
356               ){
357             $output_ids.=pack("U",$output_char_id);
358         }else{
359             return $geta;
360         }
361     }
362     return $output_ids;
363 }
364
365 sub get_output_char{
366     # argument: <char>
367     # return: character in EUC-JP or TeX macro for pTeX.
368     my($char)=@_;
369     my($out_char,$out_char_id,$gt);
370     
371     if($out_char=&get_char_attribute($char,'=jis-x0208')
372        or $out_char=&get_char_attribute($char,'=jis-x0208-1983')
373        or $out_char=&get_char_attribute($char,'=jis-x0208-1990')
374       ){
375         return $char;
376     }else{
377         foreach $out_cs (@order){
378             if($out_cs eq 'UniJIS'
379                and &get_char_attribute($char,"vnd-adobe-cid-unijis-utf16-h")){
380                 if($out_char_id=&get_char_attribute($char,'=ucs@jis')
381                    or $out_char_id=&get_char_attribute($char,'=ucs')
382                    or $out_char_id=&get_char_attribute($char,'=>ucs@jis')
383                    or $out_char_id=&get_char_attribute($char,'=>ucs')
384                    or $out_char_id=&get_char_attribute($char,'=>ucs*')
385                    ){
386                     return "\\UTF{".sprintf("%X",$out_char_id)."}";
387                 }
388             }elsif($out_cs eq 'UniGB'
389                    and &get_char_attribute($char,"vnd-adobe-cid-unigb-ucs2-h")){
390                 if($out_char_id=&get_char_attribute($char,'=ucs@gb')
391                    or $out_char_id=&get_char_attribute($char,'=ucs')
392                    or $out_char_id=&get_char_attribute($char,'=>ucs@gb')
393                    or $out_char_id=&get_char_attribute($char,'=>ucs')
394                    or $out_char_id=&get_char_attribute($char,'=>ucs*')
395                    ){
396                     return "\\UTFC{".sprintf("%X",$out_char_id)."}";
397                 }
398             }elsif($out_cs eq 'UniCNS'
399                    and &get_char_attribute($char,"vnd-adobe-cid-unicns-ucs2-h")){
400                 if($out_char_id=&get_char_attribute($char,'=ucs@cns')
401                    or $out_char_id=&get_char_attribute($char,'=ucs')
402                    or $out_char_id=&get_char_attribute($char,'=>ucs@cns')
403                    or $out_char_id=&get_char_attribute($char,'=>ucs')
404                    or $out_char_id=&get_char_attribute($char,'=>ucs*')
405                    ){
406                     return "\\UTFT{".sprintf("%X",$out_char_id)."}";
407                 }
408             }elsif($out_cs eq 'UniKS'
409                    and &get_char_attribute($char,"vnd-adobe-cid-uniks-ucs2-h")){
410                 if($out_char_id=&get_char_attribute($char,'=ucs@ks')
411                    or $out_char_id=&get_char_attribute($char,'=ucs')
412                    or $out_char_id=&get_char_attribute($char,'=>ucs@ks')
413                    or $out_char_id=&get_char_attribute($char,'=>ucs')
414                    or $out_char_id=&get_char_attribute($char,'=>ucs*')
415                    ){
416                     return "\\UTFK{".sprintf("%X",$out_char_id)."}";
417                 }
418             }elsif($out_cs eq 'GT'){
419                 return $gt if($gt=&get_macro_for_GT($char));
420             }elsif($out_cs eq 'Multi'){
421                 if($out_char_id=&get_char_attribute($char,'=ucs')){
422                     return "\\UTFM{".sprintf("%X",$out_char_id)."}";
423                 }
424             }
425         }
426     }
427     return undef;
428 }
429
430 sub get_ids{
431     # argument: <character>
432     # return: ids
433     my($char)=@_;
434     my $ids="";
435     $ids=&get_char_attribute($char,"ids-aggregated")
436         or &get_char_attribute($char,"ids");
437     return $ids;
438 }
439
440 sub get_char_for_ids{
441     # argument: <ideographic description sequence>
442     # return: char or undef
443     my($ids)=@_;
444     my($output_char);
445
446     if(($output_char)=&get_chars_matching("ids",$ids)){
447         return $output_char;
448     }else{
449         return undef;
450     }
451 }
452
453 sub get_char_in_mcs{
454     # argument: <char>, <input coding system>
455     # return:   char in ucs@mcs.
456     my($char,$in_cs)=@_;
457     my($output_char);
458     my $char_id=unpack("U",$char);
459
460     if($opt_latin and $texmacro[$char_id]){
461         return $char;
462     }
463     if(($output_char)=&get_chars_matching("=$in_cs",$char_id)){
464         return $output_char;
465     }else{
466         return $char;
467     }
468 }
469
470 sub get_chars_unified{
471     my($char)=@_;
472     my($chars,$ucs,$char_ucs);
473     my(@chars);
474
475     if($chars=&get_char_attribute($char,'->ucs-unified')){
476         $chars=~s/^\((.*)\)$/$1/;
477         return (split(/\s*\?/,$chars));
478     }elsif($ucs=&get_char_attribute($char,'=>ucs*')
479           or $ucs=&get_char_attribute($char,'=>ucs')){
480         $char_ucs=pack("U",$ucs);
481         if($chars=&get_char_attribute($char_ucs,'->ucs-unified')){
482             $chars=~s/^\((.*)\)$/$1/;
483             @chars=grep {not /^$char$/}
484                 (split(/\s*\?/,$chars));
485             push(@chars,$char_ucs);
486             return @chars;
487         }
488     }
489 }
490
491 sub get_macro_for_GT{
492     # argument: <char>
493     # return: TeX macro for GT fonts or undef.
494     my($char)=@_;
495     my($gt,$GT);
496     foreach (@GT){
497         if($gt=&get_char_attribute($char,$_)){
498             m/gt\-pj\-(\d+)/ and $GT=$1;
499             last;
500         }
501     }
502     if($gt){
503         return "{\\fontfamily{"
504             .sprintf("gto%02d",$GT)
505             ."}\\selectfont\\char".($gt|0x8080)."}";
506     }else{
507         return undef;
508     }
509 }
510
511 sub setup_texmacro{
512     # Most of the TeX macros below are derived from ucharacters.sty of
513     # jadeTeX 3.13. To use all the macros, you need unicode.sty and
514     # dummyels.sty of jadeTeX and extaccent.sty of CHISE.
515     $texmacro[0xffff]="";
516     # 0080..00FF; Latin-1 Supplement
517     $texmacro[0xA0]='{\ensuremath{\penalty10000\ }}';
518     $texmacro[0xA1]='{\textexclamdown}';
519     $texmacro[0xA2]='{\ifmmode \mbox{\textcent}\else \textcent \fi}';
520     $texmacro[0xA3]='{\ifmmode \pounds \else \textsterling \fi}';
521     $texmacro[0xA4]='{\ifmmode \mbox{\textcurrency}\else \textcurrency \fi}';
522     $texmacro[0xA5]='{\ifmmode \yen \else \textyen \fi}';
523     $texmacro[0xA6]='{\textbrokenbar}';
524     $texmacro[0xA7]='{\ifmmode \S \else \textsection \fi}';
525     $texmacro[0xA8]='{\textasciidieresis}';
526     $texmacro[0xA9]='{\ifmmode \copyright \else \textcopyright \fi}';
527     $texmacro[0xAA]='{\textordfeminine}';
528     $texmacro[0xAB]='{\ifmmode \mbox{\guillemotleft}\else \guillemotleft \fi}';
529     $texmacro[0xAC]='{\ensuremath{\lnot }}';
530     $texmacro[0xAD]='{\ensuremath{\-}}';
531     $texmacro[0xAE]='{\ifmmode \circledR \else \textregistered \fi}';
532     $texmacro[0xAF]='{\textasciimacron}';
533     $texmacro[0xB0]='{\ifmmode \mbox{\textdegree}\else \textdegree \fi}';
534     $texmacro[0xB1]='{\ensuremath{\pm }}';
535     $texmacro[0xB2]='{\ensuremath{{^2}}}';
536     $texmacro[0xB3]='{\ensuremath{{^3}}}';
537     $texmacro[0xB4]='{\textasciiacute}';
538     $texmacro[0xB5]='{\ensuremath{\mathrm{\mu}}}';
539     $texmacro[0xB6]='{\ifmmode \P \else \textparagraph \fi}';
540     $texmacro[0xB7]='{\ensuremath{\cdot }}';
541     $texmacro[0xB8]='{\ifmmode \mbox{\c{}}\else \c{}\fi}';
542     $texmacro[0xB9]='{\ensuremath{{^1}}}';
543     $texmacro[0xBA]='{\textordmasculine}';
544     $texmacro[0xBB]='{\ifmmode \mbox{\guillemotright}\else \guillemotright \fi}';
545     $texmacro[0xBC]='{\textonequarter}';
546     $texmacro[0xBD]='{\textonehalf}';
547     $texmacro[0xBE]='{\textthreequarters}';
548     $texmacro[0xBF]='{\textquestiondown}';
549     $texmacro[0xC0]='{\ifmmode \grave{A}\else \`{A}\fi}';
550     $texmacro[0xC1]='{\ifmmode \acute{A}\else \\\'{A}\fi}';
551     $texmacro[0xC2]='{\ifmmode \hat{A}\else \^{A}\fi}';
552     $texmacro[0xC3]='{\ifmmode \tilde{A}\else \~{A}\fi}';
553     $texmacro[0xC4]='{\ifmmode \ddot{A}\else \"{A}\fi}';
554     $texmacro[0xC5]='{\AA}';
555     $texmacro[0xC6]='{\AE}';
556     $texmacro[0xC7]='{\ifmmode \mbox{\c{C}}\else \c{C}\fi}';
557     $texmacro[0xC8]='{\ifmmode \grave{E}\else \`{E}\fi}';
558     $texmacro[0xC9]='{\ifmmode \acute{E}\else \\\'{E}\fi}';
559     $texmacro[0xCA]='{\ifmmode \hat{E}\else \^{E}\fi}';
560     $texmacro[0xCB]='{\ifmmode \ddot{E}\else \"{E}\fi}';
561     $texmacro[0xCC]='{\ifmmode \grave{I}\else \`{I}\fi}';
562     $texmacro[0xCD]='{\ifmmode \acute{I}\else \\\'{I}\fi}';
563     $texmacro[0xCE]='{\ifmmode \hat{I}\else \^{I}\fi}';
564     $texmacro[0xCF]='{\ifmmode \ddot{I}\else \"{I}\fi}';
565     $texmacro[0xD0]='{\DH}';
566     $texmacro[0xD1]='{\ifmmode \tilde{N}\else \~{N}\fi}';
567     $texmacro[0xD2]='{\ifmmode \grave{O}\else \`{O}\fi}';
568     $texmacro[0xD3]='{\ifmmode \acute{O}\else \\\'{O}\fi}';
569     $texmacro[0xD4]='{\ifmmode \hat{O}\else \^{O}\fi}';
570     $texmacro[0xD5]='{\ifmmode \tilde{O}\else \~{O}\fi}';
571     $texmacro[0xD6]='{\ifmmode \ddot{O}\else \"{O}\fi}';
572     $texmacro[0xD7]='{\ifmmode \times \else \texttimes \fi}';
573     $texmacro[0xD8]='{\O}';
574     $texmacro[0xD9]='{\ifmmode \grave{U}\else \`{U}\fi}';
575     $texmacro[0xDA]='{\ifmmode \acute{U}\else \\\'{U}\fi}';
576     $texmacro[0xDB]='{\ifmmode \hat{U}\else \^{U}\fi}';
577     $texmacro[0xDC]='{\ifmmode \ddot{U}\else \"{U}\fi}';
578     $texmacro[0xDD]='{\ifmmode \acute{Y}\else \\\'{Y}\fi}';
579     $texmacro[0xDE]='{\TH}';
580     $texmacro[0xDF]='{\ss}';
581     $texmacro[0xE0]='{\ifmmode \grave{a}\else \`{a}\fi}';
582     $texmacro[0xE1]='{\ifmmode \acute{a}\else \\\'{a}\fi}';
583     $texmacro[0xE2]='{\ifmmode \hat{a}\else \^{a}\fi}';
584     $texmacro[0xE3]='{\ifmmode \tilde{a}\else \~{a}\fi}';
585     $texmacro[0xE4]='{\ifmmode \ddot{a}\else \"{a}\fi}';
586     $texmacro[0xE5]='{\aa}';
587     $texmacro[0xE6]='{\ae}';
588     $texmacro[0xE7]='{\ifmmode \mbox{\c{c}}\else \c{c}\fi}';
589     $texmacro[0xE8]='{\ifmmode \grave{e}\else \`{e}\fi}';
590     $texmacro[0xE9]='{\ifmmode \acute{e}\else \\\'{e}\fi}';
591     $texmacro[0xEA]='{\ifmmode \hat{e}\else \^{e}\fi}';
592     $texmacro[0xEB]='{\ifmmode \ddot{e}\else \"{e}\fi}';
593     $texmacro[0xEC]='{\ifmmode \grave{\imath}\else \`{\i}\fi}';
594     $texmacro[0xED]='{\ifmmode \acute{\imath}\else \\\'{\i}\fi}';
595     $texmacro[0xEE]='{\ifmmode \hat{\imath}\else \^{\i}\fi}';
596     $texmacro[0xEF]='{\ifmmode \ddot{\imath}\else \"{\i}\fi}';
597     $texmacro[0xF0]='{\dh}';
598     $texmacro[0xF1]='{\ifmmode \tilde{n}\else \~{n}\fi}';
599     $texmacro[0xF2]='{\ifmmode \grave{o}\else \`{o}\fi}';
600     $texmacro[0xF3]='{\ifmmode \acute{o}\else \\\'{o}\fi}';
601     $texmacro[0xF4]='{\ifmmode \hat{o}\else \^{o}\fi}';
602     $texmacro[0xF5]='{\ifmmode \tilde{o}\else \~{o}\fi}';
603     $texmacro[0xF6]='{\ifmmode \ddot{o}\else \"{o}\fi}';
604     $texmacro[0xF7]='{\ensuremath{\div }}';
605     $texmacro[0xF8]='{\o}';
606     $texmacro[0xF9]='{\ifmmode \grave{u}\else \`{u}\fi}';
607     $texmacro[0xFA]='{\ifmmode \acute{u}\else \\\'{u}\fi}';
608     $texmacro[0xFB]='{\ifmmode \hat{u}\else \^{u}\fi}';
609     $texmacro[0xFC]='{\ifmmode \ddot{u}\else \"{u}\fi}';
610     $texmacro[0xFD]='{\ifmmode \acute{y}\else \\\'{y}\fi}';
611     $texmacro[0xFE]='{\th}';
612     $texmacro[0xFF]='{\ifmmode \ddot{y}\else \"{y}\fi}';
613     # 0100..017F; Latin Extended-A
614     $texmacro[0x100]='{\ifmmode \bar{A}\else \={A}\fi}';
615     $texmacro[0x101]='{\ifmmode \bar{a}\else \={a}\fi}';
616     $texmacro[0x102]='{\ifmmode \breve{A}\else \u{A}\fi}';
617     $texmacro[0x103]='{\ifmmode \u{a}\else \u{a}\fi}';
618     $texmacro[0x104]='{\k{A}}';
619     $texmacro[0x105]='{\k{a}}';
620     $texmacro[0x106]='{\ifmmode \acute{C}\else \\\'{C}\fi}';
621     $texmacro[0x107]='{\ifmmode \acute{c}\else \\\'{c}\fi}';
622     $texmacro[0x108]='{\ifmmode \hat{C}\else \^{C}\fi}';
623     $texmacro[0x109]='{\ifmmode \hat{c}\else \^{c}\fi}';
624     $texmacro[0x10A]='{\ifmmode \dot{C}\else \.{C}\fi}';
625     $texmacro[0x10B]='{\ifmmode \dot{c}\else \.{c}\fi}';
626     $texmacro[0x10C]='{\ifmmode \check{C}\else \v{C}\fi}';
627     $texmacro[0x10D]='{\ifmmode \check{c}\else \v{c}\fi}';
628     $texmacro[0x10E]='{\ifmmode \check{D}\else \v{D}\fi}';
629     $texmacro[0x10F]='{\ifmmode \check{d}\else \v{d}\fi}';
630     $texmacro[0x110]='{\DJ}';
631     $texmacro[0x111]='{\dj}';
632     $texmacro[0x112]='{\ifmmode \bar{E}\else \={E}\fi}';
633     $texmacro[0x113]='{\ifmmode \bar{e}\else \={e}\fi}';
634     $texmacro[0x114]='{\ifmmode \breve{E}\else \u{E}\fi}';
635     $texmacro[0x115]='{\ifmmode \breve{e}\else \u{e}\fi}';
636     $texmacro[0x116]='{\ifmmode \dot{E}\else \.{E}\fi}';
637     $texmacro[0x117]='{\ifmmode \dot{e}\else \.{e}\fi}';
638     $texmacro[0x118]='{\ifmmode \k{E}\else \k{E}\fi}';
639     $texmacro[0x119]='{\k{e}}';
640     $texmacro[0x11A]='{\ifmmode \check{E}\else \v{E}\fi}';
641     $texmacro[0x11B]='{\ifmmode \check{e}\else \v{e}\fi}';
642     $texmacro[0x11C]='{\ifmmode \hat{G}\else \^{G}\fi}';
643     $texmacro[0x11D]='{\ifmmode \hat{g}\else \^{g}\fi}';
644     $texmacro[0x11E]='{\ifmmode \breve{G}\else \u{G}\fi}';
645     $texmacro[0x11F]='{\ifmmode \breve{g}\else \u{g}\fi}';
646     $texmacro[0x120]='{\ifmmode \dot{G}\else \.{G}\fi}';
647     $texmacro[0x121]='{\ifmmode \dot{g}\else \.{g}\fi}';
648     $texmacro[0x122]='{\ifmmode \mbox{\c{G}}\else \c{G}\fi}';
649     $texmacro[0x123]='{\ifmmode \mbox{\c{g}}\else \c{g}\fi}';
650     $texmacro[0x124]='{\ifmmode \hat{H}\else \^{H}\fi}';
651     $texmacro[0x125]='{\ifmmode \hat{h}\else \^{h}\fi}';
652     $texmacro[0x126]='{{\fontencoding{LELA}\selectfont\char40}}';
653     $texmacro[0x128]='{\ifmmode \tilde{I}\else \~{I}\fi}';
654     $texmacro[0x129]='{\ifmmode \tilde{\imath}\else \~{\i}\fi}';
655     $texmacro[0x12A]='{\ifmmode \bar{I}\else \={I}\fi}';
656     $texmacro[0x12B]='{\ifmmode \bar{\imath}\else \={\i}\fi}';
657     $texmacro[0x12C]='{\ifmmode \breve{I}\else \u{I}\fi}';
658     $texmacro[0x12D]='{\ifmmode \breve{\imath}\else \u{\i}\fi}';
659     $texmacro[0x12E]='{\k{I}}';
660     $texmacro[0x12F]='{\k{i}}';
661     $texmacro[0x130]='{\ifmmode \dot{I}\else \.{I}\fi}';
662     $texmacro[0x131]='{\ifmmode \imath \else \i \fi}';
663     $texmacro[0x132]='{IJ}';
664     $texmacro[0x133]='{ij}';
665     $texmacro[0x134]='{\ifmmode \hat{J}\else \^{J}\fi}';
666     $texmacro[0x135]='{\ifmmode \hat{\jmath}\else \^{\j}\fi}';
667     $texmacro[0x136]='{\ifmmode \mbox{\c{K}}\else \c{K}\fi}';
668     $texmacro[0x137]='{\ifmmode \mbox{\c{k}}\else \c{k}\fi}';
669     $texmacro[0x138]='{{\fontencoding{LELA}\selectfont\char91}}';
670     $texmacro[0x139]='{\ifmmode \acute{L}\else \\\'{L}\fi}';
671     $texmacro[0x13A]='{\ifmmode \acute{l}\else \\\'{l}\fi}';
672     $texmacro[0x13B]='{\ifmmode \mbox{\c{L}}\else \c{L}\fi}';
673     $texmacro[0x13C]='{\ifmmode \mbox{\c{l}}\else \c{l}\fi}';
674     $texmacro[0x13D]='{\ifmmode \check{L}\else \v{L}\fi}';
675     $texmacro[0x13E]='{\ifmmode \check{l}\else \v{l}\fi}';
676     $texmacro[0x13F]='{{\fontencoding{LELA}\selectfont\char201}}';
677     $texmacro[0x140]='{{\fontencoding{LELA}\selectfont\char202}}';
678     $texmacro[0x141]='{\L}';
679     $texmacro[0x142]='{\l}';
680     $texmacro[0x143]='{\ifmmode \acute{N}\else \\\'{N}\fi}';
681     $texmacro[0x144]='{\ifmmode \acute{n}\else \\\'{n}\fi}';
682     $texmacro[0x145]='{\ifmmode \mbox{\c{N}}\else \c{N}\fi}';
683     $texmacro[0x146]='{\ifmmode \mbox{\c{n}}\else \c{n}\fi}';
684     $texmacro[0x147]='{\ifmmode \check{N}\else \v{N}\fi}';
685     $texmacro[0x148]='{\ifmmode \check{n}\else \v{n}\fi}';
686     $texmacro[0x149]='{\'n}';
687     $texmacro[0x14A]='{\NG}';
688     $texmacro[0x14B]='{\ng}';
689     $texmacro[0x14C]='{\ifmmode \bar{O}\else \={O}\fi}';
690     $texmacro[0x14D]='{\ifmmode \bar{o}\else \={o}\fi}';
691     $texmacro[0x14E]='{\ifmmode \breve{O}\else \u{O}\fi}';
692     $texmacro[0x14F]='{\ifmmode \breve{o}\else \u{o}\fi}';
693     $texmacro[0x150]='{\ifmmode \mbox{\H{O}}\else \H{O}\fi}';
694     $texmacro[0x151]='{\ifmmode \mbox{\H{o}}\else \H{o}\fi}';
695     $texmacro[0x152]='{\OE}';
696     $texmacro[0x153]='{\oe}';
697     $texmacro[0x154]='{\ifmmode \acute{R}\else \\\'{R}\fi}';
698     $texmacro[0x155]='{\ifmmode \acute{r}\else \\\'{r}\fi}';
699     $texmacro[0x156]='{\ifmmode \mbox{\c{R}}\else \c{R}\fi}';
700     $texmacro[0x157]='{\ifmmode \mbox{\c{r}}\else \c{r}\fi}';
701     $texmacro[0x158]='{\ifmmode \check{R}\else \v{R}\fi}';
702     $texmacro[0x159]='{\ifmmode \check{r}\else \v{r}\fi}';
703     $texmacro[0x15A]='{\ifmmode \acute{S}\else \\\'{S}\fi}';
704     $texmacro[0x15B]='{\ifmmode \acute{s}\else \\\'{s}\fi}';
705     $texmacro[0x15C]='{\ifmmode \hat{S}\else \^{S}\fi}';
706     $texmacro[0x15D]='{\ifmmode \hat{s}\else \^{s}\fi}';
707     $texmacro[0x15E]='{\ifmmode \mbox{\c{S}}\else \c{S}\fi}';
708     $texmacro[0x15F]='{\ifmmode \mbox{\c{s}}\else \c{s}\fi}';
709     $texmacro[0x160]='{\ifmmode \check{S}\else \v{S}\fi}';
710     $texmacro[0x161]='{\ifmmode \check{s}\else \v{s}\fi}';
711     $texmacro[0x162]='{\ifmmode \mbox{\c{T}}\else \c{T}\fi}';
712     $texmacro[0x163]='{\ifmmode \mbox{\c{t}}\else \c{t}\fi}';
713     $texmacro[0x164]='{\ifmmode \check{T}\else \v{T}\fi}';
714     $texmacro[0x165]='{\ifmmode \check{t}\else \v{t}\fi}';
715     $texmacro[0x166]='{{\fontencoding{LELA}\selectfont\char47}}';
716     $texmacro[0x167]='{{\fontencoding{LELA}\selectfont\char63}}';
717     $texmacro[0x168]='{\ifmmode \tilde{U}\else \~{U}\fi}';
718     $texmacro[0x169]='{\ifmmode \tilde{u}\else \~{u}\fi}';
719     $texmacro[0x16A]='{\ifmmode \bar{U}\else \={U}\fi}';
720     $texmacro[0x16B]='{\ifmmode \bar{u}\else \={u}\fi}';
721     $texmacro[0x16C]='{\ifmmode \breve{U}\else \u{U}\fi}';
722     $texmacro[0x16D]='{\ifmmode \breve{u}\else \u{u}\fi}';
723     $texmacro[0x16E]='{\ifmmode \mathring{U}\else \r{U}\fi}';
724     $texmacro[0x16F]='{\ifmmode \mathring{u}\else \r{u}\fi}';
725     $texmacro[0x170]='{\ifmmode \mbox{\H{U}}\else \H{U}\fi}';
726     $texmacro[0x171]='{\ifmmode \mbox{\H{u}}\else \H{u}\fi}';
727     $texmacro[0x172]='{\ifmmode \k{U}\else \k{U}\fi}';
728     $texmacro[0x173]='{\k{u}}';
729     $texmacro[0x174]='{\ifmmode \hat{W}\else \^{W}\fi}';
730     $texmacro[0x175]='{\ifmmode \hat{w}\else \^{w}\fi}';
731     $texmacro[0x176]='{\ifmmode \hat{Y}\else \^{Y}\fi}';
732     $texmacro[0x177]='{\ifmmode \hat{y}\else \^{y}\fi}';
733     $texmacro[0x178]='{\ifmmode \ddot{Y}\else \"{Y}\fi}';
734     $texmacro[0x179]='{\ifmmode \acute{Z}\else \\\'{Z}\fi}';
735     $texmacro[0x17A]='{\ifmmode \acute{z}\else \\\'{z}\fi}';
736     $texmacro[0x17B]='{\ifmmode \dot{Z}\else \.{Z}\fi}';
737     $texmacro[0x17C]='{\ifmmode \dot{z}\else \.{z}\fi}';
738     $texmacro[0x17D]='{\ifmmode \check{Z}\else \v{Z}\fi}';
739     $texmacro[0x17E]='{\ifmmode \check{z}\else \v{z}\fi}';
740     # 1E00..1EFF; Latin Extended Additional
741     $texmacro[0x1E00]='{\ifmmode \mbox{\ucirc{A}}\else \ucirc{A}\fi}';
742     $texmacro[0x1E01]='{\ifmmode \mbox{\ucirc{a}}\else \ucirc{a}\fi}';
743     $texmacro[0x1E02]='{\ifmmode \dot{B}\else \.{B}\fi}';
744     $texmacro[0x1E03]='{\ifmmode \dot{b}\else \.{b}\fi}';
745     $texmacro[0x1E04]='{\ifmmode \mbox{\d{B}}\else \d{B}\fi}';
746     $texmacro[0x1E05]='{\ifmmode \mbox{\d{b}}\else \d{b}\fi}';
747     $texmacro[0x1E06]='{\ifmmode \mbox{\b{B}}\else \b{B}\fi}';
748     $texmacro[0x1E07]='{\ifmmode \mbox{\b{b}}\else \b{b}\fi}';
749     $texmacro[0x1E08]='{\ifmmode \mbox{\\\'{\c{C}}}\else \\\'{\c{C}}\fi}';
750     $texmacro[0x1E09]='{\ifmmode \mbox{\\\'{\c{c}}}\else \\\'{\c{c}}\fi}';
751     $texmacro[0x1E0A]='{\ifmmode \dot{D}\else \.{D}\fi}';
752     $texmacro[0x1E0B]='{\ifmmode \dot{d}\else \.{d}\fi}';
753     $texmacro[0x1E0C]='{\ifmmode \mbox{\d{D}}\else \d{D}\fi}';
754     $texmacro[0x1E0D]='{\ifmmode \mbox{\d{d}}\else \d{d}\fi}';
755     $texmacro[0x1E0E]='{\ifmmode \mbox{\b{D}}\else \b{D}\fi}';
756     $texmacro[0x1E0F]='{\ifmmode \mbox{\b{d}}\else \b{d}\fi}';
757     $texmacro[0x1E10]='{\ifmmode \mbox{\c{D}}\else \c{D}\fi}';
758     $texmacro[0x1E11]='{\ifmmode \mbox{\c{d}}\else \c{d}\fi}';
759     $texmacro[0x1E12]='{\ifmmode \mbox{\ucircumflex{D}}\else \ucircumflex{D}\fi}';
760     $texmacro[0x1E13]='{\ifmmode \mbox{\ucircumflex{d}}\else \ucircumflex{d}\fi}';
761     $texmacro[0x1E14]='{\ifmmode \mbox{\MacGrave{E}}\else \MacGrave{E}\fi}';
762     $texmacro[0x1E15]='{\ifmmode \mbox{\MacGrave{e}}\else \MacGrave{e}\fi}';
763     $texmacro[0x1E16]='{\ifmmode \mbox{\MacAcute{E}}\else \MacAcute{E}\fi}';
764     $texmacro[0x1E17]='{\ifmmode \mbox{\MacAcute{e}}\else \MacAcute{e}\fi}';
765     $texmacro[0x1E18]='{\ifmmode \mbox{\ucircumflex{E}}\else \ucircumflex{E}\fi}';
766     $texmacro[0x1E19]='{\ifmmode \mbox{\ucircumflex{e}}\else \ucircumflex{e}\fi}';
767     $texmacro[0x1E1A]='{\ifmmode \mbox{\utilde{E}}\else \utilde{E}\fi}';
768     $texmacro[0x1E1B]='{\ifmmode \mbox{\utilde{e}}\else \utilde{e}\fi}';
769     $texmacro[0x1E1C]='{\ifmmode \mbox{\c{\u{E}}}\else \c{\u{E}}\fi}';
770     $texmacro[0x1E1D]='{\ifmmode \mbox{\c{\u{e}}}\else \c{\u{e}}\fi}';
771     $texmacro[0x1E1E]='{\ifmmode \dot{F}\else \.{F}\fi}';
772     $texmacro[0x1E1F]='{\ifmmode \dot{f}\else \.{f}\fi}';
773     $texmacro[0x1E20]='{\ifmmode \bar{G}\else \={G}\fi}';
774     $texmacro[0x1E21]='{\ifmmode \bar{g}\else \={g}\fi}';
775     $texmacro[0x1E22]='{\ifmmode \dot{H}\else \.{H}\fi}';
776     $texmacro[0x1E23]='{\ifmmode \dot{h}\else \.{h}\fi}';
777     $texmacro[0x1E24]='{\ifmmode \mbox{\d{H}}\else \d{H}\fi}';
778     $texmacro[0x1E25]='{\ifmmode \mbox{\d{h}}\else \d{h}\fi}';
779     $texmacro[0x1E26]='{\ifmmode \ddot{H}\else \"{H}\fi}';
780     $texmacro[0x1E27]='{\ifmmode \ddot{h}\else \"{h}\fi}';
781     $texmacro[0x1E28]='{\ifmmode \mbox{\c{H}}\else \c{H}\fi}';
782     $texmacro[0x1E29]='{\ifmmode \mbox{\c{h}}\else \c{h}\fi}';
783     $texmacro[0x1E2A]='{\ifmmode \mbox{\ubreve{H}}\else \ubreve{H}\fi}';
784     $texmacro[0x1E2B]='{\ifmmode \mbox{\ubreve{h}}\else \ubreve{h}\fi}';
785     $texmacro[0x1E2C]='{\ifmmode \mbox{\utilde{I}}\else \utilde{I}\fi}';
786     $texmacro[0x1E2D]='{\ifmmode \mbox{\utilde{i}}\else \utilde{i}\fi}';
787     $texmacro[0x1E2E]='{\ifmmode \mbox{\DiaAcute{I}}\else \DiaAcute{I}\fi}';
788     $texmacro[0x1E2F]='{\ifmmode \mbox{\DiaAcute{\i}}\else \DiaAcute{\i}\fi}';
789     $texmacro[0x1E30]='{\ifmmode \acute{K}\else \\\'{K}\fi}';
790     $texmacro[0x1E31]='{\ifmmode \acute{k}\else \\\'{k}\fi}';
791     $texmacro[0x1E32]='{\ifmmode \mbox{\d{K}}\else \d{K}\fi}';
792     $texmacro[0x1E33]='{\ifmmode \mbox{\d{k}}\else \d{k}\fi}';
793     $texmacro[0x1E34]='{\ifmmode \mbox{\b{K}}\else \b{K}\fi}';
794     $texmacro[0x1E35]='{\ifmmode \mbox{\b{k}}\else \b{k}\fi}';
795     $texmacro[0x1E36]='{\ifmmode \mbox{\d{L}}\else \d{L}\fi}';
796     $texmacro[0x1E37]='{\ifmmode \mbox{\d{l}}\else \d{l}\fi}';
797     $texmacro[0x1E38]='{\ifmmode \udot{\bar{L}}\else \udot{\={L}}\fi}';
798     $texmacro[0x1E39]='{\ifmmode \udot{\bar{l}}\else \udot{\={l}}\fi}';
799     $texmacro[0x1E3A]='{\ifmmode \mbox{\b{L}}\else \b{L}\fi}';
800     $texmacro[0x1E3B]='{\ifmmode \mbox{\b{l}}\else \b{l}\fi}';
801     $texmacro[0x1E3C]='{\ifmmode \mbox{\ucircumflex{L}}\else \ucircumflex{L}\fi}';
802     $texmacro[0x1E3D]='{\ifmmode \mbox{\ucircumflex{l}}\else \ucircumflex{l}\fi}';
803     $texmacro[0x1E3E]='{\ifmmode \acute{M}\else \\\'{M}\fi}';
804     $texmacro[0x1E3F]='{\ifmmode \acute{m}\else \\\'{m}\fi}';
805     $texmacro[0x1E40]='{\ifmmode \dot{M}\else \.{M}\fi}';
806     $texmacro[0x1E41]='{\ifmmode \dot{m}\else \.{m}\fi}';
807     $texmacro[0x1E42]='{\ifmmode \mbox{\d{M}}\else \d{M}\fi}';
808     $texmacro[0x1E43]='{\ifmmode \mbox{\d{m}}\else \d{m}\fi}';
809     $texmacro[0x1E44]='{\ifmmode \dot{N}\else \.{N}\fi}';
810     $texmacro[0x1E45]='{\ifmmode \dot{n}\else \.{n}\fi}';
811     $texmacro[0x1E46]='{\ifmmode \mbox{\d{N}}\else \d{N}\fi}';
812     $texmacro[0x1E47]='{\ifmmode \mbox{\d{n}}\else \d{n}\fi}';
813     $texmacro[0x1E48]='{\ifmmode \mbox{\b{N}}\else \b{N}\fi}';
814     $texmacro[0x1E49]='{\ifmmode \mbox{\b{n}}\else \b{n}\fi}';
815     $texmacro[0x1E4A]='{\ifmmode \mbox{\ucircumflex{N}}\else \ucircumflex{N}\fi}';
816     $texmacro[0x1E4B]='{\ifmmode \mbox{\ucircumflex{n}}\else \ucircumflex{n}\fi}';
817     $texmacro[0x1E4C]='{\ifmmode \mbox{\TilAcute{O}}\else \TilAcute{O}\fi}';
818     $texmacro[0x1E4D]='{\ifmmode \mbox{\TilAcute{o}}\else \TilAcute{o}\fi}';
819     $texmacro[0x1E4E]='{\ifmmode \mbox{\TilDiaresis{O}}\else \TilDiaresis{O}\fi}';
820     $texmacro[0x1E4F]='{\ifmmode \mbox{\TilDiaresis{o}}\else \TilDiaresis{o}\fi}';
821     $texmacro[0x1E50]='{\ifmmode \mbox{\MacGrave{O}}\else \MacGrave{O}\fi}';
822     $texmacro[0x1E51]='{\ifmmode \mbox{\MacGrave{o}}\else \MacGrave{o}\fi}';
823     $texmacro[0x1E52]='{\ifmmode \mbox{\MacAcute{O}}\else \MacAcute{O}\fi}';
824     $texmacro[0x1E53]='{\ifmmode \mbox{\MacAcute{o}}\else \MacAcute{o}\fi}';
825     $texmacro[0x1E54]='{\ifmmode \acute{P}\else \\\'{P}\fi}';
826     $texmacro[0x1E55]='{\ifmmode \acute{p}\else \\\'{p}\fi}';
827     $texmacro[0x1E56]='{\ifmmode \dot{P}\else \.{P}\fi}';
828     $texmacro[0x1E57]='{\ifmmode \dot{p}\else \.{p}\fi}';
829     $texmacro[0x1E58]='{\ifmmode \dot{R}\else \.{R}\fi}';
830     $texmacro[0x1E59]='{\ifmmode \dot{r}\else \.{r}\fi}';
831     $texmacro[0x1E5A]='{\ifmmode \mbox{\d{R}}\else \d{R}\fi}';
832     $texmacro[0x1E5B]='{\ifmmode \mbox{\d{r}}\else \d{r}\fi}';
833     $texmacro[0x1E5C]='{\ifmmode \udot{\bar{R}}\else \udot{\={R}}\fi}';
834     $texmacro[0x1E5D]='{\ifmmode \udot{\bar{r}}\else \udot{\={r}}\fi}';
835     $texmacro[0x1E5E]='{\ifmmode \mbox{\b{R}}\else \b{R}\fi}';
836     $texmacro[0x1E5F]='{\ifmmode \mbox{\b{r}}\else \b{r}\fi}';
837     $texmacro[0x1E60]='{\ifmmode \dot{S}\else \.{S}\fi}';
838     $texmacro[0x1E61]='{\ifmmode \dot{s}\else \.{s}\fi}';
839     $texmacro[0x1E62]='{\ifmmode \mbox{\d{S}}\else \d{S}\fi}';
840     $texmacro[0x1E63]='{\ifmmode \mbox{\d{s}}\else \d{s}\fi}';
841     $texmacro[0x1E64]='{\ifmmode \acute{S}\else \\\'{S}\fi}';
842     $texmacro[0x1E65]='{\ifmmode \acute{s}\else \\\'{s}\fi}';
843     $texmacro[0x1E66]='{\ifmmode \mbox{\CaronDot{S}}\else \CaronDot{S}\fi}';
844     $texmacro[0x1E67]='{\ifmmode \mbox{\CaronDot{s}}\else \CaronDot{s}\fi}';
845     $texmacro[0x1E68]='{\ifmmode \udot{\dot{S}}\else \udot{\.{S}}\fi}';
846     $texmacro[0x1E69]='{\ifmmode \udot{\dot{s}}\else \udot{\.{s}}\fi}';
847     $texmacro[0x1E6A]='{\ifmmode \dot{T}\else \.{T}\fi}';
848     $texmacro[0x1E6B]='{\ifmmode \dot{t}\else \.{t}\fi}';
849     $texmacro[0x1E6C]='{\ifmmode \mbox{\d{T}}\else \d{T}\fi}';
850     $texmacro[0x1E6D]='{\ifmmode \mbox{\d{t}}\else \d{t}\fi}';
851     $texmacro[0x1E6E]='{\ifmmode \mbox{\b{T}}\else \b{T}\fi}';
852     $texmacro[0x1E6F]='{\ifmmode \mbox{\b{t}}\else \b{t}\fi}';
853     $texmacro[0x1E70]='{\ifmmode \mbox{\ucircumflex{T}}\else \ucircumflex{T}\fi}';
854     $texmacro[0x1E71]='{\ifmmode \mbox{\ucircumflex{t}}\else \ucircumflex{t}\fi}';
855     $texmacro[0x1E72]='{\ifmmode \mbox{\udiaresis{U}}\else \udiaresis{U}\fi}';
856     $texmacro[0x1E73]='{\ifmmode \mbox{\udiaresis{u}}\else \udiaresis{u}\fi}';
857     $texmacro[0x1E74]='{\ifmmode \mbox{\utilde{U}}\else \utilde{U}\fi}';
858     $texmacro[0x1E75]='{\ifmmode \mbox{\utilde{u}}\else \utilde{u}\fi}';
859     $texmacro[0x1E76]='{\ifmmode \mbox{\ucircumflex{U}}\else \ucircumflex{U}\fi}';
860     $texmacro[0x1E77]='{\ifmmode \mbox{\ucircumflex{u}}\else \ucircumflex{u}\fi}';
861     $texmacro[0x1E78]='{\ifmmode \mbox{\TilAcute{U}}\else \TilAcute{U}\fi}';
862     $texmacro[0x1E79]='{\ifmmode \mbox{\TilAcute{u}}\else \TilAcute{u}\fi}';
863     $texmacro[0x1E7A]='{\ifmmode \mbox{\MacDiaresis{U}}\else \MacDiaresis{U}\fi}';
864     $texmacro[0x1E7B]='{\ifmmode \mbox{\MacDiaresis{u}}\else \MacDiaresis{u}\fi}';
865     $texmacro[0x1E7C]='{\ifmmode \tilde{V}\else \~{V}\fi}';
866     $texmacro[0x1E7D]='{\ifmmode \tilde{v}\else \~{v}\fi}';
867     $texmacro[0x1E7E]='{\ifmmode \mbox{\d{V}}\else \d{V}\fi}';
868     $texmacro[0x1E7F]='{\ifmmode \mbox{\d{v}}\else \d{v}\fi}';
869     $texmacro[0x1E80]='{\ifmmode \grave{W}\else \`{W}\fi}';
870     $texmacro[0x1E81]='{\ifmmode \grave{w}\else \`{w}\fi}';
871     $texmacro[0x1E82]='{\ifmmode \acute{W}\else \\\'{W}\fi}';
872     $texmacro[0x1E83]='{\ifmmode \acute{w}\else \\\'{w}\fi}';
873     $texmacro[0x1E84]='{\ifmmode \ddot{W}\else \"{W}\fi}';
874     $texmacro[0x1E85]='{\ifmmode \ddot{w}\else \"{w}\fi}';
875     $texmacro[0x1E86]='{\ifmmode \dot{W}\else \.{W}\fi}';
876     $texmacro[0x1E87]='{\ifmmode \dot{w}\else \.{w}\fi}';
877     $texmacro[0x1E88]='{\ifmmode \mbox{\d{W}}\else \d{W}\fi}';
878     $texmacro[0x1E89]='{\ifmmode \mbox{\d{w}}\else \d{w}\fi}';
879     $texmacro[0x1E8A]='{\ifmmode \dot{X}\else \.{X}\fi}';
880     $texmacro[0x1E8B]='{\ifmmode \dot{x}\else \.{x}\fi}';
881     $texmacro[0x1E8C]='{\ifmmode \mbox{\d{X}}\else \d{X}\fi}';
882     $texmacro[0x1E8D]='{\ifmmode \mbox{\d{x}}\else \d{x}\fi}';
883     $texmacro[0x1E8E]='{\ifmmode \dot{Y}\else \.{Y}\fi}';
884     $texmacro[0x1E8F]='{\ifmmode \dot{y}\else \.{y}\fi}';
885     $texmacro[0x1E90]='{\ifmmode \hat{Z}\else \^{Z}\fi}';
886     $texmacro[0x1E91]='{\ifmmode \hat{z}\else \^{z}\fi}';
887     $texmacro[0x1E92]='{\ifmmode \mbox{\d{Z}}\else \d{Z}\fi}';
888     $texmacro[0x1E93]='{\ifmmode \mbox{\d{z}}\else \d{z}\fi}';
889     $texmacro[0x1E94]='{\ifmmode \mbox{\b{Z}}\else \b{Z}\fi}';
890     $texmacro[0x1E95]='{\ifmmode \mbox{\b{z}}\else \b{z}\fi}';
891     $texmacro[0x1E96]='{\ifmmode \mbox{\b{h}}\else \b{h}\fi}';
892     $texmacro[0x1E97]='{\ifmmode \ddot{t}\else \"{t}\fi}';
893     $texmacro[0x1E98]='{\ifmmode \mathring{w}\else \r{w}\fi}';
894     $texmacro[0x1E99]='{\ifmmode \mathring{y}\else \r{y}\fi}';
895 }