From 76a1861b8ff7c2befbc41270833a4a0919c93c30 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Fri, 9 Aug 2019 21:12:52 +0200 Subject: 2019-08-09 18:36:00 --- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-cs.mkii | 12 ++++ tex/context/base/mkii/mult-nl.mkii | 8 +++ tex/context/base/mkiv/anch-bar.mkiv | 4 +- tex/context/base/mkiv/attr-ini.mkiv | 2 +- tex/context/base/mkiv/back-exp.lua | 50 ++++++++------ tex/context/base/mkiv/colo-ini.mkiv | 2 +- tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 6 +- tex/context/base/mkiv/context.mkxl | 6 +- tex/context/base/mkiv/core-def.mkiv | 3 + tex/context/base/mkiv/core-env.mkiv | 6 +- tex/context/base/mkiv/font-cff.lua | 67 ++++--------------- tex/context/base/mkiv/font-con.lua | 6 +- tex/context/base/mkiv/font-emp.mklx | 6 +- tex/context/base/mkiv/font-emp.mkvi | 4 +- tex/context/base/mkiv/font-onr.lua | 3 +- tex/context/base/mkiv/font-run.mkiv | 2 +- tex/context/base/mkiv/font-shp.lua | 2 +- tex/context/base/mkiv/font-tfm.lua | 41 ++++++++---- tex/context/base/mkiv/font-tpk.lua | 12 +++- tex/context/base/mkiv/font-tra.mkiv | 2 +- tex/context/base/mkiv/font-ttf.lua | 10 ++- tex/context/base/mkiv/grph-inc.mkiv | 4 +- tex/context/base/mkiv/l-lua.lua | 6 +- tex/context/base/mkiv/lpdf-emb.lua | 44 ++++++++++-- tex/context/base/mkiv/lpdf-lmt.lua | 12 ++-- tex/context/base/mkiv/math-ali.mkiv | 22 +++--- tex/context/base/mkiv/math-ini.mkiv | 4 +- tex/context/base/mkiv/math-tag.lua | 8 +-- tex/context/base/mkiv/mlib-ctx.mkxl | 1 + tex/context/base/mkiv/mlib-lmt.lua | 48 +++++++++++++ tex/context/base/mkiv/mlib-scn.lua | 74 ++++++++++++++++----- tex/context/base/mkiv/mult-aux.mkiv | 2 +- tex/context/base/mkiv/mult-aux.mkxl | 2 +- tex/context/base/mkiv/mult-ini.mkiv | 41 ++---------- tex/context/base/mkiv/mult-low.lua | 4 +- tex/context/base/mkiv/pack-bck.mkvi | 2 +- tex/context/base/mkiv/pack-box.mkiv | 16 ++--- tex/context/base/mkiv/pack-mrl.mkiv | 2 +- tex/context/base/mkiv/page-box.mkvi | 4 +- tex/context/base/mkiv/page-lay.mkiv | 44 ++---------- tex/context/base/mkiv/page-txt.mklx | 10 +-- tex/context/base/mkiv/scrn-bar.mkvi | 4 +- tex/context/base/mkiv/scrn-but.mkvi | 4 +- tex/context/base/mkiv/spac-ali.mkiv | 2 +- tex/context/base/mkiv/spac-flr.mkiv | 6 +- tex/context/base/mkiv/spac-hor.mkiv | 12 ++-- tex/context/base/mkiv/spac-ver.mkiv | 6 +- tex/context/base/mkiv/spac-ver.mkxl | 6 +- tex/context/base/mkiv/status-files.pdf | Bin 26624 -> 26656 bytes tex/context/base/mkiv/status-lua.pdf | Bin 267835 -> 268697 bytes tex/context/base/mkiv/strc-flt.mkvi | 6 +- tex/context/base/mkiv/strc-itm.mklx | 4 +- tex/context/base/mkiv/strc-itm.mkvi | 4 +- tex/context/base/mkiv/strc-lst.mkvi | 6 +- tex/context/base/mkiv/strc-not.mkvi | 2 +- tex/context/base/mkiv/strc-ren.mkiv | 18 ++--- tex/context/base/mkiv/supp-box.mkiv | 8 +-- tex/context/base/mkiv/supp-box.mkxl | 8 +-- tex/context/base/mkiv/supp-mat.mkiv | 4 +- tex/context/base/mkiv/syst-aux.mkiv | 8 +-- tex/context/base/mkiv/syst-aux.mkxl | 20 ++---- tex/context/base/mkiv/syst-ini.mkiv | 3 + tex/context/base/mkiv/syst-ini.mkxl | 3 + tex/context/base/mkiv/tabl-frm.mkiv | 52 +-------------- tex/context/base/mkiv/tabl-ntb.mkiv | 6 +- tex/context/base/mkiv/tabl-ntb.mkxl | 6 +- tex/context/base/mkiv/trac-deb.lua | 5 +- tex/context/base/mkiv/util-sql-imp-ffi.lua | 2 +- tex/context/fonts/mkiv/type-imp-cow.mkiv | 8 ++- tex/context/interface/mkii/keys-cs.xml | 12 ++++ tex/context/interface/mkii/keys-nl.xml | 8 +++ tex/context/interface/mkiv/i-context.pdf | Bin 890128 -> 889980 bytes tex/context/interface/mkiv/i-readme.pdf | Bin 61165 -> 61165 bytes tex/generic/context/luatex/luatex-fonts-merged.lua | 42 ++++++++---- 77 files changed, 477 insertions(+), 408 deletions(-) create mode 100644 tex/context/base/mkiv/mlib-lmt.lua (limited to 'tex') diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index d9c9ca7c4..2ef972527 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.08.05 10:34} +\newcontextversion{2019.08.09 18: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 9e1710245..9c89d78e7 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.08.05 10:34} +\edef\contextversion{2019.08.09 18: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 23345c05c..fe02205ee 100644 --- a/tex/context/base/mkii/mult-cs.mkii +++ b/tex/context/base/mkii/mult-cs.mkii @@ -147,6 +147,7 @@ \setinterfacevariable{comment}{komentar} \setinterfacevariable{component}{komponenta} \setinterfacevariable{compressseparator}{compressseparator} +\setinterfacevariable{compressstopper}{compressstopper} \setinterfacevariable{concept}{koncept} \setinterfacevariable{construction}{construction} \setinterfacevariable{content}{obsah} @@ -477,6 +478,7 @@ \setinterfacevariable{sectionnumber}{cislooddilu} \setinterfacevariable{see}{viz} \setinterfacevariable{selectfont}{selectfont} +\setinterfacevariable{separator}{separator} \setinterfacevariable{september}{zari} \setinterfacevariable{serif}{serif} \setinterfacevariable{serifbold}{serifbold} @@ -635,6 +637,7 @@ \setinterfaceconstant{aligntitle}{zarovnejtitul} \setinterfaceconstant{alternative}{alternativa} \setinterfaceconstant{anchor}{anchor} +\setinterfaceconstant{anchoring}{anchoring} \setinterfaceconstant{andtext}{andtext} \setinterfaceconstant{apa}{apa} \setinterfaceconstant{arguments}{arguments} @@ -732,7 +735,9 @@ \setinterfaceconstant{compoundhyphen}{compoundhyphen} \setinterfaceconstant{compress}{compress} \setinterfaceconstant{compressdistance}{compressdistance} +\setinterfaceconstant{compressmethod}{compressmethod} \setinterfaceconstant{compressseparator}{compressseparator} +\setinterfaceconstant{compressstopper}{compressstopper} \setinterfaceconstant{concerns}{concerns} \setinterfaceconstant{connector}{connector} \setinterfaceconstant{continue}{pokracovat} @@ -862,6 +867,7 @@ \setinterfaceconstant{hfil}{hfil} \setinterfaceconstant{hidenumber}{hidenumber} \setinterfaceconstant{hoffset}{hoffset} +\setinterfaceconstant{horizontal}{horizontalne} \setinterfaceconstant{horoffset}{horoffset} \setinterfaceconstant{hyphen}{hyphen} \setinterfaceconstant{hyphens}{hyphens} @@ -962,9 +968,12 @@ \setinterfaceconstant{menu}{menu} \setinterfaceconstant{method}{metoda} \setinterfaceconstant{middle}{stredni} +\setinterfaceconstant{middlecolor}{middlecolor} \setinterfaceconstant{middlecommand}{middlecommand} \setinterfaceconstant{middlespeech}{middlespeech} +\setinterfaceconstant{middlestyle}{middlestyle} \setinterfaceconstant{middletext}{strednitext} +\setinterfaceconstant{middlewidth}{middlewidth} \setinterfaceconstant{midsentence}{midsentence} \setinterfaceconstant{min}{min} \setinterfaceconstant{mindepth}{mindepth} @@ -1282,6 +1291,7 @@ \setinterfaceconstant{vcompact}{vcompact} \setinterfaceconstant{vector}{vector} \setinterfaceconstant{veroffset}{offsethlavicky} +\setinterfaceconstant{vertical}{vertikalne} \setinterfaceconstant{vfactor}{vfaktor} \setinterfaceconstant{vfil}{vfil} \setinterfaceconstant{viewerprefix}{viewerprefix} @@ -1292,6 +1302,7 @@ \setinterfaceconstant{white}{bily} \setinterfaceconstant{width}{sirka} \setinterfaceconstant{words}{words} +\setinterfaceconstant{xanchor}{xanchor} \setinterfaceconstant{xfactor}{xfaktor} \setinterfaceconstant{xhtml}{xhtml} \setinterfaceconstant{xmax}{xmax} @@ -1299,6 +1310,7 @@ \setinterfaceconstant{xoffset}{xoffset} \setinterfaceconstant{xscale}{xmeritko} \setinterfaceconstant{xstep}{xkrok} +\setinterfaceconstant{yanchor}{yanchor} \setinterfaceconstant{yfactor}{yfaktor} \setinterfaceconstant{ymax}{ymax} \setinterfaceconstant{yoffset}{yoffset} diff --git a/tex/context/base/mkii/mult-nl.mkii b/tex/context/base/mkii/mult-nl.mkii index 0043934b3..aebf9a898 100644 --- a/tex/context/base/mkii/mult-nl.mkii +++ b/tex/context/base/mkii/mult-nl.mkii @@ -637,6 +637,7 @@ \setinterfaceconstant{aligntitle}{titeluitlijnen} \setinterfaceconstant{alternative}{variant} \setinterfaceconstant{anchor}{anker} +\setinterfaceconstant{anchoring}{verankering} \setinterfaceconstant{andtext}{andtext} \setinterfaceconstant{apa}{apa} \setinterfaceconstant{arguments}{argumenten} @@ -866,6 +867,7 @@ \setinterfaceconstant{hfil}{hfil} \setinterfaceconstant{hidenumber}{hidenumber} \setinterfaceconstant{hoffset}{hoffset} +\setinterfaceconstant{horizontal}{horizontaal} \setinterfaceconstant{horoffset}{rugoffset} \setinterfaceconstant{hyphen}{hyphen} \setinterfaceconstant{hyphens}{hyphens} @@ -966,9 +968,12 @@ \setinterfaceconstant{menu}{menu} \setinterfaceconstant{method}{methode} \setinterfaceconstant{middle}{midden} +\setinterfaceconstant{middlecolor}{middenkleur} \setinterfaceconstant{middlecommand}{middencommando} \setinterfaceconstant{middlespeech}{middenuitspraak} +\setinterfaceconstant{middlestyle}{middenletter} \setinterfaceconstant{middletext}{middentekst} +\setinterfaceconstant{middlewidth}{middenbreedte} \setinterfaceconstant{midsentence}{middenzin} \setinterfaceconstant{min}{min} \setinterfaceconstant{mindepth}{mindiepte} @@ -1286,6 +1291,7 @@ \setinterfaceconstant{vcompact}{vcomprimeer} \setinterfaceconstant{vector}{vector} \setinterfaceconstant{veroffset}{kopoffset} +\setinterfaceconstant{vertical}{vertikaal} \setinterfaceconstant{vfactor}{vfactor} \setinterfaceconstant{vfil}{vfil} \setinterfaceconstant{viewerprefix}{viewerprefix} @@ -1296,6 +1302,7 @@ \setinterfaceconstant{white}{wit} \setinterfaceconstant{width}{breedte} \setinterfaceconstant{words}{words} +\setinterfaceconstant{xanchor}{xanker} \setinterfaceconstant{xfactor}{xfactor} \setinterfaceconstant{xhtml}{xhtml} \setinterfaceconstant{xmax}{xmax} @@ -1303,6 +1310,7 @@ \setinterfaceconstant{xoffset}{xoffset} \setinterfaceconstant{xscale}{xschaal} \setinterfaceconstant{xstep}{xstap} +\setinterfaceconstant{yanchor}{yanker} \setinterfaceconstant{yfactor}{yfactor} \setinterfaceconstant{ymax}{ymax} \setinterfaceconstant{yoffset}{yoffset} diff --git a/tex/context/base/mkiv/anch-bar.mkiv b/tex/context/base/mkiv/anch-bar.mkiv index f8581da32..49e9e2946 100644 --- a/tex/context/base/mkiv/anch-bar.mkiv +++ b/tex/context/base/mkiv/anch-bar.mkiv @@ -102,7 +102,7 @@ \edef\m_level{\sidebarparameter\c!level}% \ifx\m_level\empty \ifnum\c_anch_sidebars_level=\plusone - \ifdim\scratchdimen=\zeropoint + \ifzeropt\scratchdimen \advance\d_anch_sidebars_distance\scratchdistance\relax \else \d_anch_sidebars_distance\scratchdimen @@ -112,7 +112,7 @@ \fi \else \ifnum\m_level=\plusone - \ifdim\scratchdimen=\zeropoint + \ifzeropt\scratchdimen \advance\d_anch_sidebars_distance\scratchdistance\relax \else \d_anch_sidebars_distance\scratchdimen diff --git a/tex/context/base/mkiv/attr-ini.mkiv b/tex/context/base/mkiv/attr-ini.mkiv index 29f384b97..22e3ba259 100644 --- a/tex/context/base/mkiv/attr-ini.mkiv +++ b/tex/context/base/mkiv/attr-ini.mkiv @@ -57,7 +57,7 @@ \def\attr_basics_define {\attr_basics_define_indeed\s!public} \def\attr_basics_define_system{\attr_basics_define_indeed\s!private} - % here public means 'visible' so it's not to be confused with 'public' at the lua end +% here public means 'visible' so it's not to be confused with 'public' at the lua end \def\attr_basics_define_indeed#1[#2][#3]% {\ifcsname\??attributecount#2\endcsname\else diff --git a/tex/context/base/mkiv/back-exp.lua b/tex/context/base/mkiv/back-exp.lua index 9b15028bd..b7d5f6b2c 100644 --- a/tex/context/base/mkiv/back-exp.lua +++ b/tex/context/base/mkiv/back-exp.lua @@ -1234,28 +1234,38 @@ do local ndata = #data local roottg = root.tg if roottg == "msubsup" then + -- kind of tricky: we have a diufferent order in display mode local nucleus, superscript, subscript - for i=1,ndata do - local di = data[i] - if not di then - -- weird - elseif di.content then - -- text - elseif not nucleus then - nucleus = i - elseif not superscript then - superscript = i - elseif not subscript then - subscript = i - else - -- error + if ndata > 3 then + -- error + else + for i=1,ndata do + local di = data[i] + if not di then + -- weird + elseif di.content then + -- text + else + local s = specifications[di.fulltag] + if s.subscript then + subscript = i + elseif s.superscript then + superscript = i + else + nucleus = i + end + end + end + if superscript or subscript then + -- we probably always have 3 anyway ... needs checking + local nuc = nucleus and data[nucleus] + local sub = subscript and data[subscript] + local sup = superscript and data[superscript] + local n = 0 -- play safe + if nuc then n = n + 1 ; data[n] = nuc end + if sub then n = n + 1 ; data[n] = sub end + if sup then n = n + 1 ; data[n] = sup end end - end - if superscript and subscript then - local sup, sub = data[superscript], data[subscript] - data[superscript], data[subscript] = sub, sup - -- sub.__o__, sup.__o__ = subscript, superscript - sub.__i__, sup.__i__ = superscript, subscript end -- elseif roottg == "msup" or roottg == "msub" then -- -- m$^2$ diff --git a/tex/context/base/mkiv/colo-ini.mkiv b/tex/context/base/mkiv/colo-ini.mkiv index 7e78f0e01..7b649c174 100644 --- a/tex/context/base/mkiv/colo-ini.mkiv +++ b/tex/context/base/mkiv/colo-ini.mkiv @@ -221,7 +221,7 @@ \unexpanded\def\directcolored[#1]% {\colo_basics_defined_and_activated{#1}} -\unexpanded\def\fastcolor [#1]#2% +\unexpanded\def\fastcolor[#1]#2% {\begingroup % is this command still needed? \edef\currentcolorname{#1}% \ifx\currentcolorprefix\empty diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index f35151c93..487aab5d7 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2019.08.05 10:34} +\newcontextversion{2019.08.09 18: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 a6d3c7f7b..4b0e9897e 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2019.08.05 10:34} +\edef\contextversion{2019.08.09 18:29} \edef\contextkind {beta} %D Kind of special: @@ -599,10 +599,6 @@ \loadmarkfile{cont-run} % the main runner (used in cont-yes.mkiv) -\appendtoks - \setupoutput[pdf] -\to \everyjob - \setupcurrentlanguage[\defaultlanguagetag] \prependtoks diff --git a/tex/context/base/mkiv/context.mkxl b/tex/context/base/mkiv/context.mkxl index 07a53fc2c..e1fbe1e04 100644 --- a/tex/context/base/mkiv/context.mkxl +++ b/tex/context/base/mkiv/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2019.08.05 10:34} +\edef\contextversion{2019.08.09 18:29} \edef\contextkind {beta} %D Kind of special: @@ -595,10 +595,6 @@ \loadmarkfile{cont-run} % the main runner (used in cont-yes.mkiv) -\appendtoks - \setupoutput[pdf] -\to \everyjob - \setupcurrentlanguage[\defaultlanguagetag] \prependtoks diff --git a/tex/context/base/mkiv/core-def.mkiv b/tex/context/base/mkiv/core-def.mkiv index 95f7f2577..d10527d7b 100644 --- a/tex/context/base/mkiv/core-def.mkiv +++ b/tex/context/base/mkiv/core-def.mkiv @@ -107,6 +107,9 @@ \initializenewlinechar \calculatecurrenttime \syst_files_load + % for the moment here (before doc env) + \setupoutput[pdf]% + % \clf_setdocumentcommandline \clf_setdocumentctxfile \clf_setdocumentfilenames diff --git a/tex/context/base/mkiv/core-env.mkiv b/tex/context/base/mkiv/core-env.mkiv index 27ae8c008..09de435e7 100644 --- a/tex/context/base/mkiv/core-env.mkiv +++ b/tex/context/base/mkiv/core-env.mkiv @@ -663,16 +663,14 @@ {\dotripleargument\syst_variables_set[\globalgetrawparameters]} \def\syst_variables_set[#1][#2][#3]% tricky, test on s-pre-60 - {\errorisfataltrue - \doifelse{#2}\currentvariableclass + {\doifelse{#2}\currentvariableclass {#1[\??variables#2:][#3]}% {\pushmacro\currentvariableclass \def\currentvariableclass{#2}% \getvariable{#2}\s!reset #1[\??variables#2:][#3]% \getvariable{#2}\s!set - \popmacro\currentvariableclass}% - \errorisfatalfalse} + \popmacro\currentvariableclass}} \unexpanded\def\setvariable #1#2#3{\expandafter\def \csname\??variables#1:#2\endcsname{#3}} \unexpanded\def\setevariable#1#2#3{\expandafter\edef\csname\??variables#1:#2\endcsname{#3}} diff --git a/tex/context/base/mkiv/font-cff.lua b/tex/context/base/mkiv/font-cff.lua index 86ae448cc..a19acc1a1 100644 --- a/tex/context/base/mkiv/font-cff.lua +++ b/tex/context/base/mkiv/font-cff.lua @@ -1012,43 +1012,6 @@ do top = 0 end --- local function xxcurveto(swap) --- local last = top % 4 ~= 0 and stack[top] --- if last then --- top = top - 1 --- end --- for i=1,top,4 do --- local ax, ay, bx, by --- if swap then --- ax = x + stack[i] --- ay = y --- bx = ax + stack[i+1] --- by = ay + stack[i+2] --- y = by + stack[i+3] --- if last and i+3 == top then --- x = bx + last --- else --- x = bx --- end --- swap = false --- else --- ax = x --- ay = y + stack[i] --- bx = ax + stack[i+1] --- by = ay + stack[i+2] --- x = bx + stack[i+3] --- if last and i+3 == top then --- y = by + last --- else --- y = by --- end --- swap = true --- end --- xycurveto(ax,ay,bx,by,x,y) --- end --- top = 0 --- end - local function xxcurveto(swap) local last = top % 4 ~= 0 and stack[top] if last then @@ -1086,7 +1049,6 @@ do top = 0 end - local function hvcurveto() if trace_charstrings then showstate("hvcurveto") @@ -1663,7 +1625,7 @@ do local function call(scope,list,bias) -- ,process) depth = depth + 1 if top == 0 then - showstate(formatters["unknown %s call"](scope)) + showstate(formatters["unknown %s call %s"](scope,"?")) top = 0 else local index = stack[top] + bias @@ -1675,7 +1637,7 @@ do if tab then process(tab) else - showstate(formatters["unknown %s call %i"](scope,index)) + showstate(formatters["unknown %s call %s"](scope,index)) top = 0 end end @@ -1796,7 +1758,7 @@ do i = i + 1 local t = tab[i] if justpass then - if t >= 34 or t <= 37 then -- flexes + if t >= 34 and t <= 37 then -- flexes for i=1,top do r = r + 1 ; result[r] = encode[stack[i]] end @@ -1941,21 +1903,16 @@ end -- end -- end - local function setbias(globals,locals) --- if version == 1 then -- charstring version, not cff --- return --- 0, --- 0 --- return --- 1, --- 1 --- else + local function setbias(globals,locals,nobias) + if nobias then + return 0, 0 + else local g = #globals local l = #locals return ((g < 1240 and 107) or (g < 33900 and 1131) or 32768) + 1, ((l < 1240 and 107) or (l < 33900 and 1131) or 32768) + 1 --- end + end end local function processshape(tab,index) @@ -2086,7 +2043,7 @@ end return privatedata.nominalwidthx or 0, privatedata.defaultwidthx or 0 end - parsecharstrings = function(fontdata,data,glphs,doshapes,tversion,streams) + parsecharstrings = function(fontdata,data,glphs,doshapes,tversion,streams,nobias) local dictionary = data.dictionaries[1] local charstrings = dictionary.charstrings @@ -2100,7 +2057,7 @@ end vsindex = dictionary.vsindex or 0 glyphs = glphs or { } - globalbias, localbias = setbias(globals,locals) + globalbias, localbias = setbias(globals,locals,nobias) nominalwidth, defaultwidth = setwidths(dictionary.private) if charstrings then @@ -2127,9 +2084,9 @@ end vsindex = dictionary.vsindex or 0 glyphs = glphs or { } - justpass = streams == true + justpass = streams == true - globalbias, localbias = setbias(globals,locals) + globalbias, localbias = setbias(globals,locals,nobias) nominalwidth, defaultwidth = setwidths(dictionary.private) processshape(tab,index-1) diff --git a/tex/context/base/mkiv/font-con.lua b/tex/context/base/mkiv/font-con.lua index 9def52ef0..9c1e825fa 100644 --- a/tex/context/base/mkiv/font-con.lua +++ b/tex/context/base/mkiv/font-con.lua @@ -982,15 +982,15 @@ function constructors.finalize(tfmdata) end -- if not parameters.slantfactor then - parameters.slantfactor = tfmdata.slant or 0 + parameters.slantfactor = (tfmdata.slant or 0)/1000 end -- if not parameters.extendfactor then - parameters.extendfactor = tfmdata.extend or 0 + parameters.extendfactor = (tfmdata.extend or 1000)/1000 end -- if not parameters.squeezefactor then - parameters.squeezefactor = tfmdata.squeeze or 0 + parameters.squeezefactor = (tfmdata.squeeze or 1000)/1000 end -- local designsize = parameters.designsize diff --git a/tex/context/base/mkiv/font-emp.mklx b/tex/context/base/mkiv/font-emp.mklx index 7eaf0a24f..2bd6f3cf9 100644 --- a/tex/context/base/mkiv/font-emp.mklx +++ b/tex/context/base/mkiv/font-emp.mklx @@ -164,7 +164,7 @@ \futurelet\nexttoken\font_emphasis_test} \def\font_emphasis_test - {\ifcat\noexpand\nexttoken,% still ok? + {\ifcat\noexpand\nexttoken,% we can do better in luatex ... some day ... \expandafter\font_emphasis_a \else \expandafter\font_emphasis_b @@ -175,7 +175,7 @@ \def\font_emphasis_correction {\setbox\scratchbox\hbox{\nexttoken}% tricky as next can be a macro - \ifdim\ht\scratchbox=\zeropoint % probably a space + \ifzeropt\ht\scratchbox % probably a space \expandafter\font_emphasis_b \orelse\ifdim\ht\scratchbox<.3\exheight \expandafter\expandafter\expandafter\endgroup @@ -185,7 +185,7 @@ \def\font_emphasis_b {\scratchskip\lastskip - \ifdim\scratchskip=\zeropoint\relax % == \ifzeropt\scratchskip + \ifzeropt\scratchskip \italiccorrection\relax \else \unskip\italiccorrection\hskip\scratchskip diff --git a/tex/context/base/mkiv/font-emp.mkvi b/tex/context/base/mkiv/font-emp.mkvi index 5dacd175b..38305abef 100644 --- a/tex/context/base/mkiv/font-emp.mkvi +++ b/tex/context/base/mkiv/font-emp.mkvi @@ -173,7 +173,7 @@ \def\font_emphasis_correction {\setbox\scratchbox\hbox{\nexttoken}% tricky as next can be a macro - \ifdim\ht\scratchbox=\zeropoint % probably a space + \ifzeropt\ht\scratchbox % probably a space \expandafter\font_emphasis_b \else\ifdim\ht\scratchbox<.3\exheight \expandafter\expandafter\expandafter\endgroup @@ -183,7 +183,7 @@ \def\font_emphasis_b {\scratchskip\lastskip - \ifdim\scratchskip=\zeropoint\relax % == \ifzeropt\scratchskip + \ifzeropt\scratchskip \italiccorrection\relax \else \unskip\italiccorrection\hskip\scratchskip diff --git a/tex/context/base/mkiv/font-onr.lua b/tex/context/base/mkiv/font-onr.lua index 8523d8729..188aaf644 100644 --- a/tex/context/base/mkiv/font-onr.lua +++ b/tex/context/base/mkiv/font-onr.lua @@ -235,7 +235,6 @@ do binary = decrypt(binary,55665,4) local names = { } - local encoding = lpegmatch(p_filterencoding,ascii) local metadata = lpegmatch(p_filtermetadata,ascii,1,{}) local glyphs = { } @@ -255,7 +254,7 @@ do }, } -- only cff 1 in type 1 fonts - fonts.handlers.otf.readers.parsecharstrings(false,data,glyphs,true,"cff",streams) + fonts.handlers.otf.readers.parsecharstrings(false,data,glyphs,true,"cff",streams,true) else lpegmatch(p_filternames,binary,1,filename) end diff --git a/tex/context/base/mkiv/font-run.mkiv b/tex/context/base/mkiv/font-run.mkiv index 610f2e62c..2f6cd32df 100644 --- a/tex/context/base/mkiv/font-run.mkiv +++ b/tex/context/base/mkiv/font-run.mkiv @@ -158,7 +158,7 @@ {\vss \hpack to \scratchdimenone {\dummy - \ifdim\interwordspace=\zeropoint + \ifzeropt\interwordspace \setbox##1\hpack {\raise.5\dp##1\hpack {\lower.5\ht##1\copy##1}}% diff --git a/tex/context/base/mkiv/font-shp.lua b/tex/context/base/mkiv/font-shp.lua index ba4853ec3..40a3e7018 100644 --- a/tex/context/base/mkiv/font-shp.lua +++ b/tex/context/base/mkiv/font-shp.lua @@ -17,7 +17,7 @@ local pfb = fonts.handlers.pfb local hashes = fonts.hashes local identifiers = hashes.identifiers -local version = 0.008 +local version = 0.009 local shapescache = containers.define("fonts", "shapes", version, true) local streamscache = containers.define("fonts", "streams", version, true) diff --git a/tex/context/base/mkiv/font-tfm.lua b/tex/context/base/mkiv/font-tfm.lua index 5fdae5990..e2f0d22f2 100644 --- a/tex/context/base/mkiv/font-tfm.lua +++ b/tex/context/base/mkiv/font-tfm.lua @@ -139,6 +139,16 @@ local function read_from_tfm(specification) -- If reencode returns a new table, we assume that we're doing something -- special. An 'auto' reencode picks up its vector from the pfb file. + if lpdf and lpdf.getmapentry and not features.reencode then + -- This can happen multiple times but not that often so we don't + -- optimize this. + local encoding, pfbfile, encfile = lpdf.getmapentry(filename) + if encoding and pfbfile then + features.reencode = encfile + features.pfbfile = pfbfile + end + end + local newtfmdata = (depth[filename] == 1) and tfm.reencode(tfmdata,specification) if newtfmdata then tfmdata = newtfmdata @@ -160,6 +170,10 @@ local function read_from_tfm(specification) properties.format = tfmdata.format or fonts.formats.tfm -- better than nothing properties.usedbitmap = tfmdata.usedbitmap -- +if lpdf and lpdf.getmapentry and newtfmdata then + properties.filename = features.pfbfile +end + -- tfmdata.properties = properties tfmdata.resources = resources tfmdata.parameters = parameters @@ -243,6 +257,7 @@ local function read_from_tfm(specification) if size < 0 then size = idiv(65536 * -size,100) end + parameters.factor = 1 -- already scaled parameters.units = 1000 -- just in case parameters.size = size @@ -374,7 +389,7 @@ do return end - local pfbfile = outfiles[tfmfile] + local pfbfile = pfbfile or outfiles[tfmfile] if pfbfile == nil then if bitmap then @@ -395,7 +410,6 @@ do local encoding = false local vector = false - if type(pfbfile) == "string" then local pfb = constructors.handlers.pfb if pfb and pfb.loadvector then @@ -427,17 +441,18 @@ do local indices = { } local parentfont = { "font", 1 } local private = tfmdata.privateoffset or constructors.privateoffset - local reported = encdone[tfmfile][encfile] - + local reported = encdone[tfmfile][encfile] -- bah, encdone for tfm or pfb ? -- create characters table + -- vector : pfbindex -> name + -- encoding : tfmindex -> name + local backmap = vector and table.swapped(vector) local done = { } -- prevent duplicate - - for index, name in sortedhash(encoding) do -- predictable order - local unicode = unicoding[name] - local original = originals[index] + for tfmindex, name in sortedhash(encoding) do -- predictable order + local original = originals[tfmindex] if original then + local unicode = unicoding[name] if unicode then original.unicode = unicode else @@ -448,17 +463,17 @@ do end end characters[unicode] = original - indices[index] = unicode + indices[tfmindex] = unicode original.name = name -- so one can lookup weird names if backmap then - original.index = backmap[name] + original.index = backmap[name] -- the pfb index else -- probably bitmap - original.commands = { parentfont, charcommand[index] } -- or "slot" - original.oindex = index + original.commands = { parentfont, charcommand[tfmindex] } -- or "slot" + original.oindex = tfmindex end done[name] = true elseif not done[name] then - report_tfm("bad index %a in font %a with name %a",index,tfmfile,name) + report_tfm("bad index %a in font %a with name %a",tfmindex,tfmfile,name) end end diff --git a/tex/context/base/mkiv/font-tpk.lua b/tex/context/base/mkiv/font-tpk.lua index 4c3e7c42e..2a0810a6b 100644 --- a/tex/context/base/mkiv/font-tpk.lua +++ b/tex/context/base/mkiv/font-tpk.lua @@ -454,7 +454,17 @@ do local header = 0 local max = 0 local size = streamsize(s) - local glyphs = table.setmetatableindex(function(t,k) local v = { } t[k] = v return v end) + local glyphs = table.setmetatableindex(function(t,k) + local v = { + -- we default because boundary chars have no dimension s + width = 0, + height = 0, + depth = 0, + italic = 0, + } + t[k] = v + return v + end) local parameters = { } local direction = 0 -- diff --git a/tex/context/base/mkiv/font-tra.mkiv b/tex/context/base/mkiv/font-tra.mkiv index 205ca5ca0..89a50c5ae 100644 --- a/tex/context/base/mkiv/font-tra.mkiv +++ b/tex/context/base/mkiv/font-tra.mkiv @@ -126,7 +126,7 @@ {\otfstepspace \doif{#3}{mark}{\underbar}{U+\hexnumber{#2}}:% \setbox\scratchbox\hbox{\ctxlua{nodes.tracers.fontchar(#1,#2)}}% - \ifdim\wd\scratchbox=\zeropoint + \ifzeropt\wd\scratchbox \scratchwidth.125\onepoint \scratchdistance\dimexpr(\emwidth/2-\scratchwidth)\relax \kern\scratchdistance diff --git a/tex/context/base/mkiv/font-ttf.lua b/tex/context/base/mkiv/font-ttf.lua index d2fe0917c..651ede17e 100644 --- a/tex/context/base/mkiv/font-ttf.lua +++ b/tex/context/base/mkiv/font-ttf.lua @@ -733,7 +733,15 @@ local function repackpoints(glyphs,shapes) currentx = px currenty = py if lastflag == fl then - nofflags = nofflags + 1 + if nofflags == 255 then + -- This happens in koeieletters! + lastflag = lastflag + 0x08 + r = r + 1 result[r] = char(lastflag,nofflags-1) + nofflags = 1 + lastflag = fl + else + nofflags = nofflags + 1 + end else -- if > 255 if nofflags == 1 then -- r = r + 1 result[r] = char(lastflag) diff --git a/tex/context/base/mkiv/grph-inc.mkiv b/tex/context/base/mkiv/grph-inc.mkiv index 3564347f3..30846c90f 100644 --- a/tex/context/base/mkiv/grph-inc.mkiv +++ b/tex/context/base/mkiv/grph-inc.mkiv @@ -374,10 +374,10 @@ userpassword {\externalfigureparameter\c!userpassword}% ownerpassword{\externalfigureparameter\c!ownerpassword}% \ifx\p_width\empty \else - width \dimexpr\p_width\relax + width \dimexpr\p_width\relax \fi \ifx\p_height\empty \else - height \dimexpr\p_height\relax + height \dimexpr\p_height\relax \fi }%\relax \clf_figure_identify diff --git a/tex/context/base/mkiv/l-lua.lua b/tex/context/base/mkiv/l-lua.lua index 5570e83dc..6e9606e84 100644 --- a/tex/context/base/mkiv/l-lua.lua +++ b/tex/context/base/mkiv/l-lua.lua @@ -212,7 +212,7 @@ FFISUPPORTED = type(ffi) == "table" and ffi.os ~= "" and ffi.arch ~= "" and ffi. if not FFISUPPORTED then - -- Maybe we should check for LUATEXENGINE but that's also a bti tricky as we still + -- Maybe we should check for LUATEXENGINE but that's also a bit tricky as we still -- can have a weird ffi library laying around. Checking for presence of 'jit' is -- also not robust. So for now we hope for the best. @@ -253,3 +253,7 @@ if LUAVERSION > 5.3 then -- collectgarbage("collect") -- collectgarbage("generational") -- crashes on unix end + +if status and os.setenv then + os.setenv("engine",string.lower(status.luatex_engine or "unknown")) +end diff --git a/tex/context/base/mkiv/lpdf-emb.lua b/tex/context/base/mkiv/lpdf-emb.lua index 2ab852a60..acb8a3082 100644 --- a/tex/context/base/mkiv/lpdf-emb.lua +++ b/tex/context/base/mkiv/lpdf-emb.lua @@ -41,9 +41,12 @@ local pdfflushstreamobject = lpdf.flushstreamobject local fontstreams = fonts.hashes.streams local report_fonts = logs.reporter("backend","fonts") + local trace_fonts = false local trace_details = false +local dimenfactors = number.dimenfactors + trackers.register("backend.pdf.fonts",function(v) trace_fonts = v end) local readers = fonts.handlers.otf.readers @@ -54,6 +57,7 @@ local readstring = utilities.files.readstring local openfile = utilities.files.open local closefile = utilities.files.close + -- needs checking: signed vs unsigned local tocardinal1 = char @@ -292,6 +296,9 @@ local loadmapfile, loadmapline, getmapentry do local mappings = { } loadmapline = function(n) + if trace_fonts then + report_fonts("mapline: %s",n) + end local name, fullname, encfile, pfbfile = match(n,"(%S+)%s+(%S+).-<(.-%.enc).-<(.-%.pfb)") if name then mappings[name] = { fullname, encfile, pfbfile } @@ -328,6 +335,8 @@ local loadmapfile, loadmapline, getmapentry do end end + lpdf.getmapentry = getmapentry + end -- The three writers: opentype, truetype and type1. @@ -1340,6 +1349,23 @@ do local metadata = details.rawdata.metadata local indices = details.indices local metabbox = { fontheader.xmin, fontheader.ymin, fontheader.xmax, fontheader.ymax } + local correction = 1 + + -- (*) We share code with type1 and when we have old school tfm with + -- pfb but without descriptions we're kind of toast. + + if not descriptions or not next(descriptions) then + -- This is good enough, we only need indices and widths. + descriptions = details.fontdata.characters + -- This is a hack, we have no basepoints. + correction = details.fontdata.parameters.size / 1000 + -- And this needs checking. + correction = correction * dimenfactors.bp / dimenfactors.pt + metadata = { } + end + + -- + local indices, minindex, maxindex = collectindices(descriptions,indices) @@ -1385,8 +1411,9 @@ do fontfile = closefontfile(fontfile) -- local units = fontheader.units or metadata.units + local basefont = pdfconstant(basefontname) - local widths = widtharray(details,indices,maxindex,units) + local widths = widtharray(details,indices,maxindex,units * correction) local object = details.objectnumber local tounicode = tounicodedictionary(details,indices,maxindex,basefontname) local tocidset = tocidsetdictionary(indices,minindex,maxindex) @@ -1458,6 +1485,10 @@ do end mainwriters["type1"] = function(details) + -- We abuse the cff includer which is ok but for special cases like + -- tfm -> pfb we don't have the right descriptions and scale so this + -- is why we cheat elsewhere. Maybe I should just drop that kind of + -- support and assume afm files to be present. See (*) above. local s = details.streams local m = details.rawdata.metadata if m then @@ -1714,8 +1745,8 @@ function lpdf.flushfonts() -- this is no not yet ok for tfm / type 1 for hash, details in sortedhash(mainfonts) do + local filename = details.filename if next(details.indices) then - local filename = details.filename if trace_fonts then report_fonts("embedding %a hashed as %a",filename,hash) end @@ -1737,6 +1768,9 @@ function lpdf.flushfonts() -- This will move to the tpk module where we will also deal -- with bitmaps then. local encoding, pfbfile, encfile = getmapentry(filename) +if trace_fonts then + report_fonts("file %a resolved to encoding %a and file %a",filename,encoding,pfbfile) +end if encoding and pfbfile then filename = pfbfile format = "type1" @@ -1752,7 +1786,7 @@ function lpdf.flushfonts() local vector = encoding.vector local indices = details.indices local remapped = { } - local factor = number.dimenfactors.bp * size / 65536 + local factor = dimenfactors.bp * size / 65536 for k, v in next, indices do local name = vector[k] local index = reverse[name] or 0 @@ -1792,7 +1826,7 @@ function lpdf.flushfonts() local vector = encoding.vector local indices = details.indices local remapped = { } - local factor = number.dimenfactors.bp * size / 65536 + local factor = dimenfactors.bp * size / 65536 for k, v in next, indices do local name = vector[k] local index = reverse[name] or 0 @@ -1834,6 +1868,8 @@ function lpdf.flushfonts() report_fonts("no %a writer for %a",format,filename) end end + else + report_fonts("no indices for %a",filename) end mainfonts[details.hash] = false -- done end diff --git a/tex/context/base/mkiv/lpdf-lmt.lua b/tex/context/base/mkiv/lpdf-lmt.lua index bab3d682b..d3dfecd7b 100644 --- a/tex/context/base/mkiv/lpdf-lmt.lua +++ b/tex/context/base/mkiv/lpdf-lmt.lua @@ -380,9 +380,9 @@ local flushcharacter do -- for it so local function setup_fontparameters(font,factor,f,e) - local slant = (fontparameters.slantfactor or 0) / 1000 - local extend = (fontparameters.extendfactor or 1000) / 1000 - local squeeze = (fontparameters.squeezefactor or 1000) / 1000 + local slant = fontparameters.slantfactor or 0 + local extend = fontparameters.extendfactor or 1 + local squeeze = fontparameters.squeezefactor or 1 local expand = 1 + factor / 1000000 local format = fontproperties.format if e then @@ -416,9 +416,9 @@ local flushcharacter do -- -- local function setup_fontparameters(font,factor,f,e) -- if font ~= lastfont then - -- lastslant = (fontparameters.slantfactor or 0) / 1000 - -- lastextend = (fontparameters.extendfactor or 1000) / 1000 - -- lastsqueeze = (fontparameters.squeezefactor or 1000) / 1000 + -- lastslant = fontparameters.slantfactor 0 + -- lastextend = fontparameters.extendfactor 1 + -- lastsqueeze = fontparameters.squeezefactor 1 -- lastformat = fontproperties.format -- lastsize = fontparameters.size * bpfactor -- if format == "opentype" or format == "type1" then diff --git a/tex/context/base/mkiv/math-ali.mkiv b/tex/context/base/mkiv/math-ali.mkiv index 123fcda90..400326d26 100644 --- a/tex/context/base/mkiv/math-ali.mkiv +++ b/tex/context/base/mkiv/math-ali.mkiv @@ -1469,7 +1469,7 @@ \ifcase\mathraggedstatus\or\or\hfill\or\hfill\fi \else \ifconditional\c_strc_math_indent - \ifdim\d_strc_math_indent=\zeropoint\else + \ifzeropt\d_strc_math_indent\else \hangafter\plusone \hangindent\d_strc_math_indent \fi @@ -1876,22 +1876,22 @@ % 4=disable 6=only when no spaces \mathsurroundskip\mathematicsparameter\c!textdistance\relax \ifzeropt\mathsurroundskip - \ifdim\gluestretch\mathsurroundskip=\zeropoint - \ifdim\glueshrink\mathsurroundskip=\zeropoint - \mathsurroundmode\plussix + \ifzeropt\gluestretch\mathsurroundskip + \ifzeropt\glueshrink\mathsurroundskip + \mathsurroundmode\plussix \else - \mathsurroundskip\zeropoint - \mathsurroundmode\plusfour + \mathsurroundskip\zeropoint + \mathsurroundmode\plusfour \fi - \else + \else \mathsurroundmode\plussix - \fi + \fi \else - \mathsurroundmode\plussix + \mathsurroundmode\plussix \fi \else - \mathsurroundmode\plusfour - \mathsurroundskip\zeropoint + \mathsurroundmode\plusfour + \mathsurroundskip\zeropoint \fi \to \everymathematics diff --git a/tex/context/base/mkiv/math-ini.mkiv b/tex/context/base/mkiv/math-ini.mkiv index 24da3441e..7259fca3f 100644 --- a/tex/context/base/mkiv/math-ini.mkiv +++ b/tex/context/base/mkiv/math-ini.mkiv @@ -2782,7 +2782,7 @@ \def\checkeddisplaywidth % hsize if zero {\dimexpr - \ifdim\displaywidth=\zeropoint + \ifzeropt\displaywidth \hsize \else \displaywidth @@ -2791,7 +2791,7 @@ \def\maximizeddisplaywidth % larger than zero but within hsize {\dimexpr - \ifdim\displaywidth=\zeropoint + \ifzeropt\displaywidth \hsize \else\ifdim\displaywidth>\hsize \hsize diff --git a/tex/context/base/mkiv/math-tag.lua b/tex/context/base/mkiv/math-tag.lua index ee59e5f75..b758c1ff5 100644 --- a/tex/context/base/mkiv/math-tag.lua +++ b/tex/context/base/mkiv/math-tag.lua @@ -116,10 +116,10 @@ local function processsubsup(start) -- start_tagged("mrow") process(nucleus) -- stop_tagged() - start_tagged("mrow") + start_tagged("mrow", { subscript = true }) process(sub) stop_tagged() - start_tagged("mrow") + start_tagged("mrow", { superscript = true }) process(sup) stop_tagged() stop_tagged() @@ -204,7 +204,6 @@ process = function(start) -- we cannot use the processor as we have no finalizer local mtexttag = nil while start do local id = getid(start) --- print("!!!!!!!!!!",nodecodes[id]) -- showtag(start,id,true) if id == glyph_code or id == disc_code then if not mtexttag then @@ -583,9 +582,10 @@ end function noads.handlers.tags(head,style,penalties) start_tagged("math", { mode = (getattr(head,a_mathmode) == 1) and "display" or "inline" }) --- start_tagged("mrow") setattr(head,a_tagged,start_tagged("mrow")) +-- showtag(head,getid(head),true) process(head) +-- showtag(head,getid(head),false) stop_tagged() stop_tagged() end diff --git a/tex/context/base/mkiv/mlib-ctx.mkxl b/tex/context/base/mkiv/mlib-ctx.mkxl index 56b8587a8..c66e6f968 100644 --- a/tex/context/base/mkiv/mlib-ctx.mkxl +++ b/tex/context/base/mkiv/mlib-ctx.mkxl @@ -20,6 +20,7 @@ \registerctxluafile{mlib-mat}{} \registerctxluafile{mlib-lmp}{} \registerctxluafile{mlib-int}{} +\registerctxluafile{mlib-lmt}{} \unprotect diff --git a/tex/context/base/mkiv/mlib-lmt.lua b/tex/context/base/mkiv/mlib-lmt.lua new file mode 100644 index 000000000..774ddc8e5 --- /dev/null +++ b/tex/context/base/mkiv/mlib-lmt.lua @@ -0,0 +1,48 @@ +if not modules then modules = { } end modules ['mlib-lmt'] = { + version = 1.001, + comment = "companion to mlib-ctx.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files", +} + +local mppath = mp.path + +function mp.lmt_function_x(xmin,xmax,xstep,code,shape) -- experimental + local code = "return function(x) return " .. code .. " end" + local action = load(code) + local points = { } + local nofpoints = 0 + if action then + action = action() + end + if shape == "steps" then + local halfx = xstep / 2 + local lastx = xmin + local lasty = action(xmin) + for xi = xmin, xmax, xstep do + local yi = action(xi) + local xx = lastx + halfx + nofpoints = nofpoints + 1 ; points[nofpoints] = { xx, lasty } + nofpoints = nofpoints + 1 ; points[nofpoints] = { xx, yi } + lastx = xi + lasty = yi + end + if points[nofpoints][1] ~= xmax then + local yi = action(xmax) + local xx = lastx + halfx + nofpoints = nofpoints + 1 ; points[nofpoints] = { xx, lasty } + nofpoints = nofpoints + 1 ; points[nofpoints] = { xx, yi } + lastx = xi + lasty = yi + end + else + for xi = xmin, xmax, xstep do + nofpoints = nofpoints + 1 ; points[nofpoints] = { xi, action(xi) } + end + if points[nofpoints][1] ~= xmax then + nofpoints = nofpoints + 1 ; points[nofpoints] = { xmax, action(xmax) } + end + end + mppath(points,shape == "curve" and ".." or "--",false) +end diff --git a/tex/context/base/mkiv/mlib-scn.lua b/tex/context/base/mkiv/mlib-scn.lua index 97768f7a7..b1f93d5cc 100644 --- a/tex/context/base/mkiv/mlib-scn.lua +++ b/tex/context/base/mkiv/mlib-scn.lua @@ -27,7 +27,7 @@ if not modules then modules = { } end modules ['mlib-scn'] = { -- popparameters; local type, next = type, next -local byte = string.byte +local byte, gmatch = string.byte, string.gmatch local insert, remove = table.insert, table.remove local mplib = mplib @@ -288,7 +288,7 @@ local function collectnames() n = n + 1 l[n] = scanstring(1) elseif t == nullary_code then n = n + 1 l[n] = scanboolean(1) - elseif t == leftdelimiter_code then + elseif t == leftdelimiter_code or t == tag_code then t = scanexpression(true) n = n + 1 l[n] = (typescanners[t] or scanexpression)() else @@ -373,25 +373,42 @@ end local function getparameterdefault() local list, n = collectnames() local v = namespaces - for i=1,n-1 do - local l = list[i] + if n == 1 then + local l = list[1] local vl = v[l] if vl == nil then - if type(l) == "number" then - vl = v[1] - if vl == nil then + -- maybe backtrack + local top = stack[#stack] + if top then + vl = top[l] + end + end + if vl == nil then + return mpnumeric(0) + else + return get(vl) + end + else + for i=1,n-1 do + local l = list[i] + local vl = v[l] + if vl == nil then + if type(l) == "number" then + vl = v[1] + if vl == nil then + return get(list[n]) + end + else return get(list[n]) end - else - return get(list[n]) end + v = vl + end + if v == nil then + return get(list[n]) + else + return get(v) end - v = vl - end - if v == nil then - return get(list[n]) - else - return get(v) end end @@ -463,6 +480,32 @@ local function getparametertext() end end +local function getparameteroption() + local list, n = collectnames() + local last = list[n] + if type(last) == "string" then + n = n - 1 + else + return false + end + local v = namespaces + for i=1,n do + v = v[list[i]] + if not v then + break + end + end + if type(v) == "string" and v ~= "" then + for s in gmatch(v,"[^ ,]+") do + if s == last then + return true + end + end + end + return false +end + + metapost.registerscript("getparameters", getparameters) metapost.registerscript("applyparameters", applyparameters) metapost.registerscript("presetparameters", presetparameters) @@ -471,6 +514,7 @@ metapost.registerscript("getparameterdefault", getparameterdefault) metapost.registerscript("getparametercount", getparametercount) metapost.registerscript("getparameterpath", getparameterpath) metapost.registerscript("getparametertext", getparametertext) +metapost.registerscript("getparameteroption", getparameteroption) metapost.registerscript("pushparameters", pushparameters) metapost.registerscript("popparameters", popparameters) diff --git a/tex/context/base/mkiv/mult-aux.mkiv b/tex/context/base/mkiv/mult-aux.mkiv index f72e87608..929943d7f 100644 --- a/tex/context/base/mkiv/mult-aux.mkiv +++ b/tex/context/base/mkiv/mult-aux.mkiv @@ -890,7 +890,7 @@ \fi} \def\mult_interfaces_get_parameters_error_indeed#1#2% - {\clf_showassignerror{#1}{#2}\inputlineno} % no longer \waitonfatalerror + {\clf_showassignerror{#1}{#2}\inputlineno} % We install two core namespaces here, as we want nice error messages. Maybe % we will reserve the first 9. diff --git a/tex/context/base/mkiv/mult-aux.mkxl b/tex/context/base/mkiv/mult-aux.mkxl index ebe3d0f2a..efa44d4dc 100644 --- a/tex/context/base/mkiv/mult-aux.mkxl +++ b/tex/context/base/mkiv/mult-aux.mkxl @@ -790,7 +790,7 @@ \fi} \def\mult_interfaces_get_parameters_error_indeed#1#2% - {\clf_showassignerror{#1}{#2}\inputlineno} % no longer \waitonfatalerror + {\clf_showassignerror{#1}{#2}\inputlineno} % We install two core namespaces here, as we want nice error messages. Maybe % we will reserve the first 9. diff --git a/tex/context/base/mkiv/mult-ini.mkiv b/tex/context/base/mkiv/mult-ini.mkiv index aa19b4207..76a5bc09b 100644 --- a/tex/context/base/mkiv/mult-ini.mkiv +++ b/tex/context/base/mkiv/mult-ini.mkiv @@ -377,40 +377,9 @@ \let\getsetupstring\clf_getsetupstring \let\rawsetupstring\clf_rawsetupstring -%D \macros -%D {ifshowwarnings, ifshowmessages} -%D -%D Sometimes displaying message can slow down processing considerably. We therefore -%D introduce warnings. Users can turn of warnings and messages by saying: -%D -%D \starttyping -%D \showwarningstrue -%D \showmessagestrue -%D \stoptyping -%D -%D Turning off messages also turns off warnings, which is quote logical because they -%D are less important. - -% not yet mkiv +%D For old times sake: -\newif\ifshowwarnings \showwarningstrue -\newif\ifshowmessages \showmessagestrue - -\let\normalshowmessage\showmessage - -\unexpanded\def\showwarning - {\ifshowwarnings - \expandafter\showmessage - \else - \expandafter\gobblethreearguments - \fi} - -\unexpanded\def\showmessage - {\ifshowmessages - \expandafter\normalshowmessage - \else - \expandafter\gobblethreearguments - \fi} +\let\showwarning\showmessage %D \macros %D {dosetvalue,dosetevalue,dosetgvalue,dosetxvalue,docopyvalue,doresetvalue} % dogetvalue @@ -458,9 +427,9 @@ %D We can now redefine some messages that will be introduced in the multi||lingual %D system module. -\unexpanded\def\showassignerror #1#2{\showmessage\m!check1{#1,#2}\waitonfatalerror} -\unexpanded\def\showargumenterror#1#2{\showmessage\m!check2{#1,#2}\waitonfatalerror} -\unexpanded\def\showdefinederror #1#2{\showmessage\m!check3{#1,#2}\waitonfatalerror} +\unexpanded\def\showassignerror #1#2{\showmessage\m!check1{#1,#2}} +\unexpanded\def\showargumenterror#1#2{\showmessage\m!check2{#1,#2}} +\unexpanded\def\showdefinederror #1#2{\showmessage\m!check3{#1,#2}} %D \CONTEXT\ is a parameter driven package. This means that users instruct the %D system by means of variables, values and keywords. These instructions take the diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua index 02b5ae854..bee0e76e8 100644 --- a/tex/context/base/mkiv/mult-low.lua +++ b/tex/context/base/mkiv/mult-low.lua @@ -41,7 +41,7 @@ return { "bgroup", "egroup", "endline", -- - "conditionaltrue", "conditionalfalse", "quitcondition", + "conditionaltrue", "conditionalfalse", -- "attributeunsetvalue", -- @@ -294,6 +294,8 @@ return { "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", -- + "quitcondition", "truecondition", "falsecondition", + -- "tracingall", "tracingnone", "loggingall", -- "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", diff --git a/tex/context/base/mkiv/pack-bck.mkvi b/tex/context/base/mkiv/pack-bck.mkvi index 9f9d843ce..a87bc6994 100644 --- a/tex/context/base/mkiv/pack-bck.mkvi +++ b/tex/context/base/mkiv/pack-bck.mkvi @@ -120,7 +120,7 @@ \splitmaxdepth\boxmaxdepth \splittopskip\topskip \doloop - {\ifdim\pagetotal=\zeropoint % empty page + {\ifzeropt\pagetotal % empty page \scratchdimen\textheight \backgroundsplitmode\plusone % split to max height \else diff --git a/tex/context/base/mkiv/pack-box.mkiv b/tex/context/base/mkiv/pack-box.mkiv index bf6d4662d..422f090f0 100644 --- a/tex/context/base/mkiv/pack-box.mkiv +++ b/tex/context/base/mkiv/pack-box.mkiv @@ -913,15 +913,15 @@ \scratchtopoffset \offsetboxparameter\c!topoffset \scratchbottomoffset\offsetboxparameter\c!bottomoffset \relax % really needed - \ifdim\scratchleftoffset =\zeropoint\else\donetrue\fi - \ifdim\scratchrightoffset =\zeropoint\else\donetrue\fi - \ifdim\scratchtopoffset =\zeropoint\else\donetrue\fi - \ifdim\scratchbottomoffset=\zeropoint\else\donetrue\fi + \ifzeropt\scratchleftoffset \else\donetrue\fi + \ifzeropt\scratchrightoffset \else\donetrue\fi + \ifzeropt\scratchtopoffset \else\donetrue\fi + \ifzeropt\scratchbottomoffset\else\donetrue\fi \ifdone \edef\p_method{\offsetboxparameter\c!method}% \ifx\p_method\v!fixed % new - \ifdim\scratchleftoffset=\zeropoint - \ifdim\scratchrightoffset=\zeropoint \else + \ifzeropt\scratchleftoffset + \ifzeropt\scratchrightoffset \else \scratchxposition-\scratchrightoffset \scratchrightoffset\zeropoint \fi @@ -929,8 +929,8 @@ \scratchxposition\scratchleftoffset \scratchleftoffset\zeropoint \fi - \ifdim\scratchtopoffset=\zeropoint - \ifdim\scratchbottomoffset=\zeropoint \else + \ifzeropt\scratchtopoffset + \ifzeropt\scratchbottomoffset \else \scratchyposition-\scratchbottomoffset \scratchbottomoffset\zeropoint \fi diff --git a/tex/context/base/mkiv/pack-mrl.mkiv b/tex/context/base/mkiv/pack-mrl.mkiv index cd04781c7..6b76a4b74 100644 --- a/tex/context/base/mkiv/pack-mrl.mkiv +++ b/tex/context/base/mkiv/pack-mrl.mkiv @@ -281,7 +281,7 @@ \edef\p_background{\directthinrulesparameter\c!background}% \edef\p_frame {\directthinrulesparameter\c!frame}% \linewidth\dimexpr\directthinrulesparameter\c!rulethickness/\plustwo\relax - \ifdim\linewidth=\zeropoint + \ifzeropt\linewidth \c_pack_thinrules_type\zerocount \else\ifx\p_frame\v!on \c_pack_thinrules_type\expandnamespaceparameter\??thinrulealternatives\directthinrulesparameter\c!alternative\v!b\relax diff --git a/tex/context/base/mkiv/page-box.mkvi b/tex/context/base/mkiv/page-box.mkvi index 10d591631..4804e8370 100644 --- a/tex/context/base/mkiv/page-box.mkvi +++ b/tex/context/base/mkiv/page-box.mkvi @@ -63,8 +63,8 @@ \v_page_target_bottom}} \def\page_boxes_apply_offset % #box - {\ifdim\topoffset=\zeropoint - \ifdim\backoffset=\zeropoint + {\ifzeropt\topoffset + \ifzeropt\backoffset \doubleexpandafter\gobbleoneargument \else \doubleexpandafter\page_boxes_apply_offset_indeed diff --git a/tex/context/base/mkiv/page-lay.mkiv b/tex/context/base/mkiv/page-lay.mkiv index bde86e8b1..2b801b957 100644 --- a/tex/context/base/mkiv/page-lay.mkiv +++ b/tex/context/base/mkiv/page-lay.mkiv @@ -363,21 +363,6 @@ \unexpanded\def\definepapersize {\dotripleempty\page_paper_define_size} -% \def\page_paper_define_size[#1][#2][#3]% -% {\edef\currentlayouttarget{#1}% -% \ifx\currentlayouttarget\empty -% % invalid target -% \else -% \doifelseassignment{#2} -% {\definelayouttarget[#1][#2]} -% {\setevalue{\??layoutpaper#1}{#2}% -% \ifthirdargument -% \setevalue{\??layoutprint#1}{#3}% -% \else -% \setevalue{\??layoutprint#1}{#2}% -% \fi}% -% \fi} - \def\page_paper_define_size[#1][#2][#3]% {\edef\currentlayouttarget{#1}% \ifx\currentlayouttarget\empty @@ -413,17 +398,6 @@ \unexpanded\def\setuppapersize {\dodoubleempty\page_paper_setup_size} -% \unexpanded\def\page_paper_setup_size[#1][#2]% -% {\iffirstargument -% \doifelseassignment{#1} -% {\page_paper_setup_size_settings[#1]} -% {\doifelseassignment{#2} -% {\page_paper_setup_size_settings_by_name[#1][#2]} -% {\page_paper_setup_size_change_size[#1][#2]}}% -% \else -% \page_paper_restore -% \fi} - \unexpanded\def\page_paper_setup_size[#1][#2]% {\iffirstargument \ifcondition\validassignment{#1}% @@ -640,10 +614,6 @@ \fi -\ifdefined\setups \else - \unexpanded\def\setups[#1]{\setdefaultpenalties} % still needed? -\fi - \ifdefined\synchronizegridsnapping \else \let\synchronizegridsnapping\relax \fi @@ -672,12 +642,12 @@ \global\cutspace\layoutparameter\c!cutspace\relax \edef\p_page_layouts_width{\layoutparameter\c!width}% \ifx\p_page_layouts_width\v!middle - \ifdim\cutspace=\zeropoint + \ifzeropt\cutspace \global\cutspace\backspace \fi \global\makeupwidth\dimexpr\paperwidth-\backspace-\cutspace\relax \else\ifx\p_page_layouts_width\v!fit - \ifdim\cutspace=\zeropoint + \ifzeropt\cutspace \global\cutspace\backspace \fi \global\makeupwidth\dimexpr\paperwidth-\cutspace\relax @@ -693,7 +663,7 @@ -\scratchdimen\relax \else \global\makeupwidth\p_page_layouts_width\relax - \ifdim\cutspace=\zeropoint + \ifzeropt\cutspace \global\cutspace\dimexpr\paperwidth-\makeupwidth-\backspace\relax % \else % A kind of inconsistent specification, but used @@ -703,7 +673,7 @@ \fi \fi\fi \scratchdimen\layoutparameter\c!bottomspace\relax - %\ifdim\scratchdimen=\zeropoint + %\ifzeropt\scratchdimen % \scratchdimen\topspace %\fi \global\bottomspace\layoutparameter\c!bottomspace\relax @@ -711,12 +681,12 @@ \ifcase\layoutlines \edef\p_page_layouts_height{\layoutparameter\c!height}% \ifx\p_page_layouts_height\v!middle - \ifdim\bottomspace=\zeropoint + \ifzeropt\bottomspace \global\bottomspace\topspace \fi \global\makeupheight\dimexpr\paperheight-\topspace-\bottomspace\relax \else\ifx\p_page_layouts_height\v!fit - \ifdim\bottomspace=\zeropoint + \ifzeropt\bottomspace \global\bottomspace\topspace \fi \global\makeupheight\dimexpr\paperheight-\bottomspace\relax @@ -727,7 +697,7 @@ \global\advance\makeupheight\dimexpr-\bottomdistance-\bottomheight-\scratchdimen\relax \else \global\makeupheight\layoutparameter\c!height\relax - \ifdim\bottomspace=\zeropoint + \ifzeropt\bottomspace \global\bottomspace\dimexpr\paperheight-\makeupheight-\topspace\relax % \else % inconsistent specification diff --git a/tex/context/base/mkiv/page-txt.mklx b/tex/context/base/mkiv/page-txt.mklx index 6029034e5..641e7dc19 100644 --- a/tex/context/base/mkiv/page-txt.mklx +++ b/tex/context/base/mkiv/page-txt.mklx @@ -723,15 +723,15 @@ \def\page_layouts_define_text[#tag][#vertical][#horizontal][#a][#b][#c][#d]% {\ifseventhargument - \setvalue{\namedlayoutelementhash{#vertical:#horizontal}#tag}{\page_layouts_setup_text_six {#vertical}{#horizontal}{#a}{#b}{#c}{#d}}% + \setvalue{\namedlayoutelementhash{#vertical:#horizontal}#tag}{\page_layouts_setup_text_six [#vertical][#horizontal][#a][#b][#c][#d]}% \orelse\ifsixthargument - \setvalue{\namedlayoutelementhash {#vertical}#tag}{\page_layouts_setup_text_five {#vertical}{#horizontal}{#a}{#b}{#c}}% + \setvalue{\namedlayoutelementhash {#vertical}#tag}{\page_layouts_setup_text_five [#vertical][#horizontal][#a][#b][#c][]}% \orelse\iffifthargument - \setvalue{\namedlayoutelementhash{#vertical:#horizontal}#tag}{\page_layouts_setup_text_four {#vertical}{#horizontal}{#a}{#b}}% + \setvalue{\namedlayoutelementhash{#vertical:#horizontal}#tag}{\page_layouts_setup_text_four [#vertical][#horizontal][#a][#b][][]}% \orelse\iffourthargument - \setvalue{\namedlayoutelementhash {#vertical}#tag}{\page_layouts_setup_text_three{#vertical}{#horizontal}{#a}}% + \setvalue{\namedlayoutelementhash {#vertical}#tag}{\page_layouts_setup_text_three[#vertical][#horizontal][#a][][][]}% \else - \setvalue{\namedlayoutelementhash {#vertical}#tag}{\page_layouts_setup_text_two {#vertical}{#horizontal}}% + \setvalue{\namedlayoutelementhash {#vertical}#tag}{\page_layouts_setup_text_two [#vertical][#horizontal][][][][]}% \fi} %D A few more page breakers: diff --git a/tex/context/base/mkiv/scrn-bar.mkvi b/tex/context/base/mkiv/scrn-bar.mkvi index 0c320cd03..c089eb945 100644 --- a/tex/context/base/mkiv/scrn-bar.mkvi +++ b/tex/context/base/mkiv/scrn-bar.mkvi @@ -129,7 +129,7 @@ \setupcurrentinteractionbar[#settings]% \d_scrn_bar_width \interactionbarparameter\c!width\relax \d_scrn_bar_distance\interactionbarparameter\c!distance\relax - \ifdim\d_scrn_bar_width=\zeropoint + \ifzeropt\d_scrn_bar_width \d_scrn_bar_width1.5\emwidth \fi \doifnothing{\interactionbarparameter\c!height}{\letinteractionbarparameter\c!height\v!broad}% @@ -145,7 +145,7 @@ [ \v!page=>\advance\scratchcounterone\plusfour, \v!subpage=>\advance\scratchcounterone\plusfour, \s!unknown=>\advance\scratchcounterone\plusone]% - \ifdim\d_scrn_bar_width=\zeropoint + \ifzeropt\d_scrn_bar_width \scratchdimenone\dimexpr2\emwidth+\d_scrn_bar_distance\relax \scratchdimentwo\dimexpr\scratchcounterone\scratchdimenone-\d_scrn_bar_distance\relax \else diff --git a/tex/context/base/mkiv/scrn-but.mkvi b/tex/context/base/mkiv/scrn-but.mkvi index 87af29cfb..0c9b4cfb5 100644 --- a/tex/context/base/mkiv/scrn-but.mkvi +++ b/tex/context/base/mkiv/scrn-but.mkvi @@ -455,10 +455,10 @@ \dp\b_scrn_menu\zeropoint} \def\scrn_menu_apply_used - {\ifdim\d_scrn_menu_offset_left=\zeropoint \else + {\ifzeropt\d_scrn_menu_offset_left \else \setbox\b_scrn_menu\hbox{\hskip-\d_scrn_menu_offset_left \box\b_scrn_menu}% \fi - \ifdim\d_scrn_menu_offset_bottom=\zeropoint \else + \ifzeropt\d_scrn_menu_offset_bottom \else \setbox\b_scrn_menu\hbox{\lower \d_scrn_menu_offset_bottom \box\b_scrn_menu}% \fi \wd\b_scrn_menu\d_scrn_menu_asked_width diff --git a/tex/context/base/mkiv/spac-ali.mkiv b/tex/context/base/mkiv/spac-ali.mkiv index ae3bff87d..bc4077854 100644 --- a/tex/context/base/mkiv/spac-ali.mkiv +++ b/tex/context/base/mkiv/spac-ali.mkiv @@ -203,7 +203,7 @@ % oeps, hsize can be 0pt in which case we get a strange division % was: 6\bodyfontsize, fails on: \placefigure{x $x=x$ x}{} -\def\spac_align_set_raggedness_middle{\ifdim\hsize=\zeropoint\plussix\bodyfontsize\else.5\hsize\fi} +\def\spac_align_set_raggedness_middle{\ifzeropt\hsize\plussix\bodyfontsize\else.5\hsize\fi} \unexpanded\def\setraggedness#1% tricky .. we keep the global tolerance otherwise ... to be reconsidered {\ifnum\tolerance<\c_spac_tolerance_minimum diff --git a/tex/context/base/mkiv/spac-flr.mkiv b/tex/context/base/mkiv/spac-flr.mkiv index bd50bfea6..4c3c0c042 100644 --- a/tex/context/base/mkiv/spac-flr.mkiv +++ b/tex/context/base/mkiv/spac-flr.mkiv @@ -47,14 +47,14 @@ \edef\currentfiller{#1}% \usefillerstyleandcolor\c!style\c!color \scratchdimen\fillerparameter\c!leftmargin\relax - \ifdim\scratchdimen=\zeropoint\else + \ifzeropt\scratchdimen\else \hskip\scratchdimen \fi \fillerparameter\c!left\relax \expandnamespaceparameter\??filleralternative\fillerparameter\c!alternative\s!unknown\relax \fillerparameter\c!right\relax \scratchdimen\fillerparameter\c!rightmargin\relax - \ifdim\scratchdimen=\zeropoint\else + \ifzeropt\scratchdimen\else \hskip\scratchdimen \fi \endgroup @@ -80,7 +80,7 @@ \begingroup \edef\currentfiller{#1}% \scratchdimen\dimexpr\fillerparameter\c!rightmargindistance\relax - \ifdim\scratchdimen=\zeropoint\else + \ifzeropt\scratchdimen\else \parfillskip \scratchdimen\s!plus \plusone\s!fil\relax \fi \spac_fillers_indeed[#1]% diff --git a/tex/context/base/mkiv/spac-hor.mkiv b/tex/context/base/mkiv/spac-hor.mkiv index e51e54f29..1a13b39af 100644 --- a/tex/context/base/mkiv/spac-hor.mkiv +++ b/tex/context/base/mkiv/spac-hor.mkiv @@ -43,7 +43,7 @@ \unexpanded\def\spac_indentation_setup_size {\assigndimension\v_spac_indentation_current\d_spac_indentation_par{1\emwidth}{1.5\emwidth}{2\emwidth}% - \ifdim\parindent=\zeropoint\else + \ifzeropt\parindent\else \parindent\d_spac_indentation_par\relax % new per 2019-04-12 : just in case it has been set beforehand \fi} @@ -197,7 +197,7 @@ \parindent\zeropoint \c_spac_indentation_toggle_state\zerocount} -\installindentingmethod \v!toggle{\parindent\ifdim\parindent=\zeropoint +\installindentingmethod \v!toggle{\parindent\ifzeropt\parindent \d_spac_indentation_par \else \zeropoint @@ -216,7 +216,7 @@ \installmacrostack\ifindentation \def\spac_indentation_remove - {\ifdim\parindent=\zeropoint \else + {\ifzeropt\parindent \else \begingroup \setbox\scratchbox\lastbox \endgroup @@ -273,7 +273,7 @@ \fi} \def\spac_indentation_variant_force - {\ifvmode \ifdim\parindent=\zeropoint \else + {\ifvmode \ifzeropt\parindent \else % was : \hskip\parindent % can be: \indent % but we test: @@ -845,7 +845,7 @@ \letvalue{\??skipadaptionright\v!no }\zeropoint \letvalue{\??skipadaptionright\empty }\zeropoint -% \setvalue{\??skipadaptionleft \v!standard}{\ifdim\d_spac_indentation_par=\zeropoint\narrowerparameter\c!left\else\d_spac_indentation_par\fi} +% \setvalue{\??skipadaptionleft \v!standard}{\ifzeropt\d_spac_indentation_par\narrowerparameter\c!left\else\d_spac_indentation_par\fi} % \setvalue{\??skipadaptionright\v!standard}{\narrowerparameter\c!right} \letcsnamecsname\csname\??skipadaptionleft \v!standard\endcsname\csname\??skipadaptionleft \v!yes\endcsname @@ -1259,7 +1259,7 @@ \advance\c_spac_ignore_spaces\minusone} \def\spac_ignore_spaces_body - {\ifdim\lastskip=\zeropoint + {\ifzeropt\lastskip \exitloop \else\ifdim\lastskip=\s_spac_ignore_spaces \unskip diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv index bf9427199..326547a49 100644 --- a/tex/context/base/mkiv/spac-ver.mkiv +++ b/tex/context/base/mkiv/spac-ver.mkiv @@ -245,7 +245,7 @@ \newdimen\d_spac_prevcontent % set by lua \unexpanded\def\removelastskip - {\ifvmode\ifdim\lastskip=\zeropoint\else\vskip-\lastskip\fi\fi} + {\ifvmode\ifzeropt\lastskip\else\vskip-\lastskip\fi\fi} \def\doifoutervmode {\ifvmode @@ -263,7 +263,7 @@ {\s_spac_lastskip\lastskip \removelastskip #1\relax - \ifdim\s_spac_lastskip=\zeropoint + \ifzeropt\s_spac_lastskip % avoid interference with footnotes \else \vskip\s_spac_lastskip @@ -2233,7 +2233,7 @@ \def\bodyfontwhitespace {\dimexpr - \ifdim\parskip=\zeropoint + \ifzeropt\parskip \zeropoint \else\ifgridsnapping \bodyfontlineheight diff --git a/tex/context/base/mkiv/spac-ver.mkxl b/tex/context/base/mkiv/spac-ver.mkxl index e939242cb..c56352077 100644 --- a/tex/context/base/mkiv/spac-ver.mkxl +++ b/tex/context/base/mkiv/spac-ver.mkxl @@ -253,7 +253,7 @@ \newdimen\d_spac_prevcontent % set by lua \unexpanded\def\removelastskip - {\ifvmode\ifdim\lastskip=\zeropoint\else\vskip-\lastskip\fi\fi} + {\ifvmode\ifzeropt\lastskip\else\vskip-\lastskip\fi\fi} \def\doifoutervmode {\ifvmode @@ -271,7 +271,7 @@ {\s_spac_lastskip\lastskip \removelastskip #1\relax - \ifdim\s_spac_lastskip=\zeropoint + \ifzeropt\s_spac_lastskip % avoid interference with footnotes \else \vskip\s_spac_lastskip @@ -2224,7 +2224,7 @@ \def\bodyfontwhitespace {\dimexpr - \ifdim\parskip=\zeropoint + \ifzeropt\parskip \zeropoint \orelse\ifgridsnapping \bodyfontlineheight diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index b8ef17696..c975f3bab 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 59583eef9..62daabe8a 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 5daf2b44d..5572a3c6f 100644 --- a/tex/context/base/mkiv/strc-flt.mkvi +++ b/tex/context/base/mkiv/strc-flt.mkvi @@ -498,7 +498,7 @@ % new, \placefigure{\xmlfirst{#1}{somecaption}}{} passes earlier empty check % so here we misuse the scratch box; actually this means that the previous % test can go away (some day, when i redo this module) - \ifdim\wd\b_strc_floats_caption=\zeropoint + \ifzeropt\wd\b_strc_floats_caption \global\emptyfloatcaptiontrue \ifnofloatnumber \global\nofloatcaptiontrue @@ -1150,7 +1150,7 @@ \strc_floats_set_natural_dimensions\nextbox \global\setbox\floatbox\vbox{\floatparameter\c!command{\box\nextbox}}% can be anything so no pack \strc_floats_set_natural_dimensions\floatbox - \ifdim\htdp\floatbox=\zeropoint + \ifzeropt\htdp\floatbox \showmessage\m!floatblocks{11}\empty \global\setbox\floatbox\vpack {\dostarttagged\t!floatcontent\empty @@ -1329,7 +1329,7 @@ \def\strc_floats_set_local_dimensions {\global\d_page_sides_shift \zeropoint % duplicate \global\d_page_sides_maximum\zeropoint\relax % duplicate - \ifdim\d_page_sides_downshift=\zeropoint\else + \ifzeropt\d_page_sides_downshift\else \global\setbox\floatbox\vpack {\vskip\d_page_sides_downshift \nointerlineskip diff --git a/tex/context/base/mkiv/strc-itm.mklx b/tex/context/base/mkiv/strc-itm.mklx index fcf67c7f5..eeeb5ce00 100644 --- a/tex/context/base/mkiv/strc-itm.mklx +++ b/tex/context/base/mkiv/strc-itm.mklx @@ -784,7 +784,7 @@ \d_strc_itemgroups_list_width\d_strc_itemgroups_max_width \orelse\ifnum\itemgroupparameter\c!factor>\zerocount \d_strc_itemgroups_list_width\itemgroupparameter\c!step\relax - \ifdim\d_strc_itemgroups_list_width=\zeropoint \d_strc_itemgroups_list_width=.5em\fi + \ifzeropt\d_strc_itemgroups_list_width \d_strc_itemgroups_list_width=.5em\fi \multiply\d_strc_itemgroups_list_width \itemgroupparameter\c!factor \advance\d_strc_itemgroups_list_width\itemgroupparameter\c!width\relax \else @@ -1498,7 +1498,7 @@ \ifdim\d_strc_itemgroups_asked_width<\zeropoint\relax \strc_itemgroups_handle_lapped_item_negative \else - \ifdim\d_strc_itemgroups_asked_width=\zeropoint\relax + \ifzeropt\d_strc_itemgroups_asked_width \strc_itemgroups_calculate_list_width\plusone \else \strc_itemgroups_calculate_list_width\c_strc_itemgroups_nesting diff --git a/tex/context/base/mkiv/strc-itm.mkvi b/tex/context/base/mkiv/strc-itm.mkvi index 892e33104..bc140d65b 100644 --- a/tex/context/base/mkiv/strc-itm.mkvi +++ b/tex/context/base/mkiv/strc-itm.mkvi @@ -786,7 +786,7 @@ \d_strc_itemgroups_list_width\d_strc_itemgroups_max_width \else\ifnum\itemgroupparameter\c!factor>\zerocount \d_strc_itemgroups_list_width\itemgroupparameter\c!step\relax - \ifdim\d_strc_itemgroups_list_width=\zeropoint \d_strc_itemgroups_list_width=.5em\fi + \ifzeropt\d_strc_itemgroups_list_width \d_strc_itemgroups_list_width=.5em\fi \multiply\d_strc_itemgroups_list_width \itemgroupparameter\c!factor \advance\d_strc_itemgroups_list_width\itemgroupparameter\c!width\relax \else @@ -1518,7 +1518,7 @@ \ifdim\d_strc_itemgroups_asked_width<\zeropoint\relax \strc_itemgroups_handle_lapped_item_negative \else - \ifdim\d_strc_itemgroups_asked_width=\zeropoint\relax + \ifzeropt\d_strc_itemgroups_asked_width \strc_itemgroups_calculate_list_width\plusone \else \strc_itemgroups_calculate_list_width\c_strc_itemgroups_nesting diff --git a/tex/context/base/mkiv/strc-lst.mkvi b/tex/context/base/mkiv/strc-lst.mkvi index 7bc859b67..d29b1f6fd 100644 --- a/tex/context/base/mkiv/strc-lst.mkvi +++ b/tex/context/base/mkiv/strc-lst.mkvi @@ -1117,7 +1117,7 @@ \hangindent\dimexpr\wd\b_strc_lists_number+\scratchdistance\relax \hangafter\ifx\p_hang\v!no\zerocount\else\plusone\fi \scratchdimen\listalternativeparameter\c!distance\relax - \ifdim\wd\b_strc_lists_page=\zeropoint \else\ifdim\scratchdimen>\zeropoint\relax + \ifzeropt\wd\b_strc_lists_page \else \ifdim\scratchdimen>\zeropoint\relax \rightskip\scratchdimen\!!plus\listalternativeparameter\c!stretch\relax \parfillskip-\rightskip \fi \fi @@ -1144,7 +1144,7 @@ \strc_lists_limitated_text\currentlistentrytitle \endstrut \endgroup - \ifdim\wd\b_strc_lists_page=\zeropoint\else + \ifzeropt\wd\b_strc_lists_page\else \nobreak \currentlistfiller \box\b_strc_lists_page @@ -1381,7 +1381,7 @@ \leftskip\scratchoffset \else \scratchwidth\p_width - \ifdim\scratchoffset=\zeropoint + \ifzeropt\scratchoffset \leftskip\dimexpr\scratchwidth+\scratchdistance\relax \else \leftskip\scratchoffset diff --git a/tex/context/base/mkiv/strc-not.mkvi b/tex/context/base/mkiv/strc-not.mkvi index 3ce01ef34..7d8062eef 100644 --- a/tex/context/base/mkiv/strc-not.mkvi +++ b/tex/context/base/mkiv/strc-not.mkvi @@ -1458,7 +1458,7 @@ \c!strut=\v!no, \c!offset=\v!overlay]% \inheritednoteframed - {\ifdim\dp\scratchbox=\zeropoint % this hack is needed because \vadjust + {\ifzeropt\dp\scratchbox % this hack is needed because \vadjust \hpack{\lower\strutdp\box\scratchbox}% % in margin number placement \else % hides the (always) present depth \box\scratchbox diff --git a/tex/context/base/mkiv/strc-ren.mkiv b/tex/context/base/mkiv/strc-ren.mkiv index 5cdf5f4a7..0c9dc3ad5 100644 --- a/tex/context/base/mkiv/strc-ren.mkiv +++ b/tex/context/base/mkiv/strc-ren.mkiv @@ -599,24 +599,24 @@ \vbox { \headsetupspacing \ifconditional\headshownumber - \ifdim\headwidth=\zeropoint \else - \ifdim\headnumberwidth=\zeropoint - \ifdim\headtextwidth=\zeropoint \else + \ifzeropt\headwidth \else + \ifzeropt\headnumberwidth + \ifzeropt\headtextwidth \else \headnumberwidth\dimexpr\headwidth-\headtextwidth\relax \fi \else - \ifdim\headtextwidth=\zeropoint + \ifzeropt\headtextwidth \headtextwidth\dimexpr\headwidth-\headnumberwidth\relax \fi \fi \hsize\headwidth \fi - \ifdim\headnumberwidth=\zeropoint\else + \ifzeropt\headnumberwidth \else \headnumberdistance\zeropoint \fi - \setbox\scratchbox\hbox \ifdim\headnumberwidth=\zeropoint\else to \headnumberwidth\fi{\headnumbercontent} + \setbox\scratchbox\hbox \ifzeropt\headnumberwidth\else to \headnumberwidth\fi{\headnumbercontent} \scratchdimen\dimexpr\wd\scratchbox+\headnumberdistance\relax - \ifdim\headtextwidth=\zeropoint\else + \ifzeropt\headtextwidth \else \hsize\dimexpr\scratchdimen+\headtextwidth\relax \fi \hangindent\scratchdimen @@ -625,8 +625,8 @@ \box\scratchbox \hskip\headnumberdistance \else - \ifdim\headtextwidth=\zeropoint - \ifdim\headwidth=\zeropoint \else + \ifzeropt\headtextwidth + \ifzeropt\headwidth \else \hsize\headwidth \fi \else diff --git a/tex/context/base/mkiv/supp-box.mkiv b/tex/context/base/mkiv/supp-box.mkiv index bdd20b497..4ceade033 100644 --- a/tex/context/base/mkiv/supp-box.mkiv +++ b/tex/context/base/mkiv/supp-box.mkiv @@ -437,7 +437,7 @@ %D %D \def\dogetnoflines#1#2% %D {\noflinesheight#2\relax -%D \ifzeropt\noflinesheight % \ifdim\noflinesheight=\zeropoint +%D \ifzeropt\noflinesheight %D \noflines\zerocount %D \else %D \divide\noflinesheight \openlineheight @@ -880,7 +880,7 @@ \def\doreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip {\global\reshapingfailedfalse - \ifzeropt\ht\oldshapebox % \ifdim\ht\oldshapebox=\zeropoint + \ifzeropt\ht\oldshapebox \setbox\newshapebox\emptyvbox \else \setbox\newshapebox\vbox % can be \vpack @@ -952,7 +952,7 @@ \unexpanded\def\flushshapebox {\bgroup - \ifzeropt\ht\newshapebox % \ifdim\ht\newshapebox=\zeropoint + \ifzeropt\ht\newshapebox \else % make \prevdepth legal % \par before the next \vskip gives far worse results @@ -1912,7 +1912,7 @@ \fi \ht\hhbox\strutht \dp\hhbox\strutdp - \ifzeropt\hhboxindent\else % \ifdim\hhboxindent=\zeropoint\else + \ifzeropt\hhboxindent\else \setbox\hhbox\hpack{\kern-\hhboxindent\box\hhbox}% \hhboxindent\zeropoint \fi diff --git a/tex/context/base/mkiv/supp-box.mkxl b/tex/context/base/mkiv/supp-box.mkxl index 42f17f03d..26b04d77c 100644 --- a/tex/context/base/mkiv/supp-box.mkxl +++ b/tex/context/base/mkiv/supp-box.mkxl @@ -399,7 +399,7 @@ %D %D \def\dogetnoflines#1#2% %D {\noflinesheight#2\relax -%D \ifzeropt\noflinesheight % \ifdim\noflinesheight=\zeropoint +%D \ifzeropt\noflinesheight %D \noflines\zerocount %D \else %D \divide\noflinesheight \openlineheight @@ -846,7 +846,7 @@ \def\doreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip {\global\reshapingfailedfalse - \ifzeropt\ht\oldshapebox % \ifdim\ht\oldshapebox=\zeropoint + \ifzeropt\ht\oldshapebox \setbox\newshapebox\emptyvbox \else \setbox\newshapebox\vbox % can be \vpack @@ -918,7 +918,7 @@ \unexpanded\def\flushshapebox {\bgroup - \ifzeropt\ht\newshapebox % \ifdim\ht\newshapebox=\zeropoint + \ifzeropt\ht\newshapebox \else % make \prevdepth legal % \par before the next \vskip gives far worse results @@ -1860,7 +1860,7 @@ \fi \ht\hhbox\strutht \dp\hhbox\strutdp - \ifzeropt\hhboxindent\else % \ifdim\hhboxindent=\zeropoint\else + \ifzeropt\hhboxindent\else \setbox\hhbox\hpack{\kern-\hhboxindent\box\hhbox}% \hhboxindent\zeropoint \fi diff --git a/tex/context/base/mkiv/supp-mat.mkiv b/tex/context/base/mkiv/supp-mat.mkiv index f72a0ff89..f3b94f735 100644 --- a/tex/context/base/mkiv/supp-mat.mkiv +++ b/tex/context/base/mkiv/supp-mat.mkiv @@ -160,8 +160,8 @@ \unexpanded\def\dimension#1% {\pushmacro\dodimensionsignal \gdef\dodimensionsignal{\kern\dimensionsignal}% - \ifdim\lastskip=\zeropoint\relax - \ifdim\lastkern=\zeropoint\relax + \ifzeropt\lastskip + \ifzeropt\lastkern \ifmmode \mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}% \else diff --git a/tex/context/base/mkiv/syst-aux.mkiv b/tex/context/base/mkiv/syst-aux.mkiv index f6b094246..ed46481d5 100644 --- a/tex/context/base/mkiv/syst-aux.mkiv +++ b/tex/context/base/mkiv/syst-aux.mkiv @@ -1763,14 +1763,8 @@ %D will redefine this macro later on, when a more advanced message mechanism is %D implemented. -\newif\iferrorisfatal - -\unexpanded\def\waitonfatalerror - {\iferrorisfatal\wait\fi} - \unexpanded\def\showassignerror#1#2% - {\writestatus{setup}{missing or ungrouped '=' after '#1' in line #2}% - \waitonfatalerror} + {\writestatus{setup}{missing or ungrouped '=' after '#1' in line #2}} \unexpanded\def\doassignempty[#1][#2=#3]% {\ifcsname#1#2\endcsname\else\dosetvalue{#1}{#2}{#3}\fi} diff --git a/tex/context/base/mkiv/syst-aux.mkxl b/tex/context/base/mkiv/syst-aux.mkxl index 725deb866..b2fc08487 100644 --- a/tex/context/base/mkiv/syst-aux.mkxl +++ b/tex/context/base/mkiv/syst-aux.mkxl @@ -1471,14 +1471,8 @@ %D will redefine this macro later on, when a more advanced message mechanism is %D implemented. -\newif\iferrorisfatal - -\unexpanded\def\waitonfatalerror - {\iferrorisfatal\wait\fi} - \unexpanded\def\showassignerror#1#2% - {\writestatus{setup}{missing or ungrouped '=' after '#1' in line #2}% - \waitonfatalerror} + {\writestatus{setup}{missing or ungrouped '=' after '#1' in line #2}} \unexpanded\def\doassignempty[#1][#2=#3]% {\ifcsname#1#2\endcsname\else\dosetvalue{#1}{#2}{#3}\fi} @@ -4831,13 +4825,13 @@ \newcount\c_syst_helpers_swapped \let \m_syst_helpers_swapped\relax -\unexpanded\def\swapdimens#1#2{\d_syst_helpers_swapped #1\relax#1#2\relax#2\d_syst_helpers_swapped} -\unexpanded\def\swapcounts#1#2{\c_syst_helpers_swapped #1\relax#1#2\relax#2\c_syst_helpers_swapped} -\unexpanded\def\swapmacros#1#2{\let\m_syst_helpers_swapped#1\let #1#2\let #2\m_syst_helpers_swapped} +\unexpanded\def\swapdimens#1#2{\d_syst_helpers_swapped#1#1#2#2\d_syst_helpers_swapped} +\unexpanded\def\swapcounts#1#2{\c_syst_helpers_swapped#1#1#2#2\c_syst_helpers_swapped} +\unexpanded\def\swapmacros#1#2{\let\m_syst_helpers_swapped#1\let#1#2\let#2\m_syst_helpers_swapped} -\unexpanded\def\globalswapdimens#1#2{\d_syst_helpers_swapped #1\global#1#2\global#2\d_syst_helpers_swapped} -\unexpanded\def\globalswapcounts#1#2{\c_syst_helpers_swapped #1\global#1#2\global#2\c_syst_helpers_swapped} -\unexpanded\def\globalswapmacros#1#2{\let\m_syst_helpers_swapped#1\glet #1#2\glet #2\m_syst_helpers_swapped} +\unexpanded\def\globalswapdimens#1#2{\d_syst_helpers_swapped#1\global#1#2\global#2\d_syst_helpers_swapped} +\unexpanded\def\globalswapcounts#1#2{\c_syst_helpers_swapped#1\global#1#2\global#2\c_syst_helpers_swapped} +\unexpanded\def\globalswapmacros#1#2{\let\m_syst_helpers_swapped#1\glet#1#2\glet#2\m_syst_helpers_swapped} %D \macros %D {pushmacro,popmacro} diff --git a/tex/context/base/mkiv/syst-ini.mkiv b/tex/context/base/mkiv/syst-ini.mkiv index 013f1106f..529dc70a7 100644 --- a/tex/context/base/mkiv/syst-ini.mkiv +++ b/tex/context/base/mkiv/syst-ini.mkiv @@ -820,6 +820,9 @@ \let\then\relax % so that we can say: \ifnum1>2\then -) +\def\truecondition {\iftrue} +\def\falsecondition{\iffalse} + %D \macros %D {newmacro,setnewmacro,newfraction} %D diff --git a/tex/context/base/mkiv/syst-ini.mkxl b/tex/context/base/mkiv/syst-ini.mkxl index 8f89d9221..11f82dd34 100644 --- a/tex/context/base/mkiv/syst-ini.mkxl +++ b/tex/context/base/mkiv/syst-ini.mkxl @@ -793,6 +793,9 @@ \let\then\relax % so that we can say: \ifnum1>2\then -) +\def\truecondition {\iftrue} +\def\falsecondition{\iffalse} + % This one has to be unprotected otherwise we get a files-ends-to-soon but it's ok % as conditions expand anyway. diff --git a/tex/context/base/mkiv/tabl-frm.mkiv b/tex/context/base/mkiv/tabl-frm.mkiv index c0f4b7cd1..14f3506b9 100644 --- a/tex/context/base/mkiv/tabl-frm.mkiv +++ b/tex/context/base/mkiv/tabl-frm.mkiv @@ -134,54 +134,6 @@ {\framedparameter\c!after \endgroup} -% \unexpanded\def\startframedrow -% {\advance\c_tabl_framed_r\plusone -% \c_tabl_framed_c\zerocount -% \d_tabl_framed_h\zeropoint -% \bgroup -% \edef\currentframed{\number\c_tabl_framed_r}% -% \edef\currentframed -% {\??framedtablerow\currentframedtable -% \ifcsname\??framedtablerow\currentframedtable:\currentframed\endcsname -% :\currentframed -% \else\ifcsname\??framedtablerow\currentframedtable:\v!each\endcsname -% :\v!each -% \fi\fi}% -% \dosingleempty\pack_framed_start_framed_nop_indeed} -% -% \unexpanded\def\stopframedrow -% {\dofastloopcs\c_tabl_framed_c\tabl_framed_flush_row -% \stopframed -% \nointerlineskip -% \vskip\zeropoint\relax -% \framedparameter\c!inbetween} -% -% \unexpanded\def\tabl_framed_flush_row -% {\vpack to \d_tabl_framed_h{\flushbox\??framedtable{\number\fastloopindex}\vfill}% -% \ifdim\d_tabl_framed_d=\zeropoint\else\kern\d_tabl_framed_d\fi} -% -% \unexpanded\def\startframedcell -% {\advance\c_tabl_framed_c\plusone -% \setbox\b_tabl_framed\hpack\bgroup -% %\bgroup -% \edef\currentframed{\number\c_tabl_framed_c}% -% \edef\currentframed -% {\??framedtablecolumn\currentframedtable -% \ifcsname\??framedtablecolumn\currentframedtable:\currentframed\endcsname -% :\currentframed -% \else\ifcsname\??framedtablecolumn\currentframedtable:\v!each\endcsname -% :\v!each -% \fi\fi}% -% \dosingleempty\pack_framed_start_framed_nop_indeed} -% -% \unexpanded\def\stopframedcell -% {\stopframed -% %\egroup -% \ifdim\ht\b_tabl_framed>\d_tabl_framed_h -% \d_tabl_framed_h\ht\b_tabl_framed -% \fi -% \savebox\??framedtable{\number\c_tabl_framed_c}{\box\b_tabl_framed}} - % a two pass variant that deals with the height .. so no catcode changes here \unexpanded\def\startframedrow @@ -208,7 +160,7 @@ \unexpanded\def\tabl_framed_flush_row {\vpack to \d_tabl_framed_h{\flushbox\??framedtable{\number\fastloopindex}\vfill}% - \ifdim\d_tabl_framed_d=\zeropoint\else\kern\d_tabl_framed_d\fi} + \ifzeropt\d_tabl_framed_d\else\kern\d_tabl_framed_d\fi} \newcount\c_tabl_framed_pass @@ -253,7 +205,7 @@ \unexpanded\def\tabl_framed_flush_row_two {\vpack to \d_tabl_framed_h{\flushbox\??framedtable{\number\fastloopindex}\vfill}% - \ifdim\d_tabl_framed_d=\zeropoint\else\kern\d_tabl_framed_d\fi} + \ifzeropt\d_tabl_framed_d\else\kern\d_tabl_framed_d\fi} \unexpanded\def\startframedcell diff --git a/tex/context/base/mkiv/tabl-ntb.mkiv b/tex/context/base/mkiv/tabl-ntb.mkiv index 879cd33e3..113b7a364 100644 --- a/tex/context/base/mkiv/tabl-ntb.mkiv +++ b/tex/context/base/mkiv/tabl-ntb.mkiv @@ -1724,7 +1724,7 @@ \tabl_ntb_set_aut\recurselevel{\the\scratchdimen}% \fi \else - \ifdim\scratchdimen=\zeropoint % auto set width + \ifzeropt\scratchdimen % auto set width \tabl_ntb_set_wid\recurselevel{\the\!!dimena}% \fi \fi}% @@ -1908,7 +1908,7 @@ \ifdim\wd\scratchbox<.75\hsize % fuzzy guess \ifdim\ht\scratchbox>2\openlineheight % honor width since this \scratchdimen\tabl_ntb_get_aut\c_tabl_ntb_col\relax % can be a figure or so - \ifdim\scratchdimen=\zeropoint + \ifzeropt\scratchdimen % side effect: when width is set to 0pt, % we can force a span that fits the sum of spans widths \tabl_ntb_set_aut\c_tabl_ntb_col{\the\scratchdimen}% @@ -1986,7 +1986,7 @@ [\naturaltablelocalparameter\c!color] % as well as permits local colors to take precedence {\letnaturaltablelocalparameter\c!color\empty \setnaturaltablelocalparameter\c!width{\d_tabl_ntb_width}% - \ifdim\d_tabl_ntb_height=\zeropoint\relax % case: nc=maxcolumns + \ifzeropt\d_tabl_ntb_height % case: nc=maxcolumns \else \setnaturaltablelocalparameter\c!height{\d_tabl_ntb_height}% \fi diff --git a/tex/context/base/mkiv/tabl-ntb.mkxl b/tex/context/base/mkiv/tabl-ntb.mkxl index e80ff06d6..d7ba548d2 100644 --- a/tex/context/base/mkiv/tabl-ntb.mkxl +++ b/tex/context/base/mkiv/tabl-ntb.mkxl @@ -1722,7 +1722,7 @@ \tabl_ntb_set_aut\recurselevel{\the\scratchdimen}% \fi \else - \ifdim\scratchdimen=\zeropoint % auto set width + \ifzeropt\scratchdimen % auto set width \tabl_ntb_set_wid\recurselevel{\the\!!dimena}% \fi \fi}% @@ -1906,7 +1906,7 @@ \ifdim\wd\scratchbox<.75\hsize % fuzzy guess \ifdim\ht\scratchbox>2\openlineheight % honor width since this \scratchdimen\tabl_ntb_get_aut\c_tabl_ntb_col\relax % can be a figure or so - \ifdim\scratchdimen=\zeropoint + \ifzeropt\scratchdimen % side effect: when width is set to 0pt, % we can force a span that fits the sum of spans widths \tabl_ntb_set_aut\c_tabl_ntb_col{\the\scratchdimen}% @@ -1984,7 +1984,7 @@ [\naturaltablelocalparameter\c!color] % as well as permits local colors to take precedence {\letnaturaltablelocalparameter\c!color\empty \setnaturaltablelocalparameter\c!width{\d_tabl_ntb_width}% - \ifdim\d_tabl_ntb_height=\zeropoint\relax % case: nc=maxcolumns + \ifzeropt\d_tabl_ntb_height % case: nc=maxcolumns \else \setnaturaltablelocalparameter\c!height{\d_tabl_ntb_height}% \fi diff --git a/tex/context/base/mkiv/trac-deb.lua b/tex/context/base/mkiv/trac-deb.lua index 4d754ec68..b83e43ca7 100644 --- a/tex/context/base/mkiv/trac-deb.lua +++ b/tex/context/base/mkiv/trac-deb.lua @@ -171,7 +171,7 @@ end -- todo: \starttext bla \blank[foo] bla \stoptext local nop = function() end -local resetmessages = status.resetmessages() or nop +local resetmessages = status.resetmessages or nop local function processerror(offset) -- print("[[ last tex error: " .. tostring(status.lasterrorstring or "") .. " ]]") @@ -181,7 +181,8 @@ local function processerror(offset) -- print("[[ last context : " .. tostring(status.lasterrorcontext or "") .. " ]]") local inputstack = resolvers.inputstack - local filename = inputstack[#inputstack] or status.filename + local filename = inputstack[#inputstack-1] or status.filename -- weird, why -1 + ----- filename = status.filename -- weird, why -1 local linenumber = tonumber(status.linenumber) or 0 local lastcontext = status.lasterrorcontext local lasttexerror = status.lasterrorstring or "?" diff --git a/tex/context/base/mkiv/util-sql-imp-ffi.lua b/tex/context/base/mkiv/util-sql-imp-ffi.lua index 3731933f1..2b9f113af 100644 --- a/tex/context/base/mkiv/util-sql-imp-ffi.lua +++ b/tex/context/base/mkiv/util-sql-imp-ffi.lua @@ -153,7 +153,7 @@ ffi.cdef [[ ); */ ]] - +-- trackers.enable("*lib*") local sql = utilities.sql ----- mysql = ffi.load(os.name == "windows" and "libmysql" or "libmysqlclient") ----- mysql = ffilib(os.name == "windows" and "libmysql" or "libmysqlclient") diff --git a/tex/context/fonts/mkiv/type-imp-cow.mkiv b/tex/context/fonts/mkiv/type-imp-cow.mkiv index f93e36428..5194c70d9 100644 --- a/tex/context/fonts/mkiv/type-imp-cow.mkiv +++ b/tex/context/fonts/mkiv/type-imp-cow.mkiv @@ -45,8 +45,10 @@ \stoptypescript \starttypescript [all] [cow,sheep] - \definefontsynonym [Cows] [koeielett] - \definefontsynonym [CowsContour] [koeielett-contour] + \definefontsynonym [Cows] [koeielett]% tfm + % \definefontsynonym [Cows] [koeieletters]% afm + \definefontsynonym [CowsContour] [koeielett-contour]% tfm + % \definefontsynonym [CowsContour] [koeieletters-contour]% afm \definefontsynonym [CowsLogo] [koeielogos] \definefontsynonym [CowsLogoContour] [koeielogos-contour] \definefontsynonym [CowsMathRoman] [koeielett] @@ -56,7 +58,7 @@ \stoptypescript \starttypescript [all] [sheep] - \definefontsynonym [Sheep] [koeielett] + \definefontsynonym [Sheep] [koeielettters] \definefontsynonym [SheepContour] [koeielett-contour] \definefontsynonym [SheepLogo] [koeielogos] \definefontsynonym [SheepLogoContour] [koeielogos-contour] diff --git a/tex/context/interface/mkii/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml index bb4800900..358100151 100644 --- a/tex/context/interface/mkii/keys-cs.xml +++ b/tex/context/interface/mkii/keys-cs.xml @@ -150,6 +150,7 @@ + @@ -480,6 +481,7 @@ + @@ -641,6 +643,7 @@ + @@ -738,7 +741,9 @@ + + @@ -868,6 +873,7 @@ + @@ -968,9 +974,12 @@ + + + @@ -1288,6 +1297,7 @@ + @@ -1298,6 +1308,7 @@ + @@ -1305,6 +1316,7 @@ + diff --git a/tex/context/interface/mkii/keys-nl.xml b/tex/context/interface/mkii/keys-nl.xml index 45a4f36d6..55e0ff335 100644 --- a/tex/context/interface/mkii/keys-nl.xml +++ b/tex/context/interface/mkii/keys-nl.xml @@ -643,6 +643,7 @@ + @@ -872,6 +873,7 @@ + @@ -972,9 +974,12 @@ + + + @@ -1292,6 +1297,7 @@ + @@ -1302,6 +1308,7 @@ + @@ -1309,6 +1316,7 @@ + diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf index 9e16246d2..746358a5f 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-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf index 1f38209d2..bdf620c1a 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/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index ce333b321..f3409eb5d 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 : 08/05/19 10:34:41 +-- merge date : 08/09/19 18:29:14 do -- begin closure to overcome local limits and interference @@ -121,6 +121,9 @@ elseif not ffi.number then end if LUAVERSION>5.3 then end +if status and os.setenv then + os.setenv("engine",string.lower(status.luatex_engine or "unknown")) +end end -- closure @@ -9449,13 +9452,13 @@ function constructors.finalize(tfmdata) parameters.width=0 end if not parameters.slantfactor then - parameters.slantfactor=tfmdata.slant or 0 + parameters.slantfactor=(tfmdata.slant or 0)/1000 end if not parameters.extendfactor then - parameters.extendfactor=tfmdata.extend or 0 + parameters.extendfactor=(tfmdata.extend or 1000)/1000 end if not parameters.squeezefactor then - parameters.squeezefactor=tfmdata.squeeze or 0 + parameters.squeezefactor=(tfmdata.squeeze or 1000)/1000 end local designsize=parameters.designsize if designsize then @@ -15279,7 +15282,7 @@ do local function call(scope,list,bias) depth=depth+1 if top==0 then - showstate(formatters["unknown %s call"](scope)) + showstate(formatters["unknown %s call %s"](scope,"?")) top=0 else local index=stack[top]+bias @@ -15291,7 +15294,7 @@ do if tab then process(tab) else - showstate(formatters["unknown %s call %i"](scope,index)) + showstate(formatters["unknown %s call %s"](scope,index)) top=0 end end @@ -15361,7 +15364,7 @@ do i=i+1 local t=tab[i] if justpass then - if t>=34 or t<=37 then + if t>=34 and t<=37 then for i=1,top do r=r+1;result[r]=encode[stack[i]] end @@ -15463,12 +15466,16 @@ end end end end - local function setbias(globals,locals) + local function setbias(globals,locals,nobias) + if nobias then + return 0,0 + else local g=#globals local l=#locals return ((g<1240 and 107) or (g<33900 and 1131) or 32768)+1, ((l<1240 and 107) or (l<33900 and 1131) or 32768)+1 + end end local function processshape(tab,index) if not tab then @@ -15578,7 +15585,7 @@ end end return privatedata.nominalwidthx or 0,privatedata.defaultwidthx or 0 end - parsecharstrings=function(fontdata,data,glphs,doshapes,tversion,streams) + parsecharstrings=function(fontdata,data,glphs,doshapes,tversion,streams,nobias) local dictionary=data.dictionaries[1] local charstrings=dictionary.charstrings keepcurve=doshapes @@ -15589,7 +15596,7 @@ end charset=dictionary.charset vsindex=dictionary.vsindex or 0 glyphs=glphs or {} - globalbias,localbias=setbias(globals,locals) + globalbias,localbias=setbias(globals,locals,nobias) nominalwidth,defaultwidth=setwidths(dictionary.private) if charstrings then startparsing(fontdata,data,streams) @@ -15611,8 +15618,8 @@ end charset=false vsindex=dictionary.vsindex or 0 glyphs=glphs or {} - justpass=streams==true - globalbias,localbias=setbias(globals,locals) + justpass=streams==true + globalbias,localbias=setbias(globals,locals,nobias) nominalwidth,defaultwidth=setwidths(dictionary.private) processshape(tab,index-1) end @@ -16583,7 +16590,14 @@ local function repackpoints(glyphs,shapes) currentx=px currenty=py if lastflag==fl then - nofflags=nofflags+1 + if nofflags==255 then + lastflag=lastflag+0x08 + r=r+1 result[r]=char(lastflag,nofflags-1) + nofflags=1 + lastflag=fl + else + nofflags=nofflags+1 + end else if nofflags==1 then r=r+1 result[r]=chars[lastflag] @@ -33413,7 +33427,7 @@ do } }, } - fonts.handlers.otf.readers.parsecharstrings(false,data,glyphs,true,"cff",streams) + fonts.handlers.otf.readers.parsecharstrings(false,data,glyphs,true,"cff",streams,true) else lpegmatch(p_filternames,binary,1,filename) end -- cgit v1.2.3