From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../texmf/dvips/garuda-c90/config.garuda-c90 | 1 + .../texmf/dvips/norasi-c90/config.norasi-c90 | 1 + .../thaifont/texmf/fonts/enc/dvips/thai/c90.enc | 334 +++ .../fonts/map/dvips/garuda-c90/garuda-c90.map | 4 + .../fonts/map/dvips/norasi-c90/norasi-c90.map | 4 + .../texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm | Bin 0 -> 3660 bytes .../texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm | Bin 0 -> 3912 bytes .../texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm | Bin 0 -> 3832 bytes .../texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm | Bin 0 -> 3580 bytes .../texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm | Bin 0 -> 6412 bytes .../texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm | Bin 0 -> 6640 bytes .../texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm | Bin 0 -> 6664 bytes .../texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm | Bin 0 -> 6424 bytes .../CJK/cjk-4.8.4/utils/thaifont/tools/INSTALL | 333 +++ .../CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx | 2346 ++++++++++++++++++++ .../CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx | 42 + .../utils/thaifont/tools/dbtt-old/config.dbtt-old | 1 + .../thaifont/tools/dbtt-old/dbtt-old-alias.etx | 46 + .../thaifont/tools/dbtt-old/dbtt-old-alias.mtx | 36 + .../thaifont/tools/dbtt-old/dbtt-old-alias.tex | 139 ++ .../thaifont/tools/dbtt-old/dbtt-old.fontinst | 78 + .../utils/thaifont/tools/dbtt-old/dbtt-old.map | 4 + .../utils/thaifont/tools/garuda-c90.fontinst | 77 + .../utils/thaifont/tools/norasi-c90.fontinst | 85 + 24 files changed, 3531 insertions(+) create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90 create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90 create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/INSTALL create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/config.dbtt-old create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.map create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/garuda-c90.fontinst create mode 100644 language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/norasi-c90.fontinst (limited to 'language/chinese/CJK/cjk-4.8.4/utils/thaifont') diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90 b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90 new file mode 100644 index 0000000000..69e0d59326 --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90 @@ -0,0 +1 @@ +p +garuda-c90.map diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90 b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90 new file mode 100644 index 0000000000..655dace2ba --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90 @@ -0,0 +1 @@ +p +norasi-c90.map diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc new file mode 100644 index 0000000000..03fc48b9fa --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/enc/dvips/thai/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-2015 Werner Lemberg +% +% 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/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map new file mode 100644 index 0000000000..0c1af91bfe --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map @@ -0,0 +1,4 @@ +fgdr8z Garuda " C90Encoding ReEncodeFont " -not' names) + \let\setnotglyph \setrawglyph + + % we want warnings for missing glyphs + \fontinstcc + \add_to\pre_fourth_etx_pass_hook{ + \def\do_slot{ + \if_undefined{g-\slot_name}\then + \fontinstwarningnoline{fontinst} + {missing~glyph~`\slot_name'\space + for~slot~\the\slot_number\space + in~font~`\out_filename'} + \fi + \do_character + } + } + \normalcc + + + % create PL files and an FD file + \installfonts + \setint{fontdimen(2)}{500} % SPACE + \setint{fontdimen(3)}{300} % STRETCH + \setint{fontdimen(4)}{100} % SHRINK + \setint{fontdimen(6)}{1000} % QUAD + \setint{fontdimen(7)}{0} % EXTRASPACE + + \installrawfont{fdbr8z}{garuda,c90}{c90} + {C90}{garuda}{m}{n}{} + \installrawfont{fdbb8z}{garuda_b,c90}{c90} + {C90}{garuda}{bx}{n}{} + \installrawfont{fdbbo8z}{garuda_bo,c90}{c90} + {C90}{garuda}{bx}{sl}{} + \installrawfont{fdbo8z}{garuda_o,c90}{c90} + {C90}{garuda}{m}{sl}{} + \endinstallfonts + + + \input finstmsc.sty + + + % create the c90.enc file + \installfonts + % the `makeenc' flag is used in c90.etx + \setint{makeenc}{1} + \setstr{encodingname}{C90Encoding} + \etxtoenc{c90}{c90} + \endinstallfonts + + \end + + ==== garuda-c90.fontinst ==== + + Some explanations. + + - The control files also create MTX and PL files for the AFM + files (e.g., garuda.mtx and garuda.pl) which aren't needed and + can be deleted. + + - AFM files don't provide all necessary font dimensions for TeX. + Consequently, you have to set some dimensions manually. The + `SPACE' value must be larger than for a Latin font; a + reasonable value is 500. You should increase the `STRETCH' + value also -- some tests have shown that 300 yields good + results, but this depends on the font. `EXTRASPACE' can be set + to zero since you must always use TeX's \frenchspacing command + for Thai. All other font dimension values given above are + default values and can stay unmodified. + + There is nothing for free: The changed font dimensions improve + spacing between Thai words, but Latin words are far too widely + spaced. + + - The arguments to \installrawfont are as follows. + + #1 The target font name. + #2 A comma separated list (without spaces) of metric + files. Above, the first one is the AFM file, the + second one is c90.mtx which sets up the three mandatory + alias glyph slots. + #3 The name of the encoding file (c90.etx). + #4-#7 The NFSS attributes for the font. + #8 The size command. If it is empty, `<->' is used. + + - The second \installfonts...\endinstallfonts block creates an + encoding file. + +3. Run fontinst: + + tex garuda-c90.fontinst + + If you get warnings about missing glyphs which are critical (this + is, if they affect Thai characters), you have to configure fontinst + to use an alias file for glyph names. This is described below. + +4. Say + + pltotf + + for all target PL files to create TFM files. + + Example: + + pltotf fgdr8z + pltotf fgdb8z + pltotf fgdo8z + pltotf fgdbo8z + + After the conversion, the PL files are no longer needed and can be + deleted. As mentioned above, the PL files created directly from the + AFM files need not be converted. + +5. Create a mapping file .map for the PS fonts (which can be + used by both dvips and pdftex). + + Example `garuda-c90.map' (the lines are split for readability only): + + fgdr8z Garuda \ + " C90Encoding ReEncodeFont " (e.g. `config.garuda-c90') + with the following line in it: + + p + + + Example: + + p +garuda-c90.map + + Then you can use the `-P' command line option of dvips to include + the reencoded font. Example: + + dvips -P garuda-c90 test.dvi + +7. After testing, install the font and its support files in your TeX + tree. In the following example, `TEXMF' denotes the location of + your (local) `texmf' directory (we assume a TeX installation + compliant to TDS 1.1 as provided recent versions of TeXLive and + teTeX). + + garuda.pfb -> TEXMF/fonts/type1/public/garuda/ + garuda.afm -> TEXMF/fonts/afm/public/garuda/ + ... + + c90.enc -> TEXMF/fonts/enc/dvips/thai/ + + garuda.map -> TEXMF/fonts/map/dvips/garuda-c90/ + config.garuda -> TEXMF/dvips/garuda-c90/ + + fgdr8z.tfm -> TEXMF/fonts/tfm/public/garuda-c90/ + ... + + c90gar.fd -> TEXMF/tex/latex/CJK/thai/ + +8. Run texhash or a similar program to update the TDS database if + necessary. + + +You are done! With plain TeX, say e.g. + + \font\thai = fgdr9z at 16pt + +to use the font \thai. This will typeset TIS-620 encoded Thai. Note, +however, that you need CJK's cjk-enc.el for Emacs to insert proper +inter-character glue and word breakpoints in case you want to typeset +longer Thai phrases. + + +Reencoding Thai fonts +--------------------- + +Older Thai fonts don't use proper glyph names, and recent ones +probably use different suffixes; it is thus necessary to make fontinst +aware of those names. + +A complete example can be found in the `dbtt-old' subdirectory (which +can be used for the dbtt fonts from TeXLive 8 or earlier). + +a. Set up a file which contains all the aliases, using the \galias + macro. This file should have the extension `.tex'. + + Example: + + If glyph `endash' is represented with glyph name `ucircumflex' in + the font, use the following: + + \galias{ucircumflex}{endash} + +b. Set up both ETX and MTX files which load the just created glyph + alias file. To do that, use the files `dbtt-old-alias.etx' and + `dbtt-old-alias.mtx' as templates. Leave everything unchanged + except the line with \input which should load your glyph alias + file. + +c. Set up a proper fontinst control file. Use `dbtt-old.fontinst' as + a template, replacing the `dbtt-old-alias' items in the + \installrawfont lines with the name of your MTX file. Similarly, + the three last lines in the second \installfonts...\endinstallfonts + block should be adjusted accordingly. + +d. Continue with item 3 above. Note that in item 5, you have to use + not `C90Encoding' but the encoding name defined with the \setstr + line in your fontinst control file. + + +Using different LaTeX encodings for Thai +---------------------------------------- + +The used encoding scheme within the CJK package for Thai is `C90', but +it is straightforward to adapt it to other Thai encodings like `LTH' +by reordering the `\setslot ... \endsetslot' blocks in the file +`c90.etx'. + +Currently, only CJK's cjk-enc.el output filter for Emacs needs the +Thai ligatures -- other Thai word segmentation programs like `swath' +or `cttex' already replace the input characters with proper glyph +variants. Anyway, they don't harm, and it is on the TODO list of the +thailatex maintainers to finally use those ligatures also. + + +Printing c90.etx +---------------- + +It is possible to convert the main fontinst encoding file for Thai, +c90.etx, into a printable document. To do so, you have to apply the +patch below to the file `fontdoc.sty' (which is part of the fontinst +package -- tested with fontinst version 1.926; newer versions have +already been corrected and don't need this patch), then simply say + + latex c90.etx + + +==================================================================== + + +--- fontdoc.sty.old Mon Feb 9 21:28:59 2004 ++++ fontdoc.sty Wed Jun 23 12:13:04 2004 +@@ -1052,7 +1052,7 @@ + \x@cs\def{FD@lig-/LIG}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% +- \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#2}$% ++ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#2}% + } + \x@cs\def{FD@lig-LIG/}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% +@@ -1085,7 +1085,7 @@ + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% + \FD@typeset@string{\slot@name}${}*{}$% +- \typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}$} ++ \typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}} + \def\nextlarger#1{\Bheading{Next larger} \typeset@glyph{#1}} + \def\makerightboundary#1{% + \Bheading{Right boundary marker slot} designation \typeset@glyph{#1}% + + +---End of INSTALL--- diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx new file mode 100644 index 0000000000..56cb88c757 --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx @@ -0,0 +1,2346 @@ +% c90.etx + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx new file mode 100644 index 0000000000..baccdefa08 --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx @@ -0,0 +1,42 @@ +% c90.mtx + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/config.dbtt-old b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/config.dbtt-old new file mode 100644 index 0000000000..5ce1be96b2 --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/config.dbtt-old @@ -0,0 +1 @@ +p +dbtt-old.map diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx new file mode 100644 index 0000000000..c89777a2fb --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx @@ -0,0 +1,46 @@ +% dbtt-old-alias.etx + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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 + +\encoding + +\needsfontinstversion{1.918} + +\fontinstcc +\def\galias#1#2{ + \expandafter\def\csname slot-#2\endcsname{#1} +} +\def\setslot#1{ + \edef\slot_name{ + \if_defined{slot-#1}\then + \csname slot-#1\endcsname + \else + #1 + \fi + } + \do_slot +} +\normalcc + +\input dbtt-old-alias + +\endencoding + +% end of dbtt-old-alias.etx diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx new file mode 100644 index 0000000000..4dbb7382e2 --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx @@ -0,0 +1,36 @@ +% dbtt-old-alias.mtx + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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} + +\def\galias#1#2{ + \setglyph{#2} + \glyph{#1}{1000} + \endsetglyph +} + +\input dbtt-old-alias + +\endmetrics + +% end of dbtt-old-alias.mtx diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex new file mode 100644 index 0000000000..558a1306cd --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex @@ -0,0 +1,139 @@ +% dbtt-old-alias.tex + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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 + +\galias{ucircumflex}{endash} +\galias{uacute}{emdash} +\galias{quotedbl}{quotedblleft} +\galias{quotedbl}{quotedblright} +\galias{quotesingle}{quoteright} +\galias{grave}{quoteleft} +\galias{florin}{uni0E48.low_left} +\galias{quotedblbase}{uni0E49.low_left} +\galias{ellipsis}{uni0E4A.low_left} +\galias{dagger}{uni0E4B.low_left} +\galias{daggerdbl}{uni0E4C.low_left} +\galias{circumflex}{uni0E48.low} +\galias{perthousand}{uni0E49.low} +\galias{Scaron}{uni0E4A.low} +\galias{guilsinglleft}{uni0E4B.low} +\galias{OE}{uni0E4C.low} +\galias{u008F}{uni0E4D.left} +\galias{u0090}{uni0E0D.descless} +\galias{quoteright}{uni0E31.left} +\galias{quotedblleft}{uni0E47.left} +\galias{quotedblright}{uni0E34.left} +\galias{bullet}{uni0E35.left} +\galias{emdash}{uni0E36.left} +\galias{endash}{uni0E37.left} +\galias{tilde}{uni0E48.left} +\galias{trademark}{uni0E49.left} +\galias{scaron}{uni0E4A.left} +\galias{guilsinglright}{uni0E4B.left} +\galias{oe}{uni0E4C.left} +\galias{Ydieresis}{uni0E10.descless} +\galias{exclamdown}{uni0E01} +\galias{cent}{uni0E02} +\galias{sterling}{uni0E03} +\galias{currency}{uni0E04} +\galias{yen}{uni0E05} +\galias{brokenbar}{uni0E06} +\galias{section}{uni0E07} +\galias{dieresis}{uni0E08} +\galias{copyright}{uni0E09} +\galias{ordfeminine}{uni0E0A} +\galias{guillemotleft}{uni0E0B} +\galias{logicalnot}{uni0E0C} +\galias{hyphen}{uni0E0D} +\galias{registered}{uni0E0E} +\galias{macron}{uni0E0F} +\galias{degree}{uni0E10} +\galias{plusminus}{uni0E11} +\galias{twosuperior}{uni0E12} +\galias{threesuperior}{uni0E13} +\galias{acute}{uni0E14} +\galias{mu}{uni0E15} +\galias{paragraph}{uni0E16} +\galias{periodcentered}{uni0E17} +\galias{cedilla}{uni0E18} +\galias{onesuperior}{uni0E19} +\galias{ordmasculine}{uni0E1A} +\galias{guillemotright}{uni0E1B} +\galias{onequarter}{uni0E1C} +\galias{onehalf}{uni0E1D} +\galias{threequarters}{uni0E1E} +\galias{questiondown}{uni0E1F} +\galias{Agrave}{uni0E20} +\galias{Aacute}{uni0E21} +\galias{Acircumflex}{uni0E22} +\galias{Atilde}{uni0E23} +\galias{Adieresis}{uni0E24} +\galias{Aring}{uni0E25} +\galias{AE}{uni0E26} +\galias{Ccedilla}{uni0E27} +\galias{Egrave}{uni0E28} +\galias{Eacute}{uni0E29} +\galias{Ecircumflex}{uni0E2A} +\galias{Edieresis}{uni0E2B} +\galias{Igrave}{uni0E2C} +\galias{Iacute}{uni0E2D} +\galias{Icircumflex}{uni0E2E} +\galias{Idieresis}{uni0E2F} +\galias{Eth}{uni0E30} +\galias{Ntilde}{uni0E31} +\galias{Ograve}{uni0E32} +\galias{Oacute}{uni0E33} +\galias{Ocircumflex}{uni0E34} +\galias{Otilde}{uni0E35} +\galias{Odieresis}{uni0E36} +\galias{multiply}{uni0E37} +\galias{Oslash}{uni0E38} +\galias{Ugrave}{uni0E39} +\galias{Uacute}{uni0E3A} +\galias{germandbls}{uni0E3F} +\galias{agrave}{uni0E40} +\galias{aacute}{uni0E41} +\galias{acircumflex}{uni0E42} +\galias{atilde}{uni0E43} +\galias{adieresis}{uni0E44} +\galias{aring}{uni0E45} +\galias{ae}{uni0E46} +\galias{ccedilla}{uni0E47} +\galias{egrave}{uni0E48} +\galias{eacute}{uni0E49} +\galias{ecircumflex}{uni0E4A} +\galias{edieresis}{uni0E4B} +\galias{igrave}{uni0E4C} +\galias{iacute}{uni0E4D} +\galias{icircumflex}{uni0E4E} +\galias{idieresis}{uni0E4F} +\galias{eth}{uni0E50} +\galias{ntilde}{uni0E51} +\galias{ograve}{uni0E52} +\galias{oacute}{uni0E53} +\galias{ocircumflex}{uni0E54} +\galias{otilde}{uni0E55} +\galias{odieresis}{uni0E56} +\galias{divide}{uni0E57} +\galias{oslash}{uni0E58} +\galias{ugrave}{uni0E59} +\galias{udieresis}{uni0E38.low} +\galias{yacute}{uni0E39.low} +\galias{Ucircumflex}{uni0E3A.low} + +% end of dbtt-old-alias.tex diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst new file mode 100644 index 0000000000..794284d1e0 --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst @@ -0,0 +1,78 @@ +% dbtt-old.fontinst + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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 + +\input fontinst.sty + +\needsfontinstversion{1.918} + + +% we explicitly set all slots in the encoding, so provide all glyph names +% in AFM files equally (this is, don't create `-not' names) +\let\setnotglyph \setrawglyph + +% we want warnings for missing glyphs +\fontinstcc +\add_to\pre_fourth_etx_pass_hook{ + \def\do_slot{ + \if_undefined{g-\slot_name}\then + \fontinstwarningnoline{fontinst} + {missing~glyph~`\slot_name'\space + for~slot~\the\slot_number\space + in~font~`\out_filename'} + \fi + \do_character + } +} +\normalcc + + +% create PL files and an FD file +\installfonts + \setint{fontdimen(2)}{500} % SPACE + \setint{fontdimen(3)}{300} % STRETCH + \setint{fontdimen(4)}{100} % SHRINK + \setint{fontdimen(6)}{1000} % QUAD + \setint{fontdimen(7)}{0} % EXTRASPACE + + \installrawfont{fdbr8z}{dbtt,dbtt-old-alias,c90}{c90} + {C90}{dbss}{m}{n}{<-> s *[1.3]} + \installrawfont{fdbb8z}{dbttb,dbtt-old-alias,c90}{c90} + {C90}{dbss}{bx}{n}{<-> s *[1.3]} + \installrawfont{fdbbo8z}{dbttbi,dbtt-old-alias,c90}{c90} + {C90}{dbss}{bx}{sl}{<-> s *[1.3]} + \installrawfont{fdbo8z}{dbtti,dbtt-old-alias,c90}{c90} + {C90}{dbss}{m}{sl}{<-> s *[1.3]} +\endinstallfonts + + +\input finstmsc.sty + + +% create the dbtt-old.enc file +\installfonts + % the `makeenc' flag is used in c90.etx + \setint{makeenc}{1} + \setstr{encodingname}{dbtt-oldEncoding} + \inputetx{dbtt-old-alias} + \etxtoenc{c90}{dbtt-old} +\endinstallfonts + +\end + +% end of dbtt-old.fontinst diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.map b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.map new file mode 100644 index 0000000000..c48f73fe71 --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.map @@ -0,0 +1,4 @@ +fdbr8z DBThaiText " dbtt-oldEncoding ReEncodeFont " +% +% 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 + +\input fontinst.sty + +\needsfontinstversion{1.918} + + +% we explicitly set all slots in the encoding, so provide all glyph names +% in AFM files equally (this is, don't create `-not' names) +\let\setnotglyph \setrawglyph + +% we want warnings for missing glyphs +\fontinstcc +\add_to\pre_fourth_etx_pass_hook{ + \def\do_slot{ + \if_undefined{g-\slot_name}\then + \fontinstwarningnoline{fontinst} + {missing~glyph~`\slot_name'\space + for~slot~\the\slot_number\space + in~font~`\out_filename'} + \fi + \do_character + } +} +\normalcc + + +% create PL files and an FD file +\installfonts + \setint{fontdimen(2)}{500} % SPACE + \setint{fontdimen(3)}{300} % STRETCH + \setint{fontdimen(4)}{100} % SHRINK + \setint{fontdimen(6)}{1000} % QUAD + \setint{fontdimen(7)}{0} % EXTRASPACE + + \installrawfont{fgdr8z}{garuda,c90}{c90} + {C90}{garuda}{m}{n}{} + \installrawfont{fgdb8z}{garuda_b,c90}{c90} + {C90}{garuda}{bx}{n}{} + \installrawfont{fgdbo8z}{garuda_bo,c90}{c90} + {C90}{garuda}{bx}{sl}{} + \installrawfont{fgdo8z}{garuda_o,c90}{c90} + {C90}{garuda}{m}{sl}{} +\endinstallfonts + + +\input finstmsc.sty + + +% create the c90.enc file +\installfonts + % the `makeenc' flag is used in c90.etx + \setint{makeenc}{1} + \setstr{encodingname}{C90Encoding} + \etxtoenc{c90}{c90} +\endinstallfonts + +\end + +% end of garuda-c90.fontinst diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/norasi-c90.fontinst b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/norasi-c90.fontinst new file mode 100644 index 0000000000..433c89a9ab --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/norasi-c90.fontinst @@ -0,0 +1,85 @@ +% norasi-c90.fontinst + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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 + +\input fontinst.sty + +\needsfontinstversion{1.918} + + +% we explicitly set all slots in the encoding, so provide all glyph names +% in AFM files equally (this is, don't create `-not' names) +\let\setnotglyph \setrawglyph + +% we want warnings for missing glyphs +\fontinstcc +\add_to\pre_fourth_etx_pass_hook{ + \def\do_slot{ + \if_undefined{g-\slot_name}\then + \fontinstwarningnoline{fontinst} + {missing~glyph~`\slot_name'\space + for~slot~\the\slot_number\space + in~font~`\out_filename'} + \fi + \do_character + } +} +\normalcc + + +% create PL files and an FD file +\installfonts + \setint{fontdimen(2)}{500} % SPACE + \setint{fontdimen(3)}{300} % STRETCH + \setint{fontdimen(4)}{100} % SHRINK + \setint{fontdimen(6)}{1000} % QUAD + \setint{fontdimen(7)}{0} % EXTRASPACE + + \installrawfont{ftnr8z}{norasi,c90}{c90} + {C90}{nrsr}{m}{n}{} + \installrawfont{ftnb8z}{norasi_b,c90}{c90} + {C90}{nrsr}{bx}{n}{} + \installrawfont{ftnbi8z}{norasi_bi,c90}{c90} + {C90}{nrsr}{bx}{it}{} + \installrawfont{ftni8z}{norasi_i,c90}{c90} + {C90}{nrsr}{m}{it}{} + +% Thai glyphs in norasi_o and norasi_bo are identical to the shapes +% in norasi_i and norasi_bi, respectively. +% +% \installrawfont{ftno8z}{norasi_o,c90}{c90} +% {C90}{nrsr}{m}{sl}{} +% \installrawfont{ftnbo8z}{norasi_bo,c90}{c90} +% {C90}{nrsr}{bx}{sl}{} +\endinstallfonts + + +\input finstmsc.sty + + +% create the c90.enc file +\installfonts + % the `makeenc' flag is used in c90.etx + \setint{makeenc}{1} + \setstr{encodingname}{C90Encoding} + \etxtoenc{c90}{c90} +\endinstallfonts + +\end + +% end of norasi-c90.fontinst -- cgit v1.2.3