summaryrefslogtreecommitdiff
path: root/tex/context
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context')
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-cs.mkii1
-rw-r--r--tex/context/base/mkii/mult-de.mkii1
-rw-r--r--tex/context/base/mkiv/buff-ver.mkiv10
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv4
-rw-r--r--tex/context/base/mkiv/context.mkiv12
-rw-r--r--tex/context/base/mkiv/core-env.mkiv98
-rw-r--r--tex/context/base/mkiv/font-osd.lua23
-rw-r--r--tex/context/base/mkiv/font-ots.lua4
-rw-r--r--tex/context/base/mkiv/font-shp.lua108
-rw-r--r--tex/context/base/mkiv/lpdf-pde.lua61
-rw-r--r--tex/context/base/mkiv/luat-cod.lua5
-rw-r--r--tex/context/base/mkiv/luat-fio.lua2
-rw-r--r--tex/context/base/mkiv/mult-def.lua4
-rw-r--r--tex/context/base/mkiv/mult-low.lua4
-rw-r--r--tex/context/base/mkiv/node-rul.lua84
-rw-r--r--tex/context/base/mkiv/node-rul.mkiv6
-rw-r--r--tex/context/base/mkiv/node-scn.lua2
-rw-r--r--tex/context/base/mkiv/pack-mrl.mkiv54
-rw-r--r--tex/context/base/mkiv/spac-hor.mkiv9
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin26631 -> 26639 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin266539 -> 266566 bytes
-rw-r--r--tex/context/base/mkiv/strc-bkm.lua13
-rw-r--r--tex/context/base/mkiv/strc-itm.mkvi6
-rw-r--r--tex/context/base/mkiv/syst-aux.mkiv19
-rw-r--r--tex/context/base/mkiv/syst-ini.mkiv4
-rw-r--r--tex/context/interface/mkii/keys-cs.xml1
-rw-r--r--tex/context/interface/mkii/keys-de.xml1
-rw-r--r--tex/context/interface/mkiv/context-en.xml12
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin865512 -> 865449 bytes
-rw-r--r--tex/context/interface/mkiv/i-itemgroup.xml6
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin61165 -> 61165 bytes
-rw-r--r--tex/context/modules/common/s-abbreviations-logos.tex1
34 files changed, 307 insertions, 252 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index c6ff7e991..704b2df88 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2019.05.25 10:45}
+\newcontextversion{2019.05.29 19:11}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index e5c386698..814359e65 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2019.05.25 10:45}
+\edef\contextversion{2019.05.29 19:11}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-cs.mkii b/tex/context/base/mkii/mult-cs.mkii
index 4ab875e4d..708c296cb 100644
--- a/tex/context/base/mkii/mult-cs.mkii
+++ b/tex/context/base/mkii/mult-cs.mkii
@@ -373,6 +373,7 @@
\setinterfacevariable{nohz}{nohz}
\setinterfacevariable{noline}{noline}
\setinterfacevariable{nomarking}{zadneznaceni}
+\setinterfacevariable{nomenubar}{nomenubar}
\setinterfacevariable{none}{zadny}
\setinterfacevariable{nonumber}{nonumber}
\setinterfacevariable{norepeat}{norepeat}
diff --git a/tex/context/base/mkii/mult-de.mkii b/tex/context/base/mkii/mult-de.mkii
index 5557eb7b8..45a9ded24 100644
--- a/tex/context/base/mkii/mult-de.mkii
+++ b/tex/context/base/mkii/mult-de.mkii
@@ -570,6 +570,7 @@
\setinterfacevariable{temporary}{temporaer}
\setinterfacevariable{test}{test}
\setinterfacevariable{text}{text}
+\setinterfacevariable{textnote}{textnote}
\setinterfacevariable{three}{drei}
\setinterfacevariable{thursday}{donnerstag}
\setinterfacevariable{tight}{tight}
diff --git a/tex/context/base/mkiv/buff-ver.mkiv b/tex/context/base/mkiv/buff-ver.mkiv
index e6c88cdb7..dbc9086bd 100644
--- a/tex/context/base/mkiv/buff-ver.mkiv
+++ b/tex/context/base/mkiv/buff-ver.mkiv
@@ -684,7 +684,9 @@
\else
\buff_verbatim_type_file_checked\v!file{#3}%
\fi\fi
- \endgroup}
+ \useindentnextparameter\typingparameter % needs checking
+ \endgroup
+ \dorechecknextindentation} % needs checking
\def\buff_verbatim_type_file_checked#1#2%
{\doifelsetypingfile{#2}
@@ -895,7 +897,8 @@
\else
\buff_verbatim_type_buffer_indeed\currenttyping\empty% []
\fi\fi
- \endgroup}
+ \endgroup
+ \dorechecknextindentation}
\unexpanded\def\buff_verbatim_type_buffer_class#1%
{\begingroup
@@ -934,7 +937,8 @@
\endofverbatimlines
\dostoptagged
\stoppacked
- \typingparameter\c!after}
+ \typingparameter\c!after
+ \dorechecknextindentation}
\unexpanded\def\typeinlinebuffer
{\dontleavehmode
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 0cd33a4eb..e3d427c21 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -11,7 +11,9 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2019.05.25 10:45}
+% \normalend % uncomment this to get the real base runtime
+
+\newcontextversion{2019.05.29 19:11}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index 2550292e1..daa21816a 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -22,10 +22,14 @@
%D shares cq. when no files are cached by the os it's of course much worse. A zero
%D run is .27 sec with luajittex. In luametatex it's faster anyway (2.4 sec).
-% http://build.contextgarden.net/waterfall?tag=c/luatex
+%D The real minimal startup time can be measured by uncommenting \type {\normalend}
+%D in the \type {cont-new.mkiv} file. When we subtract .250 for \LUA\ initialization
+%D from 0.300 runtime and also subtract some 0.030 for the resolver, we get about
+%D 0.020 for format loading which is pretty fast. We're talking \LUAMETATEX\ here.
-% Welcome to context, pronounced as kontekst (rather dutch) and not as
-% conτεχt.
+% http://build.contextgarden.net/waterfall?tag=c/lua(meta)tex
+
+%D Welcome to context, pronounced as kontekst (rather dutch) and not as conτεχt.
\catcode`\{=1 \catcode`\}=2 \catcode`\#=6
@@ -41,7 +45,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2019.05.25 10:45}
+\edef\contextversion{2019.05.29 19:11}
\edef\contextkind {beta}
%D Kind of special:
diff --git a/tex/context/base/mkiv/core-env.mkiv b/tex/context/base/mkiv/core-env.mkiv
index 605a92486..27ae8c008 100644
--- a/tex/context/base/mkiv/core-env.mkiv
+++ b/tex/context/base/mkiv/core-env.mkiv
@@ -17,6 +17,8 @@
\unprotect
+\def\wildcardsymbol{*}
+
%D Modes:
%D
%D \starttyping
@@ -35,12 +37,11 @@
%D
%D system modes have a * as prefix
%D
-%D Sometimes, we want to prevent a mode for being set. Think
-%D of situations where a style enables a mode, but an outer
-%D level style does not want that. Preventing can be
-%D considered a permanent disabling on forehand.
+%D Sometimes, we want to prevent a mode for being set. Think of situations where a
+%D style enables a mode, but an outer level style does not want that. Preventing can
+%D be considered a permanent disabling on forehand.
-\def\systemmodeprefix{*}
+\let\systemmodeprefix\wildcardsymbol
% we will have \installcorenamespace{mode} but need some hackery at the lua end then
@@ -141,18 +142,6 @@
{\ifcsname\??mode#1\endcsname\else\syst_modes_new{#1}\fi
\syst_mode_prefix\lastnamedcs\preventedmode}
-% \def\syst_modes_enable_indeed#1% we can speed it up by moving the new outside
-% {\ifcsname\??mode#1\endcsname\else\syst_modes_new{#1}\fi
-% \ifnum\csname\??mode#1\endcsname=\preventedmode \else
-% \syst_mode_prefix\lastnamedcs\enabledmode
-% \fi}
-%
-% \def\syst_modes_disable_indeed#1%
-% {\ifcsname\??mode#1\endcsname\else\syst_modes_new{#1}\fi
-% \ifnum\csname\??mode#1\endcsname=\preventedmode \else
-% \syst_mode_prefix\lastnamedcs\disabledmode
-% \fi}
-
\def\syst_modes_enable_indeed#1% we can speed it up by moving the new outside
{\ifcsname\??mode#1\endcsname\else\syst_modes_new{#1}\fi
\ifnum\lastnamedcs=\preventedmode\else
@@ -181,18 +170,6 @@
% \rawprocesscommacommand[#1]\syst_modes_define_indeed}
\fastprocesscommacommand[#1]\syst_modes_define_indeed}
-% \def\syst_modes_define_indeed#1%
-% {\ifcsname\??mode#1\endcsname
-% % already set
-% \else
-% \syst_modes_new{#1}
-% \fi
-% \ifx\m_modes_asked\v!keep
-% % not changes, disabled when undefined
-% \else
-% \csname\??mode#1\endcsname\ifx\m_modes_asked\v!yes\enabledmode\else\disabledmode\fi
-% \fi}
-
\def\syst_modes_define_indeed#1%
{\ifcsname\??mode#1\endcsname
% already set
@@ -283,7 +260,6 @@
\def\syst_modes_check_all_lr#1#2#3%
{\let\syst_modes_check_all_step\syst_modes_check_all_indeed
- % \rawprocesscommacommand[#3]\syst_modes_check_all_step
\fastprocesscommacommand[#3]\syst_modes_check_all_step
\ifx\syst_modes_check_all_step\gobbleoneargument
\expandafter#2%
@@ -293,7 +269,6 @@
\def\syst_modes_check_all_ss#1#2[#3]%
{\let\syst_modes_check_all_step\syst_modes_check_all_indeed
- % \rawprocesscommacommand[#3]\syst_modes_check_all_step
\fastprocesscommacommand[#3]\syst_modes_check_all_step
\ifx\syst_modes_check_all_step\gobbleoneargument
\expandafter#2%
@@ -327,28 +302,6 @@
%D Pushing/popping:
-% \unexpanded\def\pushmode[#1]%
-% {\ifcsname\??mode#1\endcsname\else\syst_modes_new{#1}\fi
-% \expandafter\edef\csname\??modestack#1\endcsname{\number\csname\??mode#1\endcsname}%
-% \expandafter\pushmacro\csname\??modestack#1\endcsname}
-%
-% \unexpanded\def\popmode[#1]%
-% {\ifcsname\??modestack#1\endcsname
-% \expandafter\popmacro\csname\??modestack#1\endcsname
-% \csname\??mode#1\endcsname\csname\??modestack#1\endcsname\relax
-% \fi}
-%
-% \def\pushsystemmode#1%
-% {\ifcsname\??mode\systemmodeprefix#1\endcsname\else\syst_modes_new{\systemmodeprefix#1}\fi
-% \expandafter\edef\csname\??modestack\systemmodeprefix#1\endcsname{\number\csname\??mode\systemmodeprefix#1\endcsname}%
-% \expandafter\pushmacro\csname\??modestack\systemmodeprefix#1\endcsname}
-%
-% \def\popsystemmode#1%
-% {\ifcsname\??modestack\systemmodeprefix#1\endcsname
-% \expandafter\popmacro\csname\??modestack\systemmodeprefix#1\endcsname
-% \csname\??mode\systemmodeprefix#1\endcsname\csname\??modestack\systemmodeprefix#1\endcsname\relax
-% \fi}
-
\unexpanded\def\pushmode[#1]%
{\ifcsname\??mode#1\endcsname\else\syst_modes_new{#1}\fi
\expandafter\edef\csname\??modestack#1\expandafter\endcsname\expandafter{\number\lastnamedcs}%
@@ -458,14 +411,6 @@
\unexpanded\def\startsetups{} % to please dep checker
\unexpanded\def\stopsetups {} % to please dep checker
-% \expanded % will become obsolete
-% {\def\expandafter\noexpand\csname\e!start\v!setups\endcsname
-% {\begingroup\noexpand\doifnextoptionalcselse
-% {\noexpand\dostartsetupsA\expandafter\noexpand\csname\e!stop\v!setups\endcsname}
-% {\noexpand\dostartsetupsB\expandafter\noexpand\csname\e!stop\v!setups\endcsname}}}
-%
-% \letvalue{\e!stop\v!setups}\relax
-
\unexpanded\def\setups{\doifelsenextbgroup\syst_setups_a\syst_setups_b} % {..} or [..]
\unexpanded\def\setup {\doifelsenextbgroup\syst_setups \syst_setups_c} % {..} or [..]
@@ -507,9 +452,6 @@
\expandafter\syst_setups_process_local
\fi}
-% \def\syst_setups_process_local
-% {\expandafter\processcommalist\expandafter[\m_syst_setups_asked]\syst_setups}
-
% setups=S1
% setups=lua(S2)
% setups=S3
@@ -674,9 +616,9 @@
\def\luasetup#1{\ctxlua{\syst_setups{#1}}}
-% % % %
+%D System setups:
-\def\systemsetupsprefix{*}
+\let\systemsetupsprefix\wildcardsymbol
\def\systemsetups#1{\syst_setups{\systemsetupsprefix#1}}
@@ -687,19 +629,9 @@
\dodoglobal\undefinevalue{\??setup:#1}%
\fi}
-% \unexpanded\def\resetsetups[#1]% see x-fo for usage
-% {\dodoglobal\expandafter\let\csname\??setup
-% \ifgridsnapping\ifcsname\??setup\v!grid:#1\endcsname\v!grid\fi
-% :#1\endcsname\undefined}
-
\unexpanded\def\copysetups
{\dodoubleargument\syst_setups_copy}
-% \def\syst_setups_copy[#1][#2]%
-% {\ifcsname\??setup:#2\endcsname
-% \expandafter\let\csname\??setup:#1\expandafter\endcsname\csname\??setup:#2\endcsname
-% \fi}
-
\def\syst_setups_copy[#1][#2]%
{\ifcsname\??setup:#2\endcsname
\expandafter\let\csname\??setup:#1\expandafter\endcsname\lastnamedcs
@@ -747,11 +679,6 @@
\unexpanded\def\setgvariable#1#2#3{\expandafter\gdef\csname\??variables#1:#2\endcsname{#3}}
\unexpanded\def\setxvariable#1#2#3{\expandafter\xdef\csname\??variables#1:#2\endcsname{#3}}
-% \def\getvariable#1#2%
-% {\csname
-% \ifcsname\??variables#1:#2\endcsname\??variables#1:#2\else\s!empty\fi
-% \endcsname}
-
\def\getvariable#1#2%
{\begincsname\??variables#1:#2\endcsname}
@@ -775,7 +702,6 @@
\def\syst_variables_check_value#1#2#3%
{\ifcsname\??variables#1:#2\endcsname
- %\edef\m_syst_variables_temp{\csname\??variables#1:#2\endcsname}%
\edef\m_syst_variables_temp{\lastnamedcs}%
\ifx\m_syst_variables_temp\empty
\expandafter\def\csname\??variables#1:#2\endcsname{#3}%
@@ -812,13 +738,12 @@
\expandafter\firstofoneargument
\fi}
-%D A few more (we could use a public test variable so that we only need
-%D to expand once, assuming expandable variables):
+%D A few more (we could use a public test variable so that we only need to expand
+%D once, assuming expandable variables):
\letvalue{\??variables:}\empty
\unexpanded\def\doifelseemptyvariable#1#2%
- %{\edef\m_syst_string_one{\csname\??variables\ifcsname\??variables#1:#2\endcsname#1:#2\else:\fi\endcsname}%
{\edef\m_syst_string_one{\begincsname\??variables#1:#2\endcsname}%
\ifx\m_syst_string_one\empty
\expandafter\firstoftwoarguments
@@ -829,7 +754,6 @@
\let\doifemptyvariableelse\doifelseemptyvariable
\unexpanded\def\doifemptyvariable#1#2%
- %{\edef\m_syst_string_one{\csname\??variables\ifcsname\??variables#1:#2\endcsname#1:#2\else:\fi\endcsname}%
{\edef\m_syst_string_one{\begincsname\??variables#1:#2\endcsname}%
\ifx\m_syst_string_one\empty
\expandafter\firstofoneargument
@@ -838,7 +762,6 @@
\fi}
\unexpanded\def\doifnotemptyvariable#1#2%
- %{\edef\m_syst_string_one{\csname\??variables\ifcsname\??variables#1:#2\endcsname#1:#2\else:\fi\endcsname}%
{\edef\m_syst_string_one{\begincsname\??variables#1:#2\endcsname}%
\ifx\m_syst_string_one\empty
\expandafter\gobbleoneargument
@@ -847,7 +770,6 @@
\fi}
\def\getvariabledefault#1#2% #3% can be command
- %{\executeifdefined{\??variables#1:#2}}% {#3}
{\ifcsname\??variables#1:#2\endcsname
\expandafter\expandafter\expandafter\lastnamedcs\expandafter\gobbleoneargument
\else
diff --git a/tex/context/base/mkiv/font-osd.lua b/tex/context/base/mkiv/font-osd.lua
index 91cf1522c..3c30910ab 100644
--- a/tex/context/base/mkiv/font-osd.lua
+++ b/tex/context/base/mkiv/font-osd.lua
@@ -81,7 +81,7 @@ if not modules then modules = { } end modules ['font-osd'] = { -- script devanag
-- malayalam, oriya, tamil and tolugu but not all are checked. Also, some of the
-- code below might need to be adapted to the extra scripts.
-local insert, imerge, copy = table.insert, table.imerge, table.copy
+local insert, imerge, copy, tohash = table.insert, table.imerge, table.copy, table.tohash
local next, type = next, type
local report = logs.reporter("otf","devanagari")
@@ -332,8 +332,8 @@ local two_defaults = {
}
local one_defaults = {
- dev2 = dflt_true,
- deva = dflt_true,
+ dev2 = dflt_true, -- set later
+ deva = dflt_true, -- set later
}
local false_flags = { false, false, false, false }
@@ -455,6 +455,8 @@ local scripts = { }
local scripts_one = { "deva", "mlym", "beng", "gujr", "guru", "knda", "orya", "taml", "telu" }
local scripts_two = { "dev2", "mlm2", "bng2", "gjr2", "gur2", "knd2", "ory2", "tml2", "tel2" }
+local scripts_old = { } for i=1,#scripts_one do local v = scripts_one[i] scripts_old[v] = v end -- self
+
local nofscripts = #scripts_one
for i=1,nofscripts do
@@ -532,6 +534,8 @@ local function initializedevanagi(tfmdata)
--
resources.devanagari = devanagari
--
+ local old = scripts_old[script] or false
+ --
for s=1,#sequences do
local sequence = sequences[s]
local steps = sequence.steps
@@ -539,9 +543,9 @@ local function initializedevanagi(tfmdata)
local features = sequence.features
local has_rphf = features.rphf
local has_blwf = features.blwf
- if has_rphf and has_rphf.deva then
+ if has_rphf and has_rphf[old] then
devanagari.reph = true
- elseif has_blwf and has_blwf.deva then
+ elseif has_blwf and has_blwf[old] then
devanagari.vattu = true
for i=1,nofsteps do
local step = steps[i]
@@ -617,13 +621,15 @@ local function initializedevanagi(tfmdata)
--
-- needs checking: this might be needed per instance ?
--
- if script == "deva" then
+ if script == "deva" or script == "knda" then
sharedfeatures["dv04"] = true -- dv04_remove_joiners
- elseif script == "dev2" then
+ elseif script == "dev2" or script == "knd2" then
sharedfeatures["dv01"] = true -- dv01_reorder_matras
sharedfeatures["dv02"] = true -- dv02_reorder_reph
sharedfeatures["dv03"] = true -- dv03_reorder_pre_base_reordering_consonants
sharedfeatures["dv04"] = true -- dv04_remove_joiners
+ -- elseif script == "knda" then -- see deva, needs checking by Kai
+ -- elseif script == "knd2" then -- see dev2, needs checking by Kai
elseif script == "mlym" then
sharedfeatures["pstf"] = true
elseif script == "mlm2" then
@@ -638,8 +644,6 @@ local function initializedevanagi(tfmdata)
-- elseif script == "gjr2" then
-- elseif script == "guru" then
-- elseif script == "gur2" then
- -- elseif script == "knda" then
- -- elseif script == "knd2" then
elseif script == "taml" then
sharedfeatures["dv04"] = true -- dv04_remove_joiners
sharedfeatures["pstf"] = true
@@ -699,7 +703,6 @@ local function initialize_one(font,attr) -- we need a proper hook into the datas
datasets.devanagari = devanagaridata
local resources = tfmdata.resources
local devanagari = resources.devanagari
-
for s=1,#datasets do
local dataset = datasets[s]
if dataset and dataset[1] then -- value
diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua
index 24a868887..631302200 100644
--- a/tex/context/base/mkiv/font-ots.lua
+++ b/tex/context/base/mkiv/font-ots.lua
@@ -3178,7 +3178,7 @@ local function testrun(disc,t_run,c_run,...)
end
local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true)
local renewed = false
- if (post or replace) and prev then
+ if (post or replace) then -- and prev then -- hm, we can start with a disc
if post then
setlink(posttail,next)
else
@@ -3419,6 +3419,7 @@ local function t_run_single(start,stop,font,attr,lookupcache)
ss = nil
end
end
+lookupmatch = lg
else
break
end
@@ -3588,6 +3589,7 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps)
ss = nil
end
end
+lookupmatch = lg
else
break
end
diff --git a/tex/context/base/mkiv/font-shp.lua b/tex/context/base/mkiv/font-shp.lua
index a6788bc62..631f3086e 100644
--- a/tex/context/base/mkiv/font-shp.lua
+++ b/tex/context/base/mkiv/font-shp.lua
@@ -40,26 +40,27 @@ local function packoutlines(data,makesequence)
return
end
if makesequence then
--- for index=1,#glyphs do
- for index=0,#glyphs-1 do
+ for index=0,#glyphs do
local glyph = glyphs[index]
- local segments = glyph.segments
- if segments then
- local sequence = { }
- local nofsequence = 0
- for i=1,#segments do
- local segment = segments[i]
- local nofsegment = #segment
- -- why last first ... needs documenting
- nofsequence = nofsequence + 1
- sequence[nofsequence] = segment[nofsegment]
- for i=1,nofsegment-1 do
+ if glyph then
+ local segments = glyph.segments
+ if segments then
+ local sequence = { }
+ local nofsequence = 0
+ for i=1,#segments do
+ local segment = segments[i]
+ local nofsegment = #segment
+ -- why last first ... needs documenting
nofsequence = nofsequence + 1
- sequence[nofsequence] = segment[i]
+ sequence[nofsequence] = segment[nofsegment]
+ for i=1,nofsegment-1 do
+ nofsequence = nofsequence + 1
+ sequence[nofsequence] = segment[i]
+ end
end
+ glyph.sequence = sequence
+ glyph.segments = nil
end
- glyph.sequence = sequence
- glyph.segments = nil
end
end
else
@@ -67,32 +68,36 @@ local function packoutlines(data,makesequence)
local common = { }
local reverse = { }
local last = 0
--- for index=1,#glyphs do
- for index=0,#glyphs-1 do
- local segments = glyphs[index].segments
- if segments then
- for i=1,#segments do
- local h = concat(segments[i]," ")
- hash[h] = (hash[h] or 0) + 1
+ for index=0,#glyphs do
+ local glyph = glyphs[index]
+ if glyph then
+ local segments = glyph.segments
+ if segments then
+ for i=1,#segments do
+ local h = concat(segments[i]," ")
+ hash[h] = (hash[h] or 0) + 1
+ end
end
end
end
--- for index=1,#glyphs do
- for index=0,#glyphs-1 do
- local segments = glyphs[index].segments
- if segments then
- for i=1,#segments do
- local segment = segments[i]
- local h = concat(segment," ")
- if hash[h] > 1 then -- minimal one shared in order to hash
- local idx = reverse[h]
- if not idx then
- last = last + 1
- reverse[h] = last
- common[last] = segment
- idx = last
+ for index=0,#glyphs do
+ local glyph = glyphs[index]
+ if glyph then
+ local segments = glyph.segments
+ if segments then
+ for i=1,#segments do
+ local segment = segments[i]
+ local h = concat(segment," ")
+ if hash[h] > 1 then -- minimal one shared in order to hash
+ local idx = reverse[h]
+ if not idx then
+ last = last + 1
+ reverse[h] = last
+ common[last] = segment
+ idx = last
+ end
+ segments[i] = idx
end
- segments[i] = idx
end
end
end
@@ -119,14 +124,16 @@ local function unpackoutlines(data)
if not glyphs then
return
end
--- for index=1,#glyphs do
- for index=0,#glyphs-1 do
- local segments = glyphs[index].segments
- if segments then
- for i=1,#segments do
- local c = common[segments[i]]
- if c then
- segments[i] = c
+ for index=0,#glyphs do
+ local glyph = glyphs[index]
+ if glyph then
+ local segments = glyph.segments
+ if segments then
+ for i=1,#segments do
+ local c = common[segments[i]]
+ if c then
+ segments[i] = c
+ end
end
end
end
@@ -219,8 +226,13 @@ local function loadstreams(cache,filename,sub,instance)
local glyphs = data.glyphs
local streams = { }
if glyphs then
- for i=0,#glyphs-1 do
- streams[i] = glyphs[i].stream or ""
+ for i=0,#glyphs do
+ local glyph = glyphs[i]
+ if glyph then
+ streams[i] = glyph.stream or ""
+ else
+ streams[i] = ""
+ end
end
end
data.streams = streams
diff --git a/tex/context/base/mkiv/lpdf-pde.lua b/tex/context/base/mkiv/lpdf-pde.lua
index cb6c112e7..8c5c6ffc1 100644
--- a/tex/context/base/mkiv/lpdf-pde.lua
+++ b/tex/context/base/mkiv/lpdf-pde.lua
@@ -518,6 +518,7 @@ lpdf_epdf.expanded = expanded
local spaces = lpegpatterns.whitespace^1
local optspaces = lpegpatterns.whitespace^0
+local comment = P("%") * (1 - lpegpatterns.newline)^0
local numchar = P("\\")/"" * (R("09")^3/function(s) return char(tonumber(s,8)) end)
+ P("\\") * P(1)
local key = P("/") * C(R("AZ","az","09","__")^1)
@@ -526,7 +527,7 @@ local keyword = Ct(Cc("name") * key)
local operator = C((R("AZ","az")+P("*")+P("'")+P('"'))^1)
local grammar = P { "start",
- start = (keyword + number + V("dictionary") + V("array") + V("hexstring") + V("decstring") + spaces)^1,
+ start = (comment + keyword + number + V("dictionary") + V("array") + V("hexstring") + V("decstring") + spaces)^1,
keyvalue = key * optspaces * V("start"),
array = Ct(Cc("array") * P("[") * Ct(V("start")^1) * P("]")),
dictionary = Ct(Cc("dict") * P("<<") * Ct(V("keyvalue")^1) * P(">>")),
@@ -634,6 +635,8 @@ local function analyzefonts(document,resources) -- unfinished, see mtx-pdf for b
return fonts
end
+lpdf_epdf.analyzefonts = analyzefonts
+
local more = 0
local unic = nil -- cheaper than passing each time as Carg(1)
@@ -679,27 +682,34 @@ function lpdf_epdf.getpagecontent(document,pagenumber)
local size = #entry
local operator = entry[size]
if operator == "Tf" then
- font = fonts[entry[1]]
- unic = font.tounicode
- elseif operator == "TJ" then -- { array, TJ }
- local list = entry[1]
+ font = fonts[entry[1][2]]
+ unic = font and font.tounicode or { }
+ elseif operator == "TJ" then
+ local data = entry[1] -- { "array", { ... } }
+ local list = data[2] -- { { ... }, { ... } }
for i=1,#list do
local li = list[i]
- if type(li) == "table" then
- if li[1] == "hex" then
+-- if type(li) == "table" then
+ local kind = li[1]
+ if kind == "hex" then
list[i] = lpegmatch(p_hex_to_utf,li[2])
- else
+ elseif kind == "string" then
list[i] = lpegmatch(p_dec_to_utf,li[2])
+ else
+ list[i] = li[2] -- kern
end
- else
- -- kern
- end
+-- else
+-- -- kern
+-- end
end
- elseif operator == "Tj" or operator == "'" or operator == '"' then -- { string, Tj } { string, ' } { n, m, string, " }
- local list = entry[size-1]
- if list[1] == "hex" then
+ elseif operator == "Tj" or operator == "'" or operator == '"' then
+ -- { string, Tj } { string, ' } { n, m, string, " }
+ local data = entry[size-1]
+ local list = data[2]
+ local kind = list[1]
+ if kind == "hex" then
list[2] = lpegmatch(p_hex_to_utf,li[2])
- else
+ elseif kind == "string" then
list[2] = lpegmatch(p_dec_to_utf,li[2])
end
end
@@ -728,25 +738,32 @@ function lpdf_epdf.contenttotext(document,list) -- maybe signal fonts
local size = #entry
local operator = entry[size]
if operator == "Tf" then
- last_f = entry[2]
+ last_f = entry[2][2] -- size
elseif operator == "TJ" then
- local list = entry[1]
+ local data = entry[1] -- { "array", { ... } }
+ local list = data[2] -- { { ... }, { ... } }
for i=1,#list do
local li = list[i]
- if type(li) == "string" then
+ local kind = type(li)
+ if kind == "string" then
last = last + 1
text[last] = li
- elseif li < -50 then
+ elseif kind == "number" and li < -50 then
last = last + 1
text[last] = " "
end
end
- line = concat(list)
elseif operator == "Tj" then
last = last + 1
- text[last] = entry[size-1]
+ local li = entry[size-1]
+ local kind = type(li)
+ if kind == "string" then
+ last = last + 1
+ text[last] = li
+ end
elseif operator == "cm" or operator == "Tm" then
- local ty = entry[6]
+ local data = entry
+ local ty = entry[6][2]
local dy = abs(last_y - ty)
if dy > linefactor*last_f then
if last > 0 then
diff --git a/tex/context/base/mkiv/luat-cod.lua b/tex/context/base/mkiv/luat-cod.lua
index 6f79a54e1..522de886c 100644
--- a/tex/context/base/mkiv/luat-cod.lua
+++ b/tex/context/base/mkiv/luat-cod.lua
@@ -260,6 +260,10 @@ local function find_write_file(id,name)
return target_file(name)
end
+local function find_log_file(name)
+ return target_file(name)
+end
+
local function open_read_file(name)
local f = io.open(name,'rb')
return {
@@ -278,6 +282,7 @@ local open_data_file = open_read_file
callback.register('find_read_file' , find_read_file )
callback.register('open_read_file' , open_read_file )
callback.register('find_write_file', find_write_file)
+callback.register('find_log_file', find_log_file)
callback.register('find_data_file' , find_data_file )
callback.register('open_data_file' , open_data_file )
diff --git a/tex/context/base/mkiv/luat-fio.lua b/tex/context/base/mkiv/luat-fio.lua
index 2996ae66a..26db46a88 100644
--- a/tex/context/base/mkiv/luat-fio.lua
+++ b/tex/context/base/mkiv/luat-fio.lua
@@ -117,6 +117,8 @@ if not resolvers.initialized() then
-- register('read_cidmap_file' , function(file) return loadbinfile(file,"cidmap") end, true)
register('find_write_file' , function(id,name) return name end, true)
+
+ register('find_log_file' , function(name) return name end, true)
register('find_format_file' , function(name) return name end, true)
end
diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua
index 0fb19e18e..8dfee915a 100644
--- a/tex/context/base/mkiv/mult-def.lua
+++ b/tex/context/base/mkiv/mult-def.lua
@@ -13368,6 +13368,10 @@ return {
["pe"]="ته‌نوشت",
["ro"]="endnote",
},
+ ["textnote"]={
+ ["en"]="textnote",
+ ["nl"]="tekstnoot",
+ },
["enumeration"]={
["cs"]="vycet",
["de"]="nummerierung",
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index e19f4aa76..846380027 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -142,7 +142,9 @@ return {
--
"parfillleftskip", "parfillrightskip",
--
- "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode"
+ "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode",
+ --
+ "wildcardsymbol",
},
["helpers"] = {
--
diff --git a/tex/context/base/mkiv/node-rul.lua b/tex/context/base/mkiv/node-rul.lua
index 61d78668f..5a8fdc48a 100644
--- a/tex/context/base/mkiv/node-rul.lua
+++ b/tex/context/base/mkiv/node-rul.lua
@@ -224,7 +224,7 @@ local trace_ruled = false trackers.register("nodes.rules", function(v) trace_
local report_ruled = logs.reporter("nodes","rules")
function rules.define(settings)
- local nofdata = #data+1
+ local nofdata = #data + 1
data[nofdata] = settings
local text = settings.text
if text then
@@ -236,7 +236,7 @@ function rules.define(settings)
settings.text = nil
end
end
- context(nofdata)
+ return nofdata
end
local function flush_ruled(head,f,l,d,level,parent,strip) -- not that fast but acceptable for this purpose
@@ -265,7 +265,7 @@ local function flush_ruled(head,f,l,d,level,parent,strip) -- not that fast but a
if not f then
return head
end
- local w, ht, dp = getrangedimensions(parent,f,getnext(l))
+ local wd, ht, dp = getrangedimensions(parent,f,getnext(l))
local method = d.method
local empty = d.empty == v_yes
local offset = d.offset
@@ -306,7 +306,7 @@ local function flush_ruled(head,f,l,d,level,parent,strip) -- not that fast but a
m = 0
end
- local function inject(r,w,ht,dp)
+ local function inject(r,wd,ht,dp)
if layer then
setattr(r,a_viewerlayer,layer)
end
@@ -317,7 +317,7 @@ local function flush_ruled(head,f,l,d,level,parent,strip) -- not that fast but a
setnext(l)
flushlist(f)
else
- local k = new_kern(-w)
+ local k = new_kern(-wd)
if foreground then
insert_node_after(head,l,k)
insert_node_after(head,k,r)
@@ -329,12 +329,12 @@ local function flush_ruled(head,f,l,d,level,parent,strip) -- not that fast but a
end
if trace_ruled then
report_ruled("level %a, width %p, height %p, depth %p, nodes %a, text %a",
- level,w,ht,dp,n_tostring(f,l),n_tosequence(f,l,true))
+ level,wd,ht,dp,n_tostring(f,l),n_tosequence(f,l,true))
end
end
if mp and mp ~= "" then
local r = usernutrule {
- width = w,
+ width = wd,
height = ht,
depth = dp,
type = "mp",
@@ -346,22 +346,26 @@ local function flush_ruled(head,f,l,d,level,parent,strip) -- not that fast but a
ca = color,
ta = transparency,
}
- inject(r,w,ht,dp)
+ inject(r,wd,ht,dp)
else
local tx = d.text
if tx then
local l = copy_list(tx)
if d["repeat"] == v_yes then
- l = new_leader(w,l)
+ l = new_leader(wd,l)
setattrlist(l,tx)
end
- l = hpack_nodes(l,w,"exactly")
- inject(l,w,ht,dp)
+ l = hpack_nodes(l,wd,"exactly")
+ inject(l,wd,ht,dp)
else
for i=1,level do
- local ht = (offset+(i-1)*dy)*e + rulethickness - m
- local dp = -(offset+(i-1)*dy)*e + rulethickness + m
- local r = new_rule(w,ht,dp)
+ local hd = (offset+(i-1)*dy)*e - m
+-- local ht = hd + rulethickness - m
+-- local dp = -hd + rulethickness + m
+ local ht = hd + rulethickness
+ local dp = -hd + rulethickness
+ local r = new_rule(wd,ht,dp)
+ -- can be done more efficient
if color then
setattr(r,a_colormodel,colorspace)
setattr(r,a_color,color)
@@ -369,7 +373,7 @@ local function flush_ruled(head,f,l,d,level,parent,strip) -- not that fast but a
if transparency then
setattr(r,a_transparency,transparency)
end
- inject(r,w,ht,dp)
+ inject(r,wd,ht,dp)
end
end
end
@@ -390,16 +394,18 @@ local report_shifted = logs.reporter("nodes","shifting")
local a_shifted = attributes.private('shifted')
-nodes.shifts = nodes.shifts or { }
-nodes.shifts.data = nodes.shifts.data or { }
+local shifts = nodes.shifts or { }
+nodes.shifts = shifts
+shifts.data = shifts.data or { }
-storage.register("nodes/shifts/data", nodes.shifts.data, "nodes.shifts.data")
+storage.register("nodes/shifts/data", shifts.data, "nodes.shifts.data")
-local data = nodes.shifts.data
+local data = shifts.data
-function nodes.shifts.define(settings)
- data[#data+1] = settings
- context(#data)
+function shifts.define(settings)
+ local nofdata = #data + 1
+ data[nofdata] = settings
+ return nofdata
end
local function flush_shifted(head,first,last,data,level,parent,strip) -- not that fast but acceptable for this purpose
@@ -430,26 +436,28 @@ local function flush_shifted(head,first,last,data,level,parent,strip) -- not tha
return head
end
-nodes.shifts.handler = function(head)
+shifts.handler = function(head)
return processwords(a_shifted,data,flush_shifted,head)
end
-function nodes.shifts.enable()
+function shifts.enable()
enableaction("shipouts","nodes.shifts.handler")
end
-- linefillers
-nodes.linefillers = nodes.linefillers or { }
-nodes.linefillers.data = nodes.linefillers.data or { }
+local linefillers = nodes.linefillers or { }
+nodes.linefillers = linefillers
+linefillers.data = linefillers.data or { }
-storage.register("nodes/linefillers/data", nodes.linefillers.data, "nodes.linefillers.data")
+storage.register("nodes/linefillers/data", linefillers.data, "nodes.linefillers.data")
-local data = nodes.linefillers.data
+local data = linefillers.data
-function nodes.linefillers.define(settings)
- data[#data+1] = settings
- context(#data)
+function linefillers.define(settings)
+ local nofdata = #data + 1
+ data[nofdata] = settings
+ return nofdata
end
local function linefiller(current,data,width,location)
@@ -486,7 +494,7 @@ local function linefiller(current,data,width,location)
end
end
-function nodes.linefillers.filler(current,data,width,height,depth)
+function linefillers.filler(current,data,width,height,depth)
if width and width > 0 then
local height = height or data.height or 0
local depth = depth or data.depth or 0
@@ -534,7 +542,7 @@ local function find_attr(head,attr)
end
end
-function nodes.linefillers.handler(head)
+function linefillers.handler(head)
for current, subtype, list in nexthlist, head do
if list and subtype == linelist_code then
-- why doesn't leftskip take the attributes
@@ -658,7 +666,7 @@ end
local enable = false
-function nodes.linefillers.enable()
+function linefillers.enable()
if not enable then
-- we could now nil it
enableaction("finalizers","nodes.linefillers.handler")
@@ -700,7 +708,7 @@ implement {
implement {
name = "defineshift",
- actions = { nodes.shifts.define, context },
+ actions = { shifts.define, context },
arguments = {
{
{ "continue" },
@@ -714,12 +722,12 @@ implement {
implement {
name = "enableshifts",
onlyonce = true,
- actions = nodes.shifts.enable
+ actions = shifts.enable
}
implement {
name = "definelinefiller",
- actions = { nodes.linefillers.define, context },
+ actions = { linefillers.define, context },
arguments = {
{
{ "method", "integer" },
@@ -741,7 +749,7 @@ implement {
implement {
name = "enablelinefillers",
onlyonce = true,
- actions = nodes.linefillers.enable
+ actions = linefillers.enable
}
-- We add a bonus feature here (experiment):
diff --git a/tex/context/base/mkiv/node-rul.mkiv b/tex/context/base/mkiv/node-rul.mkiv
index 19f398eb9..7f2093bf2 100644
--- a/tex/context/base/mkiv/node-rul.mkiv
+++ b/tex/context/base/mkiv/node-rul.mkiv
@@ -146,6 +146,12 @@
{\node_rules_set{#1}\barparameter\c!left}%
{\relax\barparameter\c!right}}
+\unexpanded\def\inlinebar[#1]%
+ {\node_rules_direct{#1}}
+
+% \unexpanded\def\inlinecurrentbar
+% {\node_rules_direct{\currentbar}}
+
% store in properties
\unexpanded\def\node_rules_set#1% maybe reverse the 1000 (also maybe use more attributes instead of settings)
diff --git a/tex/context/base/mkiv/node-scn.lua b/tex/context/base/mkiv/node-scn.lua
index a40a5271a..055f5e20d 100644
--- a/tex/context/base/mkiv/node-scn.lua
+++ b/tex/context/base/mkiv/node-scn.lua
@@ -124,7 +124,7 @@ local function processwords(attribute,data,flush,head,parent,skip) -- we have hl
local continue, leaders, done, strip, level = false, false, false, true, -1
while n do
local id = getid(n)
- if id == glyph_code or id == rule_code or (id == hlist_code and getattr(n,a_runningtext) == 1) then
+ if id == glyph_code or id == rule_code or (id == hlist_code and getattr(n,a_runningtext)) then
local aa = getattr(n,attribute)
if aa and aa ~= skip then
if aa == a then
diff --git a/tex/context/base/mkiv/pack-mrl.mkiv b/tex/context/base/mkiv/pack-mrl.mkiv
index 4a0b68332..cd04781c7 100644
--- a/tex/context/base/mkiv/pack-mrl.mkiv
+++ b/tex/context/base/mkiv/pack-mrl.mkiv
@@ -843,32 +843,32 @@
\unexpanded\def\fillinline
{\dosingleempty\pack_fillinline}
-\ifdefined\endpar % experiment with \endpar
-
- \def\pack_fillinline[#1]%
- {% \endpar % no, as it interferes with \definedescription cum suis
- \begingroup
- \setupcurrentfillinlines[#1]%
- \directfillinlinesparameter\c!before
- \begingroup
- \advance\rightskip \directfillinlinesparameter\c!margin\relax
- \parfillskip\zeropoint
- \pushmacro\endpar
- \def\endpar
- {\popmacro\endpar
- \ifhmode\unskip\hfill\fi
- \scratchwidth\dimexpr\directfillinlinesparameter\c!width-\directfillinlinesparameter\c!distance\relax
- \ifdim\scratchwidth>\directfillinlinesparameter\c!margin\else\expandafter\rlap\fi
- {\kern\directfillinlinesparameter\c!distance
- \scratchheight\dimexpr\directfillinlinesparameter\c!rulethickness/\plustwo\relax
- \color[\directfillinlinesparameter\c!color]{\vrule\s!width\scratchwidth\s!height\scratchheight\s!depth\scratchheight}}%
- \endpar
- \endgroup
- \endpar
- \directfillinlinesparameter\c!after
- \endgroup}} % carryover ?
-
-\else
+% \ifdefined\endpar % experiment with \endpar
+%
+% \def\pack_fillinline[#1]%
+% {% \endpar % no, as it interferes with \definedescription cum suis
+% \begingroup
+% \setupcurrentfillinlines[#1]%
+% \directfillinlinesparameter\c!before
+% \begingroup
+% \advance\rightskip \directfillinlinesparameter\c!margin\relax
+% \parfillskip\zeropoint
+% \pushmacro\endpar
+% \def\endpar
+% {\popmacro\endpar
+% \ifhmode\unskip\hfill\fi
+% \scratchwidth\dimexpr\directfillinlinesparameter\c!width-\directfillinlinesparameter\c!distance\relax
+% \ifdim\scratchwidth>\directfillinlinesparameter\c!margin\else\expandafter\rlap\fi
+% {\kern\directfillinlinesparameter\c!distance
+% \scratchheight\dimexpr\directfillinlinesparameter\c!rulethickness/\plustwo\relax
+% \color[\directfillinlinesparameter\c!color]{\vrule\s!width\scratchwidth\s!height\scratchheight\s!depth\scratchheight}}%
+% \endpar
+% \endgroup
+% \endpar
+% \directfillinlinesparameter\c!after
+% \endgroup}} % carryover ?
+%
+% \else
\def\pack_fillinline[#1]%
{%\endgraf % no, as it interferes with \definedescription cum suis
@@ -892,6 +892,6 @@
\directfillinlinesparameter\c!after
\endgroup}} % carryover ?
-\fi
+% \fi
\protect \endinput
diff --git a/tex/context/base/mkiv/spac-hor.mkiv b/tex/context/base/mkiv/spac-hor.mkiv
index c0c7d95d2..e51e54f29 100644
--- a/tex/context/base/mkiv/spac-hor.mkiv
+++ b/tex/context/base/mkiv/spac-hor.mkiv
@@ -1273,4 +1273,13 @@
\def\obeyfollowingtoken{{}} % end \cs scanning
+%D Something new:
+
+\unexpanded\def\interwordspacebefore{\wordboundary\zwnj\hskip\interwordspace\relax}
+\unexpanded\def\interwordspaceafter {\hskip\interwordspace\relax\zwnj\wordboundary}
+
+\unexpanded\def\interwordspacesbefore#1{\dofastloopcs{#1}\interwordspacebefore}
+\unexpanded\def\interwordspacesafter #1{\dofastloopcs{#1}\interwordspaceafter}
+\unexpanded\def\interwordspaces #1{\wordboundary\zwnj\dofastloopcs{\numexpr#1+\minusone}\interwordspaceafter}
+
\protect \endinput
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 328354ee5..ee13ad39a 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 94132234a..e3b70eaa0 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/strc-bkm.lua b/tex/context/base/mkiv/strc-bkm.lua
index ee9233a9a..41a128333 100644
--- a/tex/context/base/mkiv/strc-bkm.lua
+++ b/tex/context/base/mkiv/strc-bkm.lua
@@ -42,6 +42,19 @@ local opened = { }
local forced = { }
local numbered = { }
+function bookmarks.setopened(key,value)
+ if value == nil then
+ value = true
+ end
+ if type(key) == "table" then
+ for i=1,#key do
+ opened[key[i]] = value
+ end
+ else
+ opened[key] = value
+ end
+end
+
function bookmarks.register(settings)
local force = settings.force == variables.yes
local number = settings.number == variables.yes
diff --git a/tex/context/base/mkiv/strc-itm.mkvi b/tex/context/base/mkiv/strc-itm.mkvi
index 7895b7968..eea42f2de 100644
--- a/tex/context/base/mkiv/strc-itm.mkvi
+++ b/tex/context/base/mkiv/strc-itm.mkvi
@@ -906,6 +906,10 @@
\doadaptleftskip {\itemgroupparameter\c!leftmargin}%
\doadaptrightskip{\itemgroupparameter\c!rightmargin}%
\fi
+ %
+ \doadaptleftskip {\itemgroupparameter\c!leftmargindistance}%
+ \doadaptrightskip{\itemgroupparameter\c!rightmargindistance}%
+ %
\usealignparameter\itemgroupparameter
\edef\m_strc_itemgroups_indenting{\itemgroupparameter\c!indenting}%
\ifnum\c_strc_itemgroups_nesting>\zerocount
@@ -1808,6 +1812,8 @@
[\c!margin=\zeropoint,
\c!leftmargin=\zeropoint,
\c!rightmargin=\zeropoint,
+ \c!leftmargindistance=\zeropoint,
+ \c!rightmargindistance=\zeropoint,
\c!indentnext=\v!yes,
\c!width=1.5\emwidth,
\c!factor=0,
diff --git a/tex/context/base/mkiv/syst-aux.mkiv b/tex/context/base/mkiv/syst-aux.mkiv
index d6f54f7d0..924043849 100644
--- a/tex/context/base/mkiv/syst-aux.mkiv
+++ b/tex/context/base/mkiv/syst-aux.mkiv
@@ -5149,19 +5149,26 @@
\let\m_syst_helpers_fast_loop_cs\relax
-\unexpanded\def\dofastloopcs#1#2%
- {\let\m_syst_helpers_fast_loop_cs#2%
+\unexpanded\def\dofastloopcs#1%
+ {\fastloopfinal#1\relax
+ \ifcase\fastloopfinal
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\syst_helpers_fast_loop_cs
+ \fi}
+
+\unexpanded\def\syst_helpers_fast_loop_cs#1%
+ {\let\m_syst_helpers_fast_loop_cs#1%
\fastloopindex\plusone
- \fastloopfinal#1\relax
- \syst_helpers_fast_loop_cs}
+ \syst_helpers_fast_loop_cs_step}
-\unexpanded\def\syst_helpers_fast_loop_cs
+\unexpanded\def\syst_helpers_fast_loop_cs_step
{\ifnum\fastloopindex>\fastloopfinal
\let\m_syst_helpers_fast_loop_cs\relax
\else
\m_syst_helpers_fast_loop_cs
\advance\fastloopindex\plusone
- \expandafter\syst_helpers_fast_loop_cs
+ \expandafter\syst_helpers_fast_loop_cs_step
\fi}
% Helper:
diff --git a/tex/context/base/mkiv/syst-ini.mkiv b/tex/context/base/mkiv/syst-ini.mkiv
index 2a2d48311..7664074c5 100644
--- a/tex/context/base/mkiv/syst-ini.mkiv
+++ b/tex/context/base/mkiv/syst-ini.mkiv
@@ -1141,4 +1141,8 @@
\let\normalstartdmath \Ustartdisplaymath
\let\normalstopdmath \Ustopdisplaymath
+%D Also better here:
+
+\def\wildcardsymbol{*}
+
\protect \endinput
diff --git a/tex/context/interface/mkii/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml
index f4e65c527..37736a2d7 100644
--- a/tex/context/interface/mkii/keys-cs.xml
+++ b/tex/context/interface/mkii/keys-cs.xml
@@ -376,6 +376,7 @@
<cd:variable name='nohz' value='nohz'/>
<cd:variable name='noline' value='noline'/>
<cd:variable name='nomarking' value='zadneznaceni'/>
+ <cd:variable name='nomenubar' value='nomenubar'/>
<cd:variable name='none' value='zadny'/>
<cd:variable name='nonumber' value='nonumber'/>
<cd:variable name='norepeat' value='norepeat'/>
diff --git a/tex/context/interface/mkii/keys-de.xml b/tex/context/interface/mkii/keys-de.xml
index e76ea9340..97a18d711 100644
--- a/tex/context/interface/mkii/keys-de.xml
+++ b/tex/context/interface/mkii/keys-de.xml
@@ -573,6 +573,7 @@
<cd:variable name='temporary' value='temporaer'/>
<cd:variable name='test' value='test'/>
<cd:variable name='text' value='text'/>
+ <cd:variable name='textnote' value='textnote'/>
<cd:variable name='three' value='drei'/>
<cd:variable name='thursday' value='donnerstag'/>
<cd:variable name='tight' value='tight'/>
diff --git a/tex/context/interface/mkiv/context-en.xml b/tex/context/interface/mkiv/context-en.xml
index 87182c2a3..e358b27e7 100644
--- a/tex/context/interface/mkiv/context-en.xml
+++ b/tex/context/interface/mkiv/context-en.xml
@@ -17583,6 +17583,18 @@
<cd:constant type="standard"/>
<cd:constant type="cd:dimension"/>
</cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
<cd:parameter name="align">
<cd:inherit name="setupalign"/>
</cd:parameter>
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index e1f854a34..479e16737 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-itemgroup.xml b/tex/context/interface/mkiv/i-itemgroup.xml
index 84cae20bb..c27c729f7 100644
--- a/tex/context/interface/mkiv/i-itemgroup.xml
+++ b/tex/context/interface/mkiv/i-itemgroup.xml
@@ -113,6 +113,12 @@
<cd:parameter name="rightmargin">
<cd:resolve name="value-rightskip"/>
</cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:resolve name="value-rightskip"/>
+ </cd:parameter>
<cd:parameter name="align">
<cd:inherit name="setupalign"/>
</cd:parameter>
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index 007fc0e61..e428d7f39 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
diff --git a/tex/context/modules/common/s-abbreviations-logos.tex b/tex/context/modules/common/s-abbreviations-logos.tex
index 54a969593..410aa1824 100644
--- a/tex/context/modules/common/s-abbreviations-logos.tex
+++ b/tex/context/modules/common/s-abbreviations-logos.tex
@@ -43,6 +43,7 @@
\logo [ASCIIMATH] {AsciiMath}
\logo [ASCIITEX] {ascii\TeXsuffix}
\logo [BACHOTEX] {Bacho\TeXsuffix}
+\logo [BASIC] {Basic}
\logo [BIBTEX] {bib\TeXsuffix}
\logo [BLUESKY] {BlueSky}
\logo [BMP] {bmp}