summaryrefslogtreecommitdiff
path: root/macros/generic/tex-ini-files/xetex.ini
diff options
context:
space:
mode:
Diffstat (limited to 'macros/generic/tex-ini-files/xetex.ini')
-rw-r--r--macros/generic/tex-ini-files/xetex.ini109
1 files changed, 109 insertions, 0 deletions
diff --git a/macros/generic/tex-ini-files/xetex.ini b/macros/generic/tex-ini-files/xetex.ini
new file mode 100644
index 0000000000..717589b469
--- /dev/null
+++ b/macros/generic/tex-ini-files/xetex.ini
@@ -0,0 +1,109 @@
+% tex-ini-files 2016-04-15: xetex.ini
+
+% Public domain. Originally by Jonathan Kew.
+
+%% Disable the \font\preloaded=... entries from plain.tex
+%% as XeTeX is primarily intended for use with other fonts
+\catcode`\{=1 \catcode`\}=2 \catcode`\#=6 \catcode`\^=7 \catcode`\@=11
+
+\scrollmode
+
+% General Unicode set up
+\input load-unicode-data.tex %
+
+% Classes that have always been defined by the XeTeX format
+\input load-unicode-xetex-classes.tex %
+
+% Let etex.src handle things if eTeX is not enabled!
+\ifx\XeTeXinterchartoks\undefined
+\else
+ % basic line-breaking support for CJK etc; override for more sophisticated spacing,
+ % automatic font changes, etc.
+
+ \gdef\xtxHanGlue{\hskip0pt plus 0.1em\relax} % between ideographs
+ \gdef\xtxHanSpace{\hskip0.2em plus 0.2em minus 0.1em\relax} % before/after runs of CJK
+
+ \global\XeTeXinterchartoks 0 1 = {\xtxHanSpace}
+ \global\XeTeXinterchartoks 0 2 = {\xtxHanSpace}
+ \global\XeTeXinterchartoks 0 3 = {\nobreak\xtxHanSpace}
+
+ \global\XeTeXinterchartoks 1 0 = {\xtxHanSpace}
+ \global\XeTeXinterchartoks 2 0 = {\nobreak\xtxHanSpace}
+ \global\XeTeXinterchartoks 3 0 = {\xtxHanSpace}
+
+ \global\XeTeXinterchartoks 1 1 = {\xtxHanGlue}
+ \global\XeTeXinterchartoks 1 2 = {\xtxHanGlue}
+ \global\XeTeXinterchartoks 1 3 = {\nobreak\xtxHanGlue}
+
+ \global\XeTeXinterchartoks 2 1 = {\nobreak\xtxHanGlue}
+ \global\XeTeXinterchartoks 2 2 = {\nobreak\xtxHanGlue}
+ \global\XeTeXinterchartoks 2 3 = {\xtxHanGlue}
+
+ \global\XeTeXinterchartoks 3 1 = {\xtxHanGlue}
+ \global\XeTeXinterchartoks 3 2 = {\xtxHanGlue}
+ \global\XeTeXinterchartoks 3 3 = {\nobreak\xtxHanGlue}
+\fi
+
+\let\s@vef@nt=\font
+\let\preloaded=2
+\def\font{\futurelet\next\d@ntpreload}
+\def\d@ntpreload{\ifx\next\preloaded
+ \let\next\sk@pf@nt
+ \begingroup \catcode`\%=12 \catcode13=12
+ \else
+ \let\next\s@vef@nt
+ \fi \next}
+\lccode1=13
+\lowercase{\def\sk@pf@nt\preloaded=#1^^A{\endgroup}}
+
+\input etex.src
+
+% Restore the \font command and undefine other stuff
+\catcode`\@=11
+\let\font=\s@vef@nt
+\let\d@ntpreload=\und@fined
+\let\sk@pf@nt=\und@fined
+\let\s@vef@nt=\und@fined
+
+%
+% Allocator for \XeTeXintercharclass values, from Enrico Gregorio
+%
+\newcount\xe@alloc@intercharclass % allocates intercharclass
+\xe@alloc@intercharclass=\thr@@ % from 4 (1,2 and 3 are used by CJK, AFAIK)
+\def\xe@alloc@#1#2#3#4#5{\global\advance#1\@ne
+ \xe@ch@ck#1#4#2% make sure there's still room
+ \allocationnumber#1%
+ \global#3#5\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+\def\xe@ch@ck#1#2#3{%
+ \ifnum#1<#2\else
+ \errmessage{No room for a new #3}%
+ \fi}
+\def\newXeTeXintercharclass{%
+ \xe@alloc@\xe@alloc@intercharclass\XeTeXcharclass\chardef\xe@charclass@boundary}
+
+% The limit for character class has been enlarged from 256 to 4096 since XeTeX 0.99994.
+% So the boundary of character class is changed from 255 to 4095.
+% Primitive \XeTeXinterwordspaceshaping is introduced by XeTeX 0.99994.
+% We can use it as a flag.
+\ifx\XeTeXinterwordspaceshaping\und@fined
+ \chardef\xe@charclass@boundary=\@cclv
+\else
+ \chardef\xe@charclass@boundary=4095 %
+\fi
+
+% Primitives in pdfTeX and LuaTeX, we'll just use macros here.
+% Since we are generating a whatsit, not 100% compatible,
+% but hopefully close enough.
+\protected\def\pdfmapfile#1{\special{pdf:mapfile #1}}
+\protected\def\pdfmapline#1{\special{pdf:mapline #1}}
+
+\catcode`\@=12
+
+\XeTeXuseglyphmetrics=1
+\XeTeXdashbreakstate=1
+
+\errorstopmode
+
+\dump
+\endinput