summaryrefslogtreecommitdiff
path: root/tex/context
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2017-08-02 19:40:52 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2017-08-02 19:40:52 +0200
commitee627840c85edc7b073d0582632dcc4da82a1e83 (patch)
treeff490354230b8ea3a1d75bbb879aae1823895725 /tex/context
parent391b705af1c22eaa6027d18a146e8d3fafc8832f (diff)
downloadcontext-ee627840c85edc7b073d0582632dcc4da82a1e83.tar.gz
2017-08-02 19:04:00
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/mkiv/attr-col.lua2
-rw-r--r--tex/context/base/mkiv/buff-ver.lua28
-rw-r--r--tex/context/base/mkiv/buff-ver.mkiv40
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-mis.lua2
-rw-r--r--tex/context/base/mkiv/font-osd.lua2
-rw-r--r--tex/context/base/mkiv/font-otj.lua64
-rw-r--r--tex/context/base/mkiv/font-otl.lua2
-rw-r--r--tex/context/base/mkiv/font-ots.lua49
-rw-r--r--tex/context/base/mkiv/font-oup.lua73
-rw-r--r--tex/context/base/mkiv/lang-lab.mkiv2
-rw-r--r--tex/context/base/mkiv/lang-mis.mkiv3
-rw-r--r--tex/context/base/mkiv/lxml-ini.mkiv15
-rw-r--r--tex/context/base/mkiv/page-box.mkvi4
-rw-r--r--tex/context/base/mkiv/page-flt.mkiv2
-rw-r--r--tex/context/base/mkiv/page-txt.mkvi4
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin25790 -> 25788 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin426283 -> 426288 bytes
-rw-r--r--tex/context/base/mkiv/syst-aux.mkiv9
-rw-r--r--tex/context/interface/mkiv/context-en.xml10
-rw-r--r--tex/context/interface/mkiv/i-buffer.xml11
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin847890 -> 848078 bytes
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin60774 -> 60777 bytes
-rw-r--r--tex/context/modules/mkiv/m-scite.mkiv26
-rw-r--r--tex/context/modules/mkiv/s-fnt-20.mkiv22
28 files changed, 283 insertions, 95 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 9acd3d260..ad39ff810 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{2017.08.01 18:10}
+\newcontextversion{2017.08.02 18:59}
%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 630a19c49..5bb3e1b31 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{2017.08.01 18:10}
+\edef\contextversion{2017.08.02 18:59}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/attr-col.lua b/tex/context/base/mkiv/attr-col.lua
index 48f2f2ac6..28e63b177 100644
--- a/tex/context/base/mkiv/attr-col.lua
+++ b/tex/context/base/mkiv/attr-col.lua
@@ -358,7 +358,7 @@ local function reviver(data,n)
else
local model = colors.forcedmodel(v[1])
if model == 2 then
- local gray= graycolor(v[2])
+ local gray = graycolor(v[2])
d = { gray, gray, gray, gray }
elseif model == 3 then
local gray, rgb, cmyk = graycolor(v[2]), rgbcolor(v[3],v[4],v[5]), cmykcolor(v[6],v[7],v[8],v[9])
diff --git a/tex/context/base/mkiv/buff-ver.lua b/tex/context/base/mkiv/buff-ver.lua
index ed0e327a1..6af56b327 100644
--- a/tex/context/base/mkiv/buff-ver.lua
+++ b/tex/context/base/mkiv/buff-ver.lua
@@ -44,6 +44,8 @@ local v_yes = variables.yes
local v_last = variables.last
local v_all = variables.all
local v_absolute = variables.absolute
+local v_inline = variables.inline
+local v_display = variables.display
-- beware, all macros have an argument:
@@ -66,7 +68,7 @@ local ctx_verbatimspace = context.doverbatimspace
local CargOne = Carg(1)
local function f_emptyline(s,settings)
- if settings and settings.nature == "inline" then
+ if settings and settings.nature == v_inline then
ctx_inlineverbatimemptyline()
else
ctx_displayverbatimemptyline()
@@ -74,7 +76,7 @@ local function f_emptyline(s,settings)
end
local function f_beginline(s,settings)
- if settings and settings.nature == "inline" then
+ if settings and settings.nature == v_inline then
ctx_inlineverbatimbeginline()
else
ctx_displayverbatimbeginline()
@@ -82,7 +84,7 @@ local function f_beginline(s,settings)
end
local function f_newline(s,settings)
- if settings and settings.nature == "inline" then
+ if settings and settings.nature == v_inline then
ctx_inlineverbatimnewline()
else
ctx_displayverbatimnewline()
@@ -90,7 +92,7 @@ local function f_newline(s,settings)
end
local function f_start(s,settings)
- if settings and settings.nature == "inline" then
+ if settings and settings.nature == v_inline then
ctx_inlineverbatimstart()
else
ctx_displayverbatimstart()
@@ -98,7 +100,7 @@ local function f_start(s,settings)
end
local function f_stop(s,settings)
- if settings and settings.nature == "inline" then
+ if settings and settings.nature == v_inline then
ctx_inlineverbatimstop()
else
ctx_displayverbatimstop()
@@ -500,7 +502,7 @@ local function visualize(content,settings) -- maybe also method in settings
else
m = specifications[method] or specifications.default
end
- local nature = settings.nature or "display"
+ local nature = settings.nature or v_display
local n = m and m[nature]
if n then
if trace_visualize then
@@ -534,15 +536,15 @@ local function checkedsettings(settings,nature)
end
function visualizers.visualizestring(content,settings)
- visualize(content,checkedsettings(settings,"inline"))
+ visualize(content,checkedsettings(settings,v_inline))
end
function visualizers.visualizefile(name,settings)
- visualize(resolvers.loadtexfile(name),checkedsettings(settings,"display"))
+ visualize(resolvers.loadtexfile(name),checkedsettings(settings,v_display))
end
function visualizers.visualizebuffer(name,settings)
- visualize(buffers.getcontent(name),checkedsettings(settings,"display"))
+ visualize(buffers.getcontent(name),checkedsettings(settings,v_display))
end
-- --
@@ -739,7 +741,7 @@ local function filter(lines,settings) -- todo: inline or display in settings
first, last = getstrip(lines,first,last)
end
-- \r is \endlinechar but \n would is more generic so this choice is debatable
- local content = concat(lines,(settings.nature == "inline" and " ") or "\n",first,last)
+ local content = concat(lines,(settings.nature == v_inline and " ") or "\n",first,last)
return content, m
end
@@ -755,7 +757,7 @@ local function typebuffer(settings)
if content and content ~= "" then
-- content = decodecomment(content)
content = dotabs(content,settings)
- visualize(content,checkedsettings(settings,"display"))
+ visualize(content,checkedsettings(settings,v_display))
end
end
end
@@ -804,7 +806,7 @@ local function typestring(settings)
end
-- content = decodecomment(content)
-- content = dotabs(content,settings)
- visualize(content,checkedsettings(settings,"inline"))
+ visualize(content,checkedsettings(settings,v_inline))
end
end
@@ -824,7 +826,7 @@ local function typefile(settings)
local content, m = filter(lines,settings)
if content and content ~= "" then
content = dotabs(content,settings)
- visualize(content,checkedsettings(settings,"display"))
+ visualize(content,checkedsettings(settings,v_display))
end
end
end
diff --git a/tex/context/base/mkiv/buff-ver.mkiv b/tex/context/base/mkiv/buff-ver.mkiv
index ba0591012..8e76ff139 100644
--- a/tex/context/base/mkiv/buff-ver.mkiv
+++ b/tex/context/base/mkiv/buff-ver.mkiv
@@ -342,7 +342,7 @@
method {\p_buff_option}%
compact {\typeparameter\c!compact}% % none | all | last (all needed in tabulate etc for manuals)
escape {\typeparameter\c!escape}% % new but rather useless imo (escaping in general is not used much)
- % nature {inline}% is default
+ % nature {\v!inline}% is default
\relax
\dostoptagged
\buff_verbatim_right_of_type
@@ -356,7 +356,7 @@
tab {\typeparameter\c!tab}%
method {\p_buff_option}% % extra visualizer (maybe: nested,\typeparameter\c!option)
escape {\typeparameter\c!escape}% % new but rather useless imo (escaping in general is not used much)
- % nature {inline}% is default
+ % nature {\v!inline}% is default
method {nested}%
\relax
\dostoptagged
@@ -799,21 +799,6 @@
\setuevalue{\e!type\currenttyping\v!buffer}{\buff_verbatim_type_buffer_class{\currenttyping}}%
\to \everydefinetyping
-% \unexpanded\def\buff_verbatim_type_buffer[#1][#2]%
-% {\begingroup
-% \ifsecondargument
-% \setuptyping[\v!buffer][#2]%
-% \processcommalist[#1]{\buff_verbatim_type_buffer_indeed\v!buffer}% [name] [settings]
-% \else\iffirstargument
-% \doifelseassignment{#1}
-% {\setuptyping[\v!buffer][#1]%
-% \buff_verbatim_type_buffer_indeed\v!buffer\empty}% [settings]
-% {\processcommalist[#1]{\buff_verbatim_type_buffer_indeed\v!buffer}}% [name]
-% \else
-% \buff_verbatim_type_buffer_indeed\v!buffer\empty% []
-% \fi\fi
-% \endgroup}
-
\unexpanded\def\buff_verbatim_type_buffer[#1][#2]%
{\ifsecondargument
\setupcurrenttyping[#2]%
@@ -867,6 +852,27 @@
\stoppacked
\typingparameter\c!after}
+\unexpanded\def\typeinlinebuffer
+ {\dontleavehmode
+ \begingroup
+ \let\buff_verbatim_type_buffer_indeed\buff_verbatim_type_buffer_indeed_inline
+ \let\setupcurrenttyping\setupcurrenttype % a terrible hack but it saves code
+ \let\currenttype\v!buffer
+ \dodoubleempty\buff_verbatim_type_buffer}
+
+\unexpanded\def\buff_verbatim_type_buffer_indeed_inline#1#2% category name
+ {\doifsomething{#1}{\edef\currenttype{#1}}% probably this line can go
+ \buff_verbatim_initialize_type_one
+ \dostarttaggedchained\t!verbatim\currenttype\??type
+ \clf_typebuffer
+ name {#2}%
+ strip {\v!yes}%
+ regime {\currentregime}%
+ method {\p_buff_option}%
+ nature {\v!inline}%
+ \relax
+ \dostoptagged}
+
% get : before/after of buffer
% typing : before/after of typing
% process : no before/after (special case anyway)
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 9db1f59ae..d5ae4be08 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2017.08.01 18:10}
+\newcontextversion{2017.08.02 18:59}
%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 79d035edf..6c8b58ee3 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -41,7 +41,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2017.08.01 18:10}
+\edef\contextversion{2017.08.02 18:59}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/font-mis.lua b/tex/context/base/mkiv/font-mis.lua
index 401abbffa..f0afb35de 100644
--- a/tex/context/base/mkiv/font-mis.lua
+++ b/tex/context/base/mkiv/font-mis.lua
@@ -21,7 +21,7 @@ local readers = otf.readers
if readers then
- otf.version = otf.version or 3.100
+ otf.version = otf.version or 3.101
otf.cache = otf.cache or containers.define("fonts", "otl", otf.version, true)
function fonts.helpers.getfeatures(name,save)
diff --git a/tex/context/base/mkiv/font-osd.lua b/tex/context/base/mkiv/font-osd.lua
index 2ee8a2286..9adc8bff2 100644
--- a/tex/context/base/mkiv/font-osd.lua
+++ b/tex/context/base/mkiv/font-osd.lua
@@ -1586,7 +1586,7 @@ local function dev2_reorder(head,start,stop,font,attr,nbspaces) -- maybe do a pa
next = getnext(current)
local tmp = getnext(next)
local changestop = next == stop
- setnext(next,nil)
+ setnext(next)
setprop(current,a_state,s_pref)
current = processcharacters(current,font)
setprop(current,a_state,s_blwf)
diff --git a/tex/context/base/mkiv/font-otj.lua b/tex/context/base/mkiv/font-otj.lua
index 5ab9dd12b..8d95e115b 100644
--- a/tex/context/base/mkiv/font-otj.lua
+++ b/tex/context/base/mkiv/font-otj.lua
@@ -93,7 +93,17 @@ local insert_node_after = nuts.insert_after
local properties = nodes.properties.data
-local fontkern = nuts.pool and nuts.pool.fontkern -- context
+local fontkern = nuts.pool and nuts.pool.fontkern -- context
+local italickern = nuts.pool and nuts.pool.italickern -- context
+
+local useitalickerns = false
+
+directives.register("fonts.injections.useitalics", function(v)
+ if v then
+ report_injections("using italics for space kerns (tracing only)")
+ end
+ useitalickerns = v
+end)
do if not fontkern then -- generic
@@ -107,6 +117,16 @@ do if not fontkern then -- generic
return n
end
+ local thekern = nuts.new("kern",3) -- italiccorrection
+ local setkern = nuts.setkern
+ local copy_node = nuts.copy_node
+
+ italickern = function(k)
+ local n = copy_node(thekern)
+ setkern(n,k)
+ return n
+ end
+
end end
function injections.installnewkern() end -- obsolete
@@ -1560,6 +1580,7 @@ local function injectspaces(head)
local threshold = 0
local leftkern = false
local rightkern = false
+ local nuthead = tonut(head)
local function updatefont(font,trig)
leftkerns = trig.left
@@ -1569,8 +1590,7 @@ local function injectspaces(head)
factor = getthreshold(font)
end
- -- for n in traverse_id(glue_code,tonut(head)) do
- for n in traverse_char(tonut(head)) do
+ for n in traverse_id(glue_code,nuthead) do
local prev, next = getspaceboth(n)
local prevchar = prev and ischar(prev)
local nextchar = next and ischar(next)
@@ -1602,18 +1622,38 @@ local function injectspaces(head)
local old = getwidth(n)
if old > threshold then
if rightkern then
- local new = old + (leftkern + rightkern) * factor
- if trace_spaces then
- report_spaces("%C [%p -> %p] %C",prevchar,old,new,nextchar)
+ if useitalickerns then
+ local new = old + (leftkern + rightkern) * factor
+ if trace_spaces then
+ report_spaces("%C [%p -> %p] %C",prevchar,old,new,nextchar)
+ end
+ setwidth(n,new)
+ else
+ local new = (leftkern + rightkern) * factor
+ if trace_spaces then
+ report_spaces("%C [%p + %p] %C",prevchar,old,new,nextchar)
+ end
+ local h = insert_node_before(nuthead,n,italickern(new))
+ if h == nuthead then
+ head = tonode(h)
+ nuthead = h
+ end
end
- setwidth(n,new)
- leftkern = false
+ leftkern = false
else
- local new = old + leftkern * factor
- if trace_spaces then
- report_spaces("%C [%p -> %p]",prevchar,old,new)
+ if useitalickerns then
+ local new = leftkern * factor
+ if trace_spaces then
+ report_spaces("%C [%p + %p]",prevchar,old,new)
+ end
+ insert_node_after(nuthead,n,italickern(new)) -- tricky with traverse but ok
+ else
+ local new = old + leftkern * factor
+ if trace_spaces then
+ report_spaces("%C [%p -> %p]",prevchar,old,new)
+ end
+ setwidth(n,new)
end
- setwidth(n,new)
end
end
leftkern = false
diff --git a/tex/context/base/mkiv/font-otl.lua b/tex/context/base/mkiv/font-otl.lua
index 210611989..f6d99dbe0 100644
--- a/tex/context/base/mkiv/font-otl.lua
+++ b/tex/context/base/mkiv/font-otl.lua
@@ -52,7 +52,7 @@ local report_otf = logs.reporter("fonts","otf loading")
local fonts = fonts
local otf = fonts.handlers.otf
-otf.version = 3.100 -- beware: also sync font-mis.lua and in mtx-fonts
+otf.version = 3.101 -- beware: also sync font-mis.lua and in mtx-fonts
otf.cache = containers.define("fonts", "otl", otf.version, true)
otf.svgcache = containers.define("fonts", "svg", otf.version, true)
otf.sbixcache = containers.define("fonts", "sbix", otf.version, true)
diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua
index 00fd3dc26..98a9184ae 100644
--- a/tex/context/base/mkiv/font-ots.lua
+++ b/tex/context/base/mkiv/font-ots.lua
@@ -864,14 +864,24 @@ function handlers.gpos_pair(head,start,dataset,sequence,kerns,rlmode,step,i,inje
while snext do
local nextchar = ischar(snext,currentfont)
if nextchar then
- local krn = kerns[nextchar]
- if not krn and marks[nextchar] then
- -- hm, needs checking i guess
- prev = snext
+ -- local krn = kerns[nextchar]
+ -- if not krn and marks[nextchar] then
+ -- prev = snext
+ -- snext = getnext(snext)
+ -- elseif not krn then
+ -- break
+ -- else
+ if marks[nextchar] and sequence.flags[1] then
+ prev = snext
snext = getnext(snext)
- elseif not krn then
- break
+-- elseif sequence.markclass and sequence.markclass[nextchar] then
+-- prev = snext
+-- snext = getnext(snext)
else
+ local krn = kerns[nextchar]
+ if not krn then
+ break
+ end
local format = step.format
if format == "pair" then
local a, b = krn[1], krn[2]
@@ -1089,8 +1099,8 @@ function handlers.gpos_cursive(head,start,dataset,sequence,exitanchors,rlmode,st
local nextchar = ischar(nxt,currentfont)
if not nextchar then
break
- elseif marks[nextchar] then
- nxt = getnext(nxt)
+ elseif marks[nextchar] then -- always sequence.flags[1]
+ nxt = getnext(nxt)
else
local exit = exitanchors[3]
if exit then
@@ -1469,13 +1479,24 @@ function chainprocs.gpos_pair(head,start,stop,dataset,sequence,currentlookup,rlm
if not nextchar then
break
end
- local krn = kerns[nextchar]
- if not krn and marks[nextchar] then
- prev = snext
+ -- local krn = kerns[nextchar]
+ -- if not krn and marks[nextchar] then
+ -- prev = snext
+ -- snext = getnext(snext)
+ -- elseif not krn then
+ -- break
+ -- else
+ if marks[nextchar] and sequence.flags[1] then
+ prev = snext
snext = getnext(snext)
- elseif not krn then
- break
+-- elseif sequence.markclass and sequence.markclass[nextchar] then
+-- prev = snext
+-- snext = getnext(snext)
else
+ local krn = kerns[nextchar]
+ if not krn then
+ break
+ end
local format = step.format
if format == "pair" then
local a, b = krn[1], krn[2]
@@ -4089,7 +4110,7 @@ local function k_run_multiple(sub,injection,last,font,attr,steps,nofsteps,datase
local lookupcache = step.coverage
local lookupmatch = lookupcache[char]
if lookupmatch then
- local h, d, ok = handler(head,n,dataset,sequence,lookupmatch,rlmode,step,i,injection)
+ local h, d, ok = handler(sub,n,dataset,sequence,lookupmatch,rlmode,step,i,injection) -- sub was head
if ok then
return true
end
diff --git a/tex/context/base/mkiv/font-oup.lua b/tex/context/base/mkiv/font-oup.lua
index 5cc6a17dc..ce1dca724 100644
--- a/tex/context/base/mkiv/font-oup.lua
+++ b/tex/context/base/mkiv/font-oup.lua
@@ -2145,7 +2145,6 @@ local function mergesteps_1(lookup,strict)
return nofsteps - 1
end
-
local function mergesteps_2(lookup,strict) -- pairs
local steps = lookup.steps
local nofsteps = lookup.nofsteps
@@ -2165,9 +2164,9 @@ local function mergesteps_2(lookup,strict) -- pairs
for k, v in next, steps[i].coverage do
local tk = target[k]
if tk then
- for k, v in next, v do
- if not tk[k] then
- tk[k] = v
+ for kk, vv in next, v do
+ if tk[kk] == nil then
+ tk[kk] = vv
end
end
else
@@ -2176,7 +2175,8 @@ local function mergesteps_2(lookup,strict) -- pairs
end
end
lookup.nofsteps = 1
- lookup.steps = { first }
+ lookup.merged = true
+ lookup.steps = { first }
return nofsteps - 1
end
@@ -2216,6 +2216,7 @@ local function mergesteps_3(lookup,strict) -- marks
first.baseclasses = baseclasses
first.coverage = coverage
lookup.nofsteps = 1
+ lookup.merged = true
lookup.steps = { first }
return nofsteps - 1
end
@@ -2359,11 +2360,29 @@ local function checkpairs(lookup)
return kerned
end
-local compact_pairs = true
-local compact_singles = true
-
-directives.register("otf.compact.pairs", function(v) compact_pairs = v end)
-directives.register("otf.compact.singles", function(v) compact_singles = v end)
+local compact_pairs = true
+local compact_singles = true
+
+local merge_pairs = true
+local merge_singles = true
+local merge_substitutions = true
+local merge_alternates = true
+local merge_multiples = true
+local merge_ligatures = true
+local merge_cursives = true
+local merge_marks = true
+
+directives.register("otf.compact.pairs", function(v) compact_pairs = v end)
+directives.register("otf.compact.singles", function(v) compact_singles = v end)
+
+directives.register("otf.merge.pairs", function(v) merge_pairs = v end)
+directives.register("otf.merge.singles", function(v) merge_singles = v end)
+directives.register("otf.merge.substitutions", function(v) merge_substitutions = v end)
+directives.register("otf.merge.alternates", function(v) merge_alternates = v end)
+directives.register("otf.merge.multiples", function(v) merge_multiples = v end)
+directives.register("otf.merge.ligatures", function(v) merge_ligatures = v end)
+directives.register("otf.merge.cursives", function(v) merge_cursives = v end)
+directives.register("otf.merge.marks", function(v) merge_marks = v end)
function readers.compact(data)
if not data or data.compacted then
@@ -2385,24 +2404,44 @@ function readers.compact(data)
allsteps = allsteps + nofsteps
if nofsteps > 1 then
local merg = merged
- if kind == "gsub_single" or kind == "gsub_alternate" or kind == "gsub_multiple" then
- merged = merged + mergesteps_1(lookup)
+ if kind == "gsub_single" then
+ if merge_substitutions then
+ merged = merged + mergesteps_1(lookup)
+ end
+ elseif kind == "gsub_alternate" then
+ if merge_alternates then
+ merged = merged + mergesteps_1(lookup)
+ end
+ elseif kind == "gsub_multiple" then
+ if merge_multiples then
+ merged = merged + mergesteps_1(lookup)
+ end
elseif kind == "gsub_ligature" then
- merged = merged + mergesteps_4(lookup)
+ if merge_ligatures then
+ merged = merged + mergesteps_4(lookup)
+ end
elseif kind == "gpos_single" then
- merged = merged + mergesteps_1(lookup,true)
+ if merge_singles then
+ merged = merged + mergesteps_1(lookup,true)
+ end
if compact_singles then
kerned = kerned + checkkerns(lookup)
end
elseif kind == "gpos_pair" then
- merged = merged + mergesteps_2(lookup,true)
+ if merge_pairs then
+ merged = merged + mergesteps_2(lookup,true)
+ end
if compact_pairs then
kerned = kerned + checkpairs(lookup)
end
elseif kind == "gpos_cursive" then
- merged = merged + mergesteps_2(lookup)
+ if merge_cursives then
+ merged = merged + mergesteps_2(lookup)
+ end
elseif kind == "gpos_mark2mark" or kind == "gpos_mark2base" or kind == "gpos_mark2ligature" then
- merged = merged + mergesteps_3(lookup)
+ if merge_marks then
+ merged = merged + mergesteps_3(lookup)
+ end
end
if merg ~= merged then
lookup.merged = true
diff --git a/tex/context/base/mkiv/lang-lab.mkiv b/tex/context/base/mkiv/lang-lab.mkiv
index 40845be4a..b4875dd59 100644
--- a/tex/context/base/mkiv/lang-lab.mkiv
+++ b/tex/context/base/mkiv/lang-lab.mkiv
@@ -83,6 +83,8 @@
% hm, not interfaced
+\let\thetextprefix\empty
+
\unexpanded\def\lang_labels_define_class_indeed#1#2#3#4#5#6#7#8#9%
{\setuvalue{setup#1text}{\protecttextprefixes#2\def\currenttextprefixclass{#1}\dodoubleempty\lang_labels_text_prefix_setup}%
\setuvalue{preset#1text}{\protecttextprefixes1\def\currenttextprefixclass{#1}\dodoubleempty\lang_labels_text_prefix_setup}%
diff --git a/tex/context/base/mkiv/lang-mis.mkiv b/tex/context/base/mkiv/lang-mis.mkiv
index ada8f81ea..e8609ec04 100644
--- a/tex/context/base/mkiv/lang-mis.mkiv
+++ b/tex/context/base/mkiv/lang-mis.mkiv
@@ -266,6 +266,9 @@
\futurelet\nextnext\next}%
\next}
+\let\discretionarytoken \relax
+\let\textmodediscretionary\relax
+
\unexpanded\def\activedododotextmodediscretionary#1#2%
{\edef\discretionarytoken{\detokenize{#2}}%
\def\textmodediscretionary{\handletextmodediscretionary{#1}}%
diff --git a/tex/context/base/mkiv/lxml-ini.mkiv b/tex/context/base/mkiv/lxml-ini.mkiv
index f97857fbe..d4616edca 100644
--- a/tex/context/base/mkiv/lxml-ini.mkiv
+++ b/tex/context/base/mkiv/lxml-ini.mkiv
@@ -147,6 +147,21 @@
{\xmltobuffertextonly{#1}{.}{\xmltempbuffername}%
\prettyprintbuffer\xmltempbuffername{#2}}
+\unexpanded\def\inlineprettyprintbuffer#1#2% only used here
+ {\ifdefined\sciteinlinebuffer
+ \sciteinlinebuffer[#2][#1]%
+ \else
+ \typeinlinebuffer[#1][\c!option=#2]%
+ \fi}
+
+\unexpanded\def\xmlinlineprettyprint#1#2%
+ {\xmltobufferverbose{#1}{.}{\xmltempbuffername}%
+ \inlineprettyprintbuffer\xmltempbuffername{#2}}
+
+\unexpanded\def\xmlinlineprettyprinttext#1#2%
+ {\xmltobuffertextonly{#1}{.}{\xmltempbuffername}%
+ \inlineprettyprintbuffer\xmltempbuffername{#2}}
+
% kind of special:
\let\xmlstartraw\clf_xmlstartraw
diff --git a/tex/context/base/mkiv/page-box.mkvi b/tex/context/base/mkiv/page-box.mkvi
index fa85aef68..083a94390 100644
--- a/tex/context/base/mkiv/page-box.mkvi
+++ b/tex/context/base/mkiv/page-box.mkvi
@@ -133,6 +133,10 @@
\page_boxes_apply_negate#box%
\fi\fi}
+\let\p_page_layouts_scale\relax
+\let\p_page_layouts_sx \relax
+\let\p_page_layouts_sy \relax
+
\def\page_boxes_apply_scale#box%
{\edef\p_page_layouts_scale{\layoutparameter\c!scale}%
\ifdim\p_page_layouts_scale\points=\onepoint
diff --git a/tex/context/base/mkiv/page-flt.mkiv b/tex/context/base/mkiv/page-flt.mkiv
index c514496df..aafa15287 100644
--- a/tex/context/base/mkiv/page-flt.mkiv
+++ b/tex/context/base/mkiv/page-flt.mkiv
@@ -264,6 +264,8 @@
\doifnotinset\v!low\floatspecification\vfill}%
\page_otr_fill_and_eject_page}
+\let\m_page_otf_checked_page_float\relax
+
\unexpanded\def\page_floats_flush_page_floats % used in postpone
{\edef\m_page_otf_checked_page_float{\clf_checkedpagefloat}%
\ifx\m_page_otf_checked_page_float\empty
diff --git a/tex/context/base/mkiv/page-txt.mkvi b/tex/context/base/mkiv/page-txt.mkvi
index b67e3aa74..92d6d288b 100644
--- a/tex/context/base/mkiv/page-txt.mkvi
+++ b/tex/context/base/mkiv/page-txt.mkvi
@@ -482,6 +482,8 @@
\c!rightstyle\c!rightcolor\c!rightwidth{#one}}%
\fi\fi\fi}
+\let\currentlayoutelement\relax
+
\unexpanded\def\resettextcontent
{\dotripleempty\page_layouts_reset_text_content}
@@ -502,6 +504,8 @@
%D The placement of a whole line is handled by the next two macros. These are hooked
%D into the general purpose token list registers mentioned before.
+\let\currentlayouttextline\relax
+
\def\page_layouts_place_text_line_indeed#vertical#height%
{\let\currentlayouttextline#vertical%
\ifdim#height>\zeropoint\relax % prevents pagenumbers when zero height
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 2a9b3c599..c210fae43 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 b06dabfea..cebe52549 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/syst-aux.mkiv b/tex/context/base/mkiv/syst-aux.mkiv
index 956cfa9f3..5fd515da9 100644
--- a/tex/context/base/mkiv/syst-aux.mkiv
+++ b/tex/context/base/mkiv/syst-aux.mkiv
@@ -282,6 +282,15 @@
%D {\localnext} because we don't want clashes with \type
%D {\next}.
+\let\next \relax
+\let\nextnext \relax
+\let\nextnextnext \relax
+\let\nexttoken \relax
+\let\charactertoken\relax
+
+\let\m_syst_action_yes\relax
+\let\m_syst_action_nop\relax
+
\unexpanded\def\doifelsenextchar#1#2#3% #1 should not be {} !
{\let\charactertoken=#1% = needed here
\def\m_syst_action_yes{#2}%
diff --git a/tex/context/interface/mkiv/context-en.xml b/tex/context/interface/mkiv/context-en.xml
index 341011255..2f03a27fd 100644
--- a/tex/context/interface/mkiv/context-en.xml
+++ b/tex/context/interface/mkiv/context-en.xml
@@ -3016,6 +3016,16 @@
</cd:assignments>
</cd:arguments>
</cd:command>
+ <cd:command file="buff-ver.mkiv" level="document" name="typeinlinebuffer">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:buffer"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
<cd:command file="buff-ver.mkiv" generated="yes" level="document" name="typebuffer" variant="instance">
<cd:sequence>
<cd:string value="type"/>
diff --git a/tex/context/interface/mkiv/i-buffer.xml b/tex/context/interface/mkiv/i-buffer.xml
index b99d2886b..cc8686494 100644
--- a/tex/context/interface/mkiv/i-buffer.xml
+++ b/tex/context/interface/mkiv/i-buffer.xml
@@ -164,7 +164,7 @@
</cd:arguments>
</cd:command>
- <cd:command name="getbufferdata" file="buff-ini.mkiv">
+ <cd:command name="getbufferdata" file="buff-ini.mkiv">
<cd:arguments>
<cd:resolve name="keyword-buffer-optional"/>
</cd:arguments>
@@ -179,6 +179,15 @@
</cd:arguments>
</cd:command>
+ <cd:command name="typeinlinebuffer" level="document" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-list-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
<cd:command name="typebuffer" generated="yes" variant="instance" level="document" file="buff-ver.mkiv">
<cd:sequence>
<cd:string value="type"/>
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index 1ebc5d003..23591e183 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-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index 2c67171b8..e3e3d744e 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/mkiv/m-scite.mkiv b/tex/context/modules/mkiv/m-scite.mkiv
index a7d9f8b5c..516f3ce54 100644
--- a/tex/context/modules/mkiv/m-scite.mkiv
+++ b/tex/context/modules/mkiv/m-scite.mkiv
@@ -254,7 +254,7 @@ end
{\dosingleargument\module_scite_file}
\unexpanded\def\module_scite_file[#1]%
- {\start
+ {\begingroup
\ctxlua{buffers.scite.lexfile("#1")}%
\installscitecommands
\tt
@@ -265,13 +265,13 @@ end
\getbuffer[lex]
\stoplines
\stopcontextcode
- \stop}
+ \endgroup}
\unexpanded\def\scitebuffer
{\dodoubleargument\module_scite_buffer}
\unexpanded\def\module_scite_buffer[#1][#2]%
- {\start
+ {\begingroup
\ifsecondargument
\ctxlua{buffers.scite.lexbuffer("#2","#1")}%
\else
@@ -285,7 +285,25 @@ end
\startlines
\getbuffer[lex]%
\stoplines
- \stop}
+ \endgroup}
+
+\unexpanded\def\sciteinlinebuffer
+ {\dodoubleargument\module_scite_buffer_inline}
+
+\unexpanded\def\module_scite_buffer[#1][#2]%
+ {\dontleavehmode
+ \begingroup
+ \ifsecondargument
+ \ctxlua{buffers.scite.lexbuffer("#2","#1")}%
+ \else
+ \ctxlua{buffers.scite.lexbuffer("#1","tex")}%
+ \fi
+ \installscitecommands
+ \tt
+ \dontcomplain
+ \setcatcodetable\ctxcatcodes % needed in xml
+ \getbuffer[lex]%
+ \endgroup}
\protect
diff --git a/tex/context/modules/mkiv/s-fnt-20.mkiv b/tex/context/modules/mkiv/s-fnt-20.mkiv
index 5d6ac75ef..486c8ad7f 100644
--- a/tex/context/modules/mkiv/s-fnt-20.mkiv
+++ b/tex/context/modules/mkiv/s-fnt-20.mkiv
@@ -123,19 +123,23 @@
\setupcolors
[state=start]
+\startsetups otftracker-steps
+ \doifsomething {\getvariable{otftracker}{figure}} {
+ \startlinecorrection
+ \externalfigure[\getvariable{otftracker}{figure}][maxwidth=\hsize,frame=on]
+ \stoplinecorrection
+ }
+ \showotfcomposition
+ {\getvariable{otftracker}{font}*\getvariable{otftracker}{features} at \getvariable{otftracker}{size}}
+ {\getvariable{otftracker}{direction}}
+ {\getvariable{otftracker}{sample}}
+\stopsetups
+
\startsetups otftracker
\setupbodyfont[tt,10pt]
\starttext
\normalexpanded{\startchapter[title={\getvariable{otftracker}{title}}]}
- \doifsomething {\getvariable{otftracker}{figure}} {
- \startlinecorrection
- \externalfigure[\getvariable{otftracker}{figure}][maxwidth=\hsize,frame=on]
- \stoplinecorrection
- }
- \showotfcomposition
- {\getvariable{otftracker}{font}*\getvariable{otftracker}{features} at \getvariable{otftracker}{size}}
- {\getvariable{otftracker}{direction}}
- {\getvariable{otftracker}{sample}}
+ \directsetup{otftracker-steps}
\directsetup{otftracker-extra}
\stopchapter
\stoptext