summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-01-01 17:29:55 +0000
committerKarl Berry <karl@freefriends.org>2009-01-01 17:29:55 +0000
commit73e22e4cb3d601cd39807fea0ac04263644403ab (patch)
tree2cd7538c0d2889410ff8c7e58d5fa82432b90e58
parentb3a7d32cd931f17f377ff56040b0d7f3a5124ee7 (diff)
c90 from cjk 4.8.2 (29dec08)
git-svn-id: svn://tug.org/texlive/trunk@11783 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-xMaster/texmf-dist/doc/fonts/enc/c90/c90.pdfbin0 -> 108465 bytes
-rwxr-xr-xMaster/texmf-dist/fonts/enc/dvips/c90/c90.enc334
-rwxr-xr-xMaster/texmf-dist/source/fonts/enc/c90/c90.etx2346
-rwxr-xr-xMaster/texmf-dist/source/fonts/enc/c90/c90.mtx42
-rw-r--r--Master/tlpkg/tlpsrc/c90.tlpsrc2
5 files changed, 2724 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/fonts/enc/c90/c90.pdf b/Master/texmf-dist/doc/fonts/enc/c90/c90.pdf
new file mode 100755
index 00000000000..325f9a836e0
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/enc/c90/c90.pdf
Binary files differ
diff --git a/Master/texmf-dist/fonts/enc/dvips/c90/c90.enc b/Master/texmf-dist/fonts/enc/dvips/c90/c90.enc
new file mode 100755
index 00000000000..0cd1e7535b0
--- /dev/null
+++ b/Master/texmf-dist/fonts/enc/dvips/c90/c90.enc
@@ -0,0 +1,334 @@
+%!PS-Adobe-3.0 Resource-Encoding
+% @psencodingfile{
+% author = "See file c90.etx",
+% version = "See file c90.etx",
+% date = "generated 2005/07/04",
+% filename = "c90.enc",
+% email = "See file c90.etx",
+% codetable = "ISO/ASCII",
+% checksum = "",
+% abstract = "This is a postscript encoding file, automatically generated by fontinst from c90.etx."
+% }
+
+% Copyright (C) 1994-2008 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% Created by: tex garuda
+% Created using: \etxtoenc{c90}{c90}
+
+% This file should be installed somewhere that your DVI
+% to postscript driver looks for files. It is needed for
+% reencoding some font you have transformed.
+
+% After installing this file, you should add the following
+% line (minus %) to your finstmsc.rc file:
+% \declarepsencoding{c90}{C90Encoding}{\download{c90.enc}}
+
+%%BeginResource: encoding C90Encoding
+/C90Encoding [
+% 0
+/Gamma
+/Delta
+/Theta
+/Lambda
+/Xi
+/Pi
+/Sigma
+/Upsilon
+% 8
+/Phi
+/Psi
+/Omega
+/endash
+/emdash
+/quotesingle
+/exclamdown
+/questiondown
+% 16
+/dotlessi
+/quotedblleft
+/grave
+/acute
+/caron
+/breve
+/macron
+/ring
+% 24
+/cedilla
+/germandbls
+/ae
+/oe
+/oslash
+/AE
+/OE
+/Oslash
+% 32
+/.notdef
+/exclam
+/quotedblright
+/numbersign
+/dollar
+/percent
+/ampersand
+/quoteright
+% 40
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/hyphen
+/period
+/slash
+% 48
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+% 56
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+% 64
+/at
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+% 72
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+% 80
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+% 88
+/X
+/Y
+/Z
+/bracketleft
+/backslash
+/bracketright
+/circumflex
+/underscore
+% 96
+/quoteleft
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+% 104
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+% 112
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+% 120
+/x
+/y
+/z
+/braceleft
+/bar
+/braceright
+/tilde
+/dieresis
+% 128
+/uni0E38
+/uni0E39
+/uni0E3A
+/uni0E48.low_left
+/uni0E49.low_left
+/uni0E4A.low_left
+/uni0E4B.low_left
+/uni0E4C.low_left
+% 136
+/uni0E48.low
+/uni0E49.low
+/uni0E4A.low
+/uni0E4B.low
+/uni0E4C.low
+/.notdef
+/.notdef
+/uni0E4D.left
+% 144
+/uni0E0D.descless
+/.notdef
+/uni0E31.left
+/uni0E47.left
+/uni0E34.left
+/uni0E35.left
+/uni0E36.left
+/uni0E37.left
+% 152
+/uni0E48.left
+/uni0E49.left
+/uni0E4A.left
+/uni0E4B.left
+/uni0E4C.left
+/.notdef
+/.notdef
+/uni0E10.descless
+% 160
+/.notdef
+/uni0E01
+/uni0E02
+/uni0E03
+/uni0E04
+/uni0E05
+/uni0E06
+/uni0E07
+% 168
+/uni0E08
+/uni0E09
+/uni0E0A
+/uni0E0B
+/uni0E0C
+/uni0E0D
+/uni0E0E
+/uni0E0F
+% 176
+/uni0E10
+/uni0E11
+/uni0E12
+/uni0E13
+/uni0E14
+/uni0E15
+/uni0E16
+/uni0E17
+% 184
+/uni0E18
+/uni0E19
+/uni0E1A
+/uni0E1B
+/uni0E1C
+/uni0E1D
+/uni0E1E
+/uni0E1F
+% 192
+/uni0E20
+/uni0E21
+/uni0E22
+/uni0E23
+/uni0E24
+/uni0E25
+/uni0E26
+/uni0E27
+% 200
+/uni0E28
+/uni0E29
+/uni0E2A
+/uni0E2B
+/uni0E2C
+/uni0E2D
+/uni0E2E
+/uni0E2F
+% 208
+/uni0E30
+/uni0E31
+/uni0E32
+/uni0E33
+/uni0E34
+/uni0E35
+/uni0E36
+/uni0E37
+% 216
+/uni0E38
+/uni0E39
+/uni0E3A
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni0E3F
+% 224
+/uni0E40
+/uni0E41
+/uni0E42
+/uni0E43
+/uni0E44
+/uni0E45
+/uni0E46
+/uni0E47
+% 232
+/uni0E48
+/uni0E49
+/uni0E4A
+/uni0E4B
+/uni0E4C
+/uni0E4D
+/uni0E4E
+/uni0E4F
+% 240
+/uni0E50
+/uni0E51
+/uni0E52
+/uni0E53
+/uni0E54
+/uni0E55
+/uni0E56
+/uni0E57
+% 248
+/uni0E58
+/uni0E59
+/uni0E5A
+/uni0E5B
+/uni0E38.low
+/uni0E39.low
+/uni0E3A.low
+/.notdef
+] def
+%%EndResource
+
+% End of file c90.enc.
diff --git a/Master/texmf-dist/source/fonts/enc/c90/c90.etx b/Master/texmf-dist/source/fonts/enc/c90/c90.etx
new file mode 100755
index 00000000000..9b00a0c110b
--- /dev/null
+++ b/Master/texmf-dist/source/fonts/enc/c90/c90.etx
@@ -0,0 +1,2346 @@
+% c90.etx
+
+% Copyright (C) 1994-2008 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+\documentclass{article}
+
+\usepackage[specification]{fontdoc}[2001/06/01]
+\usepackage{textcomp}
+\usepackage{shortvrb}
+\usepackage{mflogo}
+\usepackage{multicol}
+\usepackage{url}
+
+\MakeShortVerb{\|}
+
+\newlength{\Stackwidth}
+
+\newcommand\StackAbove[2]{%
+ \settowidth{\Stackwidth}{$#1$}%
+ \vbox{\hbox{$#1$}%
+ \hbox to \Stackwidth{\hss $#2$\hss}}%
+}
+\newcommand\StackBelow[2]{%
+ \settowidth{\Stackwidth}{$#1$}%
+ \vtop{\hbox{$#1$}%
+ \hbox to \Stackwidth{\hss $#2$\hss}}%
+}
+
+\newcommand{\thaiclass}[1]{%
+ {\textit{#1}}%
+}
+\newcommand{\thaiclassx}[2]{%
+ \thaiclass{#1}%
+ \raisebox{-0.4ex}{{\footnotesize\textit{#2}}}%
+}
+\newcommand{\thaiclassxx}[3]{%
+ \thaiclassx{#1}{#2}%
+ \raisebox{-0.8ex}{{\tiny\textit{#3}}}%
+}
+
+
+\begin{document}
+
+\title{The \texttt{C90} encoding for Thai}
+\author{Werner Lemberg}
+\date{2005/07/04}
+\maketitle
+
+
+\section{Introduction}
+
+This file describes a font encoding for Thai, as presented in a
+TUGboat article~\cite{TUG-Thai}. The glyph names follow the Adobe
+Glyph List (AGL)~\cite{AGL} recommendations. Since most available
+Thai fonts neither use AGL glyph names nor follow the font encoding
+used here, you have to be careful in setting up a proper encoding
+vector. A specialty (for reasons explained below) is that three
+glyphs, namely |/uni0E38| (Thai character `sara u'), |/uni0E39| (Thai
+character `sara uu'), and |/uni0E3A| (Thai character `phinthu') must
+appear twice in the encoding; the additional glyph indices are |0x80|,
+|0x81|, and |0x82|, respectively.
+
+
+\section{Ligatures}
+The tricky part is implementing the ligatures. TeX's ligature
+mechanism only provides contextual patterns of length~2. Due to the
+very nature of the ETX format, ligatures aren't grouped into classes
+which makes this file rather long.
+
+Thai glyphs can be grouped functionally into base glyphs (which are
+spacing glyphs) and diacritics (which have zero advance width).
+Usually, diacritical glyphs represent either vowels or tone
+indicators, whereas base glyphs represent consonants -- I won't go
+into detail here; please read the Unicode standard~\cite{Unicode} or
+any introduction into the Thai script for more information.
+
+The general composing rules are as follows:
+
+\[
+ CV \longrightarrow \StackAbove{V}{C}\,,\quad
+ CT \longrightarrow \StackAbove{T}{C}\,,\quad
+ CVT \longrightarrow \StackAbove{\StackAbove{T}{V}}{C}\,,\quad
+ Cv \longrightarrow \StackBelow{C}{v}\,,\quad
+ CvT \longrightarrow \StackBelow{\StackAbove{T}{C}}{v}
+\]
+
+\noindent
+where $C$ represents a base consonant, $V$ an upper vowel, $v$ a lower
+vowel, and $T$ a tone mark. The tone mark always comes last.
+
+Sometimes you will find documents which have first the tone mark and
+then the vowel. In real Thai input systems, this error will be
+catched and fixed by reordering the characters according to the
+TIS-620 Thai encoding standard before any output is created. The
+ligatures given below are not able to handle such incorrect data, and
+you have to normalize it before using them.
+
+It depends on context where the diacritics are exactly positioned;
+some base glyphs have overlong ascenders or descenders, making it
+necessary to shift the diacritics vertically and horizontally.
+
+To complicate things, the Thai vowel `sara am' (TIS-620 code point
+|0xD3|, Unicode value |U+0E33|), which looks like the final nasal sign
+`nikhahit' (|0xED|, |U+0E4D|) followed by the vowel `sara aa' (|0xD2|,
+|U+0E32|), will be decomposed into these two glyphs for rendering.
+The difficulty is that we must position the tone mark of the
+\emph{previous} character properly! Thus we have
+
+\[
+ C + SM \longrightarrow \StackAbove{N}{C} + SA\,,\quad
+ C + T + SM \longrightarrow \StackAbove{\StackAbove{T}{N}}{C} + SA
+\]
+
+A last specialty (used for Sanskrit written in Thai) is that `sara aa'
+if it follows the independent vowel letter `ru' (|0xC4|, |U+0E24|) or
+`lu' (|0xC6|, |U+0E26|) is replaced with the `lakkhangyao' sign
+(|0xE5|, |U+0E45|).
+
+
+\section{Glyph Classes}
+
+To describe the patterns and rules we start with defining glyph
+classes.
+
+\begin{quote}
+ \begin{description}
+ \item[\thaiclassx{base}{normal}] Normal base glyphs without special
+ features.
+ \item[\thaiclassx{base}{desc}] Base glyphs with descender.
+ \item[\thaiclassx{base}{desclike}] These base glyphs consist of two
+ elements which look like a normal base glyph combined with a lower
+ vowel diacritic; the diacritic-like element will be omitted if
+ combined with a lower vowel.
+ \item[\thaiclassx{base}{asc}] Base glyphs with an ascender on the
+ right side.
+ \item[\thaiclassx{base}{indic}] The two independent vowels \emph{ru}
+ and \emph{lu}.
+ \item[\thaiclassx{base}{sign}] The sign \emph{lakkhangyao}.
+ \item[\thaiclassx{base}{sara am}] The vowel \emph{sara am}.
+ \item[\thaiclassx{base}{sara aa}] The vowel \emph{sara aa}.
+ \item[\thaiclass{lower}] Lower vowel diacritics.
+ \item[\thaiclassx{upper}{vowel}] Upper vowel diacritics.
+ \item[\thaiclassx{upper}{sign}] The \emph{nikhahit} final nasal
+ sign.
+ \item[\thaiclass{top}] Tone marks.
+ \end{description}
+\end{quote}
+
+Here the glyph variant classes:
+
+\begin{quote}
+ \begin{description}
+ \item[\thaiclassx{base}{descless}] The glyphs of class
+ \thaiclassx{base}{desclike} without the lower part.
+ \item[\thaiclassx{lower}{low}] The glyphs of class
+ \thaiclass{lower} shifted downwards.
+ \item[\thaiclassxx{upper}{vowel}{left}] The glyphs of class
+ \thaiclassx{upper}{vowel} shifted to the left.
+ \item[\thaiclassxx{upper}{sign}{left}] The glyphs of class
+ \thaiclassx{upper}{sign} shifted to the left.
+ \item[\thaiclassx{top}{left}] The glyphs of class
+ \thaiclass{top} shifted to the left.
+ \item[\thaiclassx{top}{low}] The glyphs of class
+ \thaiclass{top} shifted downwards.
+ \item[\thaiclassx{top}{low-left}] The glyphs of class
+ \thaiclass{top} shifted to the left and downwards.
+ \end{description}
+\end{quote}
+
+
+\section{Context Patterns}
+
+Using the glyph classes defined in the last section it is easy to
+describe the context patterns for base glyphs with diacritical signs.
+Surprisingly, these patterns are quite systematic. Patterns in
+table~\ref{table:context-dia} which are marked with an asterisk do
+nothing and are listed for completeness only. Note that these
+patterns cover combinations which don't happen in the Thai script
+(which doesn't harm).
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}
+ {l@{~}l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclass{lower}
+ & &
+ &\thaiclass{base} &\thaiclass{lower}
+ & & &* \\
+ \thaiclass{base} &
+ &\thaiclass{upper} &
+ &\thaiclass{base} &
+ &\thaiclass{upper} & &* \\
+ \thaiclass{base} &
+ & &\thaiclass{top}
+ &\thaiclass{base} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclass{base} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclass{base} &\thaiclass{lower}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclass{base} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclass{base} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low}
+ & & & \\
+ \thaiclassx{base}{desc} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{desc} &
+ &\thaiclass{upper} & &* \\
+ \thaiclassx{base}{desc} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desc} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desc} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{desc} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{descless} &
+ & & & \\
+ \thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{desclike} &
+ &\thaiclass{upper} & &* \\
+ \thaiclassx{base}{desclike} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{descless} &\thaiclass{lower}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ & & &* \\
+ \thaiclassx{base}{asc} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{asc} &
+ &\thaiclassx{upper}{left} & & \\
+ \thaiclassx{base}{asc} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{asc} &
+ & &\thaiclassx{top}{low-left} & \\
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ & &\thaiclassx{top}{low-left} & \\
+ \thaiclassx{base}{asc} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &
+ &\thaiclassx{upper}{left} &\thaiclassx{top}{left} & \\
+ \end{tabular}
+
+ \caption{Context patterns for diacritical signs. Here,
+ \thaiclass{base} refers to the union of the subclasses
+ \thaiclass{normal}, \thaiclass{indic}, \thaiclass{sign},
+ \thaiclass{sara am}, and \thaiclass{sara aa} of \thaiclass{base};
+ \thaiclass{upper} is the union of the subclasses \thaiclass{vowel}
+ and \thaiclass{sign} of \thaiclass{upper}.}
+ \label{table:context-dia}
+\end{table*}
+
+Table~\ref{table:context-sara} covers the ligatures of the character
+\emph{sara am}. Finally, table~\ref{table:context-indic} describes
+the letters specific to Sanskrit.
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclassx{base}{sara am} &
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ & &\thaiclassx{base}{sara aa} \\
+ \thaiclassx{base}{asc} &\thaiclassx{base}{sara am} &
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ & &\thaiclassx{base}{sara aa} \\[2ex]
+
+ \thaiclass{base} &\thaiclass{top} &\thaiclassx{base}{sara am}
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ &\thaiclass{top} &\thaiclassx{base}{sara aa} \\
+ \thaiclassx{base}{asc} &\thaiclass{top} &\thaiclassx{base}{sara
+ am}
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ &\thaiclassx{top}{left} &\thaiclassx{base}{sara aa}
+ \end{tabular}
+ \caption{Context patterns for \emph{sara am}. Here,
+ \thaiclass{base} denotes the union of subclasses
+ \thaiclass{normal}, \thaiclass{desc}, and \thaiclass{desclike} of
+ \thaiclass{base}.}
+ \label{table:context-sara}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclassx{base}{indic} &\thaiclassx{base}{sara aa}
+ &\thaiclassx{base}{indic} &\thaiclassx{base}{sign}
+ \end{tabular}
+ \caption{Context patterns for \emph{ru} and \emph{lu}.}
+ \label{table:context-indic}
+\end{table*}
+
+\section{\TeX's Ligature Mechanism}
+
+\DeleteShortVerb{\|}
+
+A small introduction into the exotic variants of \TeX's ligature
+mechanism which probably many users haven't seen before.
+Additionally, the documentation in the \emph{\MF book}~\cite{MFbook}
+is very sparse. In the following examples \MF's notation is used.
+
+The usual ligature action of two glyphs $a$ and~$b$ is the replacement
+of both glyphs with another glyph~$c$.
+
+\begin{center}
+ \texttt{a b =:\ c}
+\end{center}
+
+Another possibility is to retain the left or the right original glyph
+(before and after the ligature, respectively) or both.
+
+\begin{center}
+ \texttt{a b |=:\ c} \quad
+ \texttt{a b =:| c} \quad
+ \texttt{a b |=:| c}
+\end{center}
+
+\noindent
+The first rule creates $ac$, the second $cb$, and the last $acb$. In
+all three cases, the current point after appying the ligature rule is
+still at the first glyph of the replaced glyphs, and \TeX\ simply
+restarts there to check ligatures (and kernings). A classical example
+is
+
+\begin{center}
+ f f i \textrightarrow\ ff i \textrightarrow\ ffi
+\end{center}
+
+To advance the current point to the right, append either \texttt{>} or
+\texttt{>{}>} (the latter is only possible if you retain both input
+glyphs). Here are the remaining four ligature rules.
+
+\begin{center}
+ \texttt{a b |=:> c} \quad
+ \texttt{a b =:|> c} \\
+ \texttt{a b |=:|> c} \quad
+ \texttt{a b |=:|>{}> c}
+\end{center}
+
+For Thai ligatures, the most often needed rule is \texttt{|=:}\ (i.e.,
+retain the left glyph and stay at the same position before applying
+the next ligature rule). Note that using \texttt{|=:>} instead is not
+a good idea since this would prohibit kerning between the left glyph
+and the ligature.
+
+\section{Ligature Rules}
+
+\MakeShortVerb{\|}
+
+As just explained, \TeX\ can only handle context patterns of length~2,
+whereas Thai needs patterns of length~3. It was an interesting
+challenge to find out whether the problem can be solved with \TeX's
+somewhat restricted ligature rules -- the gentle reader is invited to
+find a solution by herself! There won't be any difficulties in
+understanding ligatures afterwards.
+
+The tables~\ref{table:liga-dia}, \ref{table:liga-sara},
+and~\ref{table:liga-indic} use the same conventions as
+tables~\ref{table:context-dia}, \ref{table:context-sara},
+and~\ref{table:context-indic}, respectively. The current point isn't
+increased in any of the rules.
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclass{base} &\thaiclass{top}
+ &\thaiclass{base} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low} \\
+ \thaiclassx{base}{desc} &\thaiclass{top}
+ &\thaiclassx{base}{desc} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ &\thaiclassx{base}{descless} &\thaiclass{lower} \\
+ \thaiclassx{base}{desclike} &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ &\thaiclassx{base}{asc} &\thaiclassx{lower}{left} \\
+ \thaiclassx{base}{asc} &\thaiclass{upper}
+ &\thaiclassx{base}{asc} &\thaiclassx{upper}{left} \\
+ \thaiclassx{base}{asc} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclassx{top}{low-left} \\[2ex]
+
+ \thaiclass{lower} &\thaiclass{top}
+ &\thaiclass{lower} &\thaiclassx{top}{low} \\
+ \thaiclassx{lower}{low} &\thaiclass{top}
+ &\thaiclassx{lower}{low} &\thaiclassx{top}{low} \\[2ex]
+
+ \thaiclassx{upper}{left} &\thaiclass{top}
+ &\thaiclassx{upper}{left} &\thaiclassx{top}{left} \\[2ex]
+
+ \thaiclassx{lower}{left} &\thaiclass{top}
+ &\thaiclassx{lower}{left} &\thaiclassx{top}{low-left} \\
+ \end{tabular}
+
+ \caption{Ligature rules for diacritical marks.}
+ \label{table:liga-dia}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclassx{base}{sara am}
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{base}{asc} &\thaiclassx{base}{sara am}
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ &\thaiclassx{base}{sara am} \\[2ex]
+
+ \thaiclassx{upper}{sign} &\thaiclassx{base}{sara am}
+ &\thaiclassx{upper}{sign} &\thaiclassx{base}{sara aa}
+ & \\
+ \thaiclassxx{upper}{sign}{left} &\thaiclassx{base}{sara am}
+ &\thaiclassxx{upper}{sign}{left} &\thaiclassx{base}{sara aa}
+ & \\[2ex]
+
+ \thaiclassx{top}{low} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{low} &\thaiclass{top}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{top}{low} &\thaiclass{top}
+ &\thaiclassx{upper}{sign} &\thaiclass{top}
+ & \\
+ \thaiclass{top} &\thaiclassx{base}{sara am}
+ &\thaiclass{top} &\thaiclassx{base}{sara aa}
+ & \\[2ex]
+
+ \thaiclassx{top}{low-left} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{low-left} &\thaiclassx{top}{left}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{top}{low-left} &\thaiclassx{top}{left}
+ &\thaiclassxx{upper}{sign}{left} &\thaiclassx{top}{left}
+ & \\
+ \thaiclassx{top}{left} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{left} &\thaiclassx{base}{sara aa} \\
+ \end{tabular}
+
+ \caption{Ligature rules for \emph{sara am}.}
+ \label{table:liga-sara}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclassx{base}{indic} &\thaiclassx{base}{sara aa}
+ &\thaiclassx{base}{indic} &\thaiclassx{base}{sign}
+ \end{tabular}
+ \caption{Ligature rule for \emph{ru} and \emph{lu}.}
+ \label{table:liga-indic}
+\end{table*}
+
+Most of the ligature rules can be derived easily by handling the
+patterns sequentially (quite similar to logic puzzles found in various
+magazines), but at the end there remain two patterns which apparently
+contradict.
+
+\setlength{\tabcolsep}{3pt}
+
+\begin{center}
+ \begin{tabular}{l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclass{lower} &\thaiclass{top}
+ &\thaiclass{base} &\thaiclass{lower}
+ &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{asc} &\thaiclass{lower} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ &\thaiclassx{top}{low-left} \\
+ \end{tabular}
+\end{center}
+
+After applying ligature rules for the first two glyph classes it is
+necessary to handle the context `\thaiclass{lower} \thaiclass{top}',
+but depending on the previous glyph class \thaiclass{top} must be
+replaced with \thaiclassx{top}{left} and \thaiclassx{top}{low-left},
+respectively. With a context pattern length of~3 this would be easy
+to solve, but \TeX\ doesn't have this feature. What to do?
+
+The context `\thaiclass{base} \thaiclass{lower} \thaiclass{top}' must
+be distinguished from `\thaiclassx{base}{asc} \thaiclass{lower}
+\thaiclass{top}', i.e., two different \thaiclass{lower} classes are
+needed depending on the previous character since \TeX\ is not able to
+forward information from one ligature cycle to the next. The idea is
+now to create an `alias class', a class which behaves identically to
+the original one. The glyphs in this alias class are the same, but
+different glyph indices and glyph names are assigned to it. A
+closer look to table~\ref{table:liga-dia} shows that
+\thaiclassx{lower}{left} isn't a typo but the alias class of
+\thaiclass{lower}.
+
+
+\section{The Implementation}
+
+After solving the problem theoretically now the practical
+implementation. All glyph names follow the \emph{Adobe Glyph List
+ (AGL)}~\cite{AGL}. There are no predefined Adobe glyph names for
+Thai, so the prefix `uni' with attached Unicode value will be used for
+all glyphs which are encoded in Unicode. Glyph variants are
+identified by an arbitrarily chosen postfix.
+
+Here the real glyph names for the various classes. Hexadecimal values
+in parentheses after the glyph name give the glyph indices in the
+encoding vector.
+
+\vspace{1ex}
+\multicolsep 1ex
+
+\begin{multicols}{2}[\thaiclassx{base}{normal}:]
+ \begin{quote}
+ |uni0E01| (|0xA1|)\\
+ |uni0E02| (|0xA2|)\\
+ |uni0E03| (|0xA3|)\\
+ |uni0E04| (|0xA4|)\\
+ |uni0E05| (|0xA5|)\\
+ |uni0E06| (|0xA6|)\\
+ |uni0E07| (|0xA7|)\\
+ |uni0E08| (|0xA8|)\\
+ |uni0E09| (|0xA9|)\\
+ |uni0E0A| (|0xAA|)\\
+ |uni0E0B| (|0xAB|)\\
+ |uni0E0C| (|0xAC|)\\
+ |uni0E11| (|0xB1|)\\
+ |uni0E12| (|0xB2|)\\
+ |uni0E13| (|0xB3|)\\
+ |uni0E14| (|0xB4|)\\
+ |uni0E15| (|0xB5|)\\
+ |uni0E16| (|0xB6|)\\
+ |uni0E17| (|0xB7|)\\
+ |uni0E18| (|0xB8|)\\
+ |uni0E19| (|0xB9|)\\
+ |uni0E1A| (|0xBA|)\\
+ |uni0E1C| (|0xBC|)\\
+ |uni0E1E| (|0xBE|)\\
+ |uni0E20| (|0xC0|)\\
+ |uni0E21| (|0xC1|)\\
+ |uni0E22| (|0xC2|)\\
+ |uni0E23| (|0xC3|)\\
+ |uni0E25| (|0xC5|)\\
+ |uni0E27| (|0xC7|)\\
+ |uni0E28| (|0xC8|)\\
+ |uni0E29| (|0xC9|)\\
+ |uni0E2A| (|0xCA|)\\
+ |uni0E2B| (|0xCB|)\\
+ |uni0E2D| (|0xCD|)\\
+ |uni0E2E| (|0xCE|)\\
+ |uni0E2F| (|0xCF|)\\
+ |uni0E30| (|0xD0|)\\
+ |uni0E40| (|0xE0|)\\
+ |uni0E41| (|0xE1|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{desc}:]
+ \begin{quote}
+ |uni0E0E| (|0xAE|)\\
+ |uni0E0F| (|0xAF|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{desclike}:]
+ \begin{quote}
+ |uni0E0D| (|0xAD|)\\
+ |uni0E10| (|0xB0|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{indic}:]
+ \begin{quote}
+ |uni0E24| (|0xC4|)\\
+ |uni0E26| (|0xC6|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sign}:]
+ \begin{quote}
+ |uni0E45| (|0xE5|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{asc}:]
+ \begin{quote}
+ |uni0E1B| (|0xBB|)\\
+ |uni0E1D| (|0xBD|)\\
+ |uni0E1F| (|0xBF|)\\
+ |uni0E2C| (|0xCC|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sara am}:]
+ \begin{quote}
+ |uni0E33| (|0xD3|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sara aa}:]
+ \begin{quote}
+ |uni0E32| (|0xD2|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{descless}:]
+ \begin{quote}
+ |uni0E0D.descless| (|0x90|)\\
+ |uni0E10.descless| (|0x9F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclass{lower}:]
+ \begin{quote}
+ |uni0E38| (|0xD8|)\\
+ |uni0E39| (|0xD9|)\\
+ |uni0E3A| (|0xDA|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{lower}{left}:]
+ \begin{quote}
+ |uni0E38.left| (|0x80|)\\
+ |uni0E39.left| (|0x81|)\\
+ |uni0E3A.left| (|0x82|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{lower}{low}:]
+ \begin{quote}
+ |uni0E38.low| (|0xFC|)\\
+ |uni0E39.low| (|0xFD|)\\
+ |uni0E3A.low| (|0xFE|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{upper}{vowel}:]
+ \begin{quote}
+ |uni0E31| (|0xD1|)\\
+ |uni0E34| (|0xD4|)\\
+ |uni0E35| (|0xD5|)\\
+ |uni0E36| (|0xD6|)\\
+ |uni0E37| (|0xD7|)\\
+ |uni0E47| (|0xE7|)\\
+ |uni0E4D| (|0xED|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{upper}{sign}:]
+ \begin{quote}
+ |uni0E4D| (|0xED|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassxx{upper}{vowel}{left}:]
+ \begin{quote}
+ |uni0E31.left| (|0x92|)\\
+ |uni0E34.left| (|0x94|)\\
+ |uni0E35.left| (|0x95|)\\
+ |uni0E36.left| (|0x96|)\\
+ |uni0E37.left| (|0x97|)\\
+ |uni0E47.left| (|0x93|)\\
+ |uni0E4D.left| (|0x8F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassxx{upper}{sign}{left}:]
+ \begin{quote}
+ |uni0E4D.left| (|0x8F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclass{top}:]
+ \begin{quote}
+ |uni0E48| (|0xE8|)\\
+ |uni0E49| (|0xE9|)\\
+ |uni0E4A| (|0xEA|)\\
+ |uni0E4B| (|0xEB|)\\
+ |uni0E4C| (|0xEC|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{left}:]
+ \begin{quote}
+ |uni0E48.left| (|0x98|)\\
+ |uni0E49.left| (|0x99|)\\
+ |uni0E4A.left| (|0x9A|)\\
+ |uni0E4B.left| (|0x9B|)\\
+ |uni0E4C.left| (|0x9C|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{low}:]
+ \begin{quote}
+ |uni0E48.low| (|0x88|)\\
+ |uni0E49.low| (|0x89|)\\
+ |uni0E4A.low| (|0x8A|)\\
+ |uni0E4B.low| (|0x8B|)\\
+ |uni0E4C.low| (|0x8C|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{low-left}:]
+ \begin{quote}
+ |uni0E48.low_left| (|0x83|)\\
+ |uni0E49.low_left| (|0x84|)\\
+ |uni0E4A.low_left| (|0x85|)\\
+ |uni0E4B.low_left| (|0x86|)\\
+ |uni0E4C.low_left| (|0x87|)
+ \end{quote}
+\end{multicols}
+
+\vspace{1ex}
+
+
+\encoding
+\needsfontinstversion{1.918}
+
+
+\begincomment
+\section{Coding Scheme}
+\endcomment
+
+\setstr{codingscheme}{C90 THAI ENCODING}
+
+
+\begincomment
+\section{Non-Thai Characters}
+
+Of the many different \LaTeX{} encodings, |OT1| supports {\small
+ ASCII} best (and this is what most Type~1 Thai fonts have). This
+has two advantages: We can use the raw Thai font without specifying a
+new encoding (switching to |OT1| will be sufficient), and it will work
+with plain \TeX{} also.
+
+We use the |OT1| layout for typewriter fonts (i.e., for |cmtt|) with
+the exception that `arrowup' and `arrowdown' are replaced with
+`endash' and `emdash', and the seldom used `dotlessj' with
+`quotedblleft'.
+\endcomment
+
+
+% 0x00 | 0
+\setslot{Gamma}
+ \Unicode{0393}{GREEK CAPITAL LETTER GAMMA}
+\endsetslot
+
+\setslot{Delta}
+ \Unicode{0394}{GREEK CAPITAL LETTER DELTA}
+\endsetslot
+
+\setslot{Theta}
+ \Unicode{0398}{GREEK CAPITAL LETTER THETA}
+\endsetslot
+
+\setslot{Lambda}
+ \Unicode{039B}{GREEK CAPITAL LETTER LAMDA}
+\endsetslot
+
+\setslot{Xi}
+ \Unicode{039E}{GREEK CAPITAL LETTER XI}
+\endsetslot
+
+\setslot{Pi}
+ \Unicode{03A0}{GREEK CAPITAL LETTER PI}
+\endsetslot
+
+\setslot{Sigma}
+ \Unicode{03A3}{GREEK CAPITAL LETTER SIGMA}
+\endsetslot
+
+\setslot{Upsilon}
+ \Unicode{03D2}{GREEK UPSILON WITH HOOK SYMBOL}
+\endsetslot
+
+\setslot{Phi}
+ \Unicode{03A6}{GREEK CAPITAL LETTER PHI}
+\endsetslot
+
+\setslot{Psi}
+ \Unicode{03A8}{GREEK CAPITAL LETTER PSI}
+\endsetslot
+
+\setslot{Omega}
+ \Unicode{03A9}{GREEK CAPITAL LETTER OMEGA}
+\endsetslot
+
+\setslot{endash}
+ \Unicode{2013}{EN DASH}
+ \Ligature{LIG}{hyphen}{emdash}
+ \comment{This is `arrowup' in |OT1| encoding.}
+\endsetslot
+
+\setslot{emdash}
+ \Unicode{2014}{EM DASH}
+ \comment{This is `arrowdown' in |OT1| encoding.}
+\endsetslot
+
+\setslot{quotesingle}
+ \Unicode{0027}{APOSTROPHE}
+\endsetslot
+
+\setslot{exclamdown}
+ \Unicode{00A1}{INVERTED EXCLAMATION MARK}
+\endsetslot
+
+\setslot{questiondown}
+ \Unicode{00BF}{INVERTED QUESTION MARK}
+\endsetslot
+
+% 0x10 | 16
+\setslot{dotlessi}
+ \Unicode{0131}{LATIN SMALL LETTER DOTLESS I}
+\endsetslot
+
+\setslot{quotedblleft}
+ \Unicode{201C}{LEFT DOUBLE QUOTATION MARK}
+ \comment{This is `dotlessj' in |OT1| encoding.}
+\endsetslot
+
+\setslot{grave}
+ \Unicode{0300}{COMBINING GRAVE ACCENT}
+\endsetslot
+
+\setslot{acute}
+ \Unicode{0301}{COMBINING ACUTE ACCENT}
+\endsetslot
+
+\setslot{caron}
+ \Unicode{030C}{COMBINING CARON}
+\endsetslot
+
+\setslot{breve}
+ \Unicode{0306}{COMBINING BREVE}
+\endsetslot
+
+\setslot{macron}
+ \Unicode{0304}{COMBINING MACRON}
+\endsetslot
+
+\setslot{ring}
+ \Unicode{030A}{COMBINING RING ABOVE}
+\endsetslot
+
+\setslot{cedilla}
+ \Unicode{0327}{COMBINING CEDILLA}
+\endsetslot
+
+\setslot{germandbls}
+ \Unicode{00DF}{LATIN SMALL LETTER SHARP S}
+\endsetslot
+
+\setslot{ae}
+ \Unicode{00E6}{LATIN SMALL LETTER AE}
+\endsetslot
+
+\setslot{oe}
+ \Unicode{0153}{LATIN SMALL LIGATURE OE}
+\endsetslot
+
+\setslot{oslash}
+ \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE}
+\endsetslot
+
+\setslot{AE}
+ \Unicode{00C6}{LATIN CAPITAL LETTER AE}
+\endsetslot
+
+\setslot{OE}
+ \Unicode{0152}{LATIN CAPITAL LIGATURE OE}
+\endsetslot
+
+\setslot{Oslash}
+ \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE}
+\endsetslot
+
+% 0x20 | 32
+\skipslots{1}
+
+\setslot{exclam}
+ \Unicode{0021}{EXCLAMATION MARK}
+ \Ligature{LIG}{quoteleft}{exclamdown}
+\endsetslot
+
+\setslot{quotedblright}
+ \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK}
+\endsetslot
+
+\setslot{numbersign}
+ \Unicode{0023}{NUMBER SIGN}
+\endsetslot
+
+\setslot{dollar}
+ \Unicode{0024}{DOLLAR SIGN}
+\endsetslot
+
+\setslot{percent}
+ \Unicode{0025}{PERCENT SIGN}
+\endsetslot
+
+\setslot{ampersand}
+ \Unicode{0026}{AMPERSAND}
+\endsetslot
+
+\setslot{quoteright}
+ \Unicode{2019}{RIGHT SINGLE QUOTATION MARK}
+ \Ligature{LIG}{quoteright}{quotedblright}
+\endsetslot
+
+\setslot{parenleft}
+ \Unicode{0028}{LEFT PARENTHESIS}
+\endsetslot
+
+\setslot{parenright}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+\endsetslot
+
+\setslot{asterisk}
+ \Unicode{002A}{ASTERISK}
+\endsetslot
+
+\setslot{plus}
+ \Unicode{002B}{PLUS SIGN}
+\endsetslot
+
+\setslot{comma}
+ \Unicode{002C}{COMMA}
+\endsetslot
+
+\setslot{hyphen}
+ \Unicode{002D}{HYPHEN-MINUS}
+ \Ligature{LIG}{hyphen}{endash}
+\endsetslot
+
+\setslot{period}
+ \Unicode{002E}{FULL STOP}
+\endsetslot
+
+\setslot{slash}
+ \Unicode{002F}{SOLIDUS}
+\endsetslot
+
+% 0x30 | 48
+\setslot{zero}
+ \Unicode{0030}{DIGIT ZERO}
+\endsetslot
+
+\setslot{one}
+ \Unicode{0031}{DIGIT ONE}
+\endsetslot
+
+\setslot{two}
+ \Unicode{0032}{DIGIT TWO}
+\endsetslot
+
+\setslot{three}
+ \Unicode{0033}{DIGIT THREE}
+\endsetslot
+
+\setslot{four}
+ \Unicode{0034}{DIGIT FOUR}
+\endsetslot
+
+\setslot{five}
+ \Unicode{0035}{DIGIT FIVE}
+\endsetslot
+
+\setslot{six}
+ \Unicode{0036}{DIGIT SIX}
+\endsetslot
+
+\setslot{seven}
+ \Unicode{0037}{DIGIT SEVEN}
+\endsetslot
+
+\setslot{eight}
+ \Unicode{0038}{DIGIT EIGHT}
+\endsetslot
+
+\setslot{nine}
+ \Unicode{0039}{DIGIT NINE}
+\endsetslot
+
+\setslot{colon}
+ \Unicode{003A}{COLON}
+\endsetslot
+
+\setslot{semicolon}
+ \Unicode{003B}{SEMICOLON}
+\endsetslot
+
+\setslot{less}
+ \Unicode{003C}{LESS-THAN SIGN}
+\endsetslot
+
+\setslot{equal}
+ \Unicode{003D}{EQUALS SIGN}
+\endsetslot
+
+\setslot{greater}
+ \Unicode{003E}{GREATER-THAN SIGN}
+\endsetslot
+
+\setslot{question}
+ \Unicode{003F}{QUESTION MARK}
+ \Ligature{LIG}{quoteleft}{questiondown}
+\endsetslot
+
+% 0x40 | 64
+\setslot{at}
+ \Unicode{0040}{COMMERCIAL AT}
+\endsetslot
+
+\setslot{A}
+ \Unicode{0041}{LATIN CAPITAL LETTER A}
+\endsetslot
+
+\setslot{B}
+ \Unicode{0042}{LATIN CAPITAL LETTER B}
+\endsetslot
+
+\setslot{C}
+ \Unicode{0043}{LATIN CAPITAL LETTER C}
+\endsetslot
+
+\setslot{D}
+ \Unicode{0044}{LATIN CAPITAL LETTER D}
+\endsetslot
+
+\setslot{E}
+ \Unicode{0045}{LATIN CAPITAL LETTER E}
+\endsetslot
+
+\setslot{F}
+ \Unicode{0046}{LATIN CAPITAL LETTER F}
+\endsetslot
+
+\setslot{G}
+ \Unicode{0047}{LATIN CAPITAL LETTER G}
+\endsetslot
+
+\setslot{H}
+ \Unicode{0048}{LATIN CAPITAL LETTER H}
+\endsetslot
+
+\setslot{I}
+ \Unicode{0049}{LATIN CAPITAL LETTER I}
+\endsetslot
+
+\setslot{J}
+ \Unicode{004A}{LATIN CAPITAL LETTER J}
+\endsetslot
+
+\setslot{K}
+ \Unicode{004B}{LATIN CAPITAL LETTER K}
+\endsetslot
+
+\setslot{L}
+ \Unicode{004C}{LATIN CAPITAL LETTER L}
+\endsetslot
+
+\setslot{M}
+ \Unicode{004D}{LATIN CAPITAL LETTER M}
+\endsetslot
+
+\setslot{N}
+ \Unicode{004E}{LATIN CAPITAL LETTER N}
+\endsetslot
+
+\setslot{O}
+ \Unicode{004F}{LATIN CAPITAL LETTER O}
+\endsetslot
+
+% 0x50 | 80
+\setslot{P}
+ \Unicode{0050}{LATIN CAPITAL LETTER P}
+\endsetslot
+
+\setslot{Q}
+ \Unicode{0051}{LATIN CAPITAL LETTER Q}
+\endsetslot
+
+\setslot{R}
+ \Unicode{0052}{LATIN CAPITAL LETTER R}
+\endsetslot
+
+\setslot{S}
+ \Unicode{0053}{LATIN CAPITAL LETTER S}
+\endsetslot
+
+\setslot{T}
+ \Unicode{0054}{LATIN CAPITAL LETTER T}
+\endsetslot
+
+\setslot{U}
+ \Unicode{0055}{LATIN CAPITAL LETTER U}
+\endsetslot
+
+\setslot{V}
+ \Unicode{0056}{LATIN CAPITAL LETTER V}
+\endsetslot
+
+\setslot{W}
+ \Unicode{0057}{LATIN CAPITAL LETTER W}
+\endsetslot
+
+\setslot{X}
+ \Unicode{0058}{LATIN CAPITAL LETTER X}
+\endsetslot
+
+\setslot{Y}
+ \Unicode{0059}{LATIN CAPITAL LETTER Y}
+\endsetslot
+
+\setslot{Z}
+ \Unicode{005A}{LATIN CAPITAL LETTER Z}
+\endsetslot
+
+\setslot{bracketleft}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+\endsetslot
+
+\setslot{backslash}
+ \Unicode{005C}{REVERSE SOLIDUS}
+\endsetslot
+
+\setslot{bracketright}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+\endsetslot
+
+\setslot{circumflex}
+ \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT}
+\endsetslot
+
+\setslot{underscore}
+ \Unicode{005F}{LOW LINE}
+\endsetslot
+
+% 0x60 | 96
+\setslot{quoteleft}
+ \Unicode{2018}{LEFT SINGLE QUOTATION MARK}
+ \Ligature{LIG}{quoteleft}{quotedblleft}
+\endsetslot
+
+\setslot{a}
+ \Unicode{0061}{LATIN SMALL LETTER A}
+\endsetslot
+
+\setslot{b}
+ \Unicode{0062}{LATIN SMALL LETTER B}
+\endsetslot
+
+\setslot{c}
+ \Unicode{0063}{LATIN SMALL LETTER C}
+\endsetslot
+
+\setslot{d}
+ \Unicode{0064}{LATIN SMALL LETTER D}
+\endsetslot
+
+\setslot{e}
+ \Unicode{0065}{LATIN SMALL LETTER E}
+\endsetslot
+
+\setslot{f}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+\endsetslot
+
+\setslot{g}
+ \Unicode{0067}{LATIN SMALL LETTER G}
+\endsetslot
+
+\setslot{h}
+ \Unicode{0068}{LATIN SMALL LETTER H}
+\endsetslot
+
+\setslot{i}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+\endsetslot
+
+\setslot{j}
+ \Unicode{006A}{LATIN SMALL LETTER J}
+\endsetslot
+
+\setslot{k}
+ \Unicode{006B}{LATIN SMALL LETTER K}
+\endsetslot
+
+\setslot{l}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+\endsetslot
+
+\setslot{m}
+ \Unicode{006D}{LATIN SMALL LETTER M}
+\endsetslot
+
+\setslot{n}
+ \Unicode{006E}{LATIN SMALL LETTER N}
+\endsetslot
+
+\setslot{o}
+ \Unicode{006F}{LATIN SMALL LETTER O}
+\endsetslot
+
+% 0x70 | 112
+\setslot{p}
+ \Unicode{0070}{LATIN SMALL LETTER P}
+\endsetslot
+
+\setslot{q}
+ \Unicode{0071}{LATIN SMALL LETTER Q}
+\endsetslot
+
+\setslot{r}
+ \Unicode{0072}{LATIN SMALL LETTER R}
+\endsetslot
+
+\setslot{s}
+ \Unicode{0073}{LATIN SMALL LETTER S}
+\endsetslot
+
+\setslot{t}
+ \Unicode{0074}{LATIN SMALL LETTER T}
+\endsetslot
+
+\setslot{u}
+ \Unicode{0075}{LATIN SMALL LETTER U}
+\endsetslot
+
+\setslot{v}
+ \Unicode{0076}{LATIN SMALL LETTER V}
+\endsetslot
+
+\setslot{w}
+ \Unicode{0077}{LATIN SMALL LETTER W}
+\endsetslot
+
+\setslot{x}
+ \Unicode{0078}{LATIN SMALL LETTER X}
+\endsetslot
+
+\setslot{y}
+ \Unicode{0079}{LATIN SMALL LETTER Y}
+\endsetslot
+
+\setslot{z}
+ \Unicode{007A}{LATIN SMALL LETTER Z}
+\endsetslot
+
+\setslot{braceleft}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+\endsetslot
+
+\setslot{bar}
+ \Unicode{007C}{VERTICAL LINE}
+\endsetslot
+
+\setslot{braceright}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+\endsetslot
+
+\setslot{tilde}
+ \Unicode{0303}{COMBINING TILDE}
+\endsetslot
+
+\setslot{dieresis}
+ \Unicode{0308}{COMBINING DIAERESIS}
+\endsetslot
+
+
+\begincomment
+\section{Thai Characters}
+
+This is |TIS-620| encoding with glyph variants. The encoding presented
+in~\cite{TUG-Thai} contained two alternate glyph forms at positions 157
+and 158 which have been removed meanwhile.
+
+The number of all Thai ligature rules is quite big (464~in total).
+Note that |vptovf| will make the ligature table much more compact as
+it may appear here.
+\endcomment
+
+% 0x80 | 128
+\ifisint{makeenc}\then
+ \setslot{uni0E38}
+ \endsetslot
+\Else
+ \setslot{uni0E38.left}
+ \comment{An alias for
+ \textunicode{0E38}{THAI CHARACTER SARA U}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\ifisint{makeenc}\then
+ \setslot{uni0E39}
+ \endsetslot
+\Else
+ \setslot{uni0E39.left}
+ \comment{An alias for
+ \textunicode{0E39}{THAI CHARACTER SARA UU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\ifisint{makeenc}\then
+ \setslot{uni0E3A}
+ \endsetslot
+\Else
+ \setslot{uni0E3A.left}
+ \comment{An alias for
+ \textunicode{0E3A}{THAI CHARACTER PHINTHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\setslot{uni0E48.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E48.left}
+ \Ligature{LIG/}{uni0E48.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E49.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E49.left}
+ \Ligature{LIG/}{uni0E49.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4A.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4A.left}
+ \Ligature{LIG/}{uni0E4A.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4B.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4B}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4B.left}
+ \Ligature{LIG/}{uni0E4B.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4C.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4C.left}
+ \Ligature{LIG/}{uni0E4C.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E48.low}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E48}
+ \Ligature{LIG/}{uni0E48}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E49.low}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E49}
+ \Ligature{LIG/}{uni0E49}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4A.low}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4A}
+ \Ligature{LIG/}{uni0E4A}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4B.low}
+ \comment{A glyph variant of
+ \textunicode{04EB}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4B}
+ \Ligature{LIG/}{uni0E4B}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4C.low}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4C}
+ \Ligature{LIG/}{uni0E4C}{uni0E4D}
+\endsetslot
+
+\skipslots{2}
+
+\setslot{uni0E4D.left}
+ \comment{A glyph variant of
+ \textunicode{0E4D}{THAI CHARACTER NIKHAHIT}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+% 0x90 | 144
+\setslot{uni0E0D.descless}
+ \comment{A glyph variant of
+ \textunicode{0E0D}{THAI CHARACTER YO YING}.}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{uni0E31.left}
+ \comment{A glyph variant of
+ \textunicode{0E31}{THAI CHARACTER MAI HAN-AKAT}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E47.left}
+ \comment{A glyph variant of
+ \textunicode{0E47}{THAI CHARACTER MAITAIKHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E34.left}
+ \comment{A glyph variant of
+ \textunicode{0E34}{THAI CHARACTER SARA I}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E35.left}
+ \comment{A glyph variant of
+ \textunicode{0E35}{THAI CHARACTER SARA II}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E36.left}
+ \comment{A glyph variant of
+ \textunicode{0E36}{THAI CHARACTER SARA UE}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E37.left}
+ \comment{A glyph variant of
+ \textunicode{0E37}{THAI CHARACTER SARA UEE}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E48.left}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E49.left}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4A.left}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4B.left}
+ \comment{A glyph variant of
+ \textunicode{0E4B}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4C.left}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\skipslots{2}
+
+\setslot{uni0E10.descless}
+ \comment{A glyph variant of
+ \textunicode{0E10}{THAI CHARACTER THO THAN}.}
+\endsetslot
+
+% 0xA0 | 160
+\skipslots{1}
+
+\setslot{uni0E01}
+ \Unicode{0E01}{THAI CHARACTER KO KAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E02}
+ \Unicode{0E02}{THAI CHARACTER KHO KHAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E03}
+ \Unicode{0E03}{THAI CHARACTER KHO KHUAT}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E04}
+ \Unicode{0E04}{THAI CHARACTER KHO KHWAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E05}
+ \Unicode{0E05}{THAI CHARACTER KHO KHON}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E06}
+ \Unicode{0E06}{THAI CHARACTER KHO RAKHANG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E07}
+ \Unicode{0E07}{THAI CHARACTER NGO NGU}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E08}
+ \Unicode{0E08}{THAI CHARACTER CHO CHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E09}
+ \Unicode{0E09}{THAI CHARACTER CHO CHING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0A}
+ \Unicode{0E0A}{THAI CHARACTER CHO CHANG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0B}
+ \Unicode{0E0B}{THAI CHARACTER SO SO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0C}
+ \Unicode{0E0C}{THAI CHARACTER CHO CHOE}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0D}
+ \Unicode{0E0D}{THAI CHARACTER YO YING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{LIG/}{uni0E38}{uni0E0D.descless}
+ \Ligature{LIG/}{uni0E39}{uni0E0D.descless}
+ \Ligature{LIG/}{uni0E3A}{uni0E0D.descless}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0E}
+ \Unicode{0E0E}{THAI CHARACTER DO CHADA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E38}{uni0E38.low}
+ \Ligature{/LIG}{uni0E39}{uni0E39.low}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.low}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0F}
+ \Unicode{0E0F}{THAI CHARACTER TO PATAK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E38}{uni0E38.low}
+ \Ligature{/LIG}{uni0E39}{uni0E39.low}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.low}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+% 0xB0 | 176
+\setslot{uni0E10}
+ \Unicode{0E10}{THAI CHARACTER THO THAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{LIG/}{uni0E38}{uni0E10.descless}
+ \Ligature{LIG/}{uni0E39}{uni0E10.descless}
+ \Ligature{LIG/}{uni0E3A}{uni0E10.descless}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E11}
+ \Unicode{0E11}{THAI CHARACTER THO NANGMONTHO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E12}
+ \Unicode{0E12}{THAI CHARACTER THO PHUTHAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E13}
+ \Unicode{0E13}{THAI CHARACTER NO NEN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E14}
+ \Unicode{0E14}{THAI CHARACTER DO DEK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E15}
+ \Unicode{0E15}{THAI CHARACTER TO TAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E16}
+ \Unicode{0E16}{THAI CHARACTER THO THUNG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E17}
+ \Unicode{0E17}{THAI CHARACTER THO THAHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E18}
+ \Unicode{0E18}{THAI CHARACTER THO THONG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E19}
+ \Unicode{0E19}{THAI CHARACTER NO NU}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1A}
+ \Unicode{0E1A}{THAI CHARACTER BO BAIMAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1B}
+ \Unicode{0E1B}{THAI CHARACTER PO PLA}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E1C}
+ \Unicode{0E1C}{THAI CHARACTER PHO PHUNG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1D}
+ \Unicode{0E1D}{THAI CHARACTER FO FA}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E1E}
+ \Unicode{0E1E}{THAI CHARACTER PHO PHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1F}
+ \Unicode{0E1F}{THAI CHARACTER FO FAN}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+% 0xC0 | 192
+\setslot{uni0E20}
+ \Unicode{0E20}{THAI CHARACTER PHO SAMPHAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E21}
+ \Unicode{0E21}{THAI CHARACTER MO MA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E22}
+ \Unicode{0E22}{THAI CHARACTER YO YAK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E23}
+ \Unicode{0E23}{THAI CHARACTER RO RUA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E24}
+ \Unicode{0E24}{THAI CHARACTER RU}
+ \Ligature{/LIG}{uni0E32}{uni0E45}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E25}
+ \Unicode{0E25}{THAI CHARACTER LO LING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E26}
+ \Unicode{0E26}{THAI CHARACTER LU}
+ \Ligature{/LIG}{uni0E32}{uni0E45}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E27}
+ \Unicode{0E27}{THAI CHARACTER WO WAEN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E28}
+ \Unicode{0E28}{THAI CHARACTER SO SALA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E29}
+ \Unicode{0E29}{THAI CHARACTER SO RUSI}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2A}
+ \Unicode{0E2A}{THAI CHARACTER SO SUA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2B}
+ \Unicode{0E2B}{THAI CHARACTER HO HIP}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2C}
+ \Unicode{0E2C}{THAI CHARACTER LO CHULA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+\endsetslot
+
+\setslot{uni0E2D}
+ \Unicode{0E2D}{THAI CHARACTER O ANG}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2E}
+ \Unicode{0E2E}{THAI CHARACTER HO NOKHUK}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2F}
+ \Unicode{0E2F}{THAI CHARACTER PAIYANNOI}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+% 0xD0 | 208
+\setslot{uni0E30}
+ \Unicode{0E30}{THAI CHARACTER SARA A}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E31}
+ \Unicode{0E31}{THAI CHARACTER MAI HAN-AKAT}
+\endsetslot
+
+\setslot{uni0E32}
+ \Unicode{0E32}{THAI CHARACTER SARA AA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E33}
+ \Unicode{0E33}{THAI CHARACTER SARA AM}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E34}
+ \Unicode{0E34}{THAI CHARACTER SARA I}
+\endsetslot
+
+\setslot{uni0E35}
+ \Unicode{0E35}{THAI CHARACTER SARA II}
+\endsetslot
+
+\setslot{uni0E36}
+ \Unicode{0E36}{THAI CHARACTER SARA UE}
+\endsetslot
+
+\setslot{uni0E37}
+ \Unicode{0E37}{THAI CHARACTER SARA UEE}
+\endsetslot
+
+\setslot{uni0E38}
+ \Unicode{0E38}{THAI CHARACTER SARA U}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E39}
+ \Unicode{0E39}{THAI CHARACTER SARA UU}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E3A}
+ \Unicode{0E3A}{THAI CHARACTER PHINTHU}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\skipslots{4}
+
+\setslot{uni0E3F}
+ \Unicode{0E3F}{THAI CURRENCY SYMBOL BAHT}
+\endsetslot
+
+% 0xE0 | 224
+\setslot{uni0E40}
+ \Unicode{0E40}{THAI CHARACTER SARA E}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E41}
+ \Unicode{0E41}{THAI CHARACTER SARA AE}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E42}
+ \Unicode{0E42}{THAI CHARACTER SARA O}
+\endsetslot
+
+\setslot{uni0E43}
+ \Unicode{0E43}{THAI CHARACTER SARA AI MAIMUAN}
+\endsetslot
+
+\setslot{uni0E44}
+ \Unicode{0E44}{THAI CHARACTER SARA AI MAIMALAI}
+\endsetslot
+
+\setslot{uni0E45}
+ \Unicode{0E45}{THAI CHARACTER LAKKHANGYAO}
+\endsetslot
+
+\setslot{uni0E46}
+ \Unicode{0E46}{THAI CHARACTER MAIYAMOK}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E47}
+ \Unicode{0E47}{THAI CHARACTER MAITAIKHU}
+\endsetslot
+
+\setslot{uni0E48}
+ \Unicode{0E48}{THAI CHARACTER MAI EK}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E49}
+ \Unicode{0E49}{THAI CHARACTER MAI THO}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4A}
+ \Unicode{0E4A}{THAI CHARACTER MAI TRI}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4B}
+ \Unicode{0E4B}{THAI CHARACTER MAI CHATTAWA}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4C}
+ \Unicode{0E4C}{THAI CHARACTER THANTHAKHAT}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4D}
+ \Unicode{0E4D}{THAI CHARACTER NIKHAHIT}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4E}
+ \Unicode{0E4E}{THAI CHARACTER YAMAKKAN}
+\endsetslot
+
+\setslot{uni0E4F}
+ \Unicode{0E4F}{THAI CHARACTER FONGMAN}
+\endsetslot
+
+% 0xF0 | 240
+\setslot{uni0E50}
+ \Unicode{0E50}{THAI DIGIT ZERO}
+\endsetslot
+
+\setslot{uni0E51}
+ \Unicode{0E51}{THAI DIGIT ONE}
+\endsetslot
+
+\setslot{uni0E52}
+ \Unicode{0E52}{THAI DIGIT TWO}
+\endsetslot
+
+\setslot{uni0E53}
+ \Unicode{0E53}{THAI DIGIT THREE}
+\endsetslot
+
+\setslot{uni0E54}
+ \Unicode{0E54}{THAI DIGIT FOUR}
+\endsetslot
+
+\setslot{uni0E55}
+ \Unicode{0E55}{THAI DIGIT FIVE}
+\endsetslot
+
+\setslot{uni0E56}
+ \Unicode{0E56}{THAI DIGIT SIX}
+\endsetslot
+
+\setslot{uni0E57}
+ \Unicode{0E57}{THAI DIGIT SEVEN}
+\endsetslot
+
+\setslot{uni0E58}
+ \Unicode{0E58}{THAI DIGIT EIGHT}
+\endsetslot
+
+\setslot{uni0E59}
+ \Unicode{0E59}{THAI DIGIT NINE}
+\endsetslot
+
+\setslot{uni0E5A}
+ \Unicode{0E5A}{THAI CHARACTER ANGKHANKHU}
+\endsetslot
+
+\setslot{uni0E5B}
+ \Unicode{0E5B}{THAI CHARACTER KHOMUT}
+\endsetslot
+
+\setslot{uni0E38.low}
+ \comment{A glyph variant of \textunicode{0E38}{THAI CHARACTER SARA U}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E39.low}
+ \comment{A glyph variant of \textunicode{0E39}{THAI CHARACTER SARA UU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E3A.low}
+ \comment{A glyph variant of \textunicode{0E3A}{THAI CHARACTER PHINTHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\skipslots{1}
+
+
+\begincomment
+\section{Font Dimensions}
+\endcomment
+
+\setfontdimen{1}{italicslant}
+\setfontdimen{2}{interword}
+\setfontdimen{3}{stretchword}
+\setfontdimen{4}{shrinkword}
+\setfontdimen{5}{xheight}
+\setfontdimen{6}{quad}
+\setfontdimen{7}{extraspace}
+
+\endencoding
+
+
+\begin{thebibliography}{9}
+\bibitem{TUG-Thai}
+ Werner Lemberg: \textit{Thai Fonts}, in \textit{TUGboat},
+ 21(2):113--120, June 2000. Available online in PDF format as
+ \url{http://tug.org/TUGboat/Articles/tb21-2/tb67lemb.pdf}.
+\bibitem{AGL}
+ Adobe Systems Incorporated: \textit{Adobe Glyph List}, 2003;
+ \url{http://partners.adobe.com/asn/developer/type/unicodegn.html}.
+\bibitem{MFbook}
+ Donald E.\ Knuth, Duane Bibby (illustrations): \textit{The \MF
+ book}, Ad\-di\-son--Wes\-ley, 1986; ISBN~0-201-13445-4.
+\bibitem{Unicode}
+ The Unicode Consortium (editor), \emph{et al.}: \textit{The Unicode
+ Standard, Version 4.0}, Addison Wesley Longman Publisher, 2003;
+ ISBN~0-321-18578-1. Most of the information in this book is also
+ available online at the Unicode consortium website, at
+ \url{http://www.unicode.org/versions/Unicode4.0.1}.
+\end{thebibliography}
+
+\end{document}
+
+% end of c90.etx
diff --git a/Master/texmf-dist/source/fonts/enc/c90/c90.mtx b/Master/texmf-dist/source/fonts/enc/c90/c90.mtx
new file mode 100755
index 00000000000..eda3aa2fcb0
--- /dev/null
+++ b/Master/texmf-dist/source/fonts/enc/c90/c90.mtx
@@ -0,0 +1,42 @@
+% c90.mtx
+
+% Copyright (C) 1994-2008 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+
+\metrics
+
+\needsfontinstversion{1.918}
+
+% provide glyph aliases needed for the ligature mechanism
+
+\setglyph{uni0E38.left}
+ \glyph{uni0E38}{1000}
+\endsetglyph
+
+\setglyph{uni0E39.left}
+ \glyph{uni0E39}{1000}
+\endsetglyph
+
+\setglyph{uni0E3A.left}
+ \glyph{uni0E3A}{1000}
+\endsetglyph
+
+\endmetrics
+
+% end of c90.mtx
diff --git a/Master/tlpkg/tlpsrc/c90.tlpsrc b/Master/tlpkg/tlpsrc/c90.tlpsrc
new file mode 100644
index 00000000000..ed6e5ed9088
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/c90.tlpsrc
@@ -0,0 +1,2 @@
+name c90
+category Package