Mostly language stuff
This commit is contained in:
parent
d693023ebd
commit
8494bde0a5
@ -14,6 +14,10 @@ font.fonts = all_fonts
|
|||||||
function font.getfont(id)
|
function font.getfont(id)
|
||||||
return all_fonts[id]
|
return all_fonts[id]
|
||||||
end
|
end
|
||||||
|
-- Currently either nil or true, false (defined but not yet frozen) isn't implemented right now
|
||||||
|
function font.frozen(id)
|
||||||
|
return all_fonts[id] and true
|
||||||
|
end
|
||||||
|
|
||||||
local fontextensions = {
|
local fontextensions = {
|
||||||
ttf = "truetype",
|
ttf = "truetype",
|
||||||
|
@ -2,10 +2,14 @@
|
|||||||
% See baseregisters for list of toks pdfvariables
|
% See baseregisters for list of toks pdfvariables
|
||||||
\directlua{initialize_pdf_toks()}
|
\directlua{initialize_pdf_toks()}
|
||||||
% We hardcode the ids of two catcodetables. If they ever change in the format, abort.
|
% We hardcode the ids of two catcodetables. If they ever change in the format, abort.
|
||||||
\if 0\ifnum1=\catcodetable@initex\else\expandafter1\fi\ifnum2=\catcodetable@string\else\expandafter1\fi 0\else
|
\if 0\ifnum1=\catcodetable@initex\else1\fi\ifnum2=\catcodetable@string\else1\fi 0\else
|
||||||
\errmessage{Inconsistent catcodetable identifiers}
|
\errmessage{Inconsistent catcodetable identifiers}
|
||||||
\fi
|
\fi
|
||||||
\ifx\@tfor\undefined
|
\ifx\@tfor\undefined
|
||||||
\def\@tfor#1\do#2{}
|
\def\@tfor#1\do#2{}
|
||||||
\fi
|
\fi
|
||||||
|
\expanded {\def \noexpand \newlanguage #1\expandafter}\expandafter {%
|
||||||
|
\newlanguage{#1}%
|
||||||
|
\directlua{language.new(tex.count.allocationnumber)}%
|
||||||
|
}%
|
||||||
\input expl3.ltx
|
\input expl3.ltx
|
||||||
|
@ -75,3 +75,50 @@ rewrite(token)
|
|||||||
('set_lua', 'setlua')
|
('set_lua', 'setlua')
|
||||||
('set_macro', 'setmacro')
|
('set_macro', 'setmacro')
|
||||||
('set_char', 'setchar')
|
('set_char', 'setchar')
|
||||||
|
('is_defined', 'isdefined')
|
||||||
|
|
||||||
|
do
|
||||||
|
lang = {}
|
||||||
|
for k,v in next, language do
|
||||||
|
lang[k] = v
|
||||||
|
end
|
||||||
|
local patterns = language.patterns
|
||||||
|
function lang.patterns(l, patt)
|
||||||
|
if not patt then
|
||||||
|
return patterns(l)
|
||||||
|
end
|
||||||
|
patt = patt:gsub('%s', ' ')
|
||||||
|
return patterns(l, patt)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
do
|
||||||
|
local l = lpeg or require'lpeg'
|
||||||
|
local match = l.match
|
||||||
|
local P = l.P
|
||||||
|
local C = l.C
|
||||||
|
local sub = string.sub
|
||||||
|
local any = C(P(1)^0)
|
||||||
|
local char = C(1)
|
||||||
|
function string.explode(s, delim)
|
||||||
|
delim = delim or ' +'
|
||||||
|
if s == '' then
|
||||||
|
return {s}
|
||||||
|
else
|
||||||
|
local patt
|
||||||
|
if delim == '' then -- Split into individual characters
|
||||||
|
patt = char
|
||||||
|
else
|
||||||
|
local del = P(sub(delim, 1, 1))
|
||||||
|
if sub(delim, 2, 2) == '+' then
|
||||||
|
local elem = C((1-del)^1)
|
||||||
|
patt = del^0 * elem * (del^1 * elem)^0
|
||||||
|
else
|
||||||
|
local elem = C((1-del)^0)
|
||||||
|
patt = elem * (del * elem)^0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return {match(patt, s)}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@ -17,5 +17,20 @@
|
|||||||
\endgroup
|
\endgroup
|
||||||
\input load-unicode-data.tex
|
\input load-unicode-data.tex
|
||||||
\input etex.src
|
\input etex.src
|
||||||
\directlua{initialize_pdf_toks()}
|
\directlua{initialize_pdf_toks()}%
|
||||||
|
%
|
||||||
|
\expanded {\def \noexpand \newlanguage #1\expandafter}\expandafter {%
|
||||||
|
\newlanguage{#1}%
|
||||||
|
\directlua{language.new(tex.count.allocationnumber)}%
|
||||||
|
}%
|
||||||
|
%
|
||||||
|
\expanded {\def \noexpand \uselanguage #1\expandafter}\expandafter {%
|
||||||
|
\expanded {%
|
||||||
|
\noexpand \ifcsname lang@#1\endcsname
|
||||||
|
\noexpand \directlua {lang.new(\noexpand\number\noexpand\lastnamedcs)}%
|
||||||
|
\noexpand \fi
|
||||||
|
\expandafter
|
||||||
|
}%
|
||||||
|
\uselanguage{#1}%
|
||||||
|
}%
|
||||||
\dump
|
\dump
|
||||||
|
Loading…
Reference in New Issue
Block a user