-
Notifications
You must be signed in to change notification settings - Fork 1
/
xxetex.tex
106 lines (82 loc) · 3.12 KB
/
xxetex.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
% xxetex (xetex emulation in luatex)
% Copyright 2022-2023 LaTeX Project
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
%\catcode`\{=1
%\catcode`\}=2
\catcode`\@=11
%\catcode`\_=11
%\catcode`\:=11
\chardef\XeTeXversion=0
\def\XeTeXrevision{.99999}%
\newcount\XeTeXtracingfonts \XeTeXtracingfonts=0
\newcount\XeTeXuseglyphmetrics \XeTeXuseglyphmetrics=1
\let\XeTeXmathcode\Umathcode
\directlua{xxetex = xxetex or require("xxetex.lua")}
%% Font related commands
\protected\def\XeTeXfonttype {\directlua{xxetex.XeTeXfonttype()}}
\protected\def\XeTeXfirstfontchar{\directlua{xxetex.XeTeXfirstfontchar()}}
\protected\def\XeTeXlastfontchar {\directlua{xxetex.XeTeXlastfontchar()}}
\def\XeTeXglyph {\directlua{xxetex.XeTeXglyph()}}
\protected\def\XeTeXcountglyphs {\directlua{xxetex.XeTeXcountglyphs()}}
\def\XeTeXglyphname {\directlua{xxetex.XeTeXglyphname()}}
\protected\def\XeTeXglyphindex {\directlua{xxetex.XeTeXglyphindex()}}
\protected\def\XeTeXcharglyph {\directlua{xxetex.XeTeXcharglyph()}}
\protected\def\XeTeXglyphbounds {\directlua{xxetex.XeTeXglyphbounds()}}
%% interchartoks (approximated by internode toks)
%
\newcount\XXeTeXinterchartokenstate
\def\XeTeXinterchartokenstateON{\directlua{
if not(luatexbase.in_callback("pre_linebreak_filter",
"xxetex interchartoks")) then
luatexbase.add_to_callback("pre_linebreak_filter",
xxetex.xxetexinterchartoks,
"xxetex interchartoks")
end}}
\def\XeTeXinterchartokenstateOFF{\directlua{
if luatexbase.in_callback("pre_linebreak_filter",
"xxetex interchartoks") then
luatexbase.remove_from_callback("pre_linebreak_filter",
"xxetex interchartoks")
end
}}
% avoid registering the callback if \XeTeXinterchartokenstate is not used
\protected\def\XeTeXinterchartokenstate{%
\XeTeXinterchartokenstateON\XXeTeXinterchartokenstate}
\newtoks\xxetex@interchartoks
\directlua{xxetexinterchartoksnum=\the\allocationnumber}
\newbox\xxetex@intercharbox
\newtoks\xxetexruninterchartoks
\directlua{xxetexruninterchartoksnum=\the\allocationnumber}
\xxetexruninterchartoks={%
\global\setbox\xxetex@intercharbox\hpack{\the\xxetex@interchartoks}}
\ifx\newXeTeXintercharclass\@undefined
% from latex.ltx
\chardef\e@alloc@intercharclass@top=4095
\def\newXeTeXintercharclass{%
\e@alloc\XeTeXcharclass
\chardef\xe@alloc@intercharclass\m@ne\e@alloc@intercharclass@top}
\countdef\xe@alloc@intercharclass=257
\xe@alloc@intercharclass=\z@
\fi
%%% \pdfsaveps
\let\pdfpageheight\pageheight
\let\pdfpagewidth\pagewidth
\let\pdfsavepos\savepos
\let\pdflastxpos\lastxpos
\let\pdflastypos\lastypos
% from expl3.lua
\ExplSyntaxOn
\let \strcmp \tex_strcmp:D
\let \pdffilesize \tex_filesize:D
\let \pdfmdfivesum \tex_mdfivesum:D
\let \pdffilemoddate \tex_filemoddate:D
\let \pdffiledump \tex_filedump:D
\ExplSyntaxOff
%\catcode`\{=12
%\catcode`\{=12
\catcode`\@=12
\catcode`\!=12
%\catcode`\_=12
%\catcode`\:=12