summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/ucs
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/ucs')
-rw-r--r--Master/texmf-dist/doc/latex/ucs/FAQ77
-rw-r--r--Master/texmf-dist/doc/latex/ucs/INSTALL35
-rw-r--r--Master/texmf-dist/doc/latex/ucs/LICENSE49
-rw-r--r--Master/texmf-dist/doc/latex/ucs/README33
-rw-r--r--Master/texmf-dist/doc/latex/ucs/VERSION1
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/ascii.ucf.gzbin0 -> 909 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/boxdraw.ucf.gzbin0 -> 1678 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/braille.ucf.gzbin0 -> 1583 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/cjk-bg5.ucf.gzbin0 -> 100982 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/cjk-gb.ucf.gzbin0 -> 52444 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/cjk-globals.ucf.gzbin0 -> 252 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/cjk-hangul.ucf.gzbin0 -> 19205 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/cjk-jis.ucf.gzbin0 -> 51055 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/combining.ucf.gzbin0 -> 707 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/control.ucf.gzbin0 -> 954 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/ctrlglyphs.ucf.gzbin0 -> 841 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/currency.ucf.gzbin0 -> 205 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/cyrillic.ucf.gzbin0 -> 2242 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/devanagari.ucf.gzbin0 -> 1057 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/ethiopic.ucf.gzbin0 -> 2717 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/geometric.ucf.gzbin0 -> 245 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/greek.ucf.gzbin0 -> 2762 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/hebrew.ucf.gzbin0 -> 1036 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/ipa.ucf.gzbin0 -> 1948 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/klingon.ucf.gzbin0 -> 489 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/latin-a.ucf.gzbin0 -> 1182 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/latin-b.ucf.gzbin0 -> 1262 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/latin-e-a.ucf.gzbin0 -> 2572 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/latin1.ucf.gzbin0 -> 1196 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/math.ucf.gzbin0 -> 3352 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/mathalpha.ucf.gzbin0 -> 5775 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/miscsymb.ucf.gzbin0 -> 288 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/modifier.ucf.gzbin0 -> 282 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/mongolian.ucf.gzbin0 -> 1600 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/pifont.ucf.gzbin0 -> 2488 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/punct.ucf.gzbin0 -> 372 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/supersub.ucf.gzbin0 -> 238 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/tags.ucf.gzbin0 -> 1354 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/telugu.ucf.gzbin0 -> 1331 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ucs/config/thai.ucf.gzbin0 -> 1006 bytes
-rwxr-xr-xMaster/texmf-dist/doc/latex/ucs/discovermacro.pl745
-rw-r--r--Master/texmf-dist/doc/latex/ucs/languages.ps.gzbin0 -> 330394 bytes
-rwxr-xr-xMaster/texmf-dist/doc/latex/ucs/latexout.pl36
-rw-r--r--Master/texmf-dist/doc/latex/ucs/ltxmacrs.txt3371
-rwxr-xr-xMaster/texmf-dist/doc/latex/ucs/makeunidef.pl1565
-rw-r--r--Master/texmf-dist/doc/latex/ucs/ucs.ps.gzbin0 -> 60572 bytes
46 files changed, 5912 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/ucs/FAQ b/Master/texmf-dist/doc/latex/ucs/FAQ
new file mode 100644
index 00000000000..76f4949adaf
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/FAQ
@@ -0,0 +1,77 @@
+
+Question: LaTeX complains about missing commands I have not used. Why?
+
+Answer: The ucs package uses many macros from many packages. You have
+to include these into your preamble. To find out which package
+contains the missing macro, you can use e.g.
+ perl discovermacro.pl \themissingmacro
+or
+ perl discovermacro.pl mydocument.log
+or use the online version at
+ http://www.unruh.de/DniQ/cgi/discovermacro.cgi
+or have a look at the human readable file
+ ltxmacrs.txt.
+
+
+
+Question: The package complains about the missing file uni-global.def
+(and other files), but they are in the TeX search path.
+
+Answer: Perhaps you have put the ucs/data directory in a directory
+where TeX does not search recursively (e.g. your private TeX directory
+or the current directory). You can change this by putting the unicode
+package into a recursively searched directory or by putting the files
+in ucs/data directly into the searched directory at top level.
+
+
+
+Question: When I try to activate options in \usepackage[...]{ucs},
+LaTeX complains about an option clash.
+
+Answer: ucs.sty probably already got loaded via
+\usepackage[utf8x]{inputenc}. Try loading ucs.sty first or set the
+options with \SetUnicodeOption.
+
+
+
+Question: Why is the package named ucs.sty, but the directory unicode?
+(Or: Why are you mixing the names of two different standards)
+
+Answer: I started with unicode.sty, but there was an name clash with
+Sebastian Rahtz' jadetex/passivetex package. And I think, applying to
+practical solutions like this one, it is OK to use Unicode and UCS as
+synonyms. (UCS is an ISO standard, which has goals similar to those of
+Unicode, both standards agreed to stay compatible.)
+
+
+
+Question: I get an "TeX capacity exceeded" error. What can I do?
+
+Answer: Try the option "savemem". This will reduce the memory
+consumption of ucs.sty, especially if you use CJK glyphs, but will
+also slow down operation significantly. Or increase TeX's capacity, if
+this is feasible in your situation.
+
+
+
+Question (Esperanto): LATIN SMALL LETTER H WITH CIRCUMFLEX is ugly. ^h
+with babel package option esperanto is not. Why?
+
+Answer: esperanto.ldf has its own macro for ^h, ucs uses the standard
+\^h. Add
+ \DeclareTextCompositeCommand{\^}{T1}{h}{h\llap{\^{}}}
+ \DeclareTextCompositeCommand{\^}{OT1}{h}{h\llap{\^{}}}
+to your preamble, then \^h and the corresponding unicode character will
+yield the same as ^h.
+
+
+
+Question: When a line of my document displayed in the TeX terminal
+output or logfile, the non ascii characters are replaced by garbage. Why?
+
+Answer: The first possibility is, that you don't read the output with
+a unicode enabled terminal. The second is, that TeX replaces some
+bytes by ^^XX sequences. I do not know how to tell TeX which
+characters are to be escaped that way (tell me if you do). If no other
+mean helps, you can use latexout.pl which converts such output to
+UTF-8.
diff --git a/Master/texmf-dist/doc/latex/ucs/INSTALL b/Master/texmf-dist/doc/latex/ucs/INSTALL
new file mode 100644
index 00000000000..48af7a12277
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/INSTALL
@@ -0,0 +1,35 @@
+
+To install this LaTeX UTF-8 support, simply put the files ucs.sty,
+utf8x.def, ucsencs.def and data/* somewhere in your TeX-path. If you
+want CJK characters, you need the c??enc.def files, too. For Klingon
+you need lklenc.def and lklkli.fd.
+
+You may have to run some command like mktexlsr, lest the files will
+not be found by TeX. What to do, however, is distribution dependent.
+
+Warning: If you install the files into some directory, where TeX does
+not search recursively (usually the current directory and your
+personal TeX directory are of that kind), you have to put the contents
+of data directly into that directory.
+
+If you don't install data/uninames.dat, you will save abount 300 KB,
+but you won't get the full names of the characters in error messages.
+
+If you have added glyphs macros in one of the files in config (see
+perldoc makeunidef.pl for information on the config file format), you
+have to recreate the files in data.
+
+First you need UnicodeData.txt from
+
+ http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
+
+(you may gzip it after downloading) and then you can recreate the files
+using
+
+ perl makeunidef.pl -t data --nocomments config/*.ucf config/*.ucf.gz
+
+You may supply another target directory instead of data, e.g. some
+directory in your TeX-path. makeunidef.pl will not delete or overwrite
+any files it has not created itself. If you add "--exclude
+cjkbg5,cjkgb,cjkjis,cjkhangul", no CJK characters will not be included,
+saving more than 1 MB of disk space.
diff --git a/Master/texmf-dist/doc/latex/ucs/LICENSE b/Master/texmf-dist/doc/latex/ucs/LICENSE
new file mode 100644
index 00000000000..6aea924f946
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/LICENSE
@@ -0,0 +1,49 @@
+
+Copyright 2000 by Dominique Unruh <dominique@unruh.de>
+
+This program may be distributed and/or modified under the conditions
+of the LaTeX Project Public License, either version 1.2 of this
+license or (at your option) any later version, with the following
+extensions:
+
+- A distribution may omit the files data/uninames.dat and
+ ucs-doc.dvi
+
+- The directory structure may be changed
+
+- A distribution may split the package into smaller packages, as long
+ as this fact is visible to the user and the user may easily install
+ the complete UCS package (e.g. by installing all small packages).
+
+- The data/uni-*.def files may be regenerated via makeunidef.pl
+ from a valid set of config/*.def files without changing the former's
+ names, whereby a valid set of config/*.ucf files consists of the
+ original files and any local additions in separate files, whereby
+ any characters defined in these should only be accessible via an
+ option which starts with the five letters 'local'. (See the
+ documentation files for a description of the technical terms and
+ names in this paragraph).
+
+- Files in the unsupported/ directory may be omitted.
+
+- Scripts (i.e. executable files which are not TeX input), may be
+ renamed, as long as the original name without suffix is part of the
+ new name (e.g. discovermacro.pl -> latex-ucs-discovermacro) and as
+ long this is stated in some documentation file shipped with the
+ distribution. Occurrences of the scripts' names in the documentation
+ may be changed to match the new name.
+
+- Parts of files explicitly marked as "configuration data" may be
+ changed by distributions, as long this is stated in a comment near
+ the place of that modification and in some documentation file
+ shipped with the distribution.
+
+This program consists of all files found at
+http://www.unruh.de/DniQ/latex/unicode/ucs.
+
+The latest version of this license (without the extensions mentioned
+above) can be found in
+ http://www.latex-project.org/lppl.txt
+and version 1.1 or later is part of all distributions of LaTeX
+version 1999/06/01 or later.
+ \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/ucs/README b/Master/texmf-dist/doc/latex/ucs/README
new file mode 100644
index 00000000000..1bc7e4c39b5
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/README
@@ -0,0 +1,33 @@
+
+=== ucs.sty ===
+
+This package contains support for using UTF-8 as input encoding in
+LaTeX documents.
+
+See INSTALL for installation instructions.
+
+The simplest use of this package is to add
+ \usepackage{ucs}
+ \usepackage[utf8x]{inputenc}
+to your header. You may even omit the first line in many cases. Often
+however you need to load additional packages etc., see
+languages.ps.gz for language-specific examples.
+
+The tables with LaTeX macros for the glyphs does not contain many
+entries yet. If your particular script is not supported, and you add
+the macros to the config files (see INSTALL and perldoc
+makeunidef.pl), please mail me those config files, and together with
+informations, if special packages or LaTeX versions are needed for
+these macros. Please do only supply macros, which generate aesthetic
+glyphs, no hacks. See also
+http://www.unruh.de/DniQ/latex/unicode/submitchar.html.
+
+The most recent version of this package can be found here:
+http://www.unruh.de/DniQ/latex/unicode/
+
+=========
+
+(C) 2000 by Dominique Unruh <dominique@unruh.de>
+
+See the LICENSE file for licensing informations.
+
diff --git a/Master/texmf-dist/doc/latex/ucs/VERSION b/Master/texmf-dist/doc/latex/ucs/VERSION
new file mode 100644
index 00000000000..4db275aacb1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/VERSION
@@ -0,0 +1 @@
+Unicode support for LaTeX. Build date: 2004-17-10 21:38.
diff --git a/Master/texmf-dist/doc/latex/ucs/config/ascii.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/ascii.ucf.gz
new file mode 100644
index 00000000000..6edb3fe60ea
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/ascii.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/boxdraw.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/boxdraw.ucf.gz
new file mode 100644
index 00000000000..b218e80fd01
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/boxdraw.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/braille.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/braille.ucf.gz
new file mode 100644
index 00000000000..c3011e84a90
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/braille.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-bg5.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-bg5.ucf.gz
new file mode 100644
index 00000000000..6c7ebb05d8c
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-bg5.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-gb.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-gb.ucf.gz
new file mode 100644
index 00000000000..443794df27a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-gb.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-globals.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-globals.ucf.gz
new file mode 100644
index 00000000000..9bb2a9efb5e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-globals.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-hangul.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-hangul.ucf.gz
new file mode 100644
index 00000000000..e476f19fa5d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-hangul.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-jis.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-jis.ucf.gz
new file mode 100644
index 00000000000..51fc9152302
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-jis.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/combining.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/combining.ucf.gz
new file mode 100644
index 00000000000..191ce00af59
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/combining.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/control.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/control.ucf.gz
new file mode 100644
index 00000000000..8b9b2a4da8e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/control.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/ctrlglyphs.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/ctrlglyphs.ucf.gz
new file mode 100644
index 00000000000..2f338e3ef37
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/ctrlglyphs.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/currency.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/currency.ucf.gz
new file mode 100644
index 00000000000..2cce8b24dcc
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/currency.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/cyrillic.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cyrillic.ucf.gz
new file mode 100644
index 00000000000..a8ddbdd4507
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/cyrillic.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/devanagari.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/devanagari.ucf.gz
new file mode 100644
index 00000000000..17d23863f87
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/devanagari.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/ethiopic.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/ethiopic.ucf.gz
new file mode 100644
index 00000000000..da49e64cbdb
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/ethiopic.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/geometric.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/geometric.ucf.gz
new file mode 100644
index 00000000000..d46932a4acb
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/geometric.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/greek.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/greek.ucf.gz
new file mode 100644
index 00000000000..9a44778c7a3
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/greek.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/hebrew.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/hebrew.ucf.gz
new file mode 100644
index 00000000000..0ff881f52bf
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/hebrew.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/ipa.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/ipa.ucf.gz
new file mode 100644
index 00000000000..a267dfa068d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/ipa.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/klingon.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/klingon.ucf.gz
new file mode 100644
index 00000000000..b52421e6e11
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/klingon.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/latin-a.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/latin-a.ucf.gz
new file mode 100644
index 00000000000..46f8ca00843
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/latin-a.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/latin-b.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/latin-b.ucf.gz
new file mode 100644
index 00000000000..55189a42cd7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/latin-b.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/latin-e-a.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/latin-e-a.ucf.gz
new file mode 100644
index 00000000000..9f7b4046192
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/latin-e-a.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/latin1.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/latin1.ucf.gz
new file mode 100644
index 00000000000..2dc80f3f284
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/latin1.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/math.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/math.ucf.gz
new file mode 100644
index 00000000000..aefa1b541b0
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/math.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/mathalpha.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/mathalpha.ucf.gz
new file mode 100644
index 00000000000..c54806c343a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/mathalpha.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/miscsymb.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/miscsymb.ucf.gz
new file mode 100644
index 00000000000..30ccd283c0c
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/miscsymb.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/modifier.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/modifier.ucf.gz
new file mode 100644
index 00000000000..8e6db2d5415
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/modifier.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/mongolian.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/mongolian.ucf.gz
new file mode 100644
index 00000000000..169a5811a66
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/mongolian.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/pifont.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/pifont.ucf.gz
new file mode 100644
index 00000000000..194a93c88f3
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/pifont.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/punct.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/punct.ucf.gz
new file mode 100644
index 00000000000..2175de16f05
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/punct.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/supersub.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/supersub.ucf.gz
new file mode 100644
index 00000000000..4cd592845ec
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/supersub.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/tags.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/tags.ucf.gz
new file mode 100644
index 00000000000..69f38ed63d3
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/tags.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/telugu.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/telugu.ucf.gz
new file mode 100644
index 00000000000..aebf0b6c2a1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/telugu.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/config/thai.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/thai.ucf.gz
new file mode 100644
index 00000000000..5d3ebc3b997
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/config/thai.ucf.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/discovermacro.pl b/Master/texmf-dist/doc/latex/ucs/discovermacro.pl
new file mode 100755
index 00000000000..8b595b48f3d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/discovermacro.pl
@@ -0,0 +1,745 @@
+#!/usr/bin/perl -T
+
+# The content of the following variable is configuration data:
+@DiscoverMacro::datafile_path = ('program','.');
+
+=head1 NAME
+
+discovermacro.pl - Discover which LaTeX package contains a missing macro
+
+=head1 SYNOPSIS
+
+B<discovermacro.pl> \I<themissingmacro>
+
+B<discovermacro.pl> I<mydocument.log>
+
+B<discovermacro.pl>
+
+=head1 DESCRIPTION
+
+The ucs package uses many macros from many packages which have to be
+included with B<\usepackage> before the inclusion of F<ucs.sty>.
+
+The missing macro can be given directly as parameter. Note that the
+backslash must be included, so with most shells you either need to
+quote it or write a double backslash (e. g. \\cyrc or '\cyrc').
+
+An alternative way is to give a LaTeX log file as parameter in which
+case the missing macros are parsed from it.
+
+If no argument is given, the newest LaTeX log file in the current
+directory is used as default.
+
+=head1 ALTERNATIVES
+
+B<discovermacro.pl> uses the data file F<ltxmacrs.txt> which is human
+readable, thus can be used directly.
+
+F<http://www.unruh.de/DniQ/cgi/discovermacro.cgi> provides an online
+version of this script.
+
+=cut
+
+use strict;
+
+package DiscoverMacro::H;
+
+sub cleanline($) {
+ my $line = shift;
+ chomp $line;
+ $line =~ s/^\s*//;
+ $line =~ s/^\#.*//;
+ return $line;
+}
+
+
+sub readline2($) {
+ my $file = shift;
+ my $line = <$file>;
+ while ($line =~ /\\\n?$/s) {
+ $line =~ s/\\\n?$//;
+ my $next = <$file>;
+ $next =~ s/^\s*//;
+ $line .= $next;
+ }
+ return $line;
+}
+
+sub escape($$) {
+ my ($format,$text) = @_;
+ if ($format eq 'text/plain') {
+ $text =~ s/\[\[\[.*?\]\]\]//g;
+ } elsif ($format eq 'text/html') {
+ $text =~ s{[<>&]|(\n[ \t]*)}{ my $x=$&;
+ if ($x =~ /^\n/) {
+ $x=~s/\t/ /g;
+ $x=~s/ /&nbsp;/g;
+ "<br>$x";
+ } else {
+ sprintf "&#%d;", ord $& }}egs;
+ $text =~ s{\[\[\[.+?\]\]\]}{
+ my ($t) = ($& =~ /\[\[\[(.+?)\]\]\]/);
+ my @t = split / /,$t;
+ my $r = '';
+ if ($t[0] eq 'NAME') {
+ $r = "<a name=\"$t[1]\">";
+ } elsif ($t[0] eq 'HREF') {
+ $r = "<a href=\"$t[1]\">";
+ } elsif ($t[0] eq '/NAME') {
+ $r = "</a>";
+ } elsif ($t[0] eq '/HREF') {
+ $r = "</a>";
+ } else {
+ warn "escape($format,[[[$t[0]...]]])";
+ }
+ }ge;
+ return $text;
+ } elsif ($format eq 'identifier') {
+ $text =~ s/[^a-z0-9]/
+ sprintf "_%02X", ord $&/ge;
+ } else {
+ warn "Unknown format $format";
+ return escape('text/plain',$text);
+ }
+ return $text;
+}
+
+sub header($$) {
+ my ($format,$header) = @_;
+ $header = escape($format,$header);
+ if ($format eq 'text/plain') {
+ my $len = length $header;
+ return "\n$header\n".('=' x $len)."\n";
+ } elsif ($format eq 'text/html') {
+ return "<p><table border=1>\n<tr><th align=left colspan=2>$header</th></tr>\n";
+ } else {
+ warn "Unknown format $format";
+ return header('text/plain',$header);
+ }
+}
+
+sub footer($) {
+ my ($format) = @_;
+ if ($format eq 'text/plain') {
+ return "\n";
+ } elsif ($format eq 'text/html') {
+ return "</table></p>\n\n";
+ } else {
+ warn "Unknown format $format";
+ return footer('text/plain');
+ }
+}
+
+sub line($$) {
+ my ($format,$line) = @_;
+ $line = escape $format, $line;
+ if ($format eq 'text/plain') {
+ return "$line\n";
+ } elsif ($format eq 'text/html') {
+ return "<tr><td colspan=2>$line</td></tr>\n";
+ } else {
+ warn "Unknown format $format";
+ return line($format,$line);
+ }
+}
+
+
+sub twocol($$$) {
+ my ($format,$col1,$col2) = @_;
+ $col1 = escape $format, $col1;
+ $col2 = escape $format, $col2;
+ if ($format eq 'text/plain') {
+ return "$col1\t$col2\n";
+ } elsif ($format eq 'text/html') {
+ return "<tr><td>$col1&nbsp;&nbsp;&nbsp;</td><td>$col2</td></tr>\n";
+ } else {
+ warn "Unknown format $format";
+ return twocol('text/plain',$col1,$col2);
+ }
+}
+
+
+package DiscoverMacro::Feature;
+
+use vars qw/$obj_count/;
+$obj_count = 0;
+
+sub new($$$) {
+ my ($proto,$db,$name) = @_;
+ $obj_count++;
+ my $class = ref($proto) || $proto;
+ my $self = {};
+ bless $self, $class;
+ $self->{name} = $name;
+ $self->{db} = $db;
+ $self->loadfeature();
+ return $self;
+}
+
+sub DESTROY {
+ $obj_count--;
+}
+
+sub getfontenc($) {
+ my $self = shift;
+ return $self->{fontencoding};
+}
+
+sub getlatexcmd($) {
+ $_[0]->{latexcmd};
+}
+
+sub getneeds($) {
+ my $self = shift;
+ return $self->{needs};
+}
+
+sub getpackages($) {
+ my $self = shift;
+ return $self->{packages};
+}
+
+sub getpackages_ascode($) {
+ my $self = shift;
+ return join '', map {
+ my $p = $_;
+ $p = "{$_}" unless $p =~ /\}$/;
+ "\\usepackage$p\n";
+ } @{$self->{packages}};
+}
+
+
+sub loadfeature($) {
+ my $self = shift;
+ my $pos = $self->{db}->getfeaturepos($self->{name});
+ unless (defined $pos) {
+ $self->{undefined} = 1;
+ return;
+ }
+ my $file = $self->{db}->getfileat($pos);
+ my $line;
+ my $lastfile = undef;
+ while (defined ($line = DiscoverMacro::H::readline2($file))) {
+ my $tlastfile;
+ $line = DiscoverMacro::H::cleanline $line;
+ next if $line eq '';
+ my @line = split ' ',$line;
+ if ($line[0] eq 'FONTENCODING') {
+ warn "Two fontencodings in feature $self->{name}"
+ if defined $self->{fontencoding};
+ $self->{fontencoding} = $line[1];
+ } elsif ($line[0] eq 'CTAN') {
+ if (!defined $lastfile) {
+ die "CTAN not preceded by FILE in feature $self->{name}"; }
+ my $ctan = $self->{ctan};
+ warn "Two CTAN locations defined for file $lastfile ".
+ "in feature $self->{name}" if defined $$ctan{$lastfile};
+ $$ctan{$lastfile} = $line[1];
+ $self->{ctan} = $ctan;
+ } elsif ($line[0] eq 'LATEXCMD') {
+ warn "Two LATEXCMDs in feature $self->{name}"
+ if defined $self->{latexcmd};
+ $self->{latexcmd} = $line[1];
+ } elsif ($line[0] eq 'NEEDS') {
+ warn "Two NEEDS lines in feature $self->{name}"
+ if defined $self->{needs};
+ $self->{needs} = join ' ',@line[1..$#line];
+ } elsif ($line[0] eq 'END') {
+ warn "FEATURE $self->{name} ended by END $line[1]"
+ if $line[1] ne 'FEATURE';
+ last;
+ } elsif ($line[0] eq 'COMMENT') {
+ my $comment = readblock($file,'COMMENT',1);
+ if (defined $self->{comment}) {
+ warn "Two COMMENT sections in feature $self->{name}.".
+ "Concatenating";
+ $comment = "$self->{comment}$comment"; }
+ $self->{comment} = $comment;
+ } elsif ($line[0] eq 'INSTALL') {
+ my $install = readblock($file,'INSTALL',1);
+ if (defined $self->{install}) {
+ warn "Two INSTALL sections in feature $self->{name}.".
+ "Concatenating";
+ $install = "$self->{install}$install"; }
+ $self->{install} = $install;
+ } elsif ($line[0] eq 'FILE') {
+ push @{$self->{files}}, $line[1];
+ $tlastfile = $line[1];
+ } elsif ($line[0] eq 'PACKAGE') {
+ push @{$self->{packages}}, $line[1];
+ } else {
+ warn "Unknown command in feature $self->{name}: $line[0]";
+ }
+ $lastfile = $tlastfile; $tlastfile = undef;
+ }
+}
+
+sub readblock($$$) {
+ my ($file,$blocktype,$raw) = @_;
+ my $line;
+ my $str = '';
+ while (defined ($line = $raw?<$file>:DiscoverMacro::H::readline2($file))) {
+ return $str if ($line =~ /^\s*END\s+\Q$blocktype\E\s*$/);
+ $line = DiscoverMacro::H::cleanline $line unless $raw;
+ #print "L:$line\n";
+ $str .= $line;
+ }
+ warn "EOF in $blocktype";
+ return $str;
+}
+
+sub isdefined($) {
+ my $self = shift;
+ return !$self->{undefined};
+}
+
+sub as_text($$) {
+ my ($self,$f) = @_;
+ my $link = "[[[NAME ".
+ DiscoverMacro::H::escape('identifier',$self->{name})."]]]";
+ my $text = DiscoverMacro::H::header
+ ($f,"${link}Feature: $self->{name}\[[[/NAME]]]");
+ if ($self->{undefined}) {
+ $text .= DiscoverMacro::H::line($f,"No information available");
+ }
+ if (defined $self->{fontencoding}) {
+ $text .= DiscoverMacro::H::twocol($f,"Fontencoding:",
+ $self->{fontencoding});
+ }
+ for my $i (@{$self->{packages}}) {
+ $text .= DiscoverMacro::H::twocol($f,"Package:",$i);
+ }
+ if (defined $self->{needs}) {
+ $text .= DiscoverMacro::H::twocol($f,"Needs:",$self->{needs});
+ }
+ for my $i (@{$self->{files}}) {
+ my $ctan = ${$self->{ctan}}{$i};
+ if (defined $ctan) {
+ $ctan = " (CTAN: [[[HREF http://www.ctan.org/tex-archive/".
+ "$ctan]]]$ctan\[[[/HREF]]])";
+ } else { $ctan = ''; };
+ $text .= DiscoverMacro::H::twocol($f,"Needed file:",$i.$ctan);
+ }
+ if ($self->{comment}) {
+ $text .= DiscoverMacro::H::twocol($f,"Comment:",$self->{comment});
+ }
+ if ($self->{install}) {
+ $text .= DiscoverMacro::H::twocol($f,"Installation:",$self->{install});
+ }
+ $text .= DiscoverMacro::H::footer $f;
+ return $text;
+}
+
+package DiscoverMacro::Macro;
+
+use Data::Dumper;
+
+use vars qw/$obj_count/;
+$obj_count = 0;
+
+sub new($$$) {
+ my ($proto,$db,$macro) = @_;
+ my $class = ref($proto) || $proto;
+ my $self = {};
+ $obj_count++;
+ bless $self, $class;
+ $self->{macro} = $macro;
+ $self->{db} = $db;
+ $self->loadlist();
+ return $self;
+}
+
+sub DESTROY {
+ $obj_count--;
+}
+
+sub isdefined($) {
+ my $self = shift;
+ return !$self->{undefined};
+}
+
+sub getname($) {
+ my $self = shift;
+ return $self->{macro};
+}
+
+sub getlist($) {
+ my $self = shift;
+ return $self->{list};
+}
+
+sub loadlist($) {
+ my $self = shift;
+ my $macros = $self->{db}->{macros};
+ my $macro = $self->{macro};
+ my $list = $$macros{$macro};
+ unless (defined $list) {
+ my $regex = $self->{db}->{regexmacros};
+ while (my ($re,$l) = each %$regex) {
+ #print "RE: $re\n";
+ if ($macro =~ /$re/) {
+ $self->{regex} = $re;
+ $list = $l; last; }
+ }
+ }
+ unless (defined $list) {
+ $self->{undefined} = 1;
+ return;
+ }
+ $self->{list} = $list;
+ my %tlist;
+ my @list = grep { my $bad = $_ eq 'OR' || $_ eq 'AND' || $tlist{$_};
+ $tlist{$_}=1; !$bad; } split ' ', $self->{list};
+ my %features = ();
+ for my $i (@list) {
+ $features{$i} = new DiscoverMacro::Feature($self->{db},$i)
+ unless defined $features{$i};
+ }
+ $self->{features} = \%features;
+}
+
+sub getfeature($) {
+ my ($self,$name) = @_;
+ return ${$self->{features}}{$name};
+}
+
+sub as_text($$) {
+ my ($self,$f) = @_;
+ my $text = '';
+ my $link = "[[[NAME ".
+ DiscoverMacro::H::escape('identifier',$self->{macro})."]]]";
+ $text .= DiscoverMacro::H::header
+ ($f,"${link}Macro: $self->{macro}\[[[/NAME]]]");
+ if ($self->{undefined}) {
+ $text .= DiscoverMacro::H::line($f,"Macro is unknown.");
+ } else {
+ my $list = $self->{list};
+ my $features = $self->{features};
+ $list =~ s{\S+}{
+ my $w = $&;
+ if ($$features{$w}) {
+ $w = "[[[HREF #".DiscoverMacro::H::escape('identifier',$w).
+ "]]]$w\[[[/HREF]]]";
+ }
+ $w;
+ }ge;
+ $text .= DiscoverMacro::H::twocol($f,"Available with:",$list);
+ }
+ $text .= DiscoverMacro::H::footer($f);
+ for my $feature (values %{$self->{features}}) {
+ $text .= $feature->as_text($f);
+ }
+ return $text;
+}
+
+package DiscoverMacro;
+
+use IO::File;
+use Data::Dumper;
+
+use vars qw/$obj_count @datafile_path/;
+$obj_count = 0;
+
+sub new($) {
+ my ($proto) = @_;
+ my $class = ref($proto) || $proto;
+ my $self = {};
+ $obj_count++;
+ bless $self, $class;
+ $self->{missingmacros} = {};
+ $self->opendata();
+ return $self;
+}
+
+sub DESTROY {
+ $obj_count--;
+}
+
+sub skip_to_end($$$) {
+ my ($file,$type,$lnr) = @_;
+ my $line;
+ while (defined ($line = DiscoverMacro::H::readline2($file))) {
+ return $file->getpos
+ if $line =~ /^\s*END\s*\Q$type\E\s*$/;
+ }
+ warn "Could not find end of $type-section started on line $lnr";
+ return undef;
+}
+
+sub lineinfo($) {
+ my $lnr = shift;
+ return "ltxmacrs.txt:$lnr: ";
+}
+
+sub opendata($) {
+ my $self = shift;
+ my $macros = {};
+ my $regexmacros = {};
+ my $features = {};
+ my $datafile = $self->{datafile};
+ unless (defined $datafile) {
+ for my $dir (@datafile_path) {
+ if ($dir eq 'program') {
+ $datafile = $0; $datafile =~ s@[^/]*$@ltxmacrs.txt@;
+ } elsif (-d $dir) {
+ $datafile = "$dir/ltxmacrs.txt";
+ } else {
+ $datafile = "$dir";
+ }
+ if (-e $datafile) { last; }
+ else { $datafile = undef; }
+ }
+ die "Could not find data file ltxmacrs.txt in path ".
+ join ', ', map {
+ ($_ eq 'program')?'script location':$_ } @datafile_path
+ unless defined $datafile;
+ $self->{datafile} = $datafile;
+ }
+ my $data = new IO::File($datafile,"r") or
+ die "Could not open $datafile for reading";
+ my $line;
+ while (defined ($line = DiscoverMacro::H::readline2($data))) {
+ $line = DiscoverMacro::H::cleanline($line);
+ next if $line eq '';
+ my (@line) = split ' ', $line;
+ if ($line[0] eq 'MACRO') {
+# print Dumper(\@line);
+ warn lineinfo($.)."Macro $line[1] given twice\n"
+ if defined $$macros{$line[1]};
+ $$macros{$line[1]} = join ' ', @line[2..$#line];
+ } elsif ($line[0] eq 'REGEX') {
+ warn lineinfo($.)."Regex macro $line[1] given twice\n"
+ if defined $$regexmacros{$line[1]};
+ $$regexmacros{$line[1]} = join ' ', @line[2..$#line];
+ } elsif ($line[0] eq 'FEATURE') {
+ $$features{$line[1]} = $data->getpos;
+ skip_to_end($data,'FEATURE',$.);
+ } else {
+ warn lineinfo($.)."Unknown command '$line[0]'\n";
+ }
+ }
+ $self->{macros} = $macros;
+ $self->{regexmacros} = $regexmacros;
+ $self->{features} = $features;
+ $self->{datafile} = $data;
+
+# print Dumper($macros);
+}
+
+sub getmacro($$) {
+ my ($self,$macro) = @_;
+ return new DiscoverMacro::Macro($self,$macro);
+}
+
+sub getfeaturepos($$) {
+ my ($self,$feature) = @_;
+ my $features = $self->{features};
+ return $$features{$feature};
+}
+
+sub readlog($$;$) {
+ my ($self,$filename,$file) = @_;
+ my $found = 0;
+ if (!defined $file) {
+ $file = new IO::File($filename,"r")
+ or die "Could not open log file '$filename' for reading: $!";
+ }
+ my $line;
+ while (defined ($line = <$file>)) {
+ chomp $line;
+ if ($line =~ /^! Undefined control sequence\.$/) {
+ chomp ($line = <$file>);
+ #print "LINE: '$line'\n";
+ my $dots = '';
+ my ($macro) = ($line =~ /(\\.)$/);
+ ($dots,$macro) =
+ ($line =~ /(...)(\\[a-zA-Z@]+) ?$/) unless defined $macro;
+ ($dots,$macro) =
+ ($line =~ /(...)([a-zA-Z@]+) ?$/) unless defined $macro;
+ my $regex = 0;
+ if ($dots eq '...') {
+ $regex = 1;
+ $macro =~ s/^\\//;
+ $macro = "\\\\[a-zA-Z@]*\Q$macro";
+ } else {
+ $macro = "\\$macro" unless $macro =~ /^\\/;
+ }
+ unless (defined $macro) {
+ warn "$filename:$.: Could not identify undefined control in:\n".
+ "\t$line\n";
+ next; };
+ #print "MACRO: '$macro'\n";
+ if ($regex) {
+ $found = 0;
+ for my $m (keys %{$self->{macros}}) {
+ if ($m =~ /$macro/) {
+ $self->addmacro($m);
+ $found = 1; }
+ }
+ $self->addmacro("REGEX:$macro") unless $found;
+ } else {
+ $self->addmacro($macro);
+ }
+ $found = 1;
+ } elsif ($line =~ /^! Package babel Error: You haven\'t defined the language (.+) yet.$/) {
+ my $lang = $1;
+ $self->addmacro("\\selectlanguage{$lang}");
+ $found = 1;
+ } elsif ($line =~ /^! LaTeX Error: Environment .* undefined\.$/) {
+ my ($env) =
+ ($line =~ /^! LaTeX Error: Environment (.*) undefined\.$/);
+ unless (defined $env) {
+ warn "$filename:$.: Could not identify environment in:\n".
+ "\t$line\n" unless defined $env;
+ next; };
+ $self->addmacro("\\begin{$env}");
+ $found = 1;
+ } elsif ($line =~ /^! LaTeX Error: Encoding scheme \`.*\' unknown\.$/) {
+ my ($fe) =
+ ($line =~ /^! LaTeX Error: Encoding scheme \`(.*)\' unknown\.$/);
+ unless (defined $fe) {
+ warn "$filename:$.: Could not identify fontencoding in:\n".
+ "\t$line\n" unless defined $fe;
+ next; };
+ $self->addmacro("\\fontencoding{$fe}");
+ $found = 1;
+ } elsif ($line =~ /^! LaTeX Error: Command .* (not provided|unavailable)/) {
+ my ($macro) =
+ ($line =~ /^! LaTeX Error: Command (.*) (not provided|unavailable)/);
+ unless (defined $macro) {
+ warn "$filename:$.: Could not identify macro in:\n".
+ "\t$line\n" unless defined $macro;
+ next; };
+ $macro = "\\$macro" unless $macro =~ /^\\/;
+ $self->addmacro("$macro");
+ $found = 1;
+ } elsif ($line =~ /^! Package ucs Error: Unknown .* tag '.*' \((.*)\)\.$/) {
+ my ($macro) =
+ ($line =~ /^! Package ucs Error: Unknown .* tag '.*' \((.*)\)\.$/);
+ unless (defined $macro) {
+ warn "$filename:$.: Could not identify macro in:\n".
+ "\t$line\n";
+ next; };
+ $macro = "\\$macro" unless $macro =~ /^\\/;
+ $self->addmacro("$macro");
+ $found = 1;
+ } elsif ($line =~ /^! Font .*=([^=]+) at .* not loadable: Metric \(TFM\)/) {
+ my ($tfm) = ($line =~ /^! Font .*=([^=]+) at .* not loadable: Metric \(TFM\)/);
+ unless (defined $tfm) {
+ warn "$filename:$.: Could not identify TFM filename in:\n".
+ "\t$line\n";
+ next; };
+ print "XXX: $tfm\n";
+ $self->addmacro("$tfm.tfm");
+ $found = 1;
+ }
+ }
+ close $file;
+ return $found;
+}
+
+sub addmacro($$%) {
+ my ($self,$macro) = @_;
+ my $macros = $self->{missingmacros};
+ return $$macros{$macro} if $$macros{$macro};
+ my $res = $self->getmacro($macro);
+ $$macros{$macro} = $res if defined $res;
+ return $res;
+}
+
+sub getfileat($$) {
+ my ($self,$pos) = @_;
+ my $file = $self->{datafile};
+ $file->setpos($pos) or
+ die "Could not seek in datafile to pos $pos";
+ return $file;
+}
+
+sub getmissingmacros($) {
+ my $self = shift;
+ return $self->{missingmacros};
+}
+
+sub as_text($$) {
+ my ($self,$f) = @_;
+ my $macros = $self->{missingmacros};
+ my $str = '';
+ for my $m (keys %$macros) {
+ $str .= $$macros{$m}->as_text($f);
+ }
+ return $str;
+}
+
+sub close($) {
+ my $self = shift;
+ $self->{macros} = undef;
+ $self->{features} = undef;
+ $self->{missingmacros} = undef;
+ close $self->{datafile};
+}
+
+sub getfeature($$) {
+ my ($self,$feature) = @_;
+ return new DiscoverMacro::Feature($self,$feature);
+}
+
+sub scanformacro($%) {
+ my ($self,%args) = @_;
+ my $file = $args{file};
+ my $fh = new IO::File($file,"r") or
+ die "Could not open $file for reading: $!";
+ my $line;
+ # {\newenvironment}{\renewenvironment}{\newif}
+ my $newcommand = '\\\\newcommand|\\\\renewcommand|\\\\providecommand|'.
+ '\\\\DeclareRobustCommand|\\\\def';
+ my $newenvironment = '\\\\newenvironment|\\\\renewenvironment';
+ my @macros;
+ while (defined ($line = <$fh>)) {
+ chomp $line;
+ print "L: $line\n";
+ $line =~ s{($newcommand) \s* \{? (\\[a-zA-Z@]+) \}?}{
+ print "MACRO: $2\n";
+ my ($env) = ($2 =~ /^\\end(.*)$/);
+ if (defined $env) {
+ print "ENV: $env\n"; }
+ }gxeo;
+ $line =~ s{($newenvironment) \s* \{ ([^\}]+) \} }{
+ print "ENV: $2\n";
+ }gxeo;
+ }
+ print Dumper [\@macros];
+}
+
+
+sub main(@) {
+ if (@_) {
+ for my $file (@_) {
+ my $obj = new DiscoverMacro;
+ if (-e $file) {
+ $obj->readlog($file);
+ } else {
+ $obj->addmacro($file);
+ }
+ print $obj->as_text('text/plain');
+ };
+ } else {
+ my ($file) =
+ sort { my @a = stat $a; my @b = stat $b; $b[9] <=> $a[9] }
+ grep { $_ ne 'missfont.log' } (<*.log>);
+ die "No logfile found" if (!defined $file);
+ print "Using logfile $file.\n";
+ &main($file);
+ }
+}
+
+sub test() {
+ my $obj = new DiscoverMacro;
+ $obj->scanformacro(file => 'test.tex');
+ exit;
+}
+
+#test;
+
+caller || &main(@ARGV);
+
+1;
diff --git a/Master/texmf-dist/doc/latex/ucs/languages.ps.gz b/Master/texmf-dist/doc/latex/ucs/languages.ps.gz
new file mode 100644
index 00000000000..b3c8eaedf7e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/languages.ps.gz
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ucs/latexout.pl b/Master/texmf-dist/doc/latex/ucs/latexout.pl
new file mode 100755
index 00000000000..d61cbe2ccc5
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/latexout.pl
@@ -0,0 +1,36 @@
+#! /usr/bin/perl -T -w
+
+=head1 NAME
+
+latexout.pl - Filters the LaTeX log and output, so that UTF8 stays UTF8.
+
+=head1 SYNOPSIS
+
+latex I<arguments> | latexout.pl
+
+=head1 DESCRIPTION
+
+TeX replaces bytes in the range of 0x80 to 0x9F by ^^xx
+sequences. This filter restores them.
+
+=head1 BUGS
+
+Only complete lines are parsed, so when TeX wants input, the prompt is
+not displayed.
+
+=head1 AUTHOR
+
+Dominique Unruh <I<dominique@unruh.de>>.
+
+=head1 SEE ALSO
+
+The LaTeX package B<ucs.sty>.
+
+=cut
+
+$| = 1;
+
+while (<>) {
+ s/\^\^([0-9a-f]{2})/chr hex $1/egi;
+ print $_;
+}
diff --git a/Master/texmf-dist/doc/latex/ucs/ltxmacrs.txt b/Master/texmf-dist/doc/latex/ucs/ltxmacrs.txt
new file mode 100644
index 00000000000..49811d0543d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/ltxmacrs.txt
@@ -0,0 +1,3371 @@
+# BEGIN AUTOGENERATED DATA
+MACRO \" cyrillic-lcy OR greek-lgr \
+ OR cyrillic-lmc OR latin-ot1 \
+ OR cyrillic-ot2 OR latin-ot4 \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR ipa-t3 OR latin-t5 \
+ OR cyrillic-x2
+MACRO \' cyrillic-lcy OR devanagari-ldv \
+ OR greek-lgr OR latin-ot1 \
+ OR cyrillic-ot2 OR latin-ot4 \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR ipa-t3 OR latin-t5 \
+ OR cyrillic-x2
+MACRO \. cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR ipa-t3 OR latin-t5 \
+ OR cyrillic-x2
+MACRO \= cyrillic-lcy OR greek-lgr \
+ OR latin-ot1 OR latin-ot4 OR latin-qx \
+ OR latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR ipa-t3 OR latin-t5 OR cyrillic-x2
+MACRO \^ cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR ipa-t3 OR latin-t5 \
+ OR cyrillic-x2
+MACRO \` cyrillic-lcy OR devanagari-ldv \
+ OR greek-lgr OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR ipa-t3 OR latin-t5 \
+ OR cyrillic-x2
+MACRO \AA latin-qx
+MACRO \aa latin-qx
+MACRO \ABREVE latin-t5
+MACRO \abreve latin-t5
+MACRO \ACIRCUMFLEX latin-t5
+MACRO \acircumflex latin-t5
+MACRO \AE cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1
+MACRO \ae cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR ipa-t3
+MACRO \b cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR ipa-t3 OR latin-t5 \
+ OR cyrillic-x2
+MACRO \bagodoisuul mongolian-lms
+MACRO \biodoisuul mongolian-lms
+MACRO \bituushilbe mongolian-lms
+MACRO \bituuzardigt mongolian-lms
+MACRO \bosooshilbe mongolian-lms
+MACRO \buruuxarsangedes mongolian-lms
+MACRO \C cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \c cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR ipa-t3 OR latin-t5 \
+ OR cyrillic-x2
+MACRO \capitalacute symbols-ts1
+MACRO \capitalbreve symbols-ts1
+MACRO \capitalcaron symbols-ts1
+MACRO \capitalcedilla symbols-ts1
+MACRO \capitalcircumflex symbols-ts1
+MACRO \capitaldieresis symbols-ts1
+MACRO \capitaldotaccent symbols-ts1
+MACRO \capitalgrave symbols-ts1
+MACRO \capitalhungarumlaut symbols-ts1
+MACRO \capitalmacron symbols-ts1
+MACRO \capitalnewtie symbols-ts1
+MACRO \capitalogonek symbols-ts1
+MACRO \capitalring symbols-ts1
+MACRO \capitaltie symbols-ts1
+MACRO \capitaltilde symbols-ts1
+MACRO \ceg mongolian-lms
+MACRO \cegteishud mongolian-lms
+MACRO \Ch cyrillic-lmc
+MACRO \ch cyrillic-lmc
+# \clqq: IL2
+MACRO \copyright thai-lth OR latin-qx
+# \crqq: IL2
+MACRO \CYRA cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyra cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRABHCH cyrillic-t2c OR cyrillic-x2
+MACRO \cyrabhch cyrillic-t2c OR cyrillic-x2
+MACRO \CYRABHCHDSC cyrillic-t2c OR cyrillic-x2
+MACRO \cyrabhchdsc cyrillic-t2c OR cyrillic-x2
+MACRO \CYRABHDZE cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \cyrabhdze cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \CYRABHHA cyrillic-t2c OR cyrillic-x2
+MACRO \cyrabhha cyrillic-t2c OR cyrillic-x2
+MACRO \CYRaccte cyrillic-xs
+MACRO \CYRAE cyrillic-t2a OR cyrillic-x2
+MACRO \cyrae cyrillic-t2a OR cyrillic-x2
+MACRO \CYRAZ cyrillic-t2d OR cyrillic-xs
+MACRO \cyraz cyrillic-t2d OR cyrillic-xs
+MACRO \CYRB cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrb cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRBYUS cyrillic-t2d OR cyrillic-x2 \
+ OR cyrillic-xs
+MACRO \cyrbyus cyrillic-t2d OR cyrillic-x2 \
+ OR cyrillic-xs
+MACRO \CYRC cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrc cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRCH cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrch cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRCHERV cyrillic-t2d OR cyrillic-xs
+MACRO \cyrcherv cyrillic-t2d OR cyrillic-xs
+MACRO \CYRCHLDSC cyrillic-t2b OR cyrillic-x2
+MACRO \cyrchldsc cyrillic-t2b OR cyrillic-x2
+MACRO \CYRCHRDSC cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrchrdsc cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRCHVCRS cyrillic-t2a OR cyrillic-x2
+MACRO \cyrchvcrs cyrillic-t2a OR cyrillic-x2
+MACRO \CYRD cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrd cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrdash cyrillic-lcy OR cyrillic-ot2 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \CYRdasia cyrillic-t2d OR cyrillic-xs
+MACRO \CYRDELTA cyrillic-t2b OR cyrillic-x2
+MACRO \cyrdelta cyrillic-t2b OR cyrillic-x2
+MACRO \CYRDJE cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-x2
+MACRO \cyrdje cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-x2
+MACRO \CYRDZE cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2 \
+ OR cyrillic-xs
+MACRO \cyrdze cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2 \
+ OR cyrillic-xs
+MACRO \CYRDZHE cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrdzhe cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRE cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyre cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYREPS cyrillic-t2b OR cyrillic-t2d \
+ OR cyrillic-x2
+MACRO \cyreps cyrillic-t2b OR cyrillic-t2d \
+ OR cyrillic-x2
+MACRO \CYREREV cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrerev cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRERY cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrery cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRF cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrf cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRFITA cyrillic-ot2 OR cyrillic-t2d \
+ OR cyrillic-xs
+MACRO \cyrfita cyrillic-ot2 OR cyrillic-t2d \
+ OR cyrillic-xs
+MACRO \CYRG cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrg cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRGDSC cyrillic-t2b OR cyrillic-x2
+MACRO \cyrgdsc cyrillic-t2b OR cyrillic-x2
+MACRO \CYRGDSCHCRS cyrillic-t2b
+MACRO \cyrgdschcrs cyrillic-t2b
+MACRO \CYRGERV cyrillic-t2d OR cyrillic-xs
+MACRO \cyrgerv cyrillic-t2d OR cyrillic-xs
+MACRO \CYRGHCRS cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-x2
+MACRO \cyrghcrs cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-x2
+MACRO \CYRGHK cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \cyrghk cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \CYRGUP cyrillic-lcy OR cyrillic-t2a \
+ OR cyrillic-x2
+MACRO \cyrgup cyrillic-lcy OR cyrillic-t2a \
+ OR cyrillic-x2
+MACRO \CYRH cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrh cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRHDSC cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrhdsc cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRHHCRS cyrillic-t2b
+MACRO \cyrhhcrs cyrillic-t2b
+MACRO \CYRHHK cyrillic-t2b OR cyrillic-x2
+MACRO \cyrhhk cyrillic-t2b OR cyrillic-x2
+MACRO \CYRHRDSN cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrhrdsn cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRHSHA cyrillic-lmc
+MACRO \cyrhsha cyrillic-lmc
+MACRO \CYRI cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyri cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRIAZ cyrillic-t2d OR cyrillic-xs
+MACRO \cyriaz cyrillic-t2d OR cyrillic-xs
+MACRO \CYRIE cyrillic-lcy OR cyrillic-ot2 \
+ OR cyrillic-t2a OR cyrillic-t2d \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \cyrie cyrillic-lcy OR cyrillic-ot2 \
+ OR cyrillic-t2a OR cyrillic-t2d \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \CYRII cyrillic-lcy OR cyrillic-ot2 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2 \
+ OR cyrillic-xs
+MACRO \cyrii cyrillic-lcy OR cyrillic-ot2 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2 \
+ OR cyrillic-xs
+MACRO \CYRIOTBYUS cyrillic-t2d OR cyrillic-xs
+MACRO \cyriotbyus cyrillic-t2d OR cyrillic-xs
+# \CYRIOTE: PU
+# \cyriote: PU
+MACRO \CYRIOTEST cyrillic-t2d OR cyrillic-xs
+MACRO \cyriotest cyrillic-t2d OR cyrillic-xs
+MACRO \CYRIOTLYUS cyrillic-t2d OR cyrillic-xs
+MACRO \cyriotlyus cyrillic-t2d OR cyrillic-xs
+MACRO \CYRISHRT cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrishrt cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRISHRTDSC cyrillic-t2c
+MACRO \cyrishrtdsc cyrillic-t2c
+MACRO \CYRIZH cyrillic-ot2 OR cyrillic-t2d \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \cyrizh cyrillic-ot2 OR cyrillic-t2d \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \CYRIZHDGR cyrillic-xs
+MACRO \cyrizhdgr cyrillic-xs
+MACRO \CYRIZHE cyrillic-t2d OR cyrillic-xs
+MACRO \cyrizhe cyrillic-t2d OR cyrillic-xs
+MACRO \CYRIZHUML cyrillic-xs
+MACRO \cyrizhuml cyrillic-xs
+MACRO \CYRJE cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \cyrje cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \CYRK cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrk cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRkamora cyrillic-t2d OR cyrillic-xs
+MACRO \CYRKBEAK cyrillic-t2a OR cyrillic-x2
+MACRO \cyrkbeak cyrillic-t2a OR cyrillic-x2
+MACRO \CYRKDSC cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrkdsc cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRKHCRS cyrillic-t2c OR cyrillic-x2
+MACRO \cyrkhcrs cyrillic-t2c OR cyrillic-x2
+MACRO \CYRKHK cyrillic-t2b OR cyrillic-x2
+MACRO \cyrkhk cyrillic-t2b OR cyrillic-x2
+MACRO \CYRkoloda cyrillic-xs
+MACRO \CYRKOPPA cyrillic-t2d OR cyrillic-xs
+MACRO \cyrkoppa cyrillic-t2d OR cyrillic-xs
+MACRO \CYRKSI cyrillic-t2d OR cyrillic-xs
+MACRO \cyrksi cyrillic-t2d OR cyrillic-xs
+MACRO \CYRKVCRS cyrillic-t2a OR cyrillic-x2
+MACRO \cyrkvcrs cyrillic-t2a OR cyrillic-x2
+MACRO \CYRL cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrl cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrlangle cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR cyrillic-x2
+MACRO \CYRLDSC cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \cyrldsc cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \CYRlegion cyrillic-xs
+MACRO \CYRleodr cyrillic-xs
+MACRO \CYRLHK cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \cyrlhk cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \CYRLJE cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-x2
+MACRO \cyrlje cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-x2
+MACRO \CYRLYUS cyrillic-t2d OR cyrillic-xs
+MACRO \cyrlyus cyrillic-t2d OR cyrillic-xs
+MACRO \CYRM cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrm cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRMDSC cyrillic-t2c OR cyrillic-x2
+MACRO \cyrmdsc cyrillic-t2c OR cyrillic-x2
+MACRO \CYRMHK cyrillic-t2c
+MACRO \cyrmhk cyrillic-t2c
+MACRO \CYRN cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrn cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRNARROWE cyrillic-t2d OR cyrillic-xs
+MACRO \cyrnarrowe cyrillic-t2d OR cyrillic-xs
+MACRO \CYRNASH cyrillic-t2d OR cyrillic-xs
+MACRO \cyrnash cyrillic-t2d OR cyrillic-xs
+MACRO \CYRNDSC cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrndsc cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRNG cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \cyrng cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \CYRNHK cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \cyrnhk cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \CYRNJE cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-x2
+MACRO \cyrnje cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-x2
+MACRO \CYRNLHK cyrillic-t2c OR cyrillic-x2
+MACRO \cyrnlhk cyrillic-t2c OR cyrillic-x2
+MACRO \CYRNo cyrillic-t2d
+MACRO \CYRO cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyro cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYROERY cyrillic-xs
+MACRO \cyroery cyrillic-xs
+MACRO \CYROHSN cyrillic-xs
+MACRO \cyrohsn cyrillic-xs
+MACRO \CYROLG cyrillic-xs
+MACRO \cyrolg cyrillic-xs
+# \CYROMEGA: PU
+# \cyromega: PU
+# \CYROMEGARND: PU
+# \cyromegarnd: PU
+# \CYROMEGATITLO: PU
+# \cyromegatitlo: PU
+MACRO \CYROMGA cyrillic-t2d OR cyrillic-xs
+MACRO \cyromga cyrillic-t2d OR cyrillic-xs
+MACRO \CYROMRND cyrillic-t2d OR cyrillic-xs
+MACRO \cyromrnd cyrillic-t2d OR cyrillic-xs
+MACRO \CYROMTLO cyrillic-t2d OR cyrillic-xs
+MACRO \cyromtlo cyrillic-t2d OR cyrillic-xs
+MACRO \CYROOCDDOT cyrillic-xs
+MACRO \cyroocddot cyrillic-xs
+MACRO \CYROOCDOT cyrillic-xs
+MACRO \cyroocdot cyrillic-xs
+MACRO \CYROT cyrillic-t2d OR cyrillic-xs
+MACRO \cyrot cyrillic-t2d OR cyrillic-xs
+MACRO \CYROTLD cyrillic-lmc OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \cyrotld cyrillic-lmc OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-x2
+MACRO \CYRP cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrp cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRpaerok cyrillic-t2d OR cyrillic-xs
+MACRO \CYRpalatal cyrillic-t2d OR cyrillic-xs
+MACRO \CYRpalochka cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRPHK cyrillic-t2c OR cyrillic-x2
+MACRO \cyrphk cyrillic-t2c OR cyrillic-x2
+MACRO \CYRpneuac cyrillic-t2d OR cyrillic-xs
+MACRO \CYRpneugrav cyrillic-t2d OR cyrillic-xs
+MACRO \CYRPPETER cyrillic-xs
+MACRO \cyrppeter cyrillic-xs
+MACRO \CYRPSI cyrillic-t2d OR cyrillic-xs
+MACRO \cyrpsi cyrillic-t2d OR cyrillic-xs
+MACRO \CYRpsili cyrillic-t2d OR cyrillic-xs
+MACRO \CYRQ cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrq cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRR cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrr cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrrangle cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR cyrillic-x2
+MACRO \CYRRDSC cyrillic-t2c OR cyrillic-x2
+MACRO \cyrrdsc cyrillic-t2c OR cyrillic-x2
+MACRO \CYRRHK cyrillic-t2c
+MACRO \cyrrhk cyrillic-t2c
+MACRO \CYRRTICK cyrillic-t2c
+MACRO \cyrrtick cyrillic-t2c
+MACRO \CYRS cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrs cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRSACRS cyrillic-t2b
+MACRO \cyrsacrs cyrillic-t2b
+MACRO \CYRSCHWA cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrschwa cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRSDSC cyrillic-t2a OR cyrillic-x2
+MACRO \cyrsdsc cyrillic-t2a OR cyrillic-x2
+MACRO \CYRSEMISFTSN cyrillic-t2c
+MACRO \cyrsemisftsn cyrillic-t2c
+MACRO \CYRSFTSN cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrsftsn cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRSH cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrsh cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRSHCH cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrshch cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRSHHA cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrshha cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRSHTA cyrillic-t2d OR cyrillic-xs
+MACRO \cyrshta cyrillic-t2d OR cyrillic-xs
+MACRO \CYRT cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrt cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRTDSC cyrillic-t2c OR cyrillic-x2
+MACRO \cyrtdsc cyrillic-t2c OR cyrillic-x2
+MACRO \CYRTETSE cyrillic-t2c OR cyrillic-x2
+MACRO \cyrtetse cyrillic-t2c OR cyrillic-x2
+MACRO \CYRthousands cyrillic-t2d OR cyrillic-xs
+# \cyrthousands: PU
+MACRO \CYRtitlo cyrillic-t2d OR cyrillic-xs
+MACRO \CYRtma cyrillic-xs
+MACRO \CYRtmatem cyrillic-xs
+MACRO \CYRTPETER cyrillic-xs
+MACRO \cyrtpeter cyrillic-xs
+MACRO \CYRTSHE cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-x2
+MACRO \cyrtshe cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-x2
+MACRO \CYRU cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyru cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRUK cyrillic-t2d OR cyrillic-xs
+MACRO \cyruk cyrillic-t2d OR cyrillic-xs
+MACRO \CYRUSHRT cyrillic-lcy OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-x2
+MACRO \cyrushrt cyrillic-lcy OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-x2
+MACRO \CYRV cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrv cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRVARIZHE cyrillic-t2d OR cyrillic-xs
+MACRO \cyrvarizhe cyrillic-t2d OR cyrillic-xs
+MACRO \CYRVARUK cyrillic-xs
+MACRO \cyrvaruk cyrillic-xs
+MACRO \CYRvdasia cyrillic-xs
+MACRO \CYRVIA cyrillic-xs
+MACRO \cyrvia cyrillic-xs
+MACRO \CYRVIZH cyrillic-xs
+MACRO \cyrvizh cyrillic-xs
+MACRO \CYRVLYUS cyrillic-xs
+MACRO \cyrvlyus cyrillic-xs
+MACRO \CYRvpneuac cyrillic-xs
+MACRO \CYRvpneugrav cyrillic-xs
+MACRO \CYRvpsili cyrillic-xs
+MACRO \CYRvran cyrillic-xs
+MACRO \CYRvzvat cyrillic-xs
+MACRO \CYRW cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \cyrw cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+MACRO \CYRY cyrillic-lmc OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-x2
+MACRO \cyry cyrillic-lmc OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-x2
+MACRO \CYRYA cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrya cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRYAT cyrillic-ot2 OR cyrillic-t2d \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \cyryat cyrillic-ot2 OR cyrillic-t2d \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \CYRYHCRS cyrillic-t2a OR cyrillic-x2
+MACRO \cyryhcrs cyrillic-t2a OR cyrillic-x2
+MACRO \CYRYI cyrillic-lcy OR cyrillic-t2a \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \cyryi cyrillic-lcy OR cyrillic-t2a \
+ OR cyrillic-x2 OR cyrillic-xs
+MACRO \CYRYO cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyryo cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRYU cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyryu cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRZ cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrz cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRZDSC cyrillic-t2a OR cyrillic-x2
+MACRO \cyrzdsc cyrillic-t2a OR cyrillic-x2
+MACRO \CYRZELO cyrillic-xs
+MACRO \cyrzelo cyrillic-xs
+MACRO \CYRZELOM cyrillic-xs
+MACRO \cyrzelom cyrillic-xs
+MACRO \CYRZEMLA cyrillic-t2d OR cyrillic-xs
+MACRO \cyrzemla cyrillic-t2d OR cyrillic-xs
+MACRO \CYRZH cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \cyrzh cyrillic-lcy OR cyrillic-lmc \
+ OR cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2
+MACRO \CYRZHDSC cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-x2
+MACRO \cyrzhdsc cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-x2
+MACRO \CYRzvat cyrillic-t2d OR cyrillic-xs
+MACRO \d cyrillic-lcy OR latin-ot1 \
+ OR cyrillic-ot2 OR latin-ot4 \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR ipa-t3 OR latin-t5 \
+ OR cyrillic-x2
+MACRO \dagesh hebrew-he8 OR hebrew-mkr
+MACRO \dawxarcegtxewteeqix mongolian-lms
+MACRO \dawxarcegtzawj mongolian-lms
+MACRO \DH latin-qx OR latin-t1
+MACRO \dh latin-qx OR latin-t1 OR ipa-t3
+MACRO \DJ ( latin-ot1 AND babel ) OR latin-qx \
+ OR latin-t1 OR latin-t5
+MACRO \dj ( latin-ot1 AND babel ) OR latin-qx \
+ OR latin-t1 OR latin-t5
+MACRO \dorwoljin mongolian-lms
+MACRO \doublevav hebrew-he8 OR hebrew-mkr
+MACRO \doubleyod hebrew-he8 OR hebrew-mkr
+MACRO \ECIRCUMFLEX latin-t5
+MACRO \ecircumflex latin-t5
+MACRO \erweeljinshilbe mongolian-lms
+MACRO \etgershilbe mongolian-lms
+MACRO \F cyrillic-t2d OR cyrillic-xs
+MACRO \f cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-x2
+# \flqq: IL2
+# \frqq: IL2
+MACRO \gceg mongolian-lms
+MACRO \gedes mongolian-lms
+MACRO \gedesteishilbe mongolian-lms
+MACRO \geresh hebrew-mkr
+MACRO \gershayim hebrew-mkr
+MACRO \grq latin-ot1 OR latin-t1
+MACRO \grqq latin-ot1 OR latin-t1
+MACRO \guillemotleft cyrillic-lcy OR devanagari-ldv \
+ OR greek-lgr OR thai-lta \
+ OR telugu-ltg \
+ OR ( latin-ot1 AND babel ) \
+ OR cyrillic-ot2 OR latin-ot4 \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR latin-t5 OR cyrillic-x2
+MACRO \guillemotright cyrillic-lcy OR devanagari-ldv \
+ OR greek-lgr OR thai-lta \
+ OR telugu-ltg \
+ OR ( latin-ot1 AND babel ) \
+ OR cyrillic-ot2 OR latin-ot4 \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR latin-t5 OR cyrillic-x2
+MACRO \guilsinglleft devanagari-ldv OR thai-lta \
+ OR telugu-ltg \
+ OR ( latin-ot1 AND babel ) \
+ OR latin-t1 OR latin-t5
+MACRO \guilsinglright devanagari-ldv OR thai-lta \
+ OR telugu-ltg \
+ OR ( latin-ot1 AND babel ) \
+ OR latin-t1 OR latin-t5
+MACRO \H cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR ipa-t3 OR cyrillic-x2
+MACRO \h latin-t5
+MACRO \halfnum mongolian-lms
+MACRO \halfnumtgedes mongolian-lms
+MACRO \hatafpatah hebrew-he8 OR hebrew-mkr
+MACRO \hatafqamats hebrew-he8 OR hebrew-mkr
+MACRO \hatafsegol hebrew-he8 OR hebrew-mkr
+MACRO \hebalef hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebaleflamed hebrew-mkr
+MACRO \hebayin hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebbet hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebdalet hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebfinalkaf hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebfinalmem hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebfinalnun hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebfinalpe hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebfinaltsadi hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebgimel hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebhe hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebhet hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebkaf hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \heblamed hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebmem hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebnun hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebpe hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebqof hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebresh hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebsamekh hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebshin hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebtav hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebtet hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebtsadi hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebvav hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebyod hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hebzayin hebrew-he8 OR hebrew-lhe \
+ OR hebrew-mkr
+MACRO \hiriq hebrew-he8 OR hebrew-mkr
+MACRO \holam hebrew-he8 OR hebrew-mkr
+MACRO \I cyrillic-lmc
+MACRO \i cyrillic-lcy OR devanagari-ldv \
+ OR cyrillic-lmc OR thai-lta \
+ OR telugu-ltg OR latin-ot1 \
+ OR cyrillic-ot2 OR latin-ot4 \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR ipa-t3 OR latin-t5
+MACRO \IJ latin-ot1 OR latin-t1
+MACRO \ij latin-ot1 OR latin-t1
+MACRO \j cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR ipa-t3
+MACRO \jischar japanese-c40 OR japanese-c42
+MACRO \k latin-qx OR latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR ipa-t3 OR cyrillic-x2
+MACRO \klingona klingon-lkl
+MACRO \klingonb klingon-lkl
+MACRO \klingonch klingon-lkl
+MACRO \klingonD klingon-lkl
+MACRO \klingone klingon-lkl
+MACRO \klingoneight klingon-lkl
+MACRO \klingonfive klingon-lkl
+MACRO \klingonfour klingon-lkl
+MACRO \klingongh klingon-lkl
+MACRO \klingonglotstop klingon-lkl
+MACRO \klingonH klingon-lkl
+MACRO \klingonI klingon-lkl
+MACRO \klingonj klingon-lkl
+MACRO \klingonl klingon-lkl
+MACRO \klingonm klingon-lkl
+MACRO \klingonn klingon-lkl
+MACRO \klingonng klingon-lkl
+MACRO \klingonnine klingon-lkl
+MACRO \klingono klingon-lkl
+MACRO \klingonone klingon-lkl
+MACRO \klingonp klingon-lkl
+MACRO \klingonQ klingon-lkl
+MACRO \klingonq klingon-lkl
+MACRO \klingonr klingon-lkl
+MACRO \klingonS klingon-lkl
+MACRO \klingonseven klingon-lkl
+MACRO \klingonsix klingon-lkl
+MACRO \klingont klingon-lkl
+MACRO \klingonthree klingon-lkl
+MACRO \klingontlh klingon-lkl
+MACRO \klingontwo klingon-lkl
+MACRO \klingonu klingon-lkl
+MACRO \klingonv klingon-lkl
+MACRO \klingonw klingon-lkl
+MACRO \klingony klingon-lkl
+MACRO \klingonzero klingon-lkl
+MACRO \L cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1
+MACRO \l cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1
+MACRO \leftguillemot cyrillic-lmc
+MACRO \lewer mongolian-lms
+MACRO \malgaitaititem mongolian-lms
+MACRO \maqaf hebrew-he8 OR hebrew-mkr
+MACRO \matgarshilbe mongolian-lms
+MACRO \meteg hebrew-he8 OR hebrew-mkr
+MACRO \mewer mongolian-lms
+MACRO \MyTogrog cyrillic-lmc
+MACRO \mytogrog cyrillic-lmc
+MACRO \nceg mongolian-lms
+MACRO \newtie symbols-ts1
+MACRO \NG latin-t1
+MACRO \ng latin-t1 OR ipa-t3
+MACRO \No cyrillic-lmc
+MACRO \num mongolian-lms
+MACRO \numtaigedes mongolian-lms
+MACRO \numtdelbenqix mongolian-lms
+MACRO \O cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1
+MACRO \o cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR ipa-t3
+MACRO \OCIRCUMFLEX latin-t5
+MACRO \ocircumflex latin-t5
+MACRO \OE cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR ipa-t3
+MACRO \oe cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR ipa-t3
+MACRO \OHORN latin-t5
+MACRO \ohorn latin-t5
+MACRO \orxic mongolian-lms
+MACRO \paseq hebrew-he8
+MACRO \patah hebrew-he8 OR hebrew-mkr
+MACRO \perthousand cyrillic-t2d
+MACRO \qagt mongolian-lms
+MACRO \qamats hebrew-he8 OR hebrew-mkr
+MACRO \Qh cyrillic-lmc
+MACRO \qh cyrillic-lmc
+MACRO \qubuts hebrew-he8 OR hebrew-mkr
+MACRO \quotedblbase cyrillic-lcy OR devanagari-ldv \
+ OR thai-lta OR telugu-ltg \
+ OR ( latin-ot1 AND babel ) \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR latin-t5 OR cyrillic-x2
+MACRO \quotesinglbase devanagari-ldv OR thai-lta \
+ OR telugu-ltg \
+ OR ( latin-ot1 AND babel ) \
+ OR latin-t1 OR latin-t5
+MACRO \r cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR ipa-t3 OR latin-t5 OR cyrillic-x2
+MACRO \rafe hebrew-he8
+MACRO \rightguillemot cyrillic-lmc
+MACRO \Sc cyrillic-lmc
+MACRO \sc cyrillic-lmc
+MACRO \secerweeljin mongolian-lms
+MACRO \secnumtdelbenqix mongolian-lms
+MACRO \secondarygedes mongolian-lms
+MACRO \secondaryqagt mongolian-lms
+MACRO \secondaryshud mongolian-lms
+MACRO \secsertenqixtnum mongolian-lms
+MACRO \segol hebrew-he8 OR hebrew-mkr
+MACRO \sereeewer mongolian-lms
+MACRO \sertenqixtnum mongolian-lms
+MACRO \Sh cyrillic-lmc
+MACRO \sh cyrillic-lmc
+MACRO \sheva hebrew-he8 OR hebrew-mkr
+MACRO \shilbe mongolian-lms
+MACRO \shindot hebrew-he8 OR hebrew-mkr
+MACRO \shud mongolian-lms
+MACRO \sindot hebrew-he8 OR hebrew-mkr
+MACRO \sofpasuq hebrew-he8 OR hebrew-mkr
+MACRO \SS greek-lgr OR thai-lth OR latin-ot1 \
+ OR latin-t1
+MACRO \ss cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1
+MACRO \suul mongolian-lms
+MACRO \suuliinlewer mongolian-lms
+MACRO \suuliinmewer mongolian-lms
+MACRO \suuliinzawj mongolian-lms
+MACRO \t math-oml OR ipa-t3 OR symbols-ts1
+MACRO \tengwarAare tengwar-ltw
+MACRO \tengwarAareNuquerna tengwar-ltw
+MACRO \tengwarAcute tengwar-ltw
+MACRO \tengwarAlda tengwar-ltw
+MACRO \tengwarAmaticse tengwar-ltw
+MACRO \tengwarAmpa tengwar-ltw
+MACRO \tengwarAnca tengwar-ltw
+MACRO \tengwarAndo tengwar-ltw
+MACRO \tengwarAnga tengwar-ltw
+MACRO \tengwarAnna tengwar-ltw
+MACRO \tengwarAnnaSindarinwa tengwar-ltw
+MACRO \tengwarAnto tengwar-ltw
+MACRO \tengwarArda tengwar-ltw
+MACRO \tengwarBreve tengwar-ltw
+MACRO \tengwarCalma tengwar-ltw
+MACRO \tengwarDoubleAcute tengwar-ltw
+MACRO \tengwarDoubleAcuteBelow tengwar-ltw
+MACRO \tengwarDoubleLeftCurl tengwar-ltw
+MACRO \tengwarDoublePusta tengwar-ltw
+MACRO \tengwarDoubler tengwar-ltw
+MACRO \tengwarDoubleRightCurl tengwar-ltw
+MACRO \tengwarEight tengwar-ltw
+MACRO \tengwarEleven tengwar-ltw
+MACRO \tengwarExclam tengwar-ltw
+MACRO \tengwarExtAmpa tengwar-ltw
+MACRO \tengwarExtAnca tengwar-ltw
+MACRO \tengwarExtAnto tengwar-ltw
+MACRO \tengwarExtFormen tengwar-ltw
+MACRO \tengwarExtHarma tengwar-ltw
+MACRO \tengwarExtHwesta tengwar-ltw
+MACRO \tengwarExtThuule tengwar-ltw
+MACRO \tengwarExtUnque tengwar-ltw
+MACRO \tengwarFive tengwar-ltw
+MACRO \tengwarFormen tengwar-ltw
+MACRO \tengwarFour tengwar-ltw
+MACRO \tengwarHalla tengwar-ltw
+MACRO \tengwarHarma tengwar-ltw
+MACRO \tengwarHwesta tengwar-ltw
+MACRO \tengwarHwestaSindarinwa tengwar-ltw
+MACRO \tengwarHyarmen tengwar-ltw
+MACRO \tengwarLambe tengwar-ltw
+MACRO \tengwarLeftCurl tengwar-ltw
+MACRO \tengwarLeftCurlBelow tengwar-ltw
+MACRO \tengwarLongCarrier tengwar-ltw
+MACRO \tengwarLongCarrierBelow tengwar-ltw
+MACRO \tengwarLongSection tengwar-ltw
+MACRO \tengwarMalta tengwar-ltw
+MACRO \tengwarNasalizer tengwar-ltw
+MACRO \tengwarNine tengwar-ltw
+MACRO \tengwarNoldo tengwar-ltw
+MACRO \tengwarNunticse tengwar-ltw
+MACRO \tengwarNuumen tengwar-ltw
+MACRO \tengwarNwalme tengwar-ltw
+MACRO \tengwarOore tengwar-ltw
+MACRO \tengwarParma tengwar-ltw
+MACRO \tengwarPusta tengwar-ltw
+MACRO \tengwarQuesse tengwar-ltw
+MACRO \tengwarQuestion tengwar-ltw
+MACRO \tengwarRightCurl tengwar-ltw
+MACRO \tengwarRightCurlBelow tengwar-ltw
+MACRO \tengwarRoomen tengwar-ltw
+MACRO \tengwarSection tengwar-ltw
+MACRO \tengwarSeven tengwar-ltw
+MACRO \tengwarShortCarrier tengwar-ltw
+MACRO \tengwarSilme tengwar-ltw
+MACRO \tengwarSilmeNuquerna tengwar-ltw
+MACRO \tengwarSix tengwar-ltw
+MACRO \tengwarStemlessAnna tengwar-ltw
+MACRO \tengwarStemlessOore tengwar-ltw
+MACRO \tengwarStemlessVala tengwar-ltw
+MACRO \tengwarStemlessVilya tengwar-ltw
+MACRO \tengwarTen tengwar-ltw
+MACRO \tengwarThree tengwar-ltw
+MACRO \tengwarThreeDotsAbove tengwar-ltw
+MACRO \tengwarThreeDotsBelow tengwar-ltw
+MACRO \tengwarThuule tengwar-ltw
+MACRO \tengwarTilde tengwar-ltw
+MACRO \tengwarTinco tengwar-ltw
+MACRO \tengwarTwo tengwar-ltw
+MACRO \tengwarTwoDotsAbove tengwar-ltw
+MACRO \tengwarTwoDotsBelow tengwar-ltw
+MACRO \tengwarUmbar tengwar-ltw
+MACRO \tengwarUngwe tengwar-ltw
+MACRO \tengwarUnque tengwar-ltw
+MACRO \tengwarUure tengwar-ltw
+MACRO \tengwarVala tengwar-ltw
+MACRO \tengwarVilya tengwar-ltw
+MACRO \tengwarYanta tengwar-ltw
+MACRO \tertiarylewer mongolian-lms
+# \textacute: PD1, PU
+MACRO \textacutedbl symbols-ts1
+MACRO \textacutemacron ipa-t3
+MACRO \textacutewedge ipa-t3
+MACRO \textadvancing ipa-t3
+MACRO \textAlpha greek-lgr
+MACRO \textalpha greek-lgr OR latin-qx
+# \textampersand: PD1, PU
+MACRO \textangkhankhu thai-lth
+MACRO \textanglearc latin-qx
+MACRO \textanoteleia greek-lgr
+MACRO \textaolig ipa-ts3
+MACRO \textapprox latin-qx
+MACRO \textaristerikeraia greek-lgr
+MACRO \textascendercompwordmark symbols-ts1
+MACRO \textascii ethiopic-let OR greek-lgr \
+ OR telugu-ltl OR unicode-luc \
+ OR hebrew-mkr OR ipa-t3
+MACRO \textasciiacute symbols-ts1
+MACRO \textasciibreve symbols-ts1
+MACRO \textasciicaron symbols-ts1
+MACRO \textasciicircum devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textasciidieresis symbols-ts1
+MACRO \textasciigrave symbols-ts1
+MACRO \textasciimacron symbols-ts1
+MACRO \textasciitilde devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textasteriskcentered math-oms OR symbols-ts1
+MACRO \textautosigma greek-lgr
+MACRO \textbabygamma ipa-t3
+MACRO \textbackslash devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR math-oms OR latin-qx \
+ OR latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR latin-t5 OR cyrillic-x2
+MACRO \textbaht thai-c90 OR thai-lta OR symbols-ts1
+MACRO \textbar thai-c90 OR devanagari-ldv \
+ OR thai-lta OR telugu-ltg OR math-oms \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textbarb ipa-t3
+MACRO \textbarc ipa-t3
+MACRO \textbard ipa-t3
+MACRO \textbardbl symbols-ts1
+MACRO \textbardotlessj ipa-t3
+MACRO \textbarg ipa-t3
+MACRO \textbarglotstop ipa-t3
+MACRO \textbari ipa-t3
+MACRO \textbarl ipa-t3
+MACRO \textbaro ipa-t3
+MACRO \textbarrevglotstop ipa-t3
+MACRO \textbaru ipa-t3
+MACRO \textbeltl ipa-t3
+MACRO \textbenttailyogh ipa-ts3
+MACRO \textBeta greek-lgr
+MACRO \textbeta greek-lgr OR latin-qx OR ipa-t3
+MACRO \textBhook latin-t4
+MACRO \textbhook latin-t4
+MACRO \textbigcircle symbols-ts1
+MACRO \textbktailgamma ipa-ts3
+MACRO \textblank symbols-ts1
+MACRO \textborn symbols-ts1
+MACRO \textbottomtiebar ipa-t3
+MACRO \textbraceleft thai-c90 OR devanagari-ldv \
+ OR thai-lta OR telugu-ltg OR math-oms \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textbraceright thai-c90 OR devanagari-ldv \
+ OR thai-lta OR telugu-ltg OR math-oms \
+ OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+# \textbreve: PD1, PU
+MACRO \textbrevemacron ipa-t3
+MACRO \textbrokenbar symbols-ts1
+# \textBS: PD1, PU
+MACRO \textbullet thai-lth OR math-oms OR latin-qx \
+ OR symbols-ts1
+MACRO \textbullseye ipa-t3
+MACRO \textcapitalcompwordmark symbols-ts1
+# \textcaron: PD1, PU
+# \textcdot: PD1, PU
+# \textcedilla: PD1, PU
+MACRO \textcelsius symbols-ts1
+MACRO \textceltpal ipa-t3
+MACRO \textcent symbols-ts1
+MACRO \textcentoldstyle symbols-ts1
+MACRO \textChi greek-lgr
+MACRO \textchi greek-lgr OR ipa-t3
+MACRO \textChook latin-t4
+MACRO \textchook latin-t4
+MACRO \textcircled math-oms OR symbols-ts1
+MACRO \textcircledP symbols-ts1
+MACRO \textcircumacute ipa-t3
+MACRO \textcircumdot ipa-t3
+# \textcircumflex: PD1, PU
+MACRO \textcloseepsilon ipa-t3
+MACRO \textcloseomega ipa-t3
+MACRO \textcloserevepsilon ipa-t3
+MACRO \textcolonmonetary symbols-ts1
+MACRO \textcommatailz ipa-t3
+MACRO \textcompwordmark latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR latin-t5 OR cyrillic-x2
+MACRO \textcopyleft symbols-ts1
+MACRO \textcopyright hebrew-he8 OR greek-lgr OR hebrew-lhe \
+ OR symbols-ts1
+MACRO \textcorner ipa-t3
+# \textCR: PD1, PU
+MACRO \textcrb ipa-t3
+MACRO \textcrd ipa-t3
+MACRO \textcrg ipa-t3
+MACRO \textcrh ipa-t3
+MACRO \textcrinvglotstop ipa-t3
+MACRO \textcrlambda ipa-t3
+MACRO \textcrtwo ipa-t3
+MACRO \textctc ipa-t3
+MACRO \textctd ipa-t3
+MACRO \textctdctzlig ipa-t3
+MACRO \textctesh ipa-t3
+MACRO \textctinvglotstop ipa-ts3
+MACRO \textctj ipa-t3
+MACRO \textctjvar ipa-ts3
+MACRO \textctn ipa-t3
+MACRO \textctstretchc ipa-ts3
+MACRO \textctstretchcvar ipa-ts3
+MACRO \textctt ipa-t3
+MACRO \textcttctclig ipa-t3
+MACRO \textctturnt ipa-ts3
+MACRO \textctyogh ipa-t3
+MACRO \textctz ipa-t3
+MACRO \textcurrency cyrillic-lcy OR latin-qx \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR symbols-ts1 \
+ OR cyrillic-x2
+MACRO \textDafrican latin-t4
+MACRO \textdagger math-oms OR latin-qx OR symbols-ts1
+MACRO \textdaggerdbl math-oms OR latin-qx OR symbols-ts1
+MACRO \textdasia greek-lgr
+MACRO \textdasiaiota greek-lgr
+MACRO \textdasiaoxia greek-lgr
+MACRO \textdasiaoxiaiota greek-lgr
+MACRO \textdasiaperispomeni greek-lgr
+MACRO \textdasiaperispomeniiota greek-lgr
+MACRO \textdasiavaria greek-lgr
+MACRO \textdasiavariaiota greek-lgr
+MACRO \textdblgravecmb latin-t4
+MACRO \textdblhyphen symbols-ts1
+MACRO \textdblhyphenchar symbols-ts1
+MACRO \textdblig ipa-ts3
+MACRO \textdctzlig ipa-t3
+MACRO \textdegree latin-qx OR symbols-ts1
+MACRO \textDelta greek-lgr OR latin-qx
+MACRO \textdelta greek-lgr OR latin-qx
+MACRO \textdevanagaria devanagari-ldv
+MACRO \textdevanagariaa devanagari-ldv
+MACRO \textdevanagariabbreviation devanagari-ldv
+MACRO \textdevanagariai devanagari-ldv
+MACRO \textdevanagarianudatta devanagari-ldv
+MACRO \textdevanagarianusvara devanagari-ldv
+MACRO \textdevanagariau devanagari-ldv
+MACRO \textdevanagariavagraha devanagari-ldv
+MACRO \textdevanagariba devanagari-ldv
+MACRO \textdevanagaribha devanagari-ldv
+MACRO \textdevanagarica devanagari-ldv
+MACRO \textdevanagaricandrabindu devanagari-ldv
+MACRO \textdevanagaricandrae devanagari-ldv
+MACRO \textdevanagaricandrao devanagari-ldv
+MACRO \textdevanagaricha devanagari-ldv
+MACRO \textdevanagarida devanagari-ldv
+MACRO \textdevanagaridanda devanagari-ldv
+MACRO \textdevanagaridda devanagari-ldv
+MACRO \textdevanagaridddha devanagari-ldv
+MACRO \textdevanagariddha devanagari-ldv
+MACRO \textdevanagaridha devanagari-ldv
+MACRO \textdevanagaridoubledanda devanagari-ldv
+MACRO \textdevanagarie devanagari-ldv
+MACRO \textdevanagarieight devanagari-ldv
+MACRO \textdevanagarifa devanagari-ldv
+MACRO \textdevanagarifive devanagari-ldv
+MACRO \textdevanagarifour devanagari-ldv
+MACRO \textdevanagariga devanagari-ldv
+MACRO \textdevanagarigha devanagari-ldv
+MACRO \textdevanagarighha devanagari-ldv
+MACRO \textdevanagariha devanagari-ldv
+MACRO \textdevanagarii devanagari-ldv
+MACRO \textdevanagariii devanagari-ldv
+MACRO \textdevanagarija devanagari-ldv
+MACRO \textdevanagarijha devanagari-ldv
+MACRO \textdevanagarika devanagari-ldv
+MACRO \textdevanagarikha devanagari-ldv
+MACRO \textdevanagarikhha devanagari-ldv
+MACRO \textdevanagarila devanagari-ldv
+MACRO \textdevanagarilla devanagari-ldv
+MACRO \textdevanagarillla devanagari-ldv
+MACRO \textdevanagarima devanagari-ldv
+MACRO \textdevanagarina devanagari-ldv
+MACRO \textdevanagaringa devanagari-ldv
+MACRO \textdevanagarinine devanagari-ldv
+MACRO \textdevanagarinna devanagari-ldv
+MACRO \textdevanagarinnna devanagari-ldv
+MACRO \textdevanagarinukta devanagari-ldv
+MACRO \textdevanagarinya devanagari-ldv
+MACRO \textdevanagario devanagari-ldv
+MACRO \textdevanagariom devanagari-ldv
+MACRO \textdevanagarione devanagari-ldv
+MACRO \textdevanagaripa devanagari-ldv
+MACRO \textdevanagaripha devanagari-ldv
+MACRO \textdevanagariqa devanagari-ldv
+MACRO \textdevanagarira devanagari-ldv
+MACRO \textdevanagarirha devanagari-ldv
+MACRO \textdevanagarirra devanagari-ldv
+MACRO \textdevanagarisa devanagari-ldv
+MACRO \textdevanagariseven devanagari-ldv
+MACRO \textdevanagarisha devanagari-ldv
+MACRO \textdevanagarishorte devanagari-ldv
+MACRO \textdevanagarishorto devanagari-ldv
+MACRO \textdevanagarisix devanagari-ldv
+MACRO \textdevanagarissa devanagari-ldv
+MACRO \textdevanagarita devanagari-ldv
+MACRO \textdevanagaritha devanagari-ldv
+MACRO \textdevanagarithree devanagari-ldv
+MACRO \textdevanagaritta devanagari-ldv
+MACRO \textdevanagarittha devanagari-ldv
+MACRO \textdevanagaritwo devanagari-ldv
+MACRO \textdevanagariu devanagari-ldv
+MACRO \textdevanagariudatta devanagari-ldv
+MACRO \textdevanagariuu devanagari-ldv
+MACRO \textdevanagariva devanagari-ldv
+MACRO \textdevanagarivirama devanagari-ldv
+MACRO \textdevanagarivisarga devanagari-ldv
+MACRO \textdevanagarivocalicl devanagari-ldv
+MACRO \textdevanagarivocalicll devanagari-ldv
+MACRO \textdevanagarivocalicr devanagari-ldv
+MACRO \textdevanagarivocalicrr devanagari-ldv
+MACRO \textdevanagarivowelaa devanagari-ldv
+MACRO \textdevanagarivowelai devanagari-ldv
+MACRO \textdevanagarivowelau devanagari-ldv
+MACRO \textdevanagarivowelcandrae devanagari-ldv
+MACRO \textdevanagarivowelcandrao devanagari-ldv
+MACRO \textdevanagarivowele devanagari-ldv
+MACRO \textdevanagarivoweli devanagari-ldv
+MACRO \textdevanagarivowelii devanagari-ldv
+MACRO \textdevanagarivowelo devanagari-ldv
+MACRO \textdevanagarivowelshorte devanagari-ldv
+MACRO \textdevanagarivowelshorto devanagari-ldv
+MACRO \textdevanagarivowelu devanagari-ldv
+MACRO \textdevanagarivoweluu devanagari-ldv
+MACRO \textdevanagarivowelvocalicl devanagari-ldv
+MACRO \textdevanagarivowelvocalicll devanagari-ldv
+MACRO \textdevanagarivowelvocalicr devanagari-ldv
+MACRO \textdevanagarivowelvocalicrr devanagari-ldv
+MACRO \textdevanagariya devanagari-ldv
+MACRO \textdevanagariyya devanagari-ldv
+MACRO \textdevanagariza devanagari-ldv
+MACRO \textdevanagarizero devanagari-ldv
+MACRO \textdexiakeraia greek-lgr
+MACRO \textDhook latin-t4
+MACRO \textdhook latin-t4
+MACRO \textdialytikaoxia greek-lgr
+MACRO \textdialytikaperispomeni greek-lgr
+MACRO \textdialytikatonos greek-lgr
+MACRO \textdialytikavaria greek-lgr
+MACRO \textdiameter latin-qx
+MACRO \textdied symbols-ts1
+# \textdieresis: PD1, PU
+MACRO \textDigamma greek-lgr
+MACRO \textdigamma greek-lgr
+MACRO \textdiscount symbols-ts1
+MACRO \textdiv latin-qx OR symbols-ts1
+# \textdivide: LY1, PD1, PU
+MACRO \textdivorced symbols-ts1
+MACRO \textdollar cyrillic-lcy OR devanagari-ldv \
+ OR thai-lta OR telugu-ltg \
+ OR latin-ot1 OR latin-ot4 OR latin-qx \
+ OR latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR latin-t5 OR symbols-ts1 \
+ OR cyrillic-x2
+MACRO \textdollaroldstyle symbols-ts1
+MACRO \textdong symbols-ts1
+# \textdotaccent: PD1, PU
+MACRO \textdotacute ipa-t3
+MACRO \textdotbreve ipa-t3
+MACRO \textdoublebaresh ipa-t3
+MACRO \textdoublebarpipe ipa-t3
+MACRO \textdoublebarpipevar ipa-ts3
+MACRO \textdoublebarslash ipa-t3
+MACRO \textdoublegrave ipa-t3
+MACRO \textdoublepipe ipa-t3
+MACRO \textdoublepipevar ipa-ts3
+MACRO \textdoublevbaraccent ipa-t3
+MACRO \textdoublevertline ipa-t3
+MACRO \textdownarrow symbols-ts1
+MACRO \textdownfullarrow ipa-ts3
+MACRO \textdownstep ipa-t3
+MACRO \textdtail latin-t4
+MACRO \textdyoghlig ipa-t3
+MACRO \textdzlig ipa-t3
+MACRO \texteightoldstyle symbols-ts1
+MACRO \textell latin-qx
+MACRO \textellipsis latin-qx
+MACRO \textemdash thai-c90 OR cyrillic-lcy \
+ OR devanagari-ldv OR greek-lgr \
+ OR thai-lta OR telugu-ltg OR thai-lth \
+ OR latin-ot1 OR cyrillic-ot2 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textendash thai-c90 OR cyrillic-lcy \
+ OR devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR thai-lth \
+ OR latin-ot1 OR cyrillic-ot2 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textEopen latin-t4
+MACRO \texteopen latin-t4
+MACRO \textEpsilon greek-lgr
+MACRO \textepsilon greek-lgr OR ipa-t3
+MACRO \textEreversed latin-t4
+MACRO \textEsh latin-t4
+MACRO \textesh ipa-t3 OR latin-t4
+MACRO \textestimated symbols-ts1
+MACRO \textEta greek-lgr
+MACRO \texteta greek-lgr
+MACRO \textethiopicba ethiopic-let
+MACRO \textethiopicbaa ethiopic-let
+MACRO \textethiopicbe ethiopic-let
+MACRO \textethiopicbee ethiopic-let
+MACRO \textethiopicbi ethiopic-let
+MACRO \textethiopicbo ethiopic-let
+MACRO \textethiopicbu ethiopic-let
+MACRO \textethiopicbwa ethiopic-let
+MACRO \textethiopicca ethiopic-let
+MACRO \textethiopiccaa ethiopic-let
+MACRO \textethiopicce ethiopic-let
+MACRO \textethiopiccee ethiopic-let
+MACRO \textethiopiccha ethiopic-let
+MACRO \textethiopicchaa ethiopic-let
+MACRO \textethiopicche ethiopic-let
+MACRO \textethiopicchee ethiopic-let
+MACRO \textethiopicchi ethiopic-let
+MACRO \textethiopiccho ethiopic-let
+MACRO \textethiopicchu ethiopic-let
+MACRO \textethiopicchwa ethiopic-let
+MACRO \textethiopicci ethiopic-let
+MACRO \textethiopicco ethiopic-let
+MACRO \textethiopiccolon ethiopic-let
+MACRO \textethiopiccomma ethiopic-let
+MACRO \textethiopiccu ethiopic-let
+MACRO \textethiopiccwa ethiopic-let
+MACRO \textethiopicda ethiopic-let
+MACRO \textethiopicdaa ethiopic-let
+MACRO \textethiopicdda ethiopic-let
+MACRO \textethiopicddaa ethiopic-let
+MACRO \textethiopicdde ethiopic-let
+MACRO \textethiopicddee ethiopic-let
+MACRO \textethiopicddi ethiopic-let
+MACRO \textethiopicddo ethiopic-let
+MACRO \textethiopicddu ethiopic-let
+MACRO \textethiopicddwa ethiopic-let
+MACRO \textethiopicde ethiopic-let
+MACRO \textethiopicdee ethiopic-let
+MACRO \textethiopicdi ethiopic-let
+MACRO \textethiopicdo ethiopic-let
+MACRO \textethiopicdu ethiopic-let
+MACRO \textethiopicdwa ethiopic-let
+MACRO \textethiopiceight ethiopic-let
+MACRO \textethiopiceighty ethiopic-let
+MACRO \textethiopicfa ethiopic-let
+MACRO \textethiopicfaa ethiopic-let
+MACRO \textethiopicfe ethiopic-let
+MACRO \textethiopicfee ethiopic-let
+MACRO \textethiopicfi ethiopic-let
+MACRO \textethiopicfifty ethiopic-let
+MACRO \textethiopicfive ethiopic-let
+MACRO \textethiopicfo ethiopic-let
+MACRO \textethiopicforty ethiopic-let
+MACRO \textethiopicfour ethiopic-let
+MACRO \textethiopicfu ethiopic-let
+MACRO \textethiopicfullstop ethiopic-let
+MACRO \textethiopicfwa ethiopic-let
+MACRO \textethiopicfya ethiopic-let
+MACRO \textethiopicga ethiopic-let
+MACRO \textethiopicgaa ethiopic-let
+MACRO \textethiopicge ethiopic-let
+MACRO \textethiopicgee ethiopic-let
+MACRO \textethiopicgga ethiopic-let
+MACRO \textethiopicggaa ethiopic-let
+MACRO \textethiopicgge ethiopic-let
+MACRO \textethiopicggee ethiopic-let
+MACRO \textethiopicggi ethiopic-let
+MACRO \textethiopicggo ethiopic-let
+MACRO \textethiopicggu ethiopic-let
+MACRO \textethiopicgi ethiopic-let
+MACRO \textethiopicglottala ethiopic-let
+MACRO \textethiopicglottalaa ethiopic-let
+MACRO \textethiopicglottale ethiopic-let
+MACRO \textethiopicglottalee ethiopic-let
+MACRO \textethiopicglottali ethiopic-let
+MACRO \textethiopicglottalo ethiopic-let
+MACRO \textethiopicglottalu ethiopic-let
+MACRO \textethiopicglottalwa ethiopic-let
+MACRO \textethiopicgo ethiopic-let
+MACRO \textethiopicgu ethiopic-let
+MACRO \textethiopicgwa ethiopic-let
+MACRO \textethiopicgwaa ethiopic-let
+MACRO \textethiopicgwe ethiopic-let
+MACRO \textethiopicgwee ethiopic-let
+MACRO \textethiopicgwi ethiopic-let
+MACRO \textethiopicha ethiopic-let
+MACRO \textethiopichaa ethiopic-let
+MACRO \textethiopiche ethiopic-let
+MACRO \textethiopichee ethiopic-let
+MACRO \textethiopichha ethiopic-let
+MACRO \textethiopichhaa ethiopic-let
+MACRO \textethiopichhe ethiopic-let
+MACRO \textethiopichhee ethiopic-let
+MACRO \textethiopichhi ethiopic-let
+MACRO \textethiopichho ethiopic-let
+MACRO \textethiopichhu ethiopic-let
+MACRO \textethiopichhwa ethiopic-let
+MACRO \textethiopichi ethiopic-let
+MACRO \textethiopicho ethiopic-let
+MACRO \textethiopichu ethiopic-let
+MACRO \textethiopichundred ethiopic-let
+MACRO \textethiopicja ethiopic-let
+MACRO \textethiopicjaa ethiopic-let
+MACRO \textethiopicje ethiopic-let
+MACRO \textethiopicjee ethiopic-let
+MACRO \textethiopicji ethiopic-let
+MACRO \textethiopicjo ethiopic-let
+MACRO \textethiopicju ethiopic-let
+MACRO \textethiopicjwa ethiopic-let
+MACRO \textethiopicka ethiopic-let
+MACRO \textethiopickaa ethiopic-let
+MACRO \textethiopicke ethiopic-let
+MACRO \textethiopickee ethiopic-let
+MACRO \textethiopicki ethiopic-let
+MACRO \textethiopicko ethiopic-let
+MACRO \textethiopicku ethiopic-let
+MACRO \textethiopickwa ethiopic-let
+MACRO \textethiopickwaa ethiopic-let
+MACRO \textethiopickwe ethiopic-let
+MACRO \textethiopickwee ethiopic-let
+MACRO \textethiopickwi ethiopic-let
+MACRO \textethiopickxa ethiopic-let
+MACRO \textethiopickxaa ethiopic-let
+MACRO \textethiopickxe ethiopic-let
+MACRO \textethiopickxee ethiopic-let
+MACRO \textethiopickxi ethiopic-let
+MACRO \textethiopickxo ethiopic-let
+MACRO \textethiopickxu ethiopic-let
+MACRO \textethiopickxwa ethiopic-let
+MACRO \textethiopickxwaa ethiopic-let
+MACRO \textethiopickxwe ethiopic-let
+MACRO \textethiopickxwee ethiopic-let
+MACRO \textethiopickxwi ethiopic-let
+MACRO \textethiopicla ethiopic-let
+MACRO \textethiopiclaa ethiopic-let
+MACRO \textethiopicle ethiopic-let
+MACRO \textethiopiclee ethiopic-let
+MACRO \textethiopicli ethiopic-let
+MACRO \textethiopiclo ethiopic-let
+MACRO \textethiopiclu ethiopic-let
+MACRO \textethiopiclwa ethiopic-let
+MACRO \textethiopicma ethiopic-let
+MACRO \textethiopicmaa ethiopic-let
+MACRO \textethiopicme ethiopic-let
+MACRO \textethiopicmee ethiopic-let
+MACRO \textethiopicmi ethiopic-let
+MACRO \textethiopicmo ethiopic-let
+MACRO \textethiopicmu ethiopic-let
+MACRO \textethiopicmwa ethiopic-let
+MACRO \textethiopicmya ethiopic-let
+MACRO \textethiopicna ethiopic-let
+MACRO \textethiopicnaa ethiopic-let
+MACRO \textethiopicne ethiopic-let
+MACRO \textethiopicnee ethiopic-let
+MACRO \textethiopicni ethiopic-let
+MACRO \textethiopicnine ethiopic-let
+MACRO \textethiopicninety ethiopic-let
+MACRO \textethiopicno ethiopic-let
+MACRO \textethiopicnu ethiopic-let
+MACRO \textethiopicnwa ethiopic-let
+MACRO \textethiopicnya ethiopic-let
+MACRO \textethiopicnyaa ethiopic-let
+MACRO \textethiopicnye ethiopic-let
+MACRO \textethiopicnyee ethiopic-let
+MACRO \textethiopicnyi ethiopic-let
+MACRO \textethiopicnyo ethiopic-let
+MACRO \textethiopicnyu ethiopic-let
+MACRO \textethiopicnywa ethiopic-let
+MACRO \textethiopicone ethiopic-let
+MACRO \textethiopicpa ethiopic-let
+MACRO \textethiopicpaa ethiopic-let
+MACRO \textethiopicparagraph ethiopic-let
+MACRO \textethiopicpe ethiopic-let
+MACRO \textethiopicpee ethiopic-let
+MACRO \textethiopicpha ethiopic-let
+MACRO \textethiopicphaa ethiopic-let
+MACRO \textethiopicpharyngeala ethiopic-let
+MACRO \textethiopicpharyngealaa ethiopic-let
+MACRO \textethiopicpharyngeale ethiopic-let
+MACRO \textethiopicpharyngealee ethiopic-let
+MACRO \textethiopicpharyngeali ethiopic-let
+MACRO \textethiopicpharyngealo ethiopic-let
+MACRO \textethiopicpharyngealu ethiopic-let
+MACRO \textethiopicphe ethiopic-let
+MACRO \textethiopicphee ethiopic-let
+MACRO \textethiopicphi ethiopic-let
+MACRO \textethiopicpho ethiopic-let
+MACRO \textethiopicphu ethiopic-let
+MACRO \textethiopicphwa ethiopic-let
+MACRO \textethiopicpi ethiopic-let
+MACRO \textethiopicpo ethiopic-let
+MACRO \textethiopicprefacecolon ethiopic-let
+MACRO \textethiopicpu ethiopic-let
+MACRO \textethiopicpwa ethiopic-let
+MACRO \textethiopicqa ethiopic-let
+MACRO \textethiopicqaa ethiopic-let
+MACRO \textethiopicqe ethiopic-let
+MACRO \textethiopicqee ethiopic-let
+MACRO \textethiopicqha ethiopic-let
+MACRO \textethiopicqhaa ethiopic-let
+MACRO \textethiopicqhe ethiopic-let
+MACRO \textethiopicqhee ethiopic-let
+MACRO \textethiopicqhi ethiopic-let
+MACRO \textethiopicqho ethiopic-let
+MACRO \textethiopicqhu ethiopic-let
+MACRO \textethiopicqhwa ethiopic-let
+MACRO \textethiopicqhwaa ethiopic-let
+MACRO \textethiopicqhwe ethiopic-let
+MACRO \textethiopicqhwee ethiopic-let
+MACRO \textethiopicqhwi ethiopic-let
+MACRO \textethiopicqi ethiopic-let
+MACRO \textethiopicqo ethiopic-let
+MACRO \textethiopicqu ethiopic-let
+MACRO \textethiopicquestionmark ethiopic-let
+MACRO \textethiopicqwa ethiopic-let
+MACRO \textethiopicqwaa ethiopic-let
+MACRO \textethiopicqwe ethiopic-let
+MACRO \textethiopicqwee ethiopic-let
+MACRO \textethiopicqwi ethiopic-let
+MACRO \textethiopicra ethiopic-let
+MACRO \textethiopicraa ethiopic-let
+MACRO \textethiopicre ethiopic-let
+MACRO \textethiopicree ethiopic-let
+MACRO \textethiopicri ethiopic-let
+MACRO \textethiopicro ethiopic-let
+MACRO \textethiopicru ethiopic-let
+MACRO \textethiopicrwa ethiopic-let
+MACRO \textethiopicrya ethiopic-let
+MACRO \textethiopicsa ethiopic-let
+MACRO \textethiopicsaa ethiopic-let
+MACRO \textethiopicse ethiopic-let
+MACRO \textethiopicsee ethiopic-let
+MACRO \textethiopicsemicolon ethiopic-let
+MACRO \textethiopicseven ethiopic-let
+MACRO \textethiopicseventy ethiopic-let
+MACRO \textethiopicsha ethiopic-let
+MACRO \textethiopicshaa ethiopic-let
+MACRO \textethiopicshe ethiopic-let
+MACRO \textethiopicshee ethiopic-let
+MACRO \textethiopicshi ethiopic-let
+MACRO \textethiopicsho ethiopic-let
+MACRO \textethiopicshu ethiopic-let
+MACRO \textethiopicshwa ethiopic-let
+MACRO \textethiopicsi ethiopic-let
+MACRO \textethiopicsix ethiopic-let
+MACRO \textethiopicsixty ethiopic-let
+MACRO \textethiopicso ethiopic-let
+MACRO \textethiopicsu ethiopic-let
+MACRO \textethiopicswa ethiopic-let
+MACRO \textethiopicsza ethiopic-let
+MACRO \textethiopicszaa ethiopic-let
+MACRO \textethiopicsze ethiopic-let
+MACRO \textethiopicszee ethiopic-let
+MACRO \textethiopicszi ethiopic-let
+MACRO \textethiopicszo ethiopic-let
+MACRO \textethiopicszu ethiopic-let
+MACRO \textethiopicszwa ethiopic-let
+MACRO \textethiopicta ethiopic-let
+MACRO \textethiopictaa ethiopic-let
+MACRO \textethiopicte ethiopic-let
+MACRO \textethiopictee ethiopic-let
+MACRO \textethiopicten ethiopic-let
+MACRO \textethiopictenthousand ethiopic-let
+MACRO \textethiopictha ethiopic-let
+MACRO \textethiopicthaa ethiopic-let
+MACRO \textethiopicthe ethiopic-let
+MACRO \textethiopicthee ethiopic-let
+MACRO \textethiopicthi ethiopic-let
+MACRO \textethiopicthirty ethiopic-let
+MACRO \textethiopictho ethiopic-let
+MACRO \textethiopicthree ethiopic-let
+MACRO \textethiopicthu ethiopic-let
+MACRO \textethiopicthwa ethiopic-let
+MACRO \textethiopicti ethiopic-let
+MACRO \textethiopicto ethiopic-let
+MACRO \textethiopictsa ethiopic-let
+MACRO \textethiopictsaa ethiopic-let
+MACRO \textethiopictse ethiopic-let
+MACRO \textethiopictsee ethiopic-let
+MACRO \textethiopictsi ethiopic-let
+MACRO \textethiopictso ethiopic-let
+MACRO \textethiopictsu ethiopic-let
+MACRO \textethiopictswa ethiopic-let
+MACRO \textethiopictu ethiopic-let
+MACRO \textethiopictwa ethiopic-let
+MACRO \textethiopictwenty ethiopic-let
+MACRO \textethiopictwo ethiopic-let
+MACRO \textethiopictza ethiopic-let
+MACRO \textethiopictzaa ethiopic-let
+MACRO \textethiopictze ethiopic-let
+MACRO \textethiopictzee ethiopic-let
+MACRO \textethiopictzi ethiopic-let
+MACRO \textethiopictzo ethiopic-let
+MACRO \textethiopictzu ethiopic-let
+MACRO \textethiopicva ethiopic-let
+MACRO \textethiopicvaa ethiopic-let
+MACRO \textethiopicve ethiopic-let
+MACRO \textethiopicvee ethiopic-let
+MACRO \textethiopicvi ethiopic-let
+MACRO \textethiopicvo ethiopic-let
+MACRO \textethiopicvu ethiopic-let
+MACRO \textethiopicvwa ethiopic-let
+MACRO \textethiopicwa ethiopic-let
+MACRO \textethiopicwaa ethiopic-let
+MACRO \textethiopicwe ethiopic-let
+MACRO \textethiopicwee ethiopic-let
+MACRO \textethiopicwi ethiopic-let
+MACRO \textethiopicwo ethiopic-let
+MACRO \textethiopicwordspace ethiopic-let
+MACRO \textethiopicwu ethiopic-let
+MACRO \textethiopicxa ethiopic-let
+MACRO \textethiopicxaa ethiopic-let
+MACRO \textethiopicxe ethiopic-let
+MACRO \textethiopicxee ethiopic-let
+MACRO \textethiopicxi ethiopic-let
+MACRO \textethiopicxo ethiopic-let
+MACRO \textethiopicxu ethiopic-let
+MACRO \textethiopicxwa ethiopic-let
+MACRO \textethiopicxwaa ethiopic-let
+MACRO \textethiopicxwe ethiopic-let
+MACRO \textethiopicxwee ethiopic-let
+MACRO \textethiopicxwi ethiopic-let
+MACRO \textethiopicya ethiopic-let
+MACRO \textethiopicyaa ethiopic-let
+MACRO \textethiopicye ethiopic-let
+MACRO \textethiopicyee ethiopic-let
+MACRO \textethiopicyi ethiopic-let
+MACRO \textethiopicyo ethiopic-let
+MACRO \textethiopicyu ethiopic-let
+MACRO \textethiopicza ethiopic-let
+MACRO \textethiopiczaa ethiopic-let
+MACRO \textethiopicze ethiopic-let
+MACRO \textethiopiczee ethiopic-let
+MACRO \textethiopiczha ethiopic-let
+MACRO \textethiopiczhaa ethiopic-let
+MACRO \textethiopiczhe ethiopic-let
+MACRO \textethiopiczhee ethiopic-let
+MACRO \textethiopiczhi ethiopic-let
+MACRO \textethiopiczho ethiopic-let
+MACRO \textethiopiczhu ethiopic-let
+MACRO \textethiopiczhwa ethiopic-let
+MACRO \textethiopiczi ethiopic-let
+MACRO \textethiopiczo ethiopic-let
+MACRO \textethiopiczu ethiopic-let
+MACRO \textethiopiczwa ethiopic-let
+MACRO \texteturned latin-t4
+MACRO \textEuro latin-qx
+MACRO \texteuro greek-lgr OR latin-qx OR symbols-ts1
+MACRO \textexclamdown cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR latin-t4
+MACRO \textEzh latin-t4
+MACRO \textezh latin-t4
+MACRO \textfallrise ipa-t3
+MACRO \textfemale ipa-ts3
+# \textFF: PD1, PU
+MACRO \textFhook latin-t4
+# \textfi: PD1, PU
+MACRO \textfishhookr ipa-t3
+MACRO \textfiveoldstyle symbols-ts1
+# \textfl: PD1, PU
+MACRO \textflorin latin-t4 OR symbols-ts1
+# \textflq: PD1, PU
+# \textflqq: PD1, PU
+MACRO \textfongmun thai-lth
+MACRO \textfouroldstyle symbols-ts1
+# \textfractionmark: PD1, PU
+MACRO \textfractionsolidus symbols-ts1
+MACRO \textfrbarn ipa-ts3
+MACRO \textfrhookd ipa-ts3
+MACRO \textfrhookdvar ipa-ts3
+MACRO \textfrhookt ipa-ts3
+# \textfrq: PD1, PU
+# \textfrqq: PD1, PU
+MACRO \textfrtailgamma ipa-ts3
+MACRO \textg ipa-t3
+MACRO \textGamma greek-lgr
+MACRO \textgamma greek-lgr OR ipa-t3
+MACRO \textGammaafrican latin-t4
+MACRO \textgammalatinsmall latin-t4
+MACRO \textglobfall ipa-t3
+MACRO \textglobrise ipa-t3
+MACRO \textglotstop ipa-t3
+MACRO \textglotstopvari ipa-ts3
+MACRO \textglotstopvarii ipa-ts3
+MACRO \textglotstopvariii ipa-ts3
+# \textglq: PD1, PU
+# \textglqq: PD1, PU
+# \textgrave: PD1, PU
+MACRO \textgravecircum ipa-t3
+MACRO \textgravedbl symbols-ts1
+MACRO \textgravedot ipa-t3
+MACRO \textgravemacron ipa-t3
+MACRO \textgravemid ipa-t3
+MACRO \textgreater devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR math-oml OR latin-qx \
+ OR latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR latin-t5 OR cyrillic-x2
+MACRO \textgrgamma ipa-ts3
+# \textgrq: PD1, PU
+# \textgrqq: PD1, PU
+# \textGslash: PU
+# \textgslash: PU
+MACRO \textguarani symbols-ts1
+MACRO \texthalflength ipa-t3
+MACRO \texthardsign ipa-t3
+MACRO \textHbar latin-t4
+MACRO \texthbar latin-t4
+MACRO \textheng ipa-ts3
+MACRO \texthighrise ipa-t3
+MACRO \texthmlig ipa-ts3
+MACRO \texthooktop ipa-t3
+# \textHslash: PU
+# \texthslash: PU
+# \textHT: PD1, PU
+MACRO \texthtb ipa-t3
+MACRO \texthtbardotlessj ipa-t3
+MACRO \texthtbardotlessjvar ipa-ts3
+MACRO \texthtc ipa-t3
+MACRO \texthtd ipa-t3
+MACRO \texthtg ipa-t3
+MACRO \texthth ipa-t3
+MACRO \texththeng ipa-t3
+MACRO \texthtk ipa-t3
+MACRO \texthtp ipa-t3
+MACRO \texthtq ipa-t3
+MACRO \texthtrtaild ipa-t3
+MACRO \texthtscg ipa-t3
+MACRO \texthtt ipa-t3
+# \texthungarumlaut: PD1, PU
+MACRO \texthvlig ipa-t3
+MACRO \textinfty latin-qx
+MACRO \textinterrobang symbols-ts1
+MACRO \textinterrobangdown symbols-ts1
+MACRO \textinvglotstop ipa-t3
+MACRO \textinvomega ipa-ts3
+MACRO \textinvsca ipa-ts3
+MACRO \textinvscr ipa-t3
+MACRO \textinvscripta ipa-ts3
+MACRO \textinvsubbridge ipa-t3
+MACRO \textIota greek-lgr
+MACRO \textiota greek-lgr OR ipa-t3
+MACRO \textIotaafrican latin-t4
+# \textIotadieresis: PU
+MACRO \textiotalatin latin-t4
+MACRO \textKappa greek-lgr
+MACRO \textkappa greek-lgr
+MACRO \textkhomut thai-lth
+MACRO \textKhook latin-t4
+MACRO \textkhook latin-t4
+MACRO \textLambda greek-lgr
+MACRO \textlambda greek-lgr OR ipa-t3
+MACRO \textlangle symbols-ts1
+MACRO \textlbrackdbl symbols-ts1
+MACRO \textleaf symbols-ts1
+MACRO \textleftarrow symbols-ts1
+MACRO \textlengthmark ipa-t3
+MACRO \textless devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR math-oml OR latin-qx \
+ OR latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR latin-t5 OR cyrillic-x2
+# \textLF: PD1, PU
+MACRO \textlfishhookrlig ipa-ts3
+MACRO \textlhookfour ipa-ts3
+MACRO \textlhookp ipa-ts3
+MACRO \textlhookt ipa-t3
+MACRO \textlhti ipa-ts3
+MACRO \textlhtlongi ipa-t3
+MACRO \textlhtlongy ipa-t3
+MACRO \textlira symbols-ts1
+MACRO \textlnot symbols-ts1
+# \textlogicalnot: LY1, PD1, PU
+MACRO \textlonglegr ipa-t3
+MACRO \textlooptoprevesh ipa-ts3
+MACRO \textlowering ipa-t3
+MACRO \textlowrise ipa-t3
+MACRO \textlptr ipa-t3
+MACRO \textlquill symbols-ts1
+MACRO \textltailm ipa-t3
+MACRO \textltailn ipa-t3
+MACRO \textltilde ipa-t3
+MACRO \textlyoghlig ipa-t3
+# \textmacron: PD1, PU
+MACRO \textmarried symbols-ts1
+MACRO \textmho symbols-ts1
+MACRO \textmidacute ipa-t3
+MACRO \textminus latin-qx OR symbols-ts1
+MACRO \textmongoliana mongolian-lma OR mongolian-lmo
+MACRO \textmongolianaligalianusvaraone mongolian-lmo
+MACRO \textmongolianang mongolian-lmo
+MACRO \textmongolianba mongolian-lma OR mongolian-lmo
+MACRO \textmongoliancha mongolian-lma OR mongolian-lmo
+MACRO \textmongoliancolon mongolian-lma OR mongolian-lmo
+MACRO \textmongoliancomma mongolian-lmo
+MACRO \textmongolianda mongolian-lmo
+MACRO \textmongoliane mongolian-lmo
+MACRO \textmongolianeight mongolian-lma OR mongolian-lmo
+MACRO \textmongolianellipsis mongolian-lma OR mongolian-lmo
+MACRO \textmongolianfa mongolian-lmo
+MACRO \textmongolianfive mongolian-lma OR mongolian-lmo
+MACRO \textmongolianfour mongolian-lma OR mongolian-lmo
+MACRO \textmongolianfourdots mongolian-lma OR mongolian-lmo
+MACRO \textmongolianfreevariationselectorone mongolian-lma OR mongolian-lmo
+MACRO \textmongolianfreevariationselectortwo mongolian-lma OR mongolian-lmo
+MACRO \textmongolianfullstop mongolian-lmo
+MACRO \textmongolianga mongolian-lmo
+MACRO \textmongolianhaa mongolian-lmo
+MACRO \textmongoliani mongolian-lma OR mongolian-lmo
+MACRO \textmongolianja mongolian-lma OR mongolian-lmo
+MACRO \textmongolianka mongolian-lmo
+MACRO \textmongoliankha mongolian-lmo
+MACRO \textmongolianla mongolian-lma OR mongolian-lmo
+MACRO \textmongolianma mongolian-lma OR mongolian-lmo
+MACRO \textmongolianmanchualigalica mongolian-lma
+MACRO \textmongolianmanchualigalinga mongolian-lma
+MACRO \textmongolianmanchualigaliza mongolian-lma
+MACRO \textmongolianmanchualigalizha mongolian-lma
+MACRO \textmongolianmanchucomma mongolian-lma
+MACRO \textmongolianmanchufa mongolian-lma
+MACRO \textmongolianmanchufullstop mongolian-lma
+MACRO \textmongolianmanchuka mongolian-lma
+MACRO \textmongolianmanchura mongolian-lma
+MACRO \textmongolianmanchuzha mongolian-lma
+MACRO \textmongolianna mongolian-lma OR mongolian-lmo
+MACRO \textmongoliannine mongolian-lma OR mongolian-lmo
+MACRO \textmongoliannirugu mongolian-lma OR mongolian-lmo
+MACRO \textmongoliano mongolian-lma OR mongolian-lmo
+MACRO \textmongolianone mongolian-lma OR mongolian-lmo
+MACRO \textmongolianpa mongolian-lmo
+MACRO \textmongolianqa mongolian-lmo
+MACRO \textmongolianra mongolian-lmo
+MACRO \textmongoliansa mongolian-lma OR mongolian-lmo
+MACRO \textmongolianseven mongolian-lma OR mongolian-lmo
+MACRO \textmongoliansha mongolian-lmo
+MACRO \textmongoliansibeang mongolian-lma
+MACRO \textmongoliansibecha mongolian-lma
+MACRO \textmongoliansibeda mongolian-lma
+MACRO \textmongoliansibee mongolian-lma
+MACRO \textmongoliansibega mongolian-lma
+MACRO \textmongoliansibegaa mongolian-lma
+MACRO \textmongoliansibeha mongolian-lma
+MACRO \textmongoliansibehaa mongolian-lma
+MACRO \textmongoliansibepa mongolian-lma
+MACRO \textmongoliansiberaa mongolian-lma
+MACRO \textmongoliansibesha mongolian-lma
+MACRO \textmongoliansibeta mongolian-lma
+MACRO \textmongoliansibetsa mongolian-lma
+MACRO \textmongoliansibeu mongolian-lma
+MACRO \textmongoliansibeue mongolian-lma
+MACRO \textmongoliansibeza mongolian-lma
+MACRO \textmongoliansix mongolian-lma OR mongolian-lmo
+MACRO \textmongolianta mongolian-lmo
+MACRO \textmongolianthree mongolian-lma OR mongolian-lmo
+MACRO \textmongoliantsa mongolian-lmo
+MACRO \textmongoliantwo mongolian-lma OR mongolian-lmo
+MACRO \textmongolianu mongolian-lmo
+MACRO \textmongolianvowelseparator mongolian-lma OR mongolian-lmo
+MACRO \textmongolianwa mongolian-lmo
+MACRO \textmongolianya mongolian-lma OR mongolian-lmo
+MACRO \textmongolianza mongolian-lmo
+MACRO \textmongolianzero mongolian-lma OR mongolian-lmo
+MACRO \textmongolianzra mongolian-lmo
+MACRO \textMu greek-lgr
+MACRO \textmu greek-lgr OR latin-qx OR symbols-ts1
+# \textmultiply: LY1, PD1, PU
+MACRO \textmusicalnote symbols-ts1
+MACRO \textnaira symbols-ts1
+# \textneg: PD1, PU
+MACRO \textNhookleft latin-t4
+MACRO \textnhookleft latin-t4
+MACRO \textnineoldstyle symbols-ts1
+MACRO \textnrleg ipa-ts3
+MACRO \textNu greek-lgr
+MACRO \textnu greek-lgr
+# \textnumbersign: PD1, PU
+MACRO \textnumero cyrillic-lcy OR cyrillic-ot2 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR symbols-ts1 \
+ OR cyrillic-x2
+MACRO \textObardotlessj ipa-t3
+MACRO \textObullseye ipa-ts3
+# \textogonek: PD1, PU
+MACRO \textohm symbols-ts1
+MACRO \textOlyoghlig ipa-t3
+MACRO \textOmega greek-lgr OR latin-qx
+MACRO \textomega greek-lgr OR ipa-t3
+MACRO \textOmicron greek-lgr
+MACRO \textomicron greek-lgr
+MACRO \textonehalf symbols-ts1
+MACRO \textoneoldstyle symbols-ts1
+MACRO \textonequarter symbols-ts1
+MACRO \textonesuperior symbols-ts1
+MACRO \textOopen latin-t4
+MACRO \textoopen latin-t4
+MACRO \textopenbullet symbols-ts1
+MACRO \textopencorner ipa-t3
+MACRO \textopeno ipa-t3
+MACRO \textordfeminine symbols-ts1
+MACRO \textordmasculine symbols-ts1
+MACRO \textovercross ipa-t3
+MACRO \textoverw ipa-t3
+MACRO \textoxia greek-lgr
+MACRO \textoxiaiota greek-lgr
+MACRO \textpalhook ipa-t3
+MACRO \textpalhooklong ipa-ts3
+MACRO \textpalhookvar ipa-ts3
+MACRO \textparagraph math-oms OR latin-qx OR symbols-ts1
+MACRO \textparenleft greek-lgr
+MACRO \textparenright greek-lgr
+MACRO \textpentedeka greek-lgr
+MACRO \textpentehkaton greek-lgr
+MACRO \textpentemuria greek-lgr
+MACRO \textpenteqilioi greek-lgr
+MACRO \textpercent greek-lgr
+MACRO \textperiodcentered greek-lgr OR math-oms OR latin-qx \
+ OR symbols-ts1
+MACRO \textperispomeniiota greek-lgr
+MACRO \textpertenthousand latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR latin-t5 OR symbols-ts1 \
+ OR cyrillic-x2
+MACRO \textperthousand greek-lgr OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR symbols-ts1 OR cyrillic-x2
+MACRO \textpeso symbols-ts1
+MACRO \textPhi greek-lgr
+MACRO \textphi greek-lgr OR ipa-t3
+MACRO \textPhook latin-t4
+MACRO \textphook latin-t4
+MACRO \textPi greek-lgr OR latin-qx
+MACRO \textpi greek-lgr OR latin-qx
+MACRO \textpilcrow symbols-ts1
+MACRO \textpipe ipa-t3
+MACRO \textpipevar ipa-ts3
+# \textplusminus: LY1, PD1, PU
+MACRO \textpm latin-qx OR symbols-ts1
+MACRO \textpolhook ipa-t3
+MACRO \textprimstress ipa-t3
+MACRO \textPsi greek-lgr
+MACRO \textpsi greek-lgr
+MACRO \textpsili greek-lgr
+MACRO \textpsiliiota greek-lgr
+MACRO \textpsilioxia greek-lgr
+MACRO \textpsilioxiaiota greek-lgr
+MACRO \textpsiliperispomeni greek-lgr
+MACRO \textpsiliperispomeniiota greek-lgr
+MACRO \textpsilivaria greek-lgr
+MACRO \textpsilivariaiota greek-lgr
+MACRO \textqoppa greek-lgr
+MACRO \textqoppavariant greek-lgr
+MACRO \textqplig ipa-ts3
+MACRO \textquestion greek-lgr
+MACRO \textquestiondown cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR latin-t4
+MACRO \textquotedbl thai-c90 OR devanagari-ldv \
+ OR thai-lta OR telugu-ltg OR latin-qx \
+ OR latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR latin-t5 OR cyrillic-x2
+# \textquotedblbase: LY1
+MACRO \textquotedblleft thai-c90 OR cyrillic-lcy \
+ OR devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR thai-lth \
+ OR latin-ot1 OR cyrillic-ot2 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textquotedblright thai-c90 OR cyrillic-lcy \
+ OR devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR thai-lth \
+ OR latin-ot1 OR cyrillic-ot2 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textquoteleft thai-c90 OR cyrillic-lcy \
+ OR devanagari-ldv OR greek-lgr \
+ OR thai-lta OR telugu-ltg OR thai-lth \
+ OR latin-ot1 OR cyrillic-ot2 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textquoteright thai-c90 OR cyrillic-lcy \
+ OR devanagari-ldv OR greek-lgr \
+ OR thai-lta OR telugu-ltg OR thai-lth \
+ OR latin-ot1 OR cyrillic-ot2 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+# \textquotesingl: mTT
+# \textquotesinglbase: LY1
+MACRO \textquotesingle latin-qx OR symbols-ts1
+MACRO \textquotestraightbase symbols-ts1
+MACRO \textquotestraightdblbase symbols-ts1
+MACRO \textrademark thai-lth
+MACRO \textraiseglotstop ipa-t3
+MACRO \textraisevibyi ipa-t3
+MACRO \textraising ipa-t3
+MACRO \textramshorns ipa-t3
+MACRO \textrangle symbols-ts1
+MACRO \textrbrackdbl symbols-ts1
+MACRO \textrecipe symbols-ts1
+MACRO \textrectangle ipa-ts3
+MACRO \textreferencemark symbols-ts1
+MACRO \textregistered hebrew-he8 OR greek-lgr OR hebrew-lhe \
+ OR thai-lth OR latin-qx \
+ OR symbols-ts1
+MACRO \textretracting ipa-t3
+MACRO \textretractingvar ipa-ts3
+MACRO \textrevapostrophe ipa-t3
+MACRO \textreve ipa-t3
+MACRO \textrevepsilon ipa-t3
+MACRO \textrevglotstop ipa-t3
+MACRO \textrevscl ipa-ts3
+MACRO \textrevscr ipa-ts3
+MACRO \textrevyogh ipa-t3
+MACRO \textRho greek-lgr
+MACRO \textrho greek-lgr
+MACRO \textrhooka ipa-ts3
+MACRO \textrhooke ipa-ts3
+MACRO \textrhookepsilon ipa-ts3
+MACRO \textrhookopeno ipa-ts3
+MACRO \textrhookrevepsilon ipa-t3
+MACRO \textrhookschwa ipa-t3
+MACRO \textrhoticity ipa-t3
+MACRO \textrightarrow symbols-ts1
+# \textring: PD1, PU
+MACRO \textringmacron ipa-t3
+MACRO \textrisefall ipa-t3
+MACRO \textroundcap ipa-t3
+MACRO \textrptr ipa-t3
+MACRO \textrquill symbols-ts1
+MACRO \textrtaild ipa-t3
+MACRO \textrtailhth ipa-ts3
+MACRO \textrtaill ipa-t3
+MACRO \textrtailn ipa-t3
+MACRO \textrtailr ipa-t3
+MACRO \textrtails ipa-t3
+MACRO \textrtailt ipa-t3
+MACRO \textrtailz ipa-t3
+MACRO \textrthook ipa-t3
+MACRO \textrthooklong ipa-ts3
+MACRO \textsanpi greek-lgr
+MACRO \textsca ipa-t3
+MACRO \textscaolig ipa-ts3
+MACRO \textscb ipa-t3
+MACRO \textscdelta ipa-ts3
+MACRO \textsce ipa-t3
+MACRO \textscf ipa-ts3
+MACRO \textscg ipa-t3
+MACRO \textsch ipa-t3
+MACRO \textschwa ipa-t3 OR latin-t4
+MACRO \textsci ipa-t3
+MACRO \textscj ipa-t3
+MACRO \textsck ipa-ts3
+MACRO \textscl ipa-t3
+MACRO \textscm ipa-ts3
+MACRO \textscn ipa-t3
+MACRO \textscoelig ipa-t3
+MACRO \textscomega ipa-t3
+MACRO \textscp ipa-ts3
+MACRO \textscq ipa-ts3
+MACRO \textscr ipa-t3
+MACRO \textscripta ipa-t3
+MACRO \textscriptg ipa-t3
+MACRO \textscriptv ipa-t3
+MACRO \textscu ipa-t3
+MACRO \textscy ipa-t3
+MACRO \textseagull ipa-t3
+MACRO \textsecstress ipa-t3
+MACRO \textsection math-oms OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR symbols-ts1 OR cyrillic-x2
+MACRO \textservicemark symbols-ts1
+MACRO \textsevenoldstyle symbols-ts1
+MACRO \textSigma greek-lgr OR latin-qx
+MACRO \textsigma greek-lgr
+MACRO \textsixoldstyle symbols-ts1
+MACRO \textsoftsign ipa-t3
+# \textspace: LY1
+MACRO \textspleftarrow ipa-ts3
+MACRO \textsterling cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-t1 \
+ OR symbols-ts1
+MACRO \textstigma greek-lgr
+MACRO \textstigmavariant greek-lgr
+MACRO \textstretchc ipa-t3
+MACRO \textstretchcvar ipa-ts3
+MACRO \textsubacute ipa-t3
+MACRO \textsubarch ipa-t3
+MACRO \textsubbar ipa-t3
+MACRO \textsubbridge ipa-t3
+MACRO \textsubcircum ipa-t3
+MACRO \textsubdot ipa-t3
+MACRO \textsubdoublearrow ipa-ts3
+MACRO \textsubgrave ipa-t3
+MACRO \textsubiota greek-lgr
+MACRO \textsublhalfring ipa-t3
+MACRO \textsubplus ipa-t3
+MACRO \textsubrhalfring ipa-t3
+MACRO \textsubrightarrow ipa-ts3
+MACRO \textsubring ipa-t3
+MACRO \textsubsquare ipa-t3
+MACRO \textsubtilde ipa-t3
+MACRO \textsubumlaut ipa-t3
+MACRO \textsubw ipa-t3
+MACRO \textsubwedge ipa-t3
+MACRO \textsuperimposetilde ipa-t3
+MACRO \textsurd symbols-ts1
+MACRO \textsyllabic ipa-t3
+MACRO \textTau greek-lgr
+MACRO \texttau greek-lgr
+MACRO \textTbar latin-t4
+MACRO \texttbar latin-t4
+MACRO \texttctclig ipa-t3
+MACRO \texttelugua telugu-ltg OR telugu-ltl
+MACRO \textteluguaa telugu-ltg OR telugu-ltl
+MACRO \textteluguai telugu-ltg OR telugu-ltl
+MACRO \textteluguailengthmark telugu-ltg
+MACRO \textteluguanusvara telugu-ltg OR telugu-ltl
+MACRO \textteluguau telugu-ltg OR telugu-ltl
+MACRO \textteluguba telugu-ltg OR telugu-ltl
+MACRO \texttelugubha telugu-ltg OR telugu-ltl
+MACRO \texttelugublackbox telugu-ltl
+MACRO \textteluguca telugu-ltg OR telugu-ltl
+MACRO \texttelugucandrabindu telugu-ltg OR telugu-ltl
+MACRO \texttelugucha telugu-ltg OR telugu-ltl
+MACRO \textteluguda telugu-ltg OR telugu-ltl
+MACRO \texttelugudda telugu-ltg OR telugu-ltl
+MACRO \textteluguddha telugu-ltg OR telugu-ltl
+MACRO \texttelugudha telugu-ltg OR telugu-ltl
+MACRO \texttelugue telugu-ltg OR telugu-ltl
+MACRO \textteluguee telugu-ltg OR telugu-ltl
+MACRO \texttelugueight telugu-ltg OR telugu-ltl
+MACRO \textteluguemptybox telugu-ltl
+MACRO \texttelugufive telugu-ltg OR telugu-ltl
+MACRO \texttelugufour telugu-ltg OR telugu-ltl
+MACRO \textteluguga telugu-ltg OR telugu-ltl
+MACRO \texttelugugha telugu-ltg OR telugu-ltl
+MACRO \textteluguha telugu-ltg OR telugu-ltl
+MACRO \texttelugui telugu-ltg OR telugu-ltl
+MACRO \textteluguii telugu-ltg OR telugu-ltl
+MACRO \textteluguja telugu-ltg OR telugu-ltl
+MACRO \texttelugujha telugu-ltg OR telugu-ltl
+MACRO \textteluguka telugu-ltg OR telugu-ltl
+MACRO \texttelugukha telugu-ltg OR telugu-ltl
+MACRO \texttelugula telugu-ltg OR telugu-ltl
+MACRO \texttelugulengthmark telugu-ltg
+MACRO \texttelugulla telugu-ltg OR telugu-ltl
+MACRO \textteluguma telugu-ltg OR telugu-ltl
+MACRO \textteluguna telugu-ltg OR telugu-ltl
+MACRO \texttelugunga telugu-ltg OR telugu-ltl
+MACRO \texttelugunine telugu-ltg OR telugu-ltl
+MACRO \texttelugunna telugu-ltg OR telugu-ltl
+MACRO \texttelugunya telugu-ltg OR telugu-ltl
+MACRO \textteluguo telugu-ltg OR telugu-ltl
+MACRO \textteluguone telugu-ltg OR telugu-ltl
+MACRO \textteluguoo telugu-ltg OR telugu-ltl
+MACRO \textteluguoutlinebox telugu-ltl
+MACRO \texttelugupa telugu-ltg OR telugu-ltl
+MACRO \texttelugupha telugu-ltg OR telugu-ltl
+MACRO \texttelugura telugu-ltg OR telugu-ltl
+MACRO \texttelugurra telugu-ltg OR telugu-ltl
+MACRO \texttelugusa telugu-ltg OR telugu-ltl
+MACRO \textteluguseven telugu-ltg OR telugu-ltl
+MACRO \texttelugusha telugu-ltg OR telugu-ltl
+MACRO \texttelugusix telugu-ltg OR telugu-ltl
+MACRO \texttelugussa telugu-ltg OR telugu-ltl
+MACRO \texttelugustart telugu-ltg OR telugu-ltl
+MACRO \texttelugustop telugu-ltg OR telugu-ltl
+MACRO \textteluguta telugu-ltg OR telugu-ltl
+MACRO \texttelugutha telugu-ltg OR telugu-ltl
+MACRO \textteluguthree telugu-ltg OR telugu-ltl
+MACRO \texttelugutta telugu-ltg OR telugu-ltl
+MACRO \textteluguttha telugu-ltg OR telugu-ltl
+MACRO \texttelugutwo telugu-ltg OR telugu-ltl
+MACRO \textteluguu telugu-ltg OR telugu-ltl
+MACRO \textteluguuu telugu-ltg OR telugu-ltl
+MACRO \textteluguva telugu-ltg OR telugu-ltl
+MACRO \textteluguvirama telugu-ltg OR telugu-ltl
+MACRO \textteluguvisarga telugu-ltg OR telugu-ltl
+MACRO \textteluguvocalicl telugu-ltg OR telugu-ltl
+MACRO \textteluguvocalicll telugu-ltg OR telugu-ltl
+MACRO \textteluguvocalicr telugu-ltg OR telugu-ltl
+MACRO \textteluguvocalicrr telugu-ltg OR telugu-ltl
+MACRO \textteluguvowela telugu-ltl
+MACRO \textteluguvowelaa telugu-ltg OR telugu-ltl
+MACRO \textteluguvowelai telugu-ltg OR telugu-ltl
+MACRO \textteluguvowelau telugu-ltg OR telugu-ltl
+MACRO \textteluguvowele telugu-ltg OR telugu-ltl
+MACRO \textteluguvowelee telugu-ltg OR telugu-ltl
+MACRO \textteluguvoweli telugu-ltg OR telugu-ltl
+MACRO \textteluguvowelii telugu-ltg OR telugu-ltl
+MACRO \textteluguvowelo telugu-ltg OR telugu-ltl
+MACRO \textteluguvoweloo telugu-ltg OR telugu-ltl
+MACRO \textteluguvowelu telugu-ltg OR telugu-ltl
+MACRO \textteluguvoweluu telugu-ltg OR telugu-ltl
+MACRO \textteluguvowelvocalicl telugu-ltl
+MACRO \textteluguvowelvocalicll telugu-ltl
+MACRO \textteluguvowelvocalicr telugu-ltg OR telugu-ltl
+MACRO \textteluguvowelvocalicrr telugu-ltg OR telugu-ltl
+MACRO \textteluguya telugu-ltg OR telugu-ltl
+MACRO \textteluguzero telugu-ltg OR telugu-ltl
+MACRO \texttesh latin-t4
+MACRO \textteshlig ipa-t3
+MACRO \textTheta greek-lgr
+MACRO \texttheta greek-lgr OR ipa-t3
+MACRO \textThook latin-t4
+MACRO \textthook latin-t4
+MACRO \textthorn ipa-t3
+MACRO \textthornvari ipa-ts3
+MACRO \textthornvarii ipa-ts3
+MACRO \textthornvariii ipa-ts3
+MACRO \textthornvariv ipa-ts3
+MACRO \textthreeoldstyle symbols-ts1
+MACRO \textthreequarters symbols-ts1
+MACRO \textthreequartersemdash symbols-ts1
+MACRO \textthreesuperior symbols-ts1
+# \texttilde: PD1, PU
+MACRO \texttildedot ipa-t3
+MACRO \texttildelow symbols-ts1
+MACRO \texttimes latin-qx OR symbols-ts1
+MACRO \texttoneletterstem ipa-t3
+MACRO \texttoptiebar ipa-t3
+MACRO \texttrademark hebrew-he8 OR greek-lgr OR hebrew-lhe \
+ OR symbols-ts1
+MACRO \textTretroflexhook latin-t4
+MACRO \texttretroflexhook latin-t4
+# \textTslash: PU
+# \texttslash: PU
+MACRO \texttslig ipa-t3
+MACRO \textturna ipa-t3
+MACRO \textturncelig ipa-t3
+MACRO \textturnglotstop ipa-ts3
+MACRO \textturnh ipa-t3
+MACRO \textturnk ipa-t3
+MACRO \textturnlonglegr ipa-t3
+MACRO \textturnm ipa-t3
+MACRO \textturnmrleg ipa-t3
+MACRO \textturnr ipa-t3
+MACRO \textturnrrtail ipa-t3
+MACRO \textturnsck ipa-ts3
+MACRO \textturnscripta ipa-t3
+MACRO \textturnscu ipa-ts3
+MACRO \textturnt ipa-t3
+MACRO \textturnthree ipa-ts3
+MACRO \textturntwo ipa-ts3
+MACRO \textturnv ipa-t3
+MACRO \textturnw ipa-t3
+MACRO \textturny ipa-t3
+MACRO \texttwelveudash symbols-ts1
+MACRO \texttwooldstyle symbols-ts1
+MACRO \texttwosuperior symbols-ts1
+MACRO \textuncrfemale ipa-ts3
+MACRO \textunderscore devanagari-ldv OR thai-lta \
+ OR telugu-ltg OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR latin-t5 \
+ OR cyrillic-x2
+MACRO \textunicodechar unicode-luc
+MACRO \textuparrow symbols-ts1
+MACRO \textupfullarrow ipa-ts3
+MACRO \textUpsilon greek-lgr
+MACRO \textupsilon greek-lgr OR ipa-t3
+# \textupsilonacute: PU
+MACRO \textupstep ipa-t3
+MACRO \textvariaiota greek-lgr
+MACRO \textvarsigma greek-lgr
+MACRO \textvbaraccent ipa-t3
+MACRO \textvertline ipa-t3
+MACRO \textVhook latin-t4
+MACRO \textvhook latin-t4
+MACRO \textvibyi ipa-t3
+MACRO \textvibyy ipa-t3
+MACRO \textvisiblespace latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR latin-t5 OR cyrillic-x2
+MACRO \textwon symbols-ts1
+MACRO \textwynn ipa-t3
+MACRO \textxgeq latin-qx
+MACRO \textXi greek-lgr
+MACRO \textxi greek-lgr
+MACRO \textxleq latin-qx
+MACRO \textyamakkan thai-lth
+MACRO \textyen symbols-ts1
+MACRO \textYhook latin-t4
+MACRO \textyhook latin-t4
+MACRO \textyogh ipa-t3
+MACRO \textzerooldstyle symbols-ts1
+MACRO \textZeta greek-lgr
+MACRO \textzeta greek-lgr
+MACRO \TH latin-qx OR latin-t1
+MACRO \th latin-qx OR latin-t1 OR ipa-t3
+MACRO \thaiAngkhankhu thai-c90 OR thai-lta
+MACRO \thaiBoBaimai thai-c90 OR thai-lta
+MACRO \thaiChoChan thai-c90 OR thai-lta
+MACRO \thaiChoChang thai-c90 OR thai-lta
+MACRO \thaiChoChing thai-c90 OR thai-lta
+MACRO \thaiChoChoe thai-c90 OR thai-lta
+MACRO \thaiDoChada thai-c90 OR thai-lta
+MACRO \thaiDoDek thai-c90 OR thai-lta
+MACRO \thaieight thai-c90 OR thai-lta
+MACRO \thaifive thai-c90 OR thai-lta
+MACRO \thaiFoFa thai-c90 OR thai-lta
+MACRO \thaiFoFan thai-c90 OR thai-lta
+MACRO \thaiFongman thai-c90 OR thai-lta
+MACRO \thaifour thai-c90 OR thai-lta
+MACRO \thaiHoHip thai-c90 OR thai-lta
+MACRO \thaiHoNokhuk thai-c90 OR thai-lta
+MACRO \thaiKhoKhai thai-c90 OR thai-lta
+MACRO \thaiKhoKhon thai-c90 OR thai-lta
+MACRO \thaiKhoKhuat thai-c90 OR thai-lta
+MACRO \thaiKhoKhwai thai-c90 OR thai-lta
+MACRO \thaiKhomut thai-c90 OR thai-lta
+MACRO \thaiKhoRakhang thai-c90 OR thai-lta
+MACRO \thaiKoKai thai-c90 OR thai-lta
+MACRO \thaiLakkhangyao thai-c90 OR thai-lta
+MACRO \thaiLoChula thai-c90 OR thai-lta
+MACRO \thaiLoLing thai-c90 OR thai-lta
+MACRO \thaiLu thai-c90 OR thai-lta
+MACRO \thaiMaiChattawa thai-c90 OR thai-lta
+MACRO \thaiMaiEk thai-c90 OR thai-lta
+MACRO \thaiMaiHanakat thai-c90 OR thai-lta
+MACRO \thaiMaitaikhu thai-c90 OR thai-lta
+MACRO \thaiMaiTho thai-c90 OR thai-lta
+MACRO \thaiMaiTri thai-c90 OR thai-lta
+MACRO \thaiMaiyamok thai-c90 OR thai-lta
+MACRO \thaiMoMa thai-c90 OR thai-lta
+MACRO \thaiNgoNgu thai-c90 OR thai-lta
+MACRO \thaiNikhahit thai-c90 OR thai-lta
+MACRO \thainine thai-c90 OR thai-lta
+MACRO \thaiNoNen thai-c90 OR thai-lta
+MACRO \thaiNoNu thai-c90 OR thai-lta
+MACRO \thaiOAng thai-c90 OR thai-lta
+MACRO \thaione thai-c90 OR thai-lta
+MACRO \thaiPaiyannoi thai-c90 OR thai-lta
+MACRO \thaiPhinthu thai-c90 OR thai-lta
+MACRO \thaiPhoPhan thai-c90 OR thai-lta
+MACRO \thaiPhoPhung thai-c90 OR thai-lta
+MACRO \thaiPhoSamphao thai-c90 OR thai-lta
+MACRO \thaiPoPla thai-c90 OR thai-lta
+MACRO \thaiRoRua thai-c90 OR thai-lta
+MACRO \thaiRu thai-c90 OR thai-lta
+MACRO \thaiSaraA thai-c90 OR thai-lta
+MACRO \thaiSaraAa thai-c90 OR thai-lta
+MACRO \thaiSaraAe thai-c90 OR thai-lta
+MACRO \thaiSaraAiMaimalai thai-c90 OR thai-lta
+MACRO \thaiSaraAiMaimuan thai-c90 OR thai-lta
+MACRO \thaiSaraAm thai-c90 OR thai-lta
+MACRO \thaiSaraE thai-c90 OR thai-lta
+MACRO \thaiSaraI thai-c90 OR thai-lta
+MACRO \thaiSaraIi thai-c90 OR thai-lta
+MACRO \thaiSaraO thai-c90 OR thai-lta
+MACRO \thaiSaraU thai-c90 OR thai-lta
+MACRO \thaiSaraUe thai-c90 OR thai-lta
+MACRO \thaiSaraUee thai-c90 OR thai-lta
+MACRO \thaiSaraUu thai-c90 OR thai-lta
+MACRO \thaiseven thai-c90 OR thai-lta
+MACRO \thaisix thai-c90 OR thai-lta
+MACRO \thaiSoRusi thai-c90 OR thai-lta
+MACRO \thaiSoSala thai-c90 OR thai-lta
+MACRO \thaiSoSo thai-c90 OR thai-lta
+MACRO \thaiSoSua thai-c90 OR thai-lta
+MACRO \thaiThanthakhat thai-c90 OR thai-lta
+MACRO \thaiThoNangmontho thai-c90 OR thai-lta
+MACRO \thaiThoPhuthao thai-c90 OR thai-lta
+MACRO \thaiThoThahan thai-c90 OR thai-lta
+MACRO \thaiThoThan thai-c90 OR thai-lta
+MACRO \thaiThoThong thai-c90 OR thai-lta
+MACRO \thaiThoThung thai-c90 OR thai-lta
+MACRO \thaithree thai-c90 OR thai-lta
+MACRO \thaiToPatak thai-c90 OR thai-lta
+MACRO \thaiToTao thai-c90 OR thai-lta
+MACRO \thaitwo thai-c90 OR thai-lta
+MACRO \thaiWoWaen thai-c90 OR thai-lta
+MACRO \thaiYamakkan thai-c90 OR thai-lta
+MACRO \thaiYoYak thai-c90 OR thai-lta
+MACRO \thaiYoYing thai-c90 OR thai-lta
+MACRO \thaizero thai-c90 OR thai-lta
+MACRO \titem mongolian-lms
+MACRO \tsere hebrew-he8 OR hebrew-mkr
+MACRO \U cyrillic-ot2 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR cyrillic-t2d OR cyrillic-x2 \
+ OR cyrillic-xs
+MACRO \u cyrillic-lcy OR greek-lgr \
+ OR latin-ot1 OR cyrillic-ot2 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR ipa-t3 OR latin-t5 OR cyrillic-x2
+MACRO \UHORN latin-t5
+MACRO \uhorn latin-t5
+MACRO \v cyrillic-lcy OR latin-ot1 \
+ OR latin-ot4 OR latin-qx OR latin-t1 \
+ OR cyrillic-t2a OR cyrillic-t2b \
+ OR cyrillic-t2c OR cyrillic-t2d \
+ OR ipa-t3 OR latin-t5 OR cyrillic-x2
+MACRO \vavyod hebrew-he8 OR hebrew-mkr
+MACRO \xewteeqix mongolian-lms
+MACRO \Y cyrillic-lmc
+MACRO \y cyrillic-lmc
+MACRO \Ya cyrillic-lmc
+MACRO \ya cyrillic-lmc
+MACRO \Yo cyrillic-lmc
+MACRO \yo cyrillic-lmc
+MACRO \Yu cyrillic-lmc
+MACRO \yu cyrillic-lmc
+MACRO \zadgaizardigt mongolian-lms
+MACRO \zawj mongolian-lms
+MACRO \~ cyrillic-lcy OR greek-lgr \
+ OR latin-ot1 OR latin-ot4 OR latin-qx \
+ OR latin-t1 OR cyrillic-t2a \
+ OR cyrillic-t2b OR cyrillic-t2c \
+ OR ipa-t3 OR latin-t5 OR cyrillic-x2
+# END AUTOGENERATED DATA
+
+
+
+# IPA
+
+MACRO \overbridge tipa-extra
+MACRO \subdoublebar tipa-extra
+MACRO \subdoublevert tipa-extra
+MACRO \subcorner tipa-extra
+MACRO \crtilde tipa-extra
+MACRO \dottedtilde tipa-extra
+MACRO \doubletilde tipa-extra
+MACRO \spreadlips tipa-extra
+MACRO \whistle tipa-extra
+MACRO \tone tipa-tone
+
+# Math
+# amsfonts <= amssymb
+# amstext <= amsmath
+
+MACRO \vert amsmath
+MACRO \text amstext OR amsmath
+MACRO \leadsto amsfonts OR amssymb
+MACRO \complement amssymb
+MACRO \nexists amssymb
+MACRO \dotplus amssymb
+MACRO \measuredangle amssymb
+MACRO \sphericalangle amssymb
+MACRO \nmid amssymb
+MACRO \nparallel amssymb
+MACRO \therefore amssymb
+MACRO \because amssymb
+MACRO \backsim amssymb
+MACRO \nsim amssymb
+MACRO \ncong amssymb
+MACRO \approxeq amssymb
+MACRO \Bumpeq amssymb
+MACRO \bumpeq amssymb
+MACRO \doteqdot amssymb
+MACRO \fallingdotseq amssymb
+MACRO \risingdotseq amssymb
+MACRO \eqcirc amssymb
+MACRO \circeq amssymb
+MACRO \triangleq amssymb
+MACRO \leqq amssymb
+MACRO \geqq amssymb
+MACRO \lneqq amssymb
+MACRO \gneqq amssymb
+MACRO \between amssymb
+MACRO \nless amssymb
+MACRO \ngtr amssymb
+MACRO \nleq amssymb
+MACRO \ngeq amssymb
+MACRO \lesssim amssymb
+MACRO \gtrsim amssymb
+MACRO \lessgtr amssymb
+MACRO \gtrless amssymb
+MACRO \preccurlyeq amssymb
+MACRO \succcurlyeq amssymb
+MACRO \precsim amssymb
+MACRO \succsim amssymb
+MACRO \nprec amssymb
+MACRO \nsucc amssymb
+MACRO \nsubseteq amssymb
+MACRO \nsupseteq amssymb
+MACRO \subsetneq amssymb
+MACRO \supsetneq amssymb
+MACRO \sqsubset amsfonts OR amssymb
+MACRO \sqsupset amsfonts OR amssymb
+MACRO \circledcirc amssymb
+MACRO \circledast amssymb
+MACRO \circleddash amssymb
+MACRO \boxplus amssymb
+MACRO \boxminus amssymb
+MACRO \boxtimes amssymb
+MACRO \boxdot amssymb
+MACRO \Vdash amssymb
+MACRO \Vvdash amssymb
+MACRO \nVdash amssymb
+MACRO \lhd amsfonts OR amssymb
+MACRO \rhd amsfonts OR amssymb
+MACRO \unlhd amsfonts OR amssymb
+MACRO \unrhd amsfonts OR amssymb
+MACRO \multimap amssymb
+MACRO \intercal amssymb
+MACRO \veebar amssymb
+MACRO \barwedge amssymb
+MACRO \divideontimes amssymb
+MACRO \ltimes amssymb
+MACRO \rtimes amssymb
+MACRO \leftthreetimes amssymb
+MACRO \rightthreetimes amssymb
+MACRO \backsimeq amssymb
+MACRO \curlyvee amssymb
+MACRO \curlywedge amssymb
+MACRO \Subset amssymb
+MACRO \Supset amssymb
+MACRO \Cap amssymb
+MACRO \Cup amssymb
+MACRO \pitchfork amssymb
+MACRO \lessdot amssymb
+MACRO \gtrdot amssymb
+MACRO \lll amssymb
+MACRO \ggg amssymb
+MACRO \lesseqgtr amssymb
+MACRO \gtreqless amssymb
+MACRO \curlyeqprec amssymb
+MACRO \curlyeqsucc amssymb
+MACRO \lnsim amssymb
+MACRO \gnsim amssymb
+MACRO \precnsim amssymb
+MACRO \succnsim amssymb
+MACRO \ntriangleleft amssymb
+MACRO \ntriangleright amssymb
+MACRO \ntrianglelefteq amssymb
+MACRO \ntrianglerighteq amssymb
+MACRO \iint amsmath
+MACRO \iiint amsmath
+MACRO \beth amssymb
+MACRO \gimel amssymb
+MACRO \daleth amssymb
+MACRO \mathscr euscript-mathscr
+MACRO \mathfrak amsfonts OR amssymb
+MACRO \mathbbm bbm
+MACRO \mho amsfonts OR amssymb
+MACRO \Box amssymb
+
+# Misc
+
+MACRO \braillebox braille
+MACRO \euro eurofont
+MACRO \ding pifont
+MACRO \Pisymbol pifont
+MACRO \psdots pstricks
+MACRO \psline pstricks
+MACRO \psframe pstricks
+MACRO \psset pstricks
+MACRO \degrees pstricks
+MACRO \SpecialCoor pstricks
+MACRO \begin{pspicture} pstricks
+MACRO \languageCANCEL custom
+MACRO \includegraphics graphicx
+MACRO \horn latin-t5
+MACRO \tracingifs elatex
+MACRO \tracingassigns elatex
+MACRO \CJKbold cjk-latex
+MACRO \RequirePackage latex
+MACRO \beginL elatex
+MACRO \beginR elatex
+MACRO \endL elatex
+MACRO \endR elatex
+MACRO \TeXXeTstate elatex
+MACRO \DeclareTextDoubleComposite dblaccnt
+MACRO \languageshorthands babel
+
+# Fontencodings
+
+MACRO \fontencoding{C00} chinese-c00 OR cjk-latex
+MACRO \fontencoding{C40} japanese-c40
+MACRO \fontencoding{C10} chinese-c10 OR cjk-latex
+MACRO \fontencoding{C61} korean-c61 OR cjk-latex
+MACRO \fontencoding{LGR} greek-lgr
+MACRO \fontencoding{T2A} cyrillic-t2a
+MACRO \fontencoding{T2B} cyrillic-t2b
+MACRO \fontencoding{T2C} cyrillic-t2c
+MACRO \fontencoding{T2D} cyrillic-t2d
+MACRO \fontencoding{X2} cyrillic-x2
+MACRO \fontencoding{OT1} cyrillic-ot1
+MACRO \fontencoding{OT2} cyrillic-ot2
+MACRO \fontencoding{OT4} cyrillic-ot4
+MACRO \fontencoding{LCY} cyrillic-lcy
+MACRO \fontencoding{LHE} hebrew-lhe
+MACRO \fontencoding{TS1} symbols-ts1
+MACRO \fontencoding{T1} latin-t1
+MACRO \fontencoding{T4} latin-t4
+MACRO \fontencoding{T5} latin-t5
+MACRO \fontencoding{XS} latin-xs
+MACRO \fontencoding{T3} ipa-t3
+MACRO \fontencoding{TS3} ipa-ts3
+MACRO \fontencoding{LKL} klingon-lkl
+MACRO \fontencoding{LTL} telugu-ltl
+MACRO \fontencoding{LTG} telugu-ltg
+MACRO \fontencoding{LMC} cyrillic-lmc
+MACRO \fontencoding{LMA} mongolian-lma
+MACRO \fontencoding{LMO} mongolian-lmo
+MACRO \fontencoding{LMS} mongolian-lms
+MACRO \fontencoding{LMU} mongolian-lmu
+MACRO \fontencoding{C90} thai-c90
+
+# ucsutils
+
+MACRO \UnicodeEmbedFont ucsutils
+MACRO \univerb ucsutils
+MACRO \unistring ucsutils
+
+# Non-autodetected text symbols
+
+MACRO \textmongolianlha mongolian-lmo
+MACRO \textmongolianzhi mongolian-lmo
+MACRO \textmongolianchi mongolian-lmo
+
+# Babel languages
+
+MACRO \selectlanguage{german} babel-german
+MACRO \selectlanguage{english} babel-english
+MACRO \selectlanguage{vietnam} babel-vietnam
+
+# Font data
+
+REGEX ^b5ka[0-9][0-9][0-9][0-9]\.tfm$ font-ntukai48
+
+#
+# Package infos start here
+#
+
+FEATURE cyrillic-t2a
+FONTENCODING T2A
+FILE /tex/latex/cyrillic/t2aenc.def
+END FEATURE
+
+FEATURE cyrillic-t2b
+FONTENCODING T2B
+FILE /tex/latex/cyrillic/t2benc.def
+END FEATURE
+
+FEATURE cyrillic-t2c
+FONTENCODING T2C
+FILE /tex/latex/cyrillic/t2cenc.def
+END FEATURE
+
+FEATURE cyrillic-x2
+FONTENCODING X2
+FILE /tex/latex/cyrillic/x2enc.def
+END FEATURE
+
+FEATURE cyrillic-ot2
+FONTENCODING OT2
+FILE /tex/latex/cyrillic/ot2enc.def
+END FEATURE
+
+FEATURE cyrillic-lcy
+FONTENCODING LCY
+FILE /tex/latex/cyrillic/lcyenc.def
+END FEATURE
+
+FEATURE cyrillic-xs
+FONTENCODING XS
+COMMENT
+This fontencoding does not seem to be officially available yet.
+END COMMENT
+END FEATURE
+
+FEATURE cyrillic-t2d
+FONTENCODING T2D
+COMMENT
+This fontencoding does not seem to be officially available yet.
+END COMMENT
+END FEATURE
+
+FEATURE amssymb
+PACKAGE amssymb
+FILE /tex/latex/amsfonts/amssymb.sty
+CTAN fonts/amsfonts/latex/amssymb.sty
+END FEATURE
+
+FEATURE amsfonts
+PACKAGE amsfonts
+FILE /tex/latex/amsfonts/amsfonts.sty
+END FEATURE
+
+FEATURE hebrew-lhe
+FONTENCODING LHE
+FILE lheenc.def
+COMMENT
+latex-ucs assumes the version of LHE shipped with ivritex. There is
+another version (AFAIK shipped with babel), which defines other
+macros, i.a. \gimel, which collides with amssymb's math \gimel.
+END COMMENT
+INSTALL
+Install ivritex.
+
+Debian package: ivritex
+END INSTALL
+END FEATURE
+
+FEATURE hebrew-he8
+FONTENCODING HE8
+FILE lheenc.def
+INSTALL
+Install ivritex.
+
+Debian package: ivritex
+END INSTALL
+END FEATURE
+
+FEATURE symbols-ts1
+FONTENCODING TS1
+FILE /tex/latex/base/ts1enc.def
+END FEATURE
+
+FEATURE latin-t1
+FONTENCODING T1
+FILE /tex/latex/base/t1enc.def
+COMMENT
+This fontencoding is loaded and activated by default
+if you use the package fontenc.
+END COMMENT
+END FEATURE
+
+FEATURE latin-ot4
+FONTENCODING OT4
+END FEATURE
+
+FEATURE latin-ot1
+FONTENCODING OT1
+COMMENT
+This fontencoding is loaded and activated by default
+unless you use the package fontenc.
+END COMMENT
+END FEATURE
+
+
+
+FEATURE babel-vietnam
+PACKAGE [vietnam]{babel}
+COMMENT
+Activates Vietnamese language processing. If you give several options, the
+last language given is activated, the others may be activated e.g. via
+\selectlanguage.
+END COMMENT
+INSTALL
+Download
+ftp://ftp.dante.de/tex-archive/language/vietnamese/vntex/tex.tgz and
+extract it into your TeX search path. E.g.:
+ tar -x -v -z -f tex.tgz -C <texbasedir>
+
+Download
+ftp://ftp.dante.de/tex-archive/language/vietnamese/vntex/fonts.tgz and
+extract it into your TeX font search path. E.g.:
+ tar -x -v -z -f fonts.tgz -C <texbasedir>
+END INSTALL
+END FEATURE
+
+
+FEATURE latin-t5
+FONTENCODING T5
+FILE /tex/generic/vietnam/t5enc.def
+PACKAGE [nodblaccnt]{t5}
+FILE /tex/generic/vietnam/t5.sty
+COMMENT
+This fontencoding is designed for Vietnamese text.
+
+With the option nodblaccnt, t5.sty defines a dummy
+\DeclareTextDoubleComposite, which is needed for the encoding T5.
+The option nodblaccnt is only available in version >= 1.1.
+
+Without this option, the package dblaccnt is loaded, which enables
+accent sequences like \'\^O. Note that this introduces
+incompatibilities and is not recommended.
+END COMMENT
+INSTALL
+Download
+ftp://ftp.dante.de/tex-archive/language/vietnamese/vntex/tex.tgz and
+extract it into your TeX search path. E.g.:
+ tar -x -v -z -f tex.tgz -C <texbasedir>
+
+Download
+ftp://ftp.dante.de/tex-archive/language/vietnamese/vntex/fonts.tgz and
+extract it into your TeX font search path. E.g.:
+ tar -x -v -z -f fonts.tgz -C <texbasedir>
+END INSTALL
+END FEATURE
+
+FEATURE latin-t4
+FONTENCODING T4
+FILE fonts/jknappen/fc/src/t4enc.def
+COMMENT
+Due to a bug in the fontencoding, the macros \{ \} \$ \S and \_ will
+not work any more in other fontencodings. To fix this, add the
+following code to your preamble after loading T4:
+
+\DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi}
+\DeclareRobustCommand{\}}{\ifmmode\rbrace\else\textbraceright\fi}
+\DeclareRobustCommand{\$}{\ifmmode\mathdollar\else\textdollar\fi}
+\DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}
+\DeclareRobustCommand{\_}{%
+ \ifmmode\nfss@text{\textunderscore}\else\textunderscore\fi}
+END COMMENT
+INSTALL
+Install CTAN:fonts/jknappen/fc into your TeX search path.
+END INSTALL
+END FEATURE
+
+FEATURE ipa-t3
+FONTENCODING T3
+FILE tex/latex/tipa/t3enc.def
+END FEATURE
+
+FEATURE ipa-ts3
+FONTENCODING TS3
+COMMENT
+In older TIPA versions (1.0 and earlier) try fontencoding T3 instead.
+END COMMENT
+END FEATURE
+
+FEATURE tipa-extra
+FONTENCODING T3
+FILE tex/latex/tipa/t3enc.def
+PACKAGE [extra,noenc,safe]{tipa}
+FILE tex/latex/tipa/tipa.sty
+FILE tex/latex/tipa/extraipa.sty
+COMMENT
+The options safe and noenc are optional.
+
+safe disables the definition of certain shortcut commands, which might
+be dangerous.
+
+noenc disables the automatic loading of the fontencoding T3. If you
+activate this option, you must load fontencoding T3, if you do not
+activate this option, you must not load fontencoding T3.
+END COMMENT
+END FEATURE
+
+FEATURE tipa-tone
+FONTENCODING T3
+FILE tex/latex/tipa/t3enc.def
+PACKAGE [tone,noenc,safe]{tipa}
+FILE tex/latex/tipa/tipa.sty
+FILE tex/latex/tipa/tone.sty
+COMMENT
+The options safe and noenc are optional.
+
+safe disables the definition of certain shortcut commands, which might
+be dangerous.
+
+noenc disables the automatic loading of the fontencoding T3. If you
+activate this option, you must load fontencoding T3, if you do not
+activate this option, you must not load fontencoding T3.
+END COMMENT
+END FEATURE
+
+FEATURE greek-lgr
+FONTENCODING LGR
+FILE /tex/generic/babel/lgrenc.def
+END FEATURE
+
+FEATURE klingon-lkl
+FONTENCODING LKL
+FILE lklenc.def
+END FEATURE
+
+FEATURE bbm
+PACKAGE bbm
+FILE /tex/latex/bbm/bbm.sty
+END FEATURE
+
+FEATURE euscript-mathscr
+PACKAGE [mathscr]{euscript}
+FILE /tex/latex/amsfonts/euscript.sty
+END FEATURE
+
+FEATURE amsfonts
+PACKAGE amsfonts
+FILE /tex/latex/amsfonts/amsfonts.sty
+END FEATURE
+
+FEATURE pifont
+PACKAGE pifont
+FILE /tex/latex/psnfss/pifont.sty
+COMMENT
+You need a postscript capable DVI viewer (e.g. xdvi or dvips) for the
+fonts provided by this package.
+END COMMENT
+END FEATURE
+
+FEATURE amsmath
+PACKAGE amsmath
+FILE /tex/latex/amsmath/amsmath.sty
+END FEATURE
+
+FEATURE braille
+PACKAGE [compact,8dots]{braille}
+FILE braille.sty
+CTAN macros/latex/contrib/supported/braille/braille.sty
+COMMENT
+The option compact is optional but saves much memory if you do not
+need the command \braille, but only \braillebox.
+
+The option 8dots enables 8-dot braille (needed for
+U+2840..U+28FF). You should not use it if you use 6-dot braille
+only. You may switch it at runtime with \brailleeightdotstrue and
+\brailleeightdotsfalse.
+END COMMENT
+END FEATURE
+
+FEATURE pstricks
+PACKAGE pstricks
+FILE /tex/generic/pstricks/pstricks.sty
+CTAN graphics/pstricks/latex/pstricks.sty
+END FEATURE
+
+FEATURE custom
+COMMENT
+This is a dummy feature which means, that you are expected to define
+the command yourself using e.g.
+
+\newcommand\macroname{...}
+END COMMENT
+END FEATURE
+
+FEATURE chinese-c00
+PACKAGE [C00,T1]{fontenc}
+FILE c00enc.def
+FILE cenccmn.tex
+COMMENT
+The fontencoding C00 must not be activated directly.
+END COMMENT
+END FEATURE
+
+FEATURE japanese-c40
+PACKAGE [C40,T1]{fontenc}
+FILE c40enc.def
+FILE cenccmn.tex
+END FEATURE
+
+FEATURE japanese-c42
+PACKAGE [C42,T1]{fontenc}
+FILE c42enc.def
+FILE cenccmn.tex
+END FEATURE
+
+FEATURE chinese-c10
+PACKAGE [C10,T1]{fontenc}
+FILE c10enc.def
+FILE cenccmn.tex
+COMMENT
+The fontencoding C10 must not be activated directly.
+END COMMENT
+END FEATURE
+
+FEATURE korean-c61
+PACKAGE [C61,T1]{fontenc}
+FILE c61enc.def
+FILE cenccmn.tex
+COMMENT
+The fontencoding C61 must not be activated directly.
+END COMMENT
+END FEATURE
+
+FEATURE cjk-latex
+PACKAGE CJK
+END FEATURE
+
+FEATURE graphicx
+PACKAGE graphicx
+END FEATURE
+
+FEATURE babel
+PACKAGE [english]{babel}
+COMMENT
+Instead of 'english', choose the language of your document, possibly
+several (see the documentation of the babel package).
+END COMMENT
+END FEATURE
+
+FEATURE devanagari-ldv
+FONTENCODING LDV
+FILE ldvenc.def
+END FEATURE
+
+FEATURE devanagari-ldn
+FONTENCODING LDN
+FILE ldnenc.def
+END FEATURE
+
+FEATURE thai-lta
+FONTENCODING LTA
+FILE ltaenc.def
+END FEATURE
+
+FEATURE telugu-ltl
+FONTENCODING LTL
+FILE ltlenc.def
+FILE tlsyllable.tex
+FILE tlteldigits.tex
+END FEATURE
+
+FEATURE telugu-ltg
+FONTENCODING LTG
+FILE ltgenc.def
+END FEATURE
+
+FEATURE ethiopic-let
+FONTENCODING LET
+FILE letenc.def
+END FEATURE
+
+FEATURE latin-lqx
+FONTENCODING LQX
+COMMENT
+Intended for Polish.
+END COMMENT
+END FEATURE
+
+FEATURE latin-qx
+FONTENCODING QX
+COMMENT
+Intended for Polish.
+END COMMENT
+END FEATURE
+
+FEATURE ucsutils
+PACKAGE ucsutils
+COMMENT
+Give the name of the missing macro as an option to ucsutils (without
+leading backslash). E.g.:
+\usepackage[UnicodeEmbedFont]{ucsutils}
+to load the macro \UnicodeEmbedFont.
+END COMMENT
+END FEATURE
+
+FEATURE latex
+COMMENT
+This command is defined in LaTeX. Probably you have run Plain-TeX.
+
+Note that the difference between documents written for LaTeX
+resp. Plain-TeX is usually quite big, so it is probably the simplest
+way to try to use another macro instead of converting your document to
+LaTeX.
+END COMMENT
+END FEATURE
+
+FEATURE elatex
+LATEXCMD elatex
+COMMENT
+This command is defined in e-LaTeX.
+Try calling elatex instead of latex.
+END COMMENT
+END FEATURE
+
+FEATURE omega
+LATEXCMD omega
+COMMENT
+This command is defined in Omega.
+Try calling omega instead of tex.
+END COMMENT
+END FEATURE
+
+FEATURE lambda
+LATEXCMD lambda
+COMMENT
+This command is defined in Lambda.
+Try calling lambda instead of latex.
+END COMMENT
+END FEATURE
+
+FEATURE cyrillic-lmc
+FONTENCODING LMC
+FILE lmcenc.def
+COMMENT
+For Cyrillic Mongolian.
+END COMMENT
+INSTALL
+Install MonTeX (CTAN:language/mongolian/montex/).
+END INSTALL
+END FEATURE
+
+FEATURE mongolian-lma
+FONTENCODING LMA
+FILE lmaenc.def
+INSTALL
+Install MonTeX (CTAN:language/mongolian/montex/).
+END INSTALL
+END FEATURE
+
+FEATURE mongolian-lms
+FONTENCODING LMS
+FILE lmsenc.def
+INSTALL
+Install MonTeX (CTAN:language/mongolian/montex/).
+END INSTALL
+END FEATURE
+
+FEATURE mongolian-lmo
+FONTENCODING LMO
+FILE lmoenc.def
+INSTALL
+Install MonTeX (CTAN:language/mongolian/montex/).
+END INSTALL
+END FEATURE
+
+FEATURE mongolian-lmu
+FONTENCODING LMU
+FILE lmuenc.def
+INSTALL
+Install MonTeX (CTAN:language/mongolian/montex/).
+END INSTALL
+END FEATURE
+
+FEATURE thai-c90
+FONTENCODING C90
+FILE c90enc.def
+INSTALL
+Install CJK-LaTeX:
+CTAN: language/chinese/CJK/
+Debian: cjk-latex
+END INSTALL
+END FEATURE
+
+FEATURE font-kanji48
+INSTALL
+CTAN: fonts/CJK/kanji48.tar.gz
+Debian: hbf-kanji48
+END INSTALL
+END
+
+FEATURE font-ntukai48
+INSTALL
+CTAN:fonts/CJK/ntukai48.tar.gz
+END INSTALL
+END FEATURE
+
+FEATURE dblaccnt
+PACKAGE dblaccnt
+COMMENT
+This package is needed to use accent sequences like \`\^O.
+
+Warning: It introduces incompatibilities.
+
+If you need it for the vietnamese encoding T5, better load the package
+t5 with option nodblaccnt instead of dblaccnt, which defines a dummy
+replacement for \DeclareTextDoubleComposite. This does not allow to
+use sequences like \`\^O, you have to use e.g. \`\OCIRCUMFLEX instead.
+END COMMENT
+INSTALL
+This is part of the vntex package, see fontencoding T5 for
+installation instructions.
+END INSTALL
+END FEATURE
+
+FEATURE hebrew-mkr
+FONTENCODING MKR
+NEEDS elatex OR lambda
+COMMENT
+To use this fontencoding, compile your document with elatex or lambda.
+END COMMENT
+INSTALL
+Install the package makor from CTAN (CTAN:language/hebrew/makor/) and
+the files mkrenc.def, mkr*.fd shipped with ucs package into your TeX
+search path.
+END INSTALL
+END FEATURE
+
+FEATURE tengwar-fonts-dansmith
+COMMENT
+These are Dan Smith's Tengwar Fonts.
+END COMMENT
+INSTALL
+
+1. Download the Tengwar fonts from Dan Smith's webpage
+ http://www.acondia.com/tengwar_fonts/index.html
+
+ You need the
+ "Tengwar Quenya font pack" for Quenya
+ "Tengwar Sindarin font pack" for Sindarin
+ "Tengwar Noldor font pack" for Noldor
+ These files are ZIP-archives.
+
+2. Unpack these archives into your TTFONTS search path.
+
+3. Rename the unpacked fonts to lowercase (unless you filesystem is
+ case insensitive (e.g. windows)). Example:
+ mv QUENYA.TTF quenya.ttf
+
+4. Put tengwarDS.enc and cp1252.enc into your TTF2PKINPUTS and
+ TTF2TFMINPUTS search path.
+
+5. Run
+ # For Quenya
+ ttf2tfm quenya -p cp1252.enc -t tengwarDS.enc -v tengdsq rtengdsq
+ ttf2tfm quencap1 -p cp1252.enc -t tengwarDS.enc -v tengdsq1 rtengdsq1
+ ttf2tfm quencap2 -p cp1252.enc -t tengwarDS.enc -v tengdsq2 rtengdsq2
+ vptovf tengdsq
+ vptovf tengdsq1
+ vptovf tengdsq2
+ # For Sindarin
+ ttf2tfm sindar -p cp1252.enc -t tengwarDS.enc -v tengdss rtengdss
+ ttf2tfm sindcap1 -p cp1252.enc -t tengwarDS.enc -v tengdss1 rtengdss1
+ ttf2tfm sindcap2 -p cp1252.enc -t tengwarDS.enc -v tengdss2 rtengdss2
+ vptovf tengdss
+ vptovf tengdss1
+ vptovf tengdss2
+ # For Noldor
+ ttf2tfm noldor -p cp1252.enc -t tengwarDS.enc -v tengdsn rtengdsn
+ ttf2tfm noldcap1 -p cp1252.enc -t tengwarDS.enc -v tengdsn1 rtengdsn1
+ ttf2tfm noldcap2 -p cp1252.enc -t tengwarDS.enc -v tengdsn2 rtengdsn2
+ vptovf tengdsn
+ vptovf tengdsn1
+ vptovf tengdsn2
+
+ This creates the following files:
+
+ rtengdsn.tfm rtengdsq1.tfm rtengdss2.tfm tengdsn1.tfm tengdsn2.vf
+ tengdsq.vpl tengdsq2.tfm tengdss.vf tengdss1.vpl rtengdsn1.tfm
+ rtengdsq2.tfm tengdsn.tfm tengdsn1.vf tengdsn2.vpl tengdsq1.tfm
+ tengdsq2.vf tengdss.vpl tengdss2.tfm rtengdsn2.tfm rtengdss.tfm
+ tengdsn.vf tengdsn1.vpl tengdsq.tfm tengdsq1.vf tengdsq2.vpl
+ tengdss1.tfm tengdss2.vf rtengdsq.tfm rtengdss1.tfm tengdsn.vpl
+ tengdsn2.tfm tengdsq.vf tengdsq1.vpl tengdss.tfm tengdss1.vf
+ tengdss2.vpl
+
+ Put the *.tfm files into your TFMFONTS search path and the *.vf
+ files into your VFFONTS search path. The *.vpl files are not needed
+ any more.
+
+6. Add the following lines to your ttfonts.map:
+
+ % For Quenya
+ rtengdsq quenya Encoding=cp1252.enc
+ rtengdsq1 quencap1 Encoding=cp1252.enc
+ rtengdsq2 quencap2 Encoding=cp1252.enc
+ % For Sindarin
+ rtengdss sindar Encoding=cp1252.enc
+ rtengdss1 sindcap1 Encoding=cp1252.enc
+ rtengdss2 sindcap2 Encoding=cp1252.enc
+ % For Noldor
+ rtengdsn noldor Encoding=cp1252.enc
+ rtengdsn1 noldcap1 Encoding=cp1252.enc
+ rtengdsn2 noldcap2 Encoding=cp1252.enc
+
+END INSTALL
+END FEATURE
+
+FEATURE babel-german
+PACKAGE [german]{babel}
+COMMENT
+Activates German language processing. If you give several options, the
+last language given is activated, the others may be activated e.g. via
+\selectlanguage.
+END COMMENT
+INSTALL
+This is part of the babel distribution.
+END INSTALL
+END FEATURE
+
+FEATURE babel-english
+PACKAGE [english]{babel}
+COMMENT
+Activates English language processing. If you give several options, the
+last language given is activated, the others may be activated e.g. via
+\selectlanguage.
+END COMMENT
+INSTALL
+This is part of the babel distribution.
+END INSTALL
+END FEATURE
+
diff --git a/Master/texmf-dist/doc/latex/ucs/makeunidef.pl b/Master/texmf-dist/doc/latex/ucs/makeunidef.pl
new file mode 100755
index 00000000000..3952b3bdb45
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/makeunidef.pl
@@ -0,0 +1,1565 @@
+#!/usr/bin/perl -w
+
+=head1 NAME
+
+makeunidef.pl - Generates Unicode data files for B<ucs.sty>.
+
+=head1 SYSNOPSIS
+
+makeunidef.pl [B<--database>=I<file>] [B<--targetdir>=I<dir>]
+[B<--verbose>] [B<--help>] [B<--comments>] [B<--nocomments>]
+[B<--compress>] [B<--nocompress>] [B<--exclude>=I<option>]
+I<configfiles>
+
+=head1 DESCRIPTION
+
+Generate the F<uni-....def>-files for use by B<ucs.sty>. These are
+generated out of one ore more config files (with suffix C<.gz> if
+gzipped), whose format is described below (see L<"CONFIG FILES">).
+
+For some characters there will be autogenerated code, if none is
+supplied by the config files, this code will be associated with the
+Unicode option C<autogenerated>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--comments>, B<--nocomments>
+
+Enable or disable the automatic generation of comments.
+Defaults to B<--comments>.
+
+=item B<--compress>, B<--nocompress>
+Enable or disable the compression of uninames.dat.
+Defaults to B<--compress>.
+
+=item B<-d>, B<--db>, B<--database>=I<file>
+
+Specify the Unicode database, as provided by the Unicode
+Consortium. Defaults to F<UnicodeData.txt>. The file must have the
+suffix C<.gz> if it is gzipped.
+
+=item B<--dir>
+
+See B<-target>.
+
+=item B<--exclude>, B<--ex>=I<option>
+
+Do not include the characters associated with option I<option>. This
+is e.g. useful for saving space by not including all CJK
+characters. When an excluded option is used in documents, an error is
+yielded.
+
+=item B<-h>, B<--help>
+
+Shows help.
+
+=item B<--nocomments>
+
+See B<--comments>.
+
+=item B<--nocompress>
+
+See B<--compress>.
+
+=item B<-t>, B<--dir>, B<--target>, B<--targetdir>=I<dir>
+
+Sets the target directory for the generated files to I<dir>. The default is
+the current directory.
+
+=item B<-v>, B<--verbose>
+
+Be verbose.
+
+=back
+
+=head1 CONFIG FILES
+
+The config files (which may be gzipped) are to be written in a line
+oriented format. C<#> starts a comment which end at the end of the
+actual line. The C<#> must be preceded by a whitespace, except for
+lines consisting only of a comment. An empty line or a line containing
+only a comment is ignored.
+
+A line can be a command or a character definition.
+For possible commands see L<"CONFIG COMMANDS">.
+A character
+definition has the following syntax:
+
+I<code> I<macro>
+
+where I<code> is the code position and I<macro> a LaTeX-macro to
+render the glyph. I<macro> is stripped of surrounding whitespaces, and
+I<code> has one of the following formats (all case insensitive):
+
+=over 4
+
+=item U+I<num>, 0xI<num>, $I<num>
+
+I<num> being the hexadecimal representation of the code position.
+
+=item I<num>
+
+I<num> being the decimal representation of the code position, whereby
+I<num> must not start with 0.
+
+=item 0I<num>
+
+I<num> being the octal representation of the code position.
+
+=back
+
+In all the above formats, I<num> can have any number of digits.
+
+=head2 CONFIG COMMANDS
+
+A command line consists of an command name and optional space
+separated command arguments. The following commands are defined:
+
+=over 4
+
+=item B<AUTOOPTION>
+
+Same as B<OPTION>, by the second argument specifies a LaTeX
+package. If this package is loaded, the option is set automatically.
+
+This option is deprecated.
+
+=item B<BEGIN>, B<{>
+
+This starts a group. All options set after this are only valid up to
+the matching B<END> or B<}>. Config files, which set options, should
+be enclosed in a block, so that they can't have side effects on other
+parts of the config file. Each config file is contained in an implicit
+block. Blocks can be nested.
+
+=item B<END>, B<}>
+
+See B<BEGIN>.
+
+=item B<ENVELOPE>
+
+All macros are wrapped inside the envelope given by this command. The
+original macro is inserted into the envelope instead of every
+occurrence of C<@@@> and the decimal character code is inserted for
+each occurrence of C<$$$>. B<ENVELOPE> will override B<ENVELOPE>
+commands executed before.
+
+=item B<GLOBAL>
+
+Inserts some code into F<uni-global.def>. This file is loaded with
+F<ucs.sty> in the preamble. F<uni-global.def> is not executed in a group,
+so defining globally is not necessary. See also B<PROVIDE>.
+
+=item B<OPTION>
+
+This command takes one argument. It is the name of the Unicode option
+to associate with the macros defined after this command. An option set
+by B<OPTION> is valid until it is overridden by another B<OPTION>
+command or until the block ends.
+
+=item B<PROVIDE>
+
+Associates a piece of code with characters defined afterwards (until
+the block ends). The code is inserted into every B<uni-....def>-file
+containing one of these characters, so the code is guaranteed to have
+been executed before the corresponding characters are executed. No
+assumption should be made whether the code is executed in a group or
+at top level, i.e. declarations should be made globally, but no
+garbage should be defined or catcodes modified without restoring
+them afterwards. The code may be executed several times. See also B<GLOBAL>.
+
+=back
+
+=head1 KNOWN BUGS AND PROBLEMS
+
+There should be a better way to quote whitespaces in command arguments
+and to insert C<#>s. Perhaps I will add this in future, thereby trying
+to preserve backward compatibility.
+
+=head1 REPORTING BUGS
+
+Send bug reports to Dominique Unruh <I<dominique@unruh.de>>, the mails
+containing the words B<bug report: makeunidef.pl> in the subject.
+
+=head1 AUTHOR
+
+Dominique Unruh <I<dominique@unruh.de>>.
+
+=head1 FILES
+
+=over 4
+
+=item F<uni-I<N>.def>, F<uni-global.def>, F<uninames.dat>
+
+Unicode definitions for B<ucs.sty>, created by this program, I<N>
+stands for different decimal numbers.
+
+=item F<UnicodeData.txt>
+
+Unicode database by the Unicode Consortium, read only. This file can be
+found at F<http://www.unicode.org/Public/UNIDATA/UnicodeData.txt>
+
+=back
+
+=head1 SEE ALSO
+
+The LaTeX package B<ucs.sty>.
+
+=cut
+#'; # for emacs
+
+
+use IO::Handle;
+use IO::File;
+use Data::Dumper;
+use Getopt::Long;
+use Carp;
+
+use strict;
+
+# prototypes
+sub dumphuffman($$$); #{}
+
+
+use vars qw/$createcomments $targetdir @configfiles @characters
+ %files @unidata $unidata $messagebreak $dump_unidata
+ $verbose $generate_uninames $tables_to_dump $tabledir $autogen
+ %knownoptions $loadunidata %stats_charsperoption
+ %providehandlers $providehandlerseq %provides $huffman_decoder
+ %file_attribs $compressnames %excludedoptions %uninames_abbrev @ranges
+ $onlyfile $fileswritten $devnull
+ /;
+
+$messagebreak = '\MessageBreak ';
+$autogen = 'autogenerated by makeunidef.pl';
+
+%uninames_abbrev =
+ (
+# "\000" => '{Character available with following options:'.
+# '\MessageBreak\space\space\space}',
+ "\001" => '{Unicode character \number\uc@got\uc@spc = U+\uc@temp@a:'.
+ '\MessageBreak}',
+# "\002" => '{No name found}',
+ "\003" => '{Character available with following excluded options:'.
+ '\MessageBreak\space\space\space}',
+ "\n" => '\MessageBreak',
+ " " => '{ }',
+ );
+
+sub globalcode ($) {
+ my $code = shift;
+ return unless $dump_unidata;
+ my $filename = "$targetdir/uni-global.def";
+ my $file = openfile($filename,
+ "%%% unicode global data for ucs.sty, $autogen",
+ "Unicode global data");
+ print $file "$code\n";
+}
+
+sub getprovidehandler($) {
+ my $code = shift;
+ return undef unless defined $code;
+ my $handler = $providehandlers{$code};
+ unless (defined $handler) {
+# print "NEW HANDLER: '$code'\n";
+ $handler = $providehandlerseq++;
+ $providehandlers{$code} = $handler;
+ }
+ $provides{$handler} = { code => $code };
+ return $handler;
+}
+
+sub openreadfile($) {
+ my $filename = shift;
+ $filename .= ".gz" if (!-e $filename && -e "$filename.gz");
+ if ($filename =~ /\.gz/) {
+ die "Could not read file $filename" unless -r $filename;
+ return new IO::File("gzip -cdf ''\Q$filename\E |");
+ } else {
+ return new IO::File($filename,"r");
+ }
+}
+
+sub optionname($) {
+ my $o = shift;
+ return 'default' unless define($o) ne '';
+ return $o;
+}
+
+sub loadconfig ($) {
+ my ($filename) = @_;
+ my $fh = openreadfile $filename or
+ die "Could not open configfile $filename: $!";
+ my %options;
+ my @optionstack;
+ while (my $line = <$fh>) {
+ chomp($line);
+ my $linepos = "$filename:$.";
+ $line =~ s/(^|\s)\#.*$//;
+ $line =~ s/^\s*//;
+ $line =~ s/\s*$//;
+ next if $line eq '';
+ if ($line =~ /^[0-9]/ || $line =~ /^u\+/i) {
+ my ($num,$command) = split ' ',$line,2;
+ $num = oct($num) if $num =~ /^0/;
+ $num = hex($num) if $num =~ s/^\$//;
+ $num = hex($num) if $num =~ s/^u\+//i;
+ #print "Line: $line, Num: $num, Command: $command\n";
+ my %o = %options;
+ $o{definedat} = $linepos;
+ $command = '' if lc($command) eq '<empty>';
+ unless (defined ($command)) {
+ warn "$linepos: Use <empty> to declare an empty ".
+ "glyph macro.\n"; next; };
+ $o{combining} = 1
+ if (($command =~ /(^|[^\#])\#1/) ||
+ (defined $o{envelope} && $o{envelope} =~ /(^|[^\#])\#1/));
+ if (isprivate($num) &&
+ optionname($o{onoption}) !~ /^(private|local)./) {
+ warn sprintf "%s: Character U+%04X is in private area, ".
+ "but has option '%s' (not 'private...' or 'local...').\n",
+ $linepos,$num,optionname($o{onoption});
+ }
+ push @{$characters[$num]}, [ $command, \%o ];
+ my $range = findrange2($num);
+ if (defined $range) { ${$$range{options}}{optionname($o{onoption})} =1};
+ if ($unidata[$num]) { $ {$ {$unidata[$num]}{options}}{optionname($o{onoption})} =1};
+ $stats_charsperoption{define($o{onoption})}++;
+ } else {
+ my @cmd = split ' ',$line;
+ if ($cmd[0] eq 'BEGIN' || $cmd[0] eq '{') {
+ my %t = %options;
+ push @optionstack, \%t;
+ } elsif ($cmd[0] eq 'END' || $cmd[0] eq '}') {
+ if (@optionstack) {
+ my $t = pop @optionstack;
+ %options = %$t
+ } else {
+ warn "$linepos: '$cmd[0]' outside a block.\n";
+ }
+ } elsif ($cmd[0] eq 'OPTION') {
+ $options{onoption} = $cmd[1];
+ unless (defined $knownoptions{$cmd[1]}) {
+ $knownoptions{$cmd[1]} = [];
+ }
+ } elsif ($cmd[0] eq 'AUTOOPTION') {
+ $options{onoption} = $cmd[1];
+ unless (defined $knownoptions{$cmd[1]}) {
+ $knownoptions{$cmd[1]} = [ $cmd[2] ];
+ } else {
+ # ************ DOUBLED
+ push @{$knownoptions{$cmd[1]}}, $cmd[2];
+ }
+ } elsif ($cmd[0] eq 'ENVELOPE') {
+ $options{envelope} = join ' ',@cmd[1..$#cmd];
+# } elsif ($cmd[0] eq 'GLOBAL') {
+# globalcode(join ' ',@cmd[1..$#cmd]);
+ } elsif (($cmd[0] eq 'PROVIDE') || ($cmd[0] eq 'GLOBAL')) {
+ my $prov = '';
+ if ($cmd[1] eq 'MULTILINE') {
+ my ($e,$l) = (0);
+ my $xlinepos = $linepos;
+ while (!$e && defined($l = <$fh>)) {
+ if ($l =~ /^\s*END\s*$/) { $e = 1 }
+ else { $prov .= $l; }
+ }
+ unless ($e) {
+ warn "$xlinepos: Unfinished PROVIDE MULTILINE.\n";
+ $prov = undef;
+ }
+ } else {
+ $prov = join ' ',@cmd[1..$#cmd];
+ }
+ chomp $prov; $prov =~ s/%$//s;
+ if ($cmd[0] eq 'PROVIDE') {
+ $options{provide} = getprovidehandler($prov);
+ } else {
+ globalcode($prov); }
+ } elsif ($cmd[0] eq 'FONTENC') {
+ $options{fontenc} = $cmd[1];
+ } elsif ($cmd[0] eq 'FONTFAMILY') {
+ $options{fontfamily} = $cmd[1];
+ } elsif ($cmd[0] eq 'RIGHTLEFT') {
+ $options{rightleft} = 1;
+ } elsif ($cmd[0] eq 'TABLECODE') {
+ $options{tablecode} = join ' ',@cmd[1..$#cmd];
+ } elsif ($cmd[0] eq 'CTRLGLYPH') {
+ $options{ctrlglyph} = 1;
+ } elsif ($cmd[0] eq 'COMBINECHAR') {
+ if ($cmd[1] =~ /^U\+[0-9A-F]+$/i) {
+ my ($n) = ($cmd[1] =~ /^U\+([0-9A-F]+)$/i);
+ $options{combinechar} = hex($n);
+ delete $options{combineglyph};
+ delete $options{combineoption};
+ } elsif ($cmd[1] =~ /^[a-z]+\/U\+[0-9A-F]+$/i) {
+ my ($o,$n) = ($cmd[1] =~ /^([a-z]+)\/U\+([0-9A-F]+)$/i);
+ $options{combinechar} = hex($n);
+ $options{combineoption} = $o;
+ delete $options{combineglyph};
+ } else {
+ $options{combineglyph} = $cmd[1];
+ delete $options{combinechar};
+ delete $options{combineoption};
+ }
+ } elsif ($cmd[0] eq 'LOADFONTENC') {
+ $options{loadfontenc} = $cmd[1];
+ } elsif ($cmd[0] eq 'PACKAGE') {
+ $options{package} = $cmd[1];
+ } elsif ($cmd[0] eq 'TABLEGLYPH') {
+ $options{tableglyph} = join ' ',@cmd[1..$#cmd];
+ } elsif ($cmd[0] eq 'TABLEENVELOPE') {
+ $options{tableenvelope} = join ' ',@cmd[1..$#cmd];
+ } else {
+ warn "$linepos: Malformed line $line";
+ }
+ }
+ };
+ close $fh or die "Something went wrong when closing $filename: $!";
+};
+
+sub openfile ($$$%) {
+ my ($filename,$header,$description,%attribs) = @_;
+ my $file = $files{$filename};
+ unless (defined $file) {
+ my $nowrite = 0;
+ $nowrite = 1 if defined($onlyfile) && $filename !~ m@(^|/)$onlyfile$@;
+ $fileswritten ++ unless $nowrite;
+ $attribs{nowrite} = 1 if $nowrite;
+ if (!$nowrite) {
+ $file = new IO::File($filename,O_CREAT|O_WRONLY|O_EXCL) or
+ die "Could not open $filename for writing: $!";
+ } else {
+ print "Not writing file $filename\n" if $verbose;
+ $devnull = new IO::File('/dev/null',O_WRONLY) unless ($devnull);
+ $file = $devnull; }
+ print $file "$header\n";
+ my @date = localtime;
+ my $date = sprintf "%04d/%02d/%02d",
+ $date[5]+1900, $date[4]+1, $date[3];
+ my $basename = $filename; $basename =~ s@.*/@@;
+ print $file "\\ifx\\ProvidesFile\\undefined\\else
+\\ProvidesFile{$basename}[$date UCS: $description]%
+\\fi
+";
+ flush $file;
+ $files{$filename} = $file;
+ $file_attribs{$filename} = \%attribs;
+ }
+ return $file;
+}
+
+sub dumpcharacters() {
+ for (my $i=0; $i<=$#characters; $i++) {
+ next unless defined $characters[$i];
+ my %seen = ();
+ for my $j (@{$characters[$i]}) {
+ my $val = $$j[0];
+ my $options = $$j[1];
+ my $envelope = $$options{envelope};
+ if (define($envelope) ne '') {
+ my $t = $val;
+ $val = $envelope;
+ $val =~ s/\$\$\$/$i/g;
+ $val =~ s/\@\@\@/$t/g;
+ }
+ $val = "\\uc\@cmb$val" if ($$options{combining});
+ my $comment = define($$options{comment});
+ my $onoption = $$options{onoption};
+ next if $excludedoptions{(defined $onoption)?$onoption:'default'};
+ my $page = int($i/256);
+ my $filename = "$targetdir/uni-$page.def";
+ #print "Character $i ($filename):\n";
+ my $range = sprintf("U+%04X..U+%04X",
+ $page*256,$page*256+255);
+ my $provide = $$options{provide};
+ my $header = "%%% Unicode to TeX mapping, file uni-$page.def, ".
+ "$range, autogenerated by makeunidef.pl";
+ my $file = openfile($filename,$header,"Unicode data $range");
+
+ if (defined $provide) {
+ $provide = $provides{$provide};
+ unless (defined $$provide{"done:$filename"}) {
+ $$provide{"done:$filename"} = 1;
+ print $file "$$provide{code}%\n";
+ #print "Providing $$provide{code} to $filename\n";
+ }
+ }
+
+ my $texcmd = '';
+ if (defined $val) {
+ $texcmd = "\\uc\@dclc{$i}{".
+ (defined $onoption?$onoption:'default').
+ "}{$val}";
+ }
+ $texcmd .= "% $comment";
+ $texcmd .= " (missing)" unless defined $val;
+ $texcmd =~ s/\s+$//;
+ print $file "$texcmd\n";
+ my $tag = define($onoption);
+ if (defined $seen{$tag}) {
+ warn sprintf
+ "%s: Character U+%04X(%s) redefined. ".
+ "(First definition in %s).\n",
+ $$options{definedat},$i,optionname($onoption),$seen{$tag};
+ } else {
+ $seen{$tag} = define($$options{definedat});
+ }
+ #print "$texcmd\n";
+ }
+ }
+ flushfiles();
+}
+
+sub loadunidata($) {
+ my ($filename) = @_;
+ my $f = openreadfile $unidata or
+ die "Could not open $unidata for reading: $!";
+ my $inrange = undef;
+ my $rangestart;
+ while (my $line = <$f>) {
+ chomp($line);
+ my @line = split ';', $line;
+ my %line = ();
+ $line{num} = hex($line[0]);
+ $line{name} = $line[1];
+ $line{category} = $line[2];
+ $line{combining} = $line[3];
+ $line{flags} = $line[4];
+ my @compose = split ' ',$line[5];
+ my $compflag = undef;
+ if (defined $compose[0] && $compose[0] =~ /^</) {
+ $compflag = shift @compose;
+ $compflag =~ s/^<//;
+ $compflag =~ s/>$//;
+ }
+ $line{compose} = \@compose;
+ $line{compflag} = $compflag;
+ $line{decdigit} = $line[6];
+ $line{digit} = $line[7];
+ $line{numerical} = $line[8];
+ $line{bracket} = $line[9];
+ $line{alias} = $line[10];
+ $line{comment} = $line[11];
+ $line{upcase} = $line[12];
+ $line{downcase} = $line[13];
+ $line{titlecase} = $line[14];
+ $line{case3} = $line[15];
+
+ my ($rangename,$rangedir) =
+ ($line{name} =~ /^\<(.*), (First|Last)\>$/);
+ if (defined $rangename) {
+ if ($rangedir eq 'First') {
+ if (defined $inrange) {
+ warn "$filename:$.: Range '$rangename' started while ".
+ "in range '$inrange'.\n";
+ }
+ #warn "Starting: '$rangename'";
+ $inrange = $rangename;
+ $rangestart = $line{num};
+ next;
+ } elsif ($rangedir eq 'Last') {
+ if (defined $inrange && $rangename eq $inrange) {
+ #warn "Ending: '$inrange'";
+ $line{rangestart} = $rangestart;
+ $line{rangeend} = $line{num};
+# $line{num} = $line{rangestart};
+ $line{name} = "Contained in range '$rangename'";
+ #printf "Range found: U+%04X..U+%04X '%s'\n",
+ #$rangestart, $line{num}, $rangename if $verbose;
+ } elsif (defined $inrange) {
+ warn "$filename:$.: ".
+ "Range '$inrange' ended by '$rangename'";
+ }
+ $inrange = undef;
+ } else {
+ die "Internal error";
+ }
+ } else {
+ if (defined $inrange) {
+ warn "$filename:$.: ".
+ "Range '$inrange' not ended on next line.\n";
+ $inrange = undef;
+ }
+ }
+ $unidata[$line{num}] = \%line;
+ push @ranges, \%line if $line{rangestart};
+ }
+ close $f or die "Something went wrong when closing $filename: $!";
+}
+
+sub generate_globals() {
+ while (my ($option,$pkgs) = each %knownoptions) {
+ if (!$excludedoptions{$option}) {
+ if (@$pkgs == 1) {
+ my $pkg = $$pkgs[0];
+ globalcode("\\DeclareUnicodeOption[$pkg]{$option}\%");
+ } else {
+ globalcode("\\DeclareUnicodeOption{$option}\%");
+ for my $pkg (@$pkgs) {
+ globalcode("\\LinkUnicodeOptionToPkg{$option}{$pkg}\%");
+ }
+ }
+ } else {
+ globalcode
+ ("\\XDeclareUnicodeOption{}{$option}{}{".
+ "\\PackageError{ucs}{Option $option has not been generated}".
+ "{run makeunidef.pl without --exclude $option.}}{}");
+ }
+ }
+ flushfiles();
+}
+
+sub define($) {
+ my $str = shift;
+ return $str if defined $str;
+ return '';
+}
+
+sub define0($) {
+ my $str = shift;
+ return $str if defined $str;
+ return 0;
+}
+
+sub findrange($) {
+ my $i = shift;
+ for my $r (@ranges) {
+ if ($i>=$$r{rangestart} && $i<=$$r{rangeend}) {
+ return $$r{name};
+ }
+ }
+ return undef;
+}
+
+sub findrange2($) {
+ my $i = shift;
+ for my $r (@ranges) {
+ if ($i>=$$r{rangestart} && $i<=$$r{rangeend}) {
+ return $r;
+ }
+ }
+ return undef;
+}
+
+sub generate() {
+ for (my $i=0; $i<=$#unidata; $i++) {
+ my $char = $unidata[$i];
+ my $tex = undef;
+ next unless defined $char;
+ next unless %$char;
+ next if (defined $characters[$i]);
+ if (@{$$char{compose}}) {
+ my $success = 1;
+ for my $comp (@{$$char{compose}}) {
+ $success = 0 unless defined $characters[hex($comp)];
+ }
+ if ($success) {
+ my $compflag = $$char{compflag};
+ my $compmode = 'none';
+ if (define($compflag) eq '') { $compmode = 'normal' }
+ elsif ($compflag eq 'fraction') { $compmode = 'normal' }
+ elsif ($compflag eq 'compat') { $compmode = 'normal' }
+ elsif ($compflag eq 'noBreak') { $compmode = 'normal' }
+ elsif ($compflag eq 'super') { $compmode = 'normal.super' }
+ elsif ($compflag eq 'sub') { $compmode = 'normal.sub' }
+ elsif ($compflag eq 'font') { $compmode = 'normal' }
+ elsif ($compflag eq 'circle') { $compmode = 'normal.circle' }
+ elsif ($compflag eq 'square') { $compmode = 'normal.square' }
+ elsif ($compflag eq 'wide') { $compmode = 'normal.wide' }
+ elsif ($compflag eq 'narrow') { $compmode = 'normal.narrow' }
+ elsif ($compflag eq 'vertical') { $compmode = 'normal.vertical' }
+ elsif ($compflag eq 'small') { $compmode = 'normal.small' }
+ else { warn "Unknown composition flag \<$compflag\> ".
+ "in character ".sprintf("%04X",$$char{num}); };
+ if ($compmode =~ /^normal/) {
+ $tex = join '', map {
+ my $a = hex($_);
+ "\\unichar{$a}" } @{$$char{compose}};
+ if ($compmode eq 'normal.super') {
+ $tex = "\\unicodesuper{$tex}";
+ } elsif ($compmode eq 'normal.sub') {
+ $tex = "\\unicodesub{$tex}";
+ } elsif ($compmode eq 'normal.square') {
+ $tex = "\\unicodesquare{$tex}";
+ } elsif ($compmode eq 'normal.circle') {
+ $tex = "\\unicodecircle{$tex}";
+ } elsif ($compmode eq 'normal.wide') {
+ $tex = "\\unicodewide{$tex}";
+ } elsif ($compmode eq 'normal.narrow') {
+ $tex = "\\unicodenarrow{$tex}";
+ } elsif ($compmode eq 'normal.vertical') {
+ $tex = "\\unicodevertical{$tex}";
+ } elsif ($compmode eq 'normal.small') {
+ $tex = "\\unicodesmall{$tex}";
+ }
+ } elsif ($compmode eq 'none') {
+ } else {
+ die "Unknown composition mode $compmode. INTERNAL ERROR";
+ }
+ }
+ if (!$success && $$char{numerical} ne '') {
+ #print "NUMERICAL $i\n";
+ $tex = $$char{numerical};
+ }
+ #print "C: $$char{compflag}\n" if defined $$char{compflag};
+
+ if ($tex) {
+ push @{$characters[$i]},
+ [ "$tex", #"\\dirtyunicode{$i}{$tex}"
+ { dirty => 1,
+ onoption => 'autogenerated' } ];
+ unless (defined $knownoptions{autogenerated}) {
+ $knownoptions{autogenerated} = [];
+ }
+ }
+ }
+ }
+}
+
+sub initcharacters() {
+# for (my $i=0; $i<128; $i++) {
+# push @{$characters[$i]}, [ "\\char$i\\relax", { comment => 'ASCII' } ];
+# }
+}
+
+sub makecomments() {
+ for (my $i=0; $i<$#unidata; $i++) {
+ next unless defined $unidata[$i];
+ push @{$characters[$i]}, [] unless defined $characters[$i];
+ for my $char (@{$characters[$i]}) {
+ my $options = $$char[1];
+ next if defined $$options{comment};
+ my $onoption = $$options{onoption};
+ #print "CHAR: $char\n";
+ #print "CHAR2: $$char[1]\n";
+ my $utf8 = utf16toutf8($i);
+ my $comment = '';
+ $comment .= "OPTION: $onoption, " if ($onoption);
+ $comment .= sprintf "0x%04X = %d (%s) - %s",
+ $i ,$i, $utf8, $ {$unidata[$i]}{name};
+ $$options{comment} = $comment;
+ $$char[1] = $options;
+ }
+ }
+}
+
+sub utf16toutf8($) {
+ my $char = shift;
+ if ($char<0x80) { return $char; }
+ if ($char<0x0800) {
+ return chr(0xc0+int($char/64)).chr(0x80+($char%64)); }
+ return chr(0xe0+int($char/0x1000)).
+ chr(0x80+int(($char%0x1000)/64)).
+ chr(0x80+($char%64));
+}
+
+sub flushfiles() {
+ for my $file (values %files) {
+ flush $file;
+ }
+}
+
+sub closefiles() {
+ for my $filename (keys %files) {
+ my $file = $files{$filename};
+ my $attrib = $file_attribs{$filename};
+ next if $$attrib{nowrite};
+ my $cs = 'utf-8';
+ $cs = $$attrib{coding} if defined $$attrib{coding};
+ print $file <<EOT;
+%%% Local Variables:
+%%% mode: latex
+%%% coding: $cs
+%%% End:
+EOT
+ close $file or die "Something went wrong when closing $filename: $!";
+ }
+ if (define0($fileswritten)==0) {
+ warn "No files written"; }
+}
+
+sub showhelp() {
+ print <<EOT;
+Generates uni-....def files for ucs.sty
+
+Options:
+ --database <file> Set unicode database (default: UnicodeData.txt; short -d)
+ --nocomments Disable comments in generated files
+ --targetdir <dir> Set target directory (default: .; short: -t)
+ --verbose Be verbose (short: -v)
+ --help This page (short: -h)
+ <file(s)> Use this configfile(s)
+
+Configfiles consists of lines, each like this
+<unicode number> <LaTeX-Code>
+where <unicode number> may be prefixed by 0x or 0 to denote hex or oct.
+Lines beginning with # denote a comment.
+EOT
+}
+
+sub optioneq($$) {
+ my ($a,$b) = @_;
+ $a = 'default' if define($a) eq '';
+ $b = 'default' if define($b) eq '';
+ return $a eq $b;
+}
+
+sub getchar($$) {
+ my ($c,$option) = @_;
+
+ #print "getchar($c,$option)\n";
+ return undef unless $characters[$c];
+ for my $char (@{$characters[$c]}) {
+ my $options = $$char[1];
+ return $char if define($$options{onoption}) eq $option;
+ return $char if define($$options{onoption}) eq '' && $option eq 'default';
+ }
+ return undef;
+}
+
+sub expand_tablespec($);
+
+sub expand_tablespec($) {
+ my $tablesize = 256;
+
+ my $spec = shift;
+ my @specs = ();
+ $spec = '*:*' if $spec eq '*';
+ my @spec = ($spec =~ /^([a-z0-9]+|\*):(.*)$/i);
+ my $option = $spec[0];
+ my $range = $spec[1];
+ if (define($option) eq '') {
+ warn "Invalid table specifier '$spec'. Ignoring";
+ return ();
+ }
+ if ($option eq '*') {
+ push @specs, expand_tablespec("default:$range");
+ for my $o (sort keys %knownoptions) {
+ push @specs, expand_tablespec("$o:$range") unless $o eq 'default';
+ }
+ } elsif ($range eq '*') {
+ for (my $i=0; $i<=$#characters; $i+=$tablesize) {
+ for (my $j=0; $j<$tablesize; $j++) {
+ if (my $c = getchar($i+$j,$option)) {
+ my $options = $$c[1];
+ #next if $$options{dirty};
+ push @specs, expand_tablespec
+ (sprintf "%s:%04X-%04X",
+ $option,$i,$i+$tablesize-1);
+ last;
+ }
+ }
+ }
+ } else {
+ warn "Unknown option '$option' in table spec '$spec'. Ignoring"
+ unless $option eq 'default' || defined $knownoptions{$option};
+ my @range = map { hex } split '-', $range, 2;
+
+ push @specs, { option => $option,
+ start => $range[0],
+ end => $range[1],
+ format => 'table', };
+ }
+ return @specs;
+}
+
+sub dump_charactertables() {
+ my @tables = map {
+ expand_tablespec($_)
+ } map {
+ s/\s+$//; s/^\s+//; $_
+ } split /,/, $tables_to_dump;
+ for my $spec (@tables) {
+ dump_charactertable($spec);
+ }
+ flushfiles();
+}
+
+sub default_entrydata($) {
+ my $i = shift;
+ return
+ ( 'code' => $i,
+ 'hexcode' => sprintf("%04X", $i),
+ 'hexcodebeforelast' => sprintf("%1X", int($i%256/16)),
+ );
+}
+
+sub make_entrydata($$$$);
+sub make_entrydata($$$$) {
+ my ($option,$i,$options,$hasctrlglyph) = @_;
+ my %entrydata = default_entrydata($i);
+ if (defined $$options{tableglyph}) {
+ warn sprintf "%s: Character %s/U+%04X has ".
+ "TABLEGLYPH specification.\n",
+ $$options{definedat},$option,$i;
+ }
+ if ($$options{ctrlglyph}) {
+ if ($hasctrlglyph) {
+ %entrydata = %{make_entrydata('ctrlglyphs',$i,$hasctrlglyph,0)};
+ $entrydata{ctrlglyph} = 1;
+ $entrydata{option} = 'ctrlglyphs';
+ return \%entrydata;
+ } else {
+ warn sprintf "%s: Char U+%04X has no control ".
+ "glyph.\n",$$options{definedat},$i;
+ $entrydata{tableglyph} =
+ sprintf('{\tiny %04X}',$i);
+ }
+ }
+ $entrydata{dirty} = ($$options{dirty})?1:0;
+ $entrydata{rightleft} = ($$options{rightleft})?1:0;
+ $entrydata{combining} = ($$options{combining})?1:0;
+ $entrydata{fontfamily} = $$options{fontfamily}
+ if defined $$options{fontfamily};
+ $entrydata{combinechar} = $$options{combinechar}
+ if defined $$options{combinechar};
+ $entrydata{combineglyph} = $$options{combineglyph}
+ if defined $$options{combineglyph};
+ $entrydata{combineoption} = $$options{combineoption}
+ if defined $$options{combineoption};
+ $entrydata{fontenc} = $$options{fontenc}
+ if defined $$options{fontenc};
+ if (defined $$options{tableglyph}) {
+ warn sprintf "Add to ctrlglyphs.ucf:\nU+%04X\t%s\n",
+ $i,$$options{tableglyph}
+ unless $hasctrlglyph;
+ $entrydata{tableglyph} = $$options{tableglyph};
+ }
+ if (defined $$options{tableenvelope}) {
+ warn sprintf "%s: Character %s/u+%04x has ".
+ "TABLEENVELOPE specification.\n",
+ $$options{definedat},$option,$i;
+ $entrydata{tableenvelope} = $$options{tableenvelope};
+ $entrydata{tableenvelope} =~ s/\@\@\@/\#1/g;
+ $entrydata{"tableenvelope.optspec"} = '#1';
+ }
+# $entrydata{fontenc} = 'T1'
+# unless defined $entrydata{fontenc};
+ for my $x (qw/loadfontenc package tablecode/) {
+ $entrydata{"$x.option"} = $$options{$x}; }
+ return \%entrydata;
+}
+
+sub dump_charactertable($$$$) {
+ my $spec = shift;
+ my $option = $$spec{option};
+ my $start = $$spec{start};
+ my $end = $$spec{end};
+ my $format = $$spec{format};
+
+ my $hstart = sprintf "%04X", $start;
+ my $hend = sprintf "%04X", $end;
+ my $filename = "$tabledir/table-$option-$hstart-$hend.tex";
+
+ print "Generating $filename\n" if $verbose;
+
+ my $file = openfile("$tabledir/table-$option-$hstart-$hend.tex",
+ "%%% table for option $option, U+$hstart..U+$hend, $autogen",
+ "Unicode chart U+$hstart..U+$hend");
+
+ print $file <<EOT;
+\\input{tables.inc}
+
+\\def\\gformat{$format}%
+\\def\\goption{$option}%
+\\def\\ghstart{$hstart}%
+\\def\\ghend{$hend}%
+\\def\\gstart{$start}%
+\\def\\gend{$end}%
+EOT
+
+ my $table = "\\tstart%\n";
+ my %fontencs = ();
+ my %packages = ();
+ my %tablecode = ();
+ for (my $i=$start; $i<=$end; $i++) {
+ my @chars = ();
+ @chars = @{$characters[$i]} if defined @{$characters[$i]};
+ my $entry = ($unidata[$i])?"\\noglyph":"\\unassigned";
+ my $found = 0;
+ my $hasctrlglyph = undef;
+ for my $char (@chars) {
+ my $options = $$char[1];
+ if (define($$char[0]) ne '' ||
+ define($$options{envelope}) ne '') {
+ if (optioneq($$options{onoption},'ctrlglyphs')) {
+ $hasctrlglyph = $options;
+ }
+ }
+ }
+
+ my $entrydata = {default_entrydata($i)};
+
+ for my $char (@chars) {
+ my $options = $$char[1];
+ if (define($$char[0]) ne '' ||
+ define($$options{envelope}) ne '') {
+ if (optioneq($$options{onoption},$option)) {
+ $entry = '\glyph';
+ $entrydata = make_entrydata($option,$i,$options,
+ $hasctrlglyph);
+ $fontencs{$$entrydata{fontenc}} = 1
+ if defined $$entrydata{fontenc} &&
+ $$entrydata{fontenc} ne 'T1';
+ $fontencs{$$entrydata{'loadfontenc.option'}} = 1
+ if defined $$entrydata{'loadfontenc.option'};
+ if (defined $$entrydata{"package.option"}) {
+ for my $p (split ';', $$entrydata{'package.option'}) {
+ $packages{$p} = 1; }}
+ $tablecode{$$entrydata{"tablecode.option"}} = 1
+ if defined $$entrydata{"tablecode.option"};
+ $found = 1;
+ } elsif (!$found) {
+ if (!$$options{dirty} || $entry eq '') {
+ $entry = '\withoption';
+ }
+ }
+ }
+ }
+ for my $i (keys %$entrydata) {
+ next if $i =~ /\./;
+ my $os = define($$entrydata{"$i.optspec"});
+ $table .= "\\gdef\\a$i$os\{$$entrydata{$i}\}%\n"; }
+ my $comment = sprintf "%04X %s %s", $i, utf16toutf8($i),
+ define($unidata[$i]->{name});
+ $table .= "$entry\% $comment\n";
+ }
+ $table .= "\\tend%\n";
+
+ print $file "\\def\\gfontencs{",join(',',keys %fontencs,'T1'),"}%\n";
+ for my $p (keys %packages) {
+ $p = "{$p}" unless $p =~ /\}$/;
+ print $file "\\usepackage$p%\n";
+ }
+ for my $c (keys %tablecode) {
+ print $file "$c%\n";
+ }
+ print $file $table;
+ flush $file;
+}
+
+
+sub parseargs() {
+ #Getopt::Long::Configure(qw/bundling/);
+ my %opt = ();
+ unless (GetOptions(\%opt,qw/config|configfile|c=s@
+ exclude|ex=s@
+ database|db|d=s
+ comments!
+ names!
+ data!
+ loadunidata!
+ tables=s
+ tabledir=s
+ targetdir|dir|t|target=s
+ help|h
+ verbose|v
+ compress!
+ onlyfile=s
+ /)) {
+ die "Bad command line options, try --help";
+ }
+ if ($opt{help}) {
+ showhelp();
+ exit;
+ }
+ unless ($opt{forceasterisk}) {
+ @ARGV = grep { if (/\*/ && !-e $_) {
+ print "Configfile $_ seems to be unmatched wildcard. Ignoring.\n"
+ if $opt{verbose};
+ 0; } else { 1; }
+ } @ARGV;
+ }
+ push @{$opt{config}}, @ARGV if @ARGV;
+ die "You must supply at least one config file"
+ unless defined $opt{config};
+ $opt{exclude} = [] unless defined $opt{exclude};
+ @{$opt{exclude}} = split /,/,join ',',@{$opt{exclude}};
+ $opt{database} = 'UnicodeData.txt' unless defined $opt{database};
+ $opt{comments} = 1 unless defined $opt{comments};
+ $opt{names} = 1 unless defined $opt{names};
+ $opt{data} = 1 unless defined $opt{data};
+ $opt{targetdir} = '.' unless defined $opt{targetdir};
+ $opt{loadunidata} = 1 unless defined $opt{loadunidata};
+ $opt{tables} = '*' if $opt{tabledir} && !defined $opt{tables};
+ $opt{tabledir} = '.' unless defined $opt{tabledir};
+ $opt{compress} = 1 unless defined $opt{compress};
+ @configfiles = @{$opt{config}};
+ $unidata = $opt{database};
+ $createcomments = $opt{comments};
+ $targetdir = $opt{targetdir};
+ $verbose = $opt{verbose};
+ $generate_uninames = $opt{names};
+ $tabledir = $opt{tabledir};
+ $tables_to_dump = $opt{tables};
+ $dump_unidata = $opt{data};
+ $loadunidata = $opt{loadunidata};
+ $compressnames = $opt{compress};
+ $onlyfile = $opt{onlyfile};
+ %excludedoptions = map { $_ => 1 } @{$opt{exclude}};
+}
+
+sub untaint($) {
+ my $str = shift;
+ my ($unt) = ($str =~ /^(.*)$/);
+ return $unt;
+}
+
+sub unlinkfile($) {
+ my $fullname = shift;
+ return 1 if defined($onlyfile) && $fullname !~ m@(^|/)$onlyfile$@;
+ return 1 unless -e $fullname;
+ my $f = new IO::File($fullname,O_RDONLY) or
+ die "Could not open $fullname for reading: $!";
+ my $line = <$f>;
+ close $f;
+ unless ($line =~ /^\%\%\%.*autogenerated by makeunidef.pl/) {
+ die "File $fullname was not generated by me, ".
+ "will not overwrite it"; }
+ unlink untaint($fullname) or
+ die "Could not remove $fullname: $!";
+ #print "FILE: $file\n";
+}
+
+sub unlinkfiles($$) {
+ my ($pattern,$dir) = @_;
+ my $d = new IO::Handle;
+ opendir $d, $dir or
+ die "Could not open directory $targetdir: $!";
+ while (my $file = readdir $d) {
+ #print "F: $file\n";
+ next unless $file =~ /$pattern/x;
+ #print "UF: $file\n";
+ unlinkfile("$dir/$file") or
+ die "Could not unlink $dir/$file";
+ }
+}
+
+$huffman_decoder = '\count255=128
+\loop\ifnum\count255<256\relax
+ \catcode\count255=13
+ \advance\count255by1\relax
+\repeat
+\catcode`\G=13
+\catcode`\H=13
+\catcode`\I=13
+\def\uncompress{%
+\def^^80{\0\0\0\0\0\0\0}%
+\def^^81{\0\0\0\0\0\0\1}%
+\def^^82{\0\0\0\0\0\1\0}%
+\def^^83{\0\0\0\0\0\1\1}%
+\def^^84{\0\0\0\0\1\0\0}%
+\def^^85{\0\0\0\0\1\0\1}%
+\def^^86{\0\0\0\0\1\1\0}%
+\def^^87{\0\0\0\0\1\1\1}%
+\def^^88{\0\0\0\1\0\0\0}%
+\def^^89{\0\0\0\1\0\0\1}%
+\def^^8a{\0\0\0\1\0\1\0}%
+\def^^8b{\0\0\0\1\0\1\1}%
+\def^^8c{\0\0\0\1\1\0\0}%
+\def^^8d{\0\0\0\1\1\0\1}%
+\def^^8e{\0\0\0\1\1\1\0}%
+\def^^8f{\0\0\0\1\1\1\1}%
+\def^^90{\0\0\1\0\0\0\0}%
+\def^^91{\0\0\1\0\0\0\1}%
+\def^^92{\0\0\1\0\0\1\0}%
+\def^^93{\0\0\1\0\0\1\1}%
+\def^^94{\0\0\1\0\1\0\0}%
+\def^^95{\0\0\1\0\1\0\1}%
+\def^^96{\0\0\1\0\1\1\0}%
+\def^^97{\0\0\1\0\1\1\1}%
+\def^^98{\0\0\1\1\0\0\0}%
+\def^^99{\0\0\1\1\0\0\1}%
+\def^^9a{\0\0\1\1\0\1\0}%
+\def^^9b{\0\0\1\1\0\1\1}%
+\def^^9c{\0\0\1\1\1\0\0}%
+\def^^9d{\0\0\1\1\1\0\1}%
+\def^^9e{\0\0\1\1\1\1\0}%
+\def^^9f{\0\0\1\1\1\1\1}%
+\def^^a0{\0\1\0\0\0\0\0}%
+\def^^a1{\0\1\0\0\0\0\1}%
+\def^^a2{\0\1\0\0\0\1\0}%
+\def^^a3{\0\1\0\0\0\1\1}%
+\def^^a4{\0\1\0\0\1\0\0}%
+\def^^a5{\0\1\0\0\1\0\1}%
+\def^^a6{\0\1\0\0\1\1\0}%
+\def^^a7{\0\1\0\0\1\1\1}%
+\def^^a8{\0\1\0\1\0\0\0}%
+\def^^a9{\0\1\0\1\0\0\1}%
+\def^^aa{\0\1\0\1\0\1\0}%
+\def^^ab{\0\1\0\1\0\1\1}%
+\def^^ac{\0\1\0\1\1\0\0}%
+\def^^ad{\0\1\0\1\1\0\1}%
+\def^^ae{\0\1\0\1\1\1\0}%
+\def^^af{\0\1\0\1\1\1\1}%
+\def^^b0{\0\1\1\0\0\0\0}%
+\def^^b1{\0\1\1\0\0\0\1}%
+\def^^b2{\0\1\1\0\0\1\0}%
+\def^^b3{\0\1\1\0\0\1\1}%
+\def^^b4{\0\1\1\0\1\0\0}%
+\def^^b5{\0\1\1\0\1\0\1}%
+\def^^b6{\0\1\1\0\1\1\0}%
+\def^^b7{\0\1\1\0\1\1\1}%
+\def^^b8{\0\1\1\1\0\0\0}%
+\def^^b9{\0\1\1\1\0\0\1}%
+\def^^ba{\0\1\1\1\0\1\0}%
+\def^^bb{\0\1\1\1\0\1\1}%
+\def^^bc{\0\1\1\1\1\0\0}%
+\def^^bd{\0\1\1\1\1\0\1}%
+\def^^be{\0\1\1\1\1\1\0}%
+\def^^bf{\0\1\1\1\1\1\1}%
+\def^^c0{\1\0\0\0\0\0\0}%
+\def^^c1{\1\0\0\0\0\0\1}%
+\def^^c2{\1\0\0\0\0\1\0}%
+\def^^c3{\1\0\0\0\0\1\1}%
+\def^^c4{\1\0\0\0\1\0\0}%
+\def^^c5{\1\0\0\0\1\0\1}%
+\def^^c6{\1\0\0\0\1\1\0}%
+\def^^c7{\1\0\0\0\1\1\1}%
+\def^^c8{\1\0\0\1\0\0\0}%
+\def^^c9{\1\0\0\1\0\0\1}%
+\def^^ca{\1\0\0\1\0\1\0}%
+\def^^cb{\1\0\0\1\0\1\1}%
+\def^^cc{\1\0\0\1\1\0\0}%
+\def^^cd{\1\0\0\1\1\0\1}%
+\def^^ce{\1\0\0\1\1\1\0}%
+\def^^cf{\1\0\0\1\1\1\1}%
+\def^^d0{\1\0\1\0\0\0\0}%
+\def^^d1{\1\0\1\0\0\0\1}%
+\def^^d2{\1\0\1\0\0\1\0}%
+\def^^d3{\1\0\1\0\0\1\1}%
+\def^^d4{\1\0\1\0\1\0\0}%
+\def^^d5{\1\0\1\0\1\0\1}%
+\def^^d6{\1\0\1\0\1\1\0}%
+\def^^d7{\1\0\1\0\1\1\1}%
+\def^^d8{\1\0\1\1\0\0\0}%
+\def^^d9{\1\0\1\1\0\0\1}%
+\def^^da{\1\0\1\1\0\1\0}%
+\def^^db{\1\0\1\1\0\1\1}%
+\def^^dc{\1\0\1\1\1\0\0}%
+\def^^dd{\1\0\1\1\1\0\1}%
+\def^^de{\1\0\1\1\1\1\0}%
+\def^^df{\1\0\1\1\1\1\1}%
+\def^^e0{\1\1\0\0\0\0\0}%
+\def^^e1{\1\1\0\0\0\0\1}%
+\def^^e2{\1\1\0\0\0\1\0}%
+\def^^e3{\1\1\0\0\0\1\1}%
+\def^^e4{\1\1\0\0\1\0\0}%
+\def^^e5{\1\1\0\0\1\0\1}%
+\def^^e6{\1\1\0\0\1\1\0}%
+\def^^e7{\1\1\0\0\1\1\1}%
+\def^^e8{\1\1\0\1\0\0\0}%
+\def^^e9{\1\1\0\1\0\0\1}%
+\def^^ea{\1\1\0\1\0\1\0}%
+\def^^eb{\1\1\0\1\0\1\1}%
+\def^^ec{\1\1\0\1\1\0\0}%
+\def^^ed{\1\1\0\1\1\0\1}%
+\def^^ee{\1\1\0\1\1\1\0}%
+\def^^ef{\1\1\0\1\1\1\1}%
+\def^^f0{\1\1\1\0\0\0\0}%
+\def^^f1{\1\1\1\0\0\0\1}%
+\def^^f2{\1\1\1\0\0\1\0}%
+\def^^f3{\1\1\1\0\0\1\1}%
+\def^^f4{\1\1\1\0\1\0\0}%
+\def^^f5{\1\1\1\0\1\0\1}%
+\def^^f6{\1\1\1\0\1\1\0}%
+\def^^f7{\1\1\1\0\1\1\1}%
+\def^^f8{\1\1\1\1\0\0\0}%
+\def^^f9{\1\1\1\1\0\0\1}%
+\def^^fa{\1\1\1\1\0\1\0}%
+\def^^fb{\1\1\1\1\0\1\1}%
+\def^^fc{\1\1\1\1\1\0\0}%
+\def^^fd{\1\1\1\1\1\0\1}%
+\def^^fe{\1\1\1\1\1\1\0}%
+\def^^ff{\1\1\1\1\1\1\1}%
+\readline}%
+\@tempcnta=0
+\def\readline#1
+{\toks255{}\toks254{}\relax
+ #1%
+ \let\uc@temp@c\uc@temp@a
+ \unicode@numtohex\uc@temp@a\uc@got4%
+ \edef\uc@temp@b{\the\toks254}%
+ \edef\uc@temp@b{\uc@temp@b}%
+ \global\let\uc@temp@a\uc@temp@c
+ \expandafter\info\expandafter{\uc@temp@b}%
+ \endinput}%
+\def\skipcodes#1G{\advance\@tempcnta by"#1\relax\checkline}%
+\def\skipline#1
+{}%
+\def\add#1{\toks254\expandafter{\the\toks254 #1}}%
+\def\checkline{\advance\@tempcnta by1\relax
+ \ifnum\@tempcnta=\uc@got
+ \expandafter\uncompress\else\expandafter\skipline\fi}%
+\def\checkrange#1I#2G{%
+ \advance\@tempcnta by"#1\relax
+ \@tempcntb\@tempcnta\advance\@tempcntb by-"#2\relax
+ \ifnum\@tempcntb>\uc@got\let\uc@temp@c\skipline\else
+ \ifnum\@tempcnta<\uc@got\let\uc@temp@c\skipline\else
+ \let\uc@temp@c\uncompress
+ \fi\fi
+ \uc@temp@c}%
+\letG\checkline
+\letH\skipcodes
+\letI\checkrange
+\def\1{\toks255\expandafter{\the\toks255 b}\2}%
+\def\0{\toks255\expandafter{\the\toks255 a}\2}%
+\def\2{\expandafter\ifx\csname hc@\the\toks255\endcsname\relax
+ \else\csname hc@\the\toks255\endcsname\toks255{}\fi}%';
+
+sub getname($) {
+ my $i = shift;
+ my $fullname; my $rangeend; my $xoptions;
+ if (defined $unidata[$i]) {
+ my $name = $ {$unidata[$i]}{name};
+ my $alias = $ {$unidata[$i]}{alias};
+ my $comment = $ {$unidata[$i]}{comment};
+ $rangeend = $ {$unidata[$i]}{rangeend};
+ $fullname = $name;
+ $fullname .= "\n$alias" if $alias;
+ $fullname .= "\n$comment" if $comment;
+ $xoptions = join ', ', grep { $excludedoptions{$_} }
+ keys %{$ {$unidata[$i]}{options}};
+ $xoptions = undef if $xoptions eq '';
+ }
+
+# if ($characters[$i]) {
+# $options = grep { defined $_ } join ', ', map {
+# my $o = $$_[1]; $o = $$o{onoption};
+# $o = 'default' if (!defined $o) || ($o eq ''); $o;
+# $o = undef unless $excludedoptions{$o}; $o;
+# } @{$characters[$i]};
+# if (defined $rangeend) {
+# $options2 = $options; $options = undef;
+# $fullname2 = findrange($i);
+# } else {
+# $fullname = findrange($i) unless defined $fullname;
+# }
+# }
+
+ return undef unless defined $fullname;
+
+ my $str = "\001";
+ if (defined $fullname) { $str .= "$fullname\n" } else { $str .= "\002\n" };
+ if (defined $xoptions) { $str .= "\003$xoptions\n" };
+ chomp $str;
+
+# my $str2 = undef;
+# if (defined $options2) {
+# $str2 = "\001";
+# if (defined $fullname2) { $str2 .= "$fullname\n" }
+# else { $str2 .= "\002\n" };
+# { $str2 .= "\000$options2\n" };
+# chomp $str2;
+# }
+
+ return ($str);
+}
+
+sub dumpnames_compressed() {
+ my $file = openfile("$targetdir/uninames.dat",
+ "%%% unicode name hash for ucs.sty, $autogen",
+ "Unicode character names, compressed",
+ coding => 'no-conversion');
+ print "Creating Huffman code\n" if $verbose;
+ my (@weight, @tree, %lookup);
+ my $nexthuffman = 0;
+ my $upto = $#unidata; $upto = $#characters if $#characters > $upto;
+ for (my $i=1; $i<=$upto; $i++) {
+ for my $str (getname $i) {
+ next unless defined $str;
+ for my $c (split '',$str) {
+ my $n = $lookup{$c};
+ unless (defined $n) { $n = $nexthuffman++; $lookup{$c} = $n };
+ $weight[$n]++;
+ $tree[$n] = $c;
+ }
+ }
+ }
+
+ my $highnum = 9999999;
+ while (1) {
+ my ($smallest, $smallest2);
+ my $smallestval = $highnum;
+ my $smallest2val = $highnum;
+ for (my $i=0; $i<$nexthuffman; $i++) {
+ my $val = $weight[$i];
+ my $j = $i;
+ next unless defined $val;
+# print "0: $j\n";
+ if ($val < $smallestval) {
+ my $tmp = $val; $val = $smallestval; $smallestval = $tmp;
+ $tmp = $j; $j = $smallest; $smallest = $tmp;
+ }
+ if ($val < $smallest2val) {
+ $smallest2val = $val; $smallest2 = $j;
+ }
+# print "A: $smallest, $smallest2\n";
+ }
+ last if ($smallest2val==$highnum);
+ $weight[$smallest] = undef;
+ $weight[$smallest2] = undef;
+ $tree[$nexthuffman] = [$tree[$smallest],$tree[$smallest2]];
+ $weight[$nexthuffman] = $smallestval+$smallest2val;
+# print "$smallest + $smallest2 => $nexthuffman\n";
+# print Dumper($tree[$nexthuffman]);
+ $nexthuffman++;
+ }
+
+ dumphuffman($tree[$nexthuffman-1],'',\%lookup);
+ my $padding = undef;
+ for my $i (values %lookup) {
+ if (length($i)>7) {
+ $padding = $i; last;
+ }
+ }
+ unless (defined $padding) {
+ warn "There is no huffman bit sequence longer than 7 bit. ".
+ "Padding with spaces";
+ $padding = $lookup{' '} x 8;
+ }
+
+ print "Compressing\n" if $verbose;
+
+ for my $c (keys %lookup) {
+ my $v = $lookup{$c};
+ $v =~ s/1/b/g; $v =~ s/0/a/g;
+ $c = $uninames_abbrev{$c} if defined $uninames_abbrev{$c};
+ print $file "\\def\\hc\@$v\{\\add $c\}\%\n";
+ }
+ print $file "$huffman_decoder\n";
+
+ my $cp = 0;
+ for (my $i=1; $i<=$#unidata; $i++) {
+ for my $str (getname $i) {
+ next unless defined $str;
+ my $rangestart;
+ if ($unidata[$i]) { $rangestart = $ {$unidata[$i]}{rangestart}; };
+
+ $str =~ s/./
+ if (!defined $lookup{$&}) { print "L: '$&'\n"; };
+ $lookup{$&};
+ /egs;
+# $str = join '', map { if ($_) {
+# pack "B*", sprintf "3%-7s", $_;
+# } } split /(.{1,7})/, $str;
+ $str =~ s/.{1,7}/
+ sprintf "3%s%s",$&,substr($padding,0,7-length($&));
+ /eg;
+ $str = pack("B*",$str);
+ $cp++;
+ if (defined $rangestart) {
+# printf $file "I%XI%X", $i-$cp+1, $rangeend-$i;
+# $cp=$rangeend;
+ printf $file "I%XI%X", $i-$cp+1, $i-$rangestart;
+ $cp=$i;
+ } else {
+ if ($i>$cp) { printf $file "H%X", $i-$cp; $cp=$i};
+ }
+ print $file "G$str\n";
+ }
+ }
+
+ flushfiles();
+}
+
+sub dumphuffman($$$) {
+ my ($tree,$prefix,$lookup) = @_;
+# print Dumper([$tree]); return;
+ if (ref $tree) {
+ dumphuffman($$tree[0],$prefix.'0',$lookup);
+ dumphuffman($$tree[1],$prefix.'1',$lookup);
+ } else {
+# print "HUFFMAN: '$tree' => '$prefix'\n";
+ $$lookup{$tree} = $prefix;
+ }
+}
+
+sub isprivate($) {
+ my $cp = shift;
+ return 1 if ($cp>=0xe000 && $cp<=0xf8ff);
+ return 1 if ($cp>=0xf0000 && $cp<=0xffffd);
+ return 1 if ($cp>=0x100000 && $cp<=0x10fffd);
+ return 0;
+}
+
+sub dumpnames_uncompressed() {
+ my $file = openfile("$targetdir/uninames.dat",
+ "%%% unicode name hash for ucs.sty, $autogen",
+ "Unicode character names");
+ warn "Dumping uncompressed unicode data, ".
+ "this is no longer maintained and may give unpredicted results.\n";
+ dump_ranges($file);
+ for (my $i=1; $i<=$#unidata; $i++) {
+ next unless defined $unidata[$i];
+ my $name = $ {$unidata[$i]}{name};
+ my $alias = $ {$unidata[$i]}{alias};
+ my $comment = $ {$unidata[$i]}{comment};
+ my $str = sprintf "Unicode character %d = 0x%04x:${messagebreak}%s",
+ $i, $i, $name;
+ $str .= "${messagebreak}$alias" if $alias;
+ $str .= "${messagebreak}$comment" if $comment;
+ print $file "\\info{$str}\%\n";
+ }
+ flushfiles();
+}
+
+parseargs();
+print "PASS: initcharacters\n" if $verbose;
+initcharacters();
+if ($dump_unidata) {
+ print "PASS: unlink unidata files\n" if $verbose;
+ unlinkfiles('
+ ^uni-[0-9]+\.def$|
+ ^uninames.dat$|
+ ^uni-global\.def$ ',$targetdir);
+}
+if ($tables_to_dump) {
+ print "PASS: unlink tables\n" if $verbose;
+ unlinkfiles(' ^table-.*-.*-.*\.tex$ ',$tabledir);
+}
+if ($loadunidata) {
+ print "PASS: loadunidata($unidata)\n" if $verbose;
+ loadunidata($unidata); }
+for my $configfile (@configfiles) {
+ print "PASS: loadconfig($configfile)\n" if $verbose;
+ loadconfig($configfile); }
+print "PASS: generate\n" if $verbose;
+generate();
+if ($dump_unidata) {
+ print "PASS: generate globals\n" if $verbose;
+ generate_globals(); }
+if ($createcomments) {
+ print "PASS: makecomments\n" if $verbose;
+ makecomments(); }
+if ($dump_unidata) {
+ print "PASS: dumpcharacters\n" if $verbose;
+ dumpcharacters();
+}
+if ($tables_to_dump) {
+ print "PASS: dumping character tables to directory $tabledir/\n"
+ if $verbose;
+ dump_charactertables();
+}
+if ($generate_uninames && $dump_unidata && $loadunidata) {
+ if ($compressnames) {
+ print "PASS: dumpnames (compressed)\n" if $verbose;
+ dumpnames_compressed();
+ } else {
+ print "PASS: dumpnames (uncompressed)\n" if $verbose;
+ dumpnames_uncompressed();
+ }}
+print "PASS: closefiles\n" if $verbose;
+closefiles();
+
+### LocalVariables:
+### mode: perl
+### End:
+### Local IspellDict: british
+
+
+# LocalWords: uni def makeunidef pl de ucs sty AUTOOPTION num configfiles dir
+# LocalWords: nocomments SYSNOPSIS targetdir db UnicodeData txt uninames dat
+# LocalWords: UNIDATA org www http unicode
diff --git a/Master/texmf-dist/doc/latex/ucs/ucs.ps.gz b/Master/texmf-dist/doc/latex/ucs/ucs.ps.gz
new file mode 100644
index 00000000000..08336782eed
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ucs/ucs.ps.gz
Binary files differ