From f34b1249e3ad9bcbe34323c6daf0ad3174190649 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Sun, 15 Oct 2017 13:10:46 +0200 Subject: 2017-10-15 12:34:00 --- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-cs.mkii | 1 + tex/context/base/mkii/mult-de.mkii | 1 + tex/context/base/mkii/mult-ro.mkii | 1 + tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 3 +- tex/context/base/mkiv/font-ots.lua | 123 ++- tex/context/base/mkiv/meta-imp-nodes.mkiv | 39 - tex/context/base/mkiv/meta-nod.mkiv | 39 + tex/context/base/mkiv/mult-def.lua | 3 + tex/context/base/mkiv/mult-low.lua | 2 +- tex/context/base/mkiv/mult-prm.lua | 1 - tex/context/base/mkiv/mult-prm.mkiv | 55 +- tex/context/base/mkiv/page-sid.mkiv | 196 ++-- tex/context/base/mkiv/spac-ver.mkiv | 18 + tex/context/base/mkiv/status-files.pdf | Bin 25730 -> 25716 bytes tex/context/base/mkiv/status-lua.pdf | Bin 245447 -> 245458 bytes tex/context/base/mkiv/strc-flt.mkvi | 3 +- tex/context/base/mkiv/tabl-mis.mkiv | 8 +- tex/context/interface/mkii/keys-cs.xml | 1 + tex/context/interface/mkii/keys-de.xml | 1 + tex/context/interface/mkii/keys-ro.xml | 1 + tex/context/interface/mkiv/context-en.xml | 1033 +------------------- tex/context/interface/mkiv/i-context.pdf | Bin 818494 -> 803360 bytes tex/context/interface/mkiv/i-floats.xml | 5 + tex/context/interface/mkiv/i-readme.pdf | Bin 60767 -> 60768 bytes tex/context/interface/mkiv/i-strut.xml | 5 + tex/generic/context/luatex/luatex-fonts-merged.lua | 116 ++- 29 files changed, 399 insertions(+), 1262 deletions(-) delete mode 100644 tex/context/base/mkiv/meta-imp-nodes.mkiv create mode 100644 tex/context/base/mkiv/meta-nod.mkiv (limited to 'tex') diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 1fc148a68..49269493e 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.10.10 12:00} +\newcontextversion{2017.10.15 12:29} %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 8467e6ef8..0375b1b7a 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.10.10 12:00} +\edef\contextversion{2017.10.15 12:29} %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 b57c8ece5..85297dd12 100644 --- a/tex/context/base/mkii/mult-cs.mkii +++ b/tex/context/base/mkii/mult-cs.mkii @@ -1150,6 +1150,7 @@ \setinterfaceconstant{sidemethod}{sidemethod} \setinterfaceconstant{sidespaceafter}{bocnimezeraza} \setinterfaceconstant{sidespacebefore}{bocnimezerapred} +\setinterfaceconstant{sidethreshold}{sidethreshold} \setinterfaceconstant{sign}{znak} \setinterfaceconstant{size}{velikost} \setinterfaceconstant{slantedfeatures}{slantedfeatures} diff --git a/tex/context/base/mkii/mult-de.mkii b/tex/context/base/mkii/mult-de.mkii index de622fc76..3fd291e1e 100644 --- a/tex/context/base/mkii/mult-de.mkii +++ b/tex/context/base/mkii/mult-de.mkii @@ -1150,6 +1150,7 @@ \setinterfaceconstant{sidemethod}{sidemethod} \setinterfaceconstant{sidespaceafter}{nebennachspatium} \setinterfaceconstant{sidespacebefore}{nebenvorspatium} +\setinterfaceconstant{sidethreshold}{sidethreshold} \setinterfaceconstant{sign}{zeichen} \setinterfaceconstant{size}{groesse} \setinterfaceconstant{slantedfeatures}{slantedfeatures} diff --git a/tex/context/base/mkii/mult-ro.mkii b/tex/context/base/mkii/mult-ro.mkii index bceff14e4..c7fbc8a40 100644 --- a/tex/context/base/mkii/mult-ro.mkii +++ b/tex/context/base/mkii/mult-ro.mkii @@ -1150,6 +1150,7 @@ \setinterfaceconstant{sidemethod}{sidemethod} \setinterfaceconstant{sidespaceafter}{spatiulateraldupa} \setinterfaceconstant{sidespacebefore}{spatiulateralinainte} +\setinterfaceconstant{sidethreshold}{sidethreshold} \setinterfaceconstant{sign}{semn} \setinterfaceconstant{size}{dimensiune} \setinterfaceconstant{slantedfeatures}{slantedfeatures} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index f61d816f5..07bfb94c5 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.10.10 12:00} +\newcontextversion{2017.10.15 12:29} %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 8eb7bd70f..cd0da3d95 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.10.10 12:00} +\edef\contextversion{2017.10.15 12:29} \edef\contextkind {beta} %D For those who want to use this: @@ -454,6 +454,7 @@ \loadmarkfile{meta-pag} \loadmarkfile{meta-grd} \loadmarkfile{meta-fnt} +\loadmarkfile{meta-nod} \loadmarkfile{page-mrk} % depends on mp diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua index 55c5354da..2e82de21a 100644 --- a/tex/context/base/mkiv/font-ots.lua +++ b/tex/context/base/mkiv/font-ots.lua @@ -2080,7 +2080,7 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck) if current then -- go on elseif sweepoverflow then - -- we already are folling up on sweepnode + -- we already are following up on sweepnode break elseif sweeptype == "post" or sweeptype == "replace" then current = getnext(sweepnode) @@ -3069,6 +3069,9 @@ local function kernrun(disc,k_run,font,attr,...) end setlink(prev,disc,next) end + if done and trace_testruns then + report_disc("done",disc) + end return nextstart, done end @@ -3116,6 +3119,9 @@ local function comprun(disc,c_run,...) -- vararg faster than the whole list sweepnode = nil sweeptype = nil if renewed then + if trace_testruns then + report_disc("done",disc) + end setdisc(disc,pre,post,replace) end -- @@ -3135,6 +3141,7 @@ local function testrun(disc,t_run,c_run,...) return end local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true) + local renewed = false if (post or replace) and prev then if post then setlink(posttail,next) @@ -3153,12 +3160,17 @@ local function testrun(disc,t_run,c_run,...) local head = getnext(disc) -- is: next local tail = head for i=1,d do - tail = getnext(tail) - if getid(tail) == disc_code then - head, tail = flattendisk(head,tail) + local nx = getnext(tail) + local id = getid(nx) + if id == disc_code then + head, tail = flattendisk(head,nx) + elseif id == glyph_code then + tail = nx + else + -- we can have overrun into a glue + break end end --- local next = getnext(tail) next = getnext(tail) setnext(tail) setprev(head) @@ -3173,7 +3185,6 @@ local function testrun(disc,t_run,c_run,...) else replace = new end --- setlink(disc,next) else -- we stay inside the disc if posttail then @@ -3186,15 +3197,16 @@ local function testrun(disc,t_run,c_run,...) else replace = nil end --- setprev(next,disc) -- setlink(dics,next) end -setlink(disc,next) + setlink(disc,next) -- pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true) end -- -- like comprun -- - local renewed = false + if trace_testruns then + report_disc("more",disc) + end -- if pre then sweepnode = disc @@ -3230,6 +3242,9 @@ setlink(disc,next) sweeptype = nil if renewed then setdisc(disc,pre,post,replace) + if trace_testruns then + report_disc("done",disc) + end end -- next can have changed (copied list) return getnext(disc), renewed @@ -3273,7 +3288,7 @@ local function c_run_single(head,font,attr,lookupcache,step,dataset,sequence,rlm start = head end while start do - local char = ischar(start,font) + local char, id = ischar(start,font) if char then local a -- happens often so no assignment is faster if attr then @@ -3332,7 +3347,7 @@ local function t_run_single(start,stop,font,attr,lookupcache) ss = nil end -- a bit weird: why multiple ... anyway we can't have a disc in a disc - -- how about post ... + -- how about post ... we can probably merge this into the while while getid(s) == disc_code do ss = getnext(s) s = getfield(s,"replace") @@ -3344,40 +3359,48 @@ local function t_run_single(start,stop,font,attr,lookupcache) local l = nil local d = 0 while s do - local lg = lookupmatch[getchar(s)] - if lg then - if sstop then - d = 1 - elseif d > 0 then - d = d + 1 - end - l = lg - s = getnext(s) - sstop = s == stop - if not s then - s = ss - ss = nil - end - while getid(s) == disc_code do - ss = getnext(s) - s = getfield(s,"replace") + local char = ischar(s,font) + if char then + local lg = lookupmatch[char] + if lg then + if sstop then + d = 1 + elseif d > 0 then + d = d + 1 + end + l = lg + s = getnext(s) + sstop = s == stop if not s then s = ss ss = nil end + while getid(s) == disc_code do + ss = getnext(s) + s = getfield(s,"replace") + if not s then + s = ss + ss = nil + end + end + else + break end else break end end - if l and l.ligature then + if l and l.ligature then -- so we test for ligature lastd = d end +-- why not: if not l then break elseif l.ligature then return d end else +-- why not: break -- no match (yet) end else -- go on can be a mixed one +-- why not: break end if lastd then return lastd @@ -3505,27 +3528,32 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps) local l = nil local d = 0 while s do - local lg = lookupmatch[getchar(s)] - if lg then - if sstop then - d = 1 - elseif d > 0 then - d = d + 1 - end - l = lg - s = getnext(s) - sstop = s == stop - if not s then - s = ss - ss = nil - end - while getid(s) == disc_code do - ss = getnext(s) - s = getfield(s,"replace") + local char = ischar(s) + if char then + local lg = lookupmatch[char] + if lg then + if sstop then + d = 1 + elseif d > 0 then + d = d + 1 + end + l = lg + s = getnext(s) + sstop = s == stop if not s then s = ss ss = nil end + while getid(s) == disc_code do + ss = getnext(s) + s = getfield(s,"replace") + if not s then + s = ss + ss = nil + end + end + else + break end else break @@ -3660,7 +3688,6 @@ do local testdics = false directives.register("otf.fastdisc",function(v) fastdisc = v end) -- normally enabled - directives.register("otf.testdisc",function(v) testdisc = v end) -- only for myself -- using a merged combined hash as first test saves some 30% on ebgaramond and -- about 15% on arabtype .. then moving the a test also saves a bit (even when @@ -3750,7 +3777,7 @@ do local topstack = 0 local typ = sequence.type local gpossing = typ == "gpos_single" or typ == "gpos_pair" -- store in dataset - local forcetestrun = testdisc or typ == "gsub_ligature" + local forcetestrun = typ == "gsub_ligature" -- testrun is only for ligatures local handler = handlers[typ] -- store in dataset local steps = sequence.steps local nofsteps = sequence.nofsteps diff --git a/tex/context/base/mkiv/meta-imp-nodes.mkiv b/tex/context/base/mkiv/meta-imp-nodes.mkiv deleted file mode 100644 index 557eac2cc..000000000 --- a/tex/context/base/mkiv/meta-imp-nodes.mkiv +++ /dev/null @@ -1,39 +0,0 @@ -%D \module -%D [ file=meta-imp-nodes, -%D version=2016.11.23, -%D title=\METAPOST\ Graphics, -%D subtitle=Nodes, -%D author=Alan Braslau and Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -%D We might add more here. Also, the node module might get preloaded in -%D all instances. - -\unprotect - -\defineMPinstance - [nodes] - [\s!format=metafun, - \s!extensions=\v!yes, - \s!initializations=\v!yes, - \c!method=\s!double] - -\defineframed - [node] - [\c!frame=\v!off] - -\defineframed - [smallnode] - [node] - [\c!foregroundstyle=\small] - -\startMPdefinitions{nodes} - loadmodule "node" ; -\stopMPdefinitions - -\protect diff --git a/tex/context/base/mkiv/meta-nod.mkiv b/tex/context/base/mkiv/meta-nod.mkiv new file mode 100644 index 000000000..1c6f1309d --- /dev/null +++ b/tex/context/base/mkiv/meta-nod.mkiv @@ -0,0 +1,39 @@ +%D \module +%D [ file=meta-nod, +%D version=2016.11.23, +%D title=\METAPOST\ Graphics, +%D subtitle=Nodes, +%D author=Alan Braslau and Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +%D We might add more here. Also, the node module might get preloaded in +%D all instances. + +\unprotect + +\defineMPinstance + [nodes] + [\s!format=metafun, + \s!extensions=\v!yes, + \s!initializations=\v!yes, + \c!method=\s!double] + +\defineframed + [node] + [\c!frame=\v!off] + +\defineframed + [smallnode] + [node] + [\c!foregroundstyle=\small] + +% \startMPdefinitions{nodes} +% loadmodule "node" ; +% \stopMPdefinitions + +\protect diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua index c12040708..05b6a0387 100644 --- a/tex/context/base/mkiv/mult-def.lua +++ b/tex/context/base/mkiv/mult-def.lua @@ -11036,6 +11036,9 @@ return { ["threshold"]={ ["en"]="threshold", }, + ["sidethreshold"]={ + ["en"]="sidethreshold", + }, ["displaythreshold"]={ ["en"]="displaythreshold", }, diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua index 6b7bf47b3..55edc191c 100644 --- a/tex/context/base/mkiv/mult-low.lua +++ b/tex/context/base/mkiv/mult-low.lua @@ -340,7 +340,7 @@ return { -- "offinterlineskip", "oninterlineskip", "nointerlineskip", -- - "strut", "halfstrut", "quarterstrut", "depthstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight", + "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", -- "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua index cf12388a0..7482d08ec 100644 --- a/tex/context/base/mkiv/mult-prm.lua +++ b/tex/context/base/mkiv/mult-prm.lua @@ -1,6 +1,5 @@ return { ["aleph"]={ - "AlephVersion", "Alephminorversion", "Alephrevision", "Alephversion", diff --git a/tex/context/base/mkiv/mult-prm.mkiv b/tex/context/base/mkiv/mult-prm.mkiv index 60ec26fe7..fb71878d8 100644 --- a/tex/context/base/mkiv/mult-prm.mkiv +++ b/tex/context/base/mkiv/mult-prm.mkiv @@ -31,22 +31,14 @@ context.starttext() - function table.sorted(t) - table.sort(t) - return t - end - local missing = { tex = { - "def", "catcode", "futurelet", "chardef", - "voffset", "hoffset", - "numexpr", "dimexpr", - "write", "dump", "skipdef," }, etex = { - "savingvdiscards", }, - pdftex = { + luatex = { + }, + pdftex = { -- maybe not complete "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "pdfadjustspacing", "pdfannot", "pdfcatalog", "pdfcolorstack", "pdfcolorstackinit", "pdfcompresslevel", "pdfcopyfont", "pdfcreationdate", @@ -77,35 +69,32 @@ "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage", }, - luatex = { - }, - aleph = { - "AlephVersion", "Alephminorversion", "Alephrevision", "Alephversion", + aleph = { -- we don't bother + "Alephminorversion", "Alephrevision", "Alephversion", }, - omega = { + omega = { -- we don't bother "Omegaminorversion", "Omegarevision", "Omegaversion", }, - xetex = { - "XeTeXversion", -- probably some more - }, - plain = { - "TeX", - "bgroup", "egroup", "endgraf", "space", "empty", "null", - "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newhelp", "newread", "newwrite", "newfam", "newlanguage", "newinsert", "newif", - "maxdimen", "magstephalf", "magstep", - "frenchspacing", "nonfrenchspacing", "normalbaselines", "obeylines", "obeyspaces", "raggedright", "ttraggedright", - "thinspace", "negthinspace", "enspace", "enskip", "quad", "qquad", - "smallskip", "medskip", "bigskip", "removelastskip", "topglue", "vglue", "hglue", - "break", "nobreak", "allowbreak", "filbreak", "goodbreak", "smallbreak", "medbreak", "bigbreak", - "line", "leftline", "rightline", "centerline", "rlap", "llap", "underbar", "strutbox", "strut", - "cases", "matrix", "pmatrix", "bordermatrix", "eqalign", "displaylines", "eqalignno", "leqalignno", - "pageno", "folio", "tracingall", "showhyphens", "fmtname", "fmtversion", - "hphantom", "vphantom", "phantom", "smash", + xetex = { -- we don't bother + "XeTeXversion", }, + -- plain = { + -- "TeX", + -- "bgroup", "egroup", "endgraf", "space", "empty", "null", + -- "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newhelp", "newread", "newwrite", "newfam", "newlanguage", "newinsert", "newif", + -- "maxdimen", "magstephalf", "magstep", + -- "frenchspacing", "nonfrenchspacing", "normalbaselines", "obeylines", "obeyspaces", "raggedright", "ttraggedright", + -- "thinspace", "negthinspace", "enspace", "enskip", "quad", "qquad", + -- "smallskip", "medskip", "bigskip", "removelastskip", "topglue", "vglue", "hglue", + -- "break", "nobreak", "allowbreak", "filbreak", "goodbreak", "smallbreak", "medbreak", "bigbreak", + -- "line", "leftline", "rightline", "centerline", "rlap", "llap", "underbar", "strutbox", "strut", + -- "cases", "matrix", "pmatrix", "bordermatrix", "eqalign", "displaylines", "eqalignno", "leqalignno", + -- "pageno", "folio", "tracingall", "showhyphens", "fmtname", "fmtversion", + -- "hphantom", "vphantom", "phantom", "smash", + -- }, } local primitives = { - -- tex = table.sorted( table.merged( missing.tex , tex.primitives() ) ), tex = table.sorted( table.merged( missing.tex , tex.extraprimitives("core","tex") ) ), etex = table.sorted( table.merged( missing.etex , tex.extraprimitives("etex") ) ), pdftex = table.sorted( table.merged( missing.pdftex, { } ) ), diff --git a/tex/context/base/mkiv/page-sid.mkiv b/tex/context/base/mkiv/page-sid.mkiv index 50023c2e8..477675ce6 100644 --- a/tex/context/base/mkiv/page-sid.mkiv +++ b/tex/context/base/mkiv/page-sid.mkiv @@ -193,19 +193,29 @@ \def\page_sides_flush_floats {\par - \ifdim\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal\relax>\zeropoint - \page_sides_flush_floats_indeed - \else - % no need as the par just fits next to the previous float + \ifdim\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal\relax>\zeropoint % -\pagedepth + \page_sides_flush_floats_progress + \page_sides_flush_floats_after_next + \fi + \page_sides_flush_floats_reset} + +\def\page_sides_flush_floats_text + {\par + \ifdim\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal\relax>\zeropoint % -\pagedepth + \page_sides_flush_floats_progress + \page_sides_flush_floats_after_none \fi + \page_sides_flush_floats_reset} + +\def\page_sides_flush_floats_reset + {\global\d_page_sides_vsize\d_page_sides_vsize_reset % also here if used at all \global\holdinginserts\zerocount - \global\d_page_sides_vsize\d_page_sides_vsize_reset \global\setfalse\c_page_sides_short \global\setfalse\c_page_sides_flag} \unexpanded\def\doifelsesidefloat {\par - \ifdim\dimexpr\d_page_sides_vsize-\pagetotal\relax>\zeropoint + \ifdim\dimexpr\d_page_sides_vsize-\pagetotal\relax>\zeropoint % -\pagedepth \expandafter\firstoftwoarguments \else \expandafter\secondoftwoarguments @@ -217,70 +227,86 @@ \setvalue{\??sidefloatsteps\v!line }{\strut} \setvalue{\??sidefloatsteps\v!big }{\strut} -\setvalue{\??sidefloatsteps\v!medium}{\halfstrut} -\setvalue{\??sidefloatsteps\v!small }{\quarterstrut} -\setvalue{\??sidefloatsteps\v!depth }{\depthstrut} +\setvalue{\??sidefloatsteps\v!medium}{\halflinestrut} % was \halfstrut +\setvalue{\??sidefloatsteps\v!small }{\noheightstrut} % was \quarterstrut % we don't officially know what kind of float we flush -\def\page_sides_flush_floats_blank#1% we need to deal with the distance - {\ifdim\d_page_sides_bottomskip>\d_page_sides_topskip - \blank[% - \ifnum#1>\zerocount\v!nowhite,\fi - \ifdim\d_page_sides_topskip >\zeropoint-\rootfloatparameter\c!sidespacebefore,\fi % the next one - \ifdim\d_page_sides_bottomskip>\zeropoint \rootfloatparameter\c!sidespaceafter \fi - ]% - \else\ifdim\d_page_sides_bottomskip<\d_page_sides_topskip - \blank[% - \ifnum#1>\zerocount\v!nowhite,\fi - \ifdim\d_page_sides_bottomskip>\zeropoint -\rootfloatparameter\c!sidespaceafter ,\fi - \ifdim\d_page_sides_topskip >\zeropoint \rootfloatparameter\c!sidespacebefore \fi - ]% - \fi\fi} - \def\page_sides_flush_floats_tracer {\dontleavehmode \ruledhpack\bgroup\backgroundline[trace:b]{% + \llap{\smash{\vrule\s!width4\points\s!height.4\points\s!depth.4\points}}% \ifnum\recurselevel=\plusone - \llap{{\smallinfofont\the\scratchdimen}\hskip.5\leftmargindistance}% + \llap{\smash{\smallinfofont\the\scratchdimen}\hskip.5\leftmargindistance}% \else\ifodd\recurselevel - \llap{{\smallinfofont\recurselevel}\hskip.5\leftmargindistance}% + \llap{\smash{\smallinfofont\recurselevel}\hskip.5\leftmargindistance}% \fi\fi - \m_pages_strut + \page_sides_flush_floats_normal \kern\hsize \egroup}} -\def\page_sides_flush_floats_indeed - {% the \d_page_sides_bottomskip == \rootfloatparameter\c!sidespaceafter is embedded - % in the progression of the float - \begingroup +\def\page_sides_flush_floats_normal + {\ifdim\scratchdimen>\htdp\strutbox + \strut + \else + \m_pages_strut + \fi} + +% the \d_page_sides_bottomskip == \rootfloatparameter\c!sidespaceafter is embedded +% in the progression of the float + +\def\page_sides_flush_floats_progress + {\begingroup \let\page_sides_flush_floats\relax \edef\m_pages_strut {\ifcsname\??sidefloatsteps\rootfloatparameter\c!step\endcsname \lastnamedcs \else - \strut - \fi}% + \noheightstrut + \fi}% \forgetall + \offinterlineskip \doloop - {\scratchdimen\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal\relax - \iftracesidefloats - \page_sides_flush_floats_tracer - \else - \m_pages_strut - \fi - \par - \nointerlineskip - \ifdim\scratchdimen>\zeropoint + {\scratchdimen\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal-\pagedepth\relax + \ifdim\scratchdimen>\onepoint % good enough, if we change it it will become a threshold \ifnum\recurselevel>\plushundred % safeguard, sort of deadcycles \exitloop - \fi + \else\iftracesidefloats + \page_sides_flush_floats_tracer\par + \else + \page_sides_flush_floats_normal\par + \fi\fi \else \exitloop \fi}% - \endgroup - % we're going to add top space anyway so .... - \ifdim\parskip>\zeropoint % why this test ? + \endgroup} + +\def\page_sides_flush_floats_after_none + {\ifdim\parskip>\zeropoint % why this test ? + \ifdim\d_page_sides_bottomskip>\parskip + \blank[\v!nowhite,\rootfloatparameter\c!sidespaceafter]% + \fi + \else + \blank[\rootfloatparameter\c!sidespaceafter]% + \fi} + +\def\page_sides_flush_floats_blank#1% we need to deal with the distance + {\ifdim\d_page_sides_bottomskip>\d_page_sides_topskip + \blank[% + \ifnum#1>\zerocount\v!nowhite,\fi + \ifdim\d_page_sides_topskip >\zeropoint-\rootfloatparameter\c!sidespacebefore,\fi % the next one + \ifdim\d_page_sides_bottomskip>\zeropoint \rootfloatparameter\c!sidespaceafter \fi + ]% + \else\ifdim\d_page_sides_bottomskip<\d_page_sides_topskip + \blank[% + \ifnum#1>\zerocount\v!nowhite,\fi + \ifdim\d_page_sides_bottomskip>\zeropoint -\rootfloatparameter\c!sidespaceafter ,\fi + \ifdim\d_page_sides_topskip >\zeropoint \rootfloatparameter\c!sidespacebefore \fi + ]% + \fi\fi} + +\def\page_sides_flush_floats_after_next + {\ifdim\parskip>\zeropoint % why this test ? \ifdim\d_page_sides_bottomskip>\parskip \page_sides_flush_floats_blank\plusone \fi @@ -405,15 +431,18 @@ \def\page_sides_apply_vertical_shift_traced {\global\setbox\floatbox\hpack % why extra box {\backgroundline[trace:r]{\ruledhpack{\vpack - {\hsize\wd\floatbox + {\forgetall + \hsize\wd\floatbox \vskip\privatescratchdimen - \nointerlineskip - \backgroundline[trace:g]{\ruledhpack{\box\floatbox}}% + \offinterlineskip + \backgroundline[trace:g]{\ruledhpack{\box\floatbox}}\par + \blackrule[\c!color=trace:s,\c!height=\d_page_sides_bottomskip,\c!depth=\zeropoint,\c!width=\hsize]% + \vskip-\d_page_sides_bottomskip \ifnum\c_page_sides_align=\plusfive \vskip-\lineheight \fi}}}}} \def\page_sides_apply_depth_normal {\global\setbox\floatbox\hpack - {\lower\strutdepth\box\floatbox}} + {\lower\strutdp\box\floatbox}} \def\page_sides_apply_depth_traced {\global\setbox\floatbox\hpack @@ -426,7 +455,7 @@ \def\page_sides_apply_vertical_shift {\ifnum\c_page_sides_align=\plusfour \getnoflines{\ht\floatbox}% - \privatescratchdimen\dimexpr\noflines\lineheight-\strutdepth\relax + \privatescratchdimen\dimexpr\noflines\lineheight-\strutdp\relax \getrawnoflines\d_page_sides_topskip \advance\privatescratchdimen\noflines\lineheight % todo: maybe rounding problem here @@ -453,17 +482,17 @@ % the top of the box is at the previous baseline \ifcase\c_page_sides_align % 0 normal - \advance\privatescratchdimen\strutdepth % or \openstrutdepth + \advance\privatescratchdimen\strutdp % or \openstrutdepth \or % 1 height - \advance\privatescratchdimen\strutdepth % or \openstrutdepth + \advance\privatescratchdimen\strutdp % or \openstrutdepth \or % 2 line \or % 3 depth - \advance\privatescratchdimen\lineheight % or \openlineheight - \advance\privatescratchdimen\strutdepth % or \openstrutdepth + \advance\privatescratchdimen\lineheight % or \openlineheight + \advance\privatescratchdimen\strutdp % or \openstrutdepth \or % 4 grid \privatescratchdimen\zeropoint \or - \advance\privatescratchdimen\strutheight % or \openstrutheight + \advance\privatescratchdimen\strutht % or \openstrutheight \fi % new \global\c_page_sides_lines_done\zerocount @@ -555,6 +584,7 @@ \global\setfalse\c_page_sides_flag \else \advance\d_page_sides_progress-\pagetotal + \advance\d_page_sides_progress-\pagedepth % new 2017-10-10 \fi} \def\page_sides_analyse_space @@ -579,7 +609,7 @@ \ifcase\c_page_sides_method % method 0 : raw \or - % method 1 : safe + % method 1 : safe (default) \scratchdimentwo .99\pagegoal \or % method 2 : tight @@ -596,6 +626,7 @@ % why was this \global\holdinginserts\plusone \else \global\advance\d_page_sides_vsize \d_page_sides_bottomskip + \global\advance\d_page_sides_vsize -\parskip % new 2017-10-10 \global\setfalse\c_page_sides_short \fi \global\settrue\c_page_floats_room @@ -649,15 +680,58 @@ \unexpanded\def\page_sides_check_floats_tracer {\begingroup \hskip-\d_page_sides_width % kern + %\llap{\smallinfofont\the\d_page_sides_progression\space=>\space\the\c_page_sides_n_of_hang\hskip.5\leftmargindistance}% \color[trace:o]% {\vrule\s!height.5\points\s!depth.5\points\s!width\d_page_sides_width \llap{\showstruts\strut\kern.25\bodyfontsize}}% \endgroup} +% \usemodule[art-01] +% \starttext +% \definemeasure[MyHeight][3cm] \definemeasure[MyWidth][3cm] +% \startbuffer +% \input klein \par +% \placefigure[left]{oeps}{\framed[width=\measure{MyWidth},height=\measure{MyHeight}]{}} +% \dorecurse{4}{test\par} \dorecurse{3}{\input klein }\par +% \placefigure[left]{oeps}{\framed[width=\measure{MyWidth},height=\measure{MyHeight}]{}} +% \dorecurse{3}{\input klein }\par +% \stopbuffer +% \enabletrackers[floats.anchoring] +% \setupfloats[step=small] +% \setupheadertexts[width=\measure{MyWidth},height=\measure{MyHeight}] +% \dostepwiserecurse {100} {120} {1} { +% \definemeasure[MyWidth][#1pt] +% \dostepwiserecurse {50} {300} {1} { +% \definemeasure[MyHeight][##1pt] +% \setupwhitespace[none]% +% \getbuffer \page +% \setupwhitespace[big] +% \getbuffer \page +% } +% } +% \stoptext + +% \setupfloats +% [\c!sidethreshold=.5\strutdp] % set to "old" to check with old method + +\newdimen\d_page_sides_progression + \unexpanded\def\page_sides_check_floats_set - {\privatescratchdimen\dimexpr\d_page_sides_progress+\strutht-\roundingeps\relax - \c_page_sides_n_of_hang\privatescratchdimen - \divide\c_page_sides_n_of_hang \baselineskip\relax + {\edef\p_sidethreshold{\floatparameter\c!sidethreshold}% + \ifx\p_sidethreshold\v!old + \d_page_sides_progression\dimexpr\d_page_sides_progress+\strutht-\roundingeps\relax + \c_page_sides_n_of_hang\d_page_sides_progression + \divide\c_page_sides_n_of_hang \baselineskip\relax + \else + \d_page_sides_progression + \ifx\p_sidethreshold\empty + \d_page_sides_progress + \else + \dimexpr\d_page_sides_progress-\p_sidethreshold\relax + \fi + \getnoflines\d_page_sides_progression + \c_page_sides_n_of_hang\noflines + \fi \ifnum\c_page_sides_n_of_hang>\zerocount % new from here (needs test case, old code) \ifcase\c_page_sides_n_of_lines @@ -759,7 +833,7 @@ %D the callers. We use \type {\def} as they can be redefined! Some will become obsolete \def\checksidefloat {\page_sides_check_floats} -\def\flushsidefloats {\page_sides_flush_floats} +\def\flushsidefloats {\page_sides_flush_floats_text} \def\flushsidefloatsafterpar{\page_sides_flush_floats_after_par} \def\forgetsidefloats {\page_sides_forget_floats} %def\synchronizesidefloats {\page_sides_synchronize_floats} diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv index 6647ede19..934577b17 100644 --- a/tex/context/base/mkiv/spac-ver.mkiv +++ b/tex/context/base/mkiv/spac-ver.mkiv @@ -1050,6 +1050,24 @@ \box\scratchbox \endgroup} +\unexpanded\def\halflinestrut + {\relax + \dontleavehmode + \begingroup + \setbox\scratchbox\copy\strutbox + \ht\scratchbox\dimexpr\strutht-.5\strutht-.5\strutdp\relax + \box\scratchbox + \endgroup} + +\unexpanded\def\noheightstrut + {\relax + \dontleavehmode + \begingroup + \setbox\scratchbox\copy\strutbox + \ht\scratchbox\zeropoint + \box\scratchbox + \endgroup} + %D Sometimes a capstrut comes in handy %D %D \starttabulate[|Tl|l|l|] diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index a1089d96d..1c2878919 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index f34a394fe..016e39a04 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/strc-flt.mkvi b/tex/context/base/mkiv/strc-flt.mkvi index 359b32a53..160001114 100644 --- a/tex/context/base/mkiv/strc-flt.mkvi +++ b/tex/context/base/mkiv/strc-flt.mkvi @@ -154,7 +154,7 @@ \c!outermargin=\zeropoint, % idem \c!leftmargindistance=\zeropoint, \c!rightmargindistance=\floatparameter\c!leftmargindistance, - \c!step=\v!big, % the flush side float step (big=line, medium=halfline, small=quarterline, depth=halfline with normaldepth) + \c!step=\v!small, % the flush side float step (big, medium, small : always depth) \c!ntop=2, \c!nbottom=0, \c!nlines=4, % used? @@ -165,6 +165,7 @@ %\c!bottombefore=, % e.g. \vfill %\c!bottomafter=, %\c!default=, % default location + \c!sidethreshold=.5\strutdp, % set to "old" to check with old method \c!numbering=\v!yes] %D Individial settings: diff --git a/tex/context/base/mkiv/tabl-mis.mkiv b/tex/context/base/mkiv/tabl-mis.mkiv index 8db31b31d..2d88f3495 100644 --- a/tex/context/base/mkiv/tabl-mis.mkiv +++ b/tex/context/base/mkiv/tabl-mis.mkiv @@ -106,10 +106,11 @@ \installcorenamespace{paragraphs} -\installcommandhandler \??paragraphs {paragraphs} \??paragraphs +\installframedcommandhandler \??paragraphs {paragraphs} \??paragraphs \setupparagraphs [\c!n=3, + \c!offset=\zeropoint, \c!before=\blank, \c!after=\blank, \c!distance=\emwidth, @@ -123,6 +124,7 @@ \c!rulecolor=, \c!style=, \c!color=, + \c!frame=\v!off, \c!top=\vss, \c!bottom=\vfill] @@ -170,6 +172,7 @@ \else \d_typo_paragraphs_width\p_width\relax \fi + \advance\d_typo_paragraphs_width-2\dimexpr\paragraphsparameter\c!offset\relax \c_typo_paragraphs_max\paragraphsparameter\c!n\relax \d_typo_paragraphs_auto\d_typo_paragraphs_width\relax \scratchcounter\zerocount @@ -191,9 +194,10 @@ \parindent\zeropoint \c_typo_paragraphs_n\zerocount \let\\=\typo_paragraphs_next % downward compatible - \dontleavehmode\hbox + \dontleavehmode\inheritedparagraphsframed \bgroup % (2) \forgetall + \advance\hsize-2\dimexpr\paragraphsparameter\c!offset\relax \let\typo_paragraphs_start_cell\typo_paragraphs_start_cell_indeed \let\typo_paragraphs_stop_cell \typo_paragraphs_stop_cell_indeed \typo_paragraphs_start_cell_indeed} diff --git a/tex/context/interface/mkii/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml index 52e2b7f60..6dc681b55 100644 --- a/tex/context/interface/mkii/keys-cs.xml +++ b/tex/context/interface/mkii/keys-cs.xml @@ -1156,6 +1156,7 @@ + diff --git a/tex/context/interface/mkii/keys-de.xml b/tex/context/interface/mkii/keys-de.xml index 99e04428d..271fea6d0 100644 --- a/tex/context/interface/mkii/keys-de.xml +++ b/tex/context/interface/mkii/keys-de.xml @@ -1156,6 +1156,7 @@ + diff --git a/tex/context/interface/mkii/keys-ro.xml b/tex/context/interface/mkii/keys-ro.xml index e0f46ecb5..81846b72e 100644 --- a/tex/context/interface/mkii/keys-ro.xml +++ b/tex/context/interface/mkii/keys-ro.xml @@ -1156,6 +1156,7 @@ + diff --git a/tex/context/interface/mkiv/context-en.xml b/tex/context/interface/mkiv/context-en.xml index 0dbc9f4e4..d8fda217d 100644 --- a/tex/context/interface/mkiv/context-en.xml +++ b/tex/context/interface/mkiv/context-en.xml @@ -9755,1033 +9755,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -36402,6 +35376,11 @@ + + + + + diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf index 4eb8278e1..d137d9c00 100644 Binary files a/tex/context/interface/mkiv/i-context.pdf and b/tex/context/interface/mkiv/i-context.pdf differ diff --git a/tex/context/interface/mkiv/i-floats.xml b/tex/context/interface/mkiv/i-floats.xml index 39dc52a9b..856b41a18 100644 --- a/tex/context/interface/mkiv/i-floats.xml +++ b/tex/context/interface/mkiv/i-floats.xml @@ -170,6 +170,11 @@ + + + + + diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf index c3912d980..df8aae1fe 100644 Binary files a/tex/context/interface/mkiv/i-readme.pdf and b/tex/context/interface/mkiv/i-readme.pdf differ diff --git a/tex/context/interface/mkiv/i-strut.xml b/tex/context/interface/mkiv/i-strut.xml index a11c6c13d..88047dd3d 100644 --- a/tex/context/interface/mkiv/i-strut.xml +++ b/tex/context/interface/mkiv/i-strut.xml @@ -29,6 +29,11 @@ + + + + + diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 2be2ae931..7a73dd4fd 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 10/10/17 12:00:59 +-- merge date : 10/15/17 12:29:01 do -- begin closure to overcome local limits and interference @@ -25308,6 +25308,9 @@ local function kernrun(disc,k_run,font,attr,...) end setlink(prev,disc,next) end + if done and trace_testruns then + report_disc("done",disc) + end return nextstart,done end local function comprun(disc,c_run,...) @@ -25346,6 +25349,9 @@ local function comprun(disc,c_run,...) sweepnode=nil sweeptype=nil if renewed then + if trace_testruns then + report_disc("done",disc) + end setdisc(disc,pre,post,replace) end return getnext(disc),renewed @@ -25359,6 +25365,7 @@ local function testrun(disc,t_run,c_run,...) return end local pre,post,replace,pretail,posttail,replacetail=getdisc(disc,true) + local renewed=false if (post or replace) and prev then if post then setlink(posttail,next) @@ -25377,9 +25384,14 @@ local function testrun(disc,t_run,c_run,...) local head=getnext(disc) local tail=head for i=1,d do - tail=getnext(tail) - if getid(tail)==disc_code then - head,tail=flattendisk(head,tail) + local nx=getnext(tail) + local id=getid(nx) + if id==disc_code then + head,tail=flattendisk(head,nx) + elseif id==glyph_code then + tail=nx + else + break end end next=getnext(tail) @@ -25408,9 +25420,11 @@ local function testrun(disc,t_run,c_run,...) replace=nil end end -setlink(disc,next) + setlink(disc,next) + end + if trace_testruns then + report_disc("more",disc) end - local renewed=false if pre then sweepnode=disc sweeptype="pre" @@ -25442,6 +25456,9 @@ setlink(disc,next) sweeptype=nil if renewed then setdisc(disc,pre,post,replace) + if trace_testruns then + report_disc("done",disc) + end end return getnext(disc),renewed end @@ -25456,7 +25473,7 @@ local function c_run_single(head,font,attr,lookupcache,step,dataset,sequence,rlm start=head end while start do - local char=ischar(start,font) + local char,id=ischar(start,font) if char then local a if attr then @@ -25518,33 +25535,38 @@ local function t_run_single(start,stop,font,attr,lookupcache) local l=nil local d=0 while s do - local lg=lookupmatch[getchar(s)] - if lg then - if sstop then - d=1 - elseif d>0 then - d=d+1 - end - l=lg - s=getnext(s) - sstop=s==stop - if not s then - s=ss - ss=nil - end - while getid(s)==disc_code do - ss=getnext(s) - s=getfield(s,"replace") + local char=ischar(s,font) + if char then + local lg=lookupmatch[char] + if lg then + if sstop then + d=1 + elseif d>0 then + d=d+1 + end + l=lg + s=getnext(s) + sstop=s==stop if not s then s=ss ss=nil end + while getid(s)==disc_code do + ss=getnext(s) + s=getfield(s,"replace") + if not s then + s=ss + ss=nil + end + end + else + break end else break end end - if l and l.ligature then + if l and l.ligature then lastd=d end else @@ -25666,27 +25688,32 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps) local l=nil local d=0 while s do - local lg=lookupmatch[getchar(s)] - if lg then - if sstop then - d=1 - elseif d>0 then - d=d+1 - end - l=lg - s=getnext(s) - sstop=s==stop - if not s then - s=ss - ss=nil - end - while getid(s)==disc_code do - ss=getnext(s) - s=getfield(s,"replace") + local char=ischar(s) + if char then + local lg=lookupmatch[char] + if lg then + if sstop then + d=1 + elseif d>0 then + d=d+1 + end + l=lg + s=getnext(s) + sstop=s==stop if not s then s=ss ss=nil end + while getid(s)==disc_code do + ss=getnext(s) + s=getfield(s,"replace") + if not s then + s=ss + ss=nil + end + end + else + break end else break @@ -25778,8 +25805,7 @@ otf.helpers.pardirstate=pardirstate do local fastdisc=true local testdics=false - directives.register("otf.fastdisc",function(v) fastdisc=v end) - directives.register("otf.testdisc",function(v) testdisc=v end) + directives.register("otf.fastdisc",function(v) fastdisc=v end) local otfdataset=nil local getfastdisc={ __index=function(t,k) local v=usesfont(k,currentfont) @@ -25832,7 +25858,7 @@ do local topstack=0 local typ=sequence.type local gpossing=typ=="gpos_single" or typ=="gpos_pair" - local forcetestrun=testdisc or typ=="gsub_ligature" + local forcetestrun=typ=="gsub_ligature" local handler=handlers[typ] local steps=sequence.steps local nofsteps=sequence.nofsteps -- cgit v1.2.3