From 2f803b924ffdfc6ecedd2cce775c05d7d0d3acfd Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Sun, 8 Nov 2020 13:13:43 +0100 Subject: 2020-11-08 12:34:00 --- scripts/context/lua/mtxrun.lua | 17 +-- scripts/context/stubs/mswin/mtxrun.lua | 17 +-- scripts/context/stubs/unix/mtxrun | 17 +-- scripts/context/stubs/win64/mtxrun.lua | 17 +-- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/cont-run.lua | 50 ++++---- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/context.mkxl | 6 +- tex/context/base/mkiv/core-env.mkxl | 8 +- tex/context/base/mkiv/font-fea.mklx | 36 +++--- tex/context/base/mkiv/font-sol.mklx | 131 +++++++++++++++++++++ tex/context/base/mkiv/lxml-css.lua | 4 +- tex/context/base/mkiv/pack-rul.mkxl | 4 +- tex/context/base/mkiv/status-files.pdf | Bin 29356 -> 29317 bytes tex/context/base/mkiv/status-lua.pdf | Bin 256482 -> 256477 bytes tex/context/base/mkiv/strc-lev.mklx | 101 ++++++++++++++++ tex/context/base/mkiv/strc-lev.mkvi | 32 +++-- tex/context/base/mkiv/symb-ini.mkxl | 7 +- tex/context/base/mkiv/syst-ini.mkxl | 2 +- tex/context/base/mkiv/trac-set.lua | 12 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 23 files changed, 359 insertions(+), 112 deletions(-) create mode 100644 tex/context/base/mkiv/font-sol.mklx create mode 100644 tex/context/base/mkiv/strc-lev.mklx diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index 8753c2821..3f2bb0051 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -12746,7 +12746,7 @@ do -- create closure to overcome 200 locals limit package.loaded["trac-set"] = package.loaded["trac-set"] or true --- original size: 13766, stripped down to: 9174 +-- original size: 13901, stripped down to: 9175 if not modules then modules={} end modules ['trac-set']={ version=1.001, @@ -12965,8 +12965,12 @@ local function show_setter(t) end end end -local function report_setter(setter,fmt,...) - print(formatters["%-15s : %s\n"](setter.name,formatters[fmt](...))) +function setters.report(setter,fmt,...) + if fmt then + print(formatters["%-15s : %s"](setter.name,formatters[fmt](...))) + else + print("") + end end local function setter_default(setter,name) local d=setter.data[name] @@ -12981,7 +12985,7 @@ local function new_setter(name) setter={ data=allocate(), name=name, - report=function(...) report_setter (setter,...) end, + report=function(...) setters.report (setter,...) end, enable=function(...) enable_setter (setter,...) end, disable=function(...) disable_setter (setter,...) end, reset=function(...) reset_setter (setter,...) end, @@ -12996,7 +13000,6 @@ local function new_setter(name) end setters.enable=enable_setter setters.disable=disable_setter -setters.report=report_setter setters.register=register_setter setters.list=list_setter setters.show=show_setter @@ -25773,8 +25776,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1023322 --- stripped bytes : 404488 +-- original bytes : 1023457 +-- stripped bytes : 404622 -- end library merge diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index 8753c2821..3f2bb0051 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -12746,7 +12746,7 @@ do -- create closure to overcome 200 locals limit package.loaded["trac-set"] = package.loaded["trac-set"] or true --- original size: 13766, stripped down to: 9174 +-- original size: 13901, stripped down to: 9175 if not modules then modules={} end modules ['trac-set']={ version=1.001, @@ -12965,8 +12965,12 @@ local function show_setter(t) end end end -local function report_setter(setter,fmt,...) - print(formatters["%-15s : %s\n"](setter.name,formatters[fmt](...))) +function setters.report(setter,fmt,...) + if fmt then + print(formatters["%-15s : %s"](setter.name,formatters[fmt](...))) + else + print("") + end end local function setter_default(setter,name) local d=setter.data[name] @@ -12981,7 +12985,7 @@ local function new_setter(name) setter={ data=allocate(), name=name, - report=function(...) report_setter (setter,...) end, + report=function(...) setters.report (setter,...) end, enable=function(...) enable_setter (setter,...) end, disable=function(...) disable_setter (setter,...) end, reset=function(...) reset_setter (setter,...) end, @@ -12996,7 +13000,6 @@ local function new_setter(name) end setters.enable=enable_setter setters.disable=disable_setter -setters.report=report_setter setters.register=register_setter setters.list=list_setter setters.show=show_setter @@ -25773,8 +25776,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1023322 --- stripped bytes : 404488 +-- original bytes : 1023457 +-- stripped bytes : 404622 -- end library merge diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index 8753c2821..3f2bb0051 100644 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -12746,7 +12746,7 @@ do -- create closure to overcome 200 locals limit package.loaded["trac-set"] = package.loaded["trac-set"] or true --- original size: 13766, stripped down to: 9174 +-- original size: 13901, stripped down to: 9175 if not modules then modules={} end modules ['trac-set']={ version=1.001, @@ -12965,8 +12965,12 @@ local function show_setter(t) end end end -local function report_setter(setter,fmt,...) - print(formatters["%-15s : %s\n"](setter.name,formatters[fmt](...))) +function setters.report(setter,fmt,...) + if fmt then + print(formatters["%-15s : %s"](setter.name,formatters[fmt](...))) + else + print("") + end end local function setter_default(setter,name) local d=setter.data[name] @@ -12981,7 +12985,7 @@ local function new_setter(name) setter={ data=allocate(), name=name, - report=function(...) report_setter (setter,...) end, + report=function(...) setters.report (setter,...) end, enable=function(...) enable_setter (setter,...) end, disable=function(...) disable_setter (setter,...) end, reset=function(...) reset_setter (setter,...) end, @@ -12996,7 +13000,6 @@ local function new_setter(name) end setters.enable=enable_setter setters.disable=disable_setter -setters.report=report_setter setters.register=register_setter setters.list=list_setter setters.show=show_setter @@ -25773,8 +25776,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1023322 --- stripped bytes : 404488 +-- original bytes : 1023457 +-- stripped bytes : 404622 -- end library merge diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua index 8753c2821..3f2bb0051 100644 --- a/scripts/context/stubs/win64/mtxrun.lua +++ b/scripts/context/stubs/win64/mtxrun.lua @@ -12746,7 +12746,7 @@ do -- create closure to overcome 200 locals limit package.loaded["trac-set"] = package.loaded["trac-set"] or true --- original size: 13766, stripped down to: 9174 +-- original size: 13901, stripped down to: 9175 if not modules then modules={} end modules ['trac-set']={ version=1.001, @@ -12965,8 +12965,12 @@ local function show_setter(t) end end end -local function report_setter(setter,fmt,...) - print(formatters["%-15s : %s\n"](setter.name,formatters[fmt](...))) +function setters.report(setter,fmt,...) + if fmt then + print(formatters["%-15s : %s"](setter.name,formatters[fmt](...))) + else + print("") + end end local function setter_default(setter,name) local d=setter.data[name] @@ -12981,7 +12985,7 @@ local function new_setter(name) setter={ data=allocate(), name=name, - report=function(...) report_setter (setter,...) end, + report=function(...) setters.report (setter,...) end, enable=function(...) enable_setter (setter,...) end, disable=function(...) disable_setter (setter,...) end, reset=function(...) reset_setter (setter,...) end, @@ -12996,7 +13000,6 @@ local function new_setter(name) end setters.enable=enable_setter setters.disable=disable_setter -setters.report=report_setter setters.register=register_setter setters.list=list_setter setters.show=show_setter @@ -25773,8 +25776,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1023322 --- stripped bytes : 404488 +-- original bytes : 1023457 +-- stripped bytes : 404622 -- end library merge diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 3089bcf23..17509ed5e 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{2020.11.07 18:44} +\newcontextversion{2020.11.08 12:31} %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 4eb3ed8ce..2674b49a3 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{2020.11.07 18:44} +\edef\contextversion{2020.11.08 12:31} %D For those who want to use this: diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index f19302817..0b99557c4 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{2020.11.07 18:44} +\newcontextversion{2020.11.08 12:31} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/cont-run.lua b/tex/context/base/mkiv/cont-run.lua index 8f990cca5..e9bb5b338 100644 --- a/tex/context/base/mkiv/cont-run.lua +++ b/tex/context/base/mkiv/cont-run.lua @@ -9,27 +9,27 @@ if not modules then modules = { } end modules ['cont-run'] = { -- When a style is loaded there is a good change that we never enter -- this code. -local report = logs.reporter("system") local type, tostring = type, tostring -local report = logs.reporter("sandbox","call") -local fastserialize = table.fastserialize -local quoted = string.quoted -local possiblepath = sandbox.possiblepath - -local context = context -local implement = interfaces.implement - -local qualified = { } -local writeable = { } -local readable = { } -local blocked = { } -local trace_files = false -local trace_calls = false -local nofcalls = 0 -local nofrejected = 0 -local logfilename = "sandbox.log" +local report_sandbox = logs.reporter("sandbox","call") +local report_system = logs.reporter("system") +local fastserialize = table.fastserialize +local quoted = string.quoted +local possiblepath = sandbox.possiblepath + +local context = context +local implement = interfaces.implement + +local qualified = { } +local writeable = { } +local readable = { } +local blocked = { } +local trace_files = false +local trace_calls = false +local nofcalls = 0 +local nofrejected = 0 +local logfilename = "sandbox.log" local function registerstats() statistics.register("sandboxing", function() @@ -82,7 +82,7 @@ local function logsandbox(details) end end if trace_calls then - report("%s(%,t) => %l",details.comment,arguments,result) + report_sandbox("%s(%,t) => %l",details.comment,arguments,result) end nofcalls = nofcalls + 1 if not result then @@ -146,7 +146,7 @@ local debugging = environment.arguments.debug if sandboxing then - report("enabling sandbox") + report_system("enabling sandbox") sandbox.enable() @@ -239,7 +239,7 @@ local function processjob() -- can be part of (any) loaded (sub) file. The \starttext -- wrapping might go away. - report("processing as xml: %s",filename) + report_system("processing as xml: %s",filename) context.starttext() context.xmlprocess("main",filename,"") @@ -247,7 +247,7 @@ local function processjob() elseif suffix == "cld" or arguments.forcecld then - report("processing as cld: %s",filename) + report_system("processing as cld: %s",filename) context.runfile(filename) @@ -256,7 +256,7 @@ local function processjob() -- The wrapping might go away. Why is is it there in the -- first place. - report("processing as lua: %s",filename) + report_system("processing as lua: %s",filename) context.starttext() context.ctxlua(string.format('dofile("%s")',filename)) @@ -264,7 +264,7 @@ local function processjob() elseif suffix == "mp" or arguments.forcemp then - report("processing as metapost: %s",filename) + report_system("processing as metapost: %s",filename) context.starttext() context.processMPfigurefile(filename) @@ -281,7 +281,7 @@ local function processjob() elseif suffix == "mps" or arguments.forcemps then - report("processing metapost output: %s",filename) + report_system("processing metapost output: %s",filename) context.starttext() context.startTEXpage() diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index 8e5888eb9..9e91a2475 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{2020.11.07 18:44} +\edef\contextversion{2020.11.08 12:31} %D Kind of special: diff --git a/tex/context/base/mkiv/context.mkxl b/tex/context/base/mkiv/context.mkxl index 8562fc981..c00ca6194 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{2020.11.07 18:44} +\edef\contextversion{2020.11.08 12:31} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error @@ -265,7 +265,7 @@ \loadmarkfile{strc-def} % might happen later \loadmklxfile{strc-ref} %loadmarkfile{strc-reg} -\loadmkvifile{strc-lev} % experiment +\loadmklxfile{strc-lev} % experiment \loadmkxlfile{spac-hor} \loadmkxlfile{spac-ali} @@ -506,7 +506,7 @@ \loadmarkfile{phys-dim} \loadmarkfile{node-rul} % beware, defined \underbar so after math -\loadmkvifile{font-sol} % font solutions +\loadmklxfile{font-sol} % font solutions \loadmklxfile{strc-not} \loadmkvifile{strc-lnt} diff --git a/tex/context/base/mkiv/core-env.mkxl b/tex/context/base/mkiv/core-env.mkxl index c862935e6..47f2c3c6c 100644 --- a/tex/context/base/mkiv/core-env.mkxl +++ b/tex/context/base/mkiv/core-env.mkxl @@ -49,13 +49,13 @@ \immutable\def\??mode{mode>} % special namespace, also used at lua end -\permanent\protected\def\newmode #1{\ifcsname \??mode#1\endcsname\else\setmode{#1}\fi} +\permanent\protected\def\newmode #1{\ifcsname \??mode#1\endcsname\else\resetmode{#1}\fi} \permanent\protected\def\setmode #1{\expandafter \integerdef\csname\??mode#1\endcsname\plusone} \permanent\protected\def\resetmode #1{\expandafter \integerdef\csname\??mode#1\endcsname\zerocount} \permanent\protected\def\globalsetmode #1{\global\expandafter\integerdef\csname\??mode#1\endcsname\plusone} \permanent\protected\def\globalresetmode #1{\global\expandafter\integerdef\csname\??mode#1\endcsname\zerocount} -\permanent\protected\def\newsystemmode #1{\ifcsname \??mode\systemmodeprefix#1\endcsname\else\setsystemmode{#1}\fi} +\permanent\protected\def\newsystemmode #1{\ifcsname \??mode\systemmodeprefix#1\endcsname\else\resetsystemmode{#1}\fi} \permanent\protected\def\setsystemmode #1{\expandafter \integerdef\csname\??mode\systemmodeprefix#1\endcsname\plusone} \permanent\protected\def\resetsystemmode #1{\expandafter \integerdef\csname\??mode\systemmodeprefix#1\endcsname\zerocount} \permanent\protected\def\globalsetsystemmode #1{\global\expandafter\integerdef\csname\??mode\systemmodeprefix#1\endcsname\plusone} @@ -130,8 +130,10 @@ \fi \ifx\m_modes_asked\v!keep % not changes, disabled when undefined + \orelse\ifx\m_modes_asked\v!yes + \setmode{#1}% \else - \expandafter\integerdef\lastnamedcs\ifx\m_modes_asked\v!yes\plusone\else\zerocount\fi + \resetmode{#1}% \fi} % handy for mp diff --git a/tex/context/base/mkiv/font-fea.mklx b/tex/context/base/mkiv/font-fea.mklx index 46034f82a..5f83c87d3 100644 --- a/tex/context/base/mkiv/font-fea.mklx +++ b/tex/context/base/mkiv/font-fea.mklx @@ -202,7 +202,7 @@ \c_font_feature_state\zerocount \let\currentfeature\m_font_feature_asked} -\protected\def\resetfeature +\permanent\protected\def\resetfeature {\ifx\currentfeature\s!current \else \font_feature_reset_indeed \fi} @@ -213,7 +213,7 @@ \let\m_font_feature_list \s!current \clf_resetfeature} -\protected\def\revivefeature +\permanent\protected\def\revivefeature {\ifx\currentfeature\s!current \else \font_feature_revive_indeed \fi} @@ -296,28 +296,30 @@ \let\m_font_feature_list\currentfeature \clf_setfontfeature{\currentfeature}} -\let\resetfontfeature\resetfeature +% these are obsolete (don't use them any longer) + +\aliased\let\resetfontfeature\resetfeature % obsolete % these are obsolete (don't use them any longer) -% \let\addfontfeaturetoset \font_feature_add_nop -% \let\subtractfontfeaturefromset \font_feature_subtract_nop -% \let\addfontfeaturetofont \font_feature_add_nop -% \let\subtractfontfeaturefromfont\font_feature_subtract_nop +% \let\addfontfeaturetoset \font_feature_add_nop % obsolete +% \let\subtractfontfeaturefromset \font_feature_subtract_nop % obsolete +% \let\addfontfeaturetofont \font_feature_add_nop % obsolete +% \let\subtractfontfeaturefromfont\font_feature_subtract_nop % obsolete -% also old, maybe some day a comptability module +% these are obsolete (don't use them any longer) -\let\setff\setfontfeature -\let\addfs\doaddfeature -\let\subfs\dosubtractfeature -\let\addff\doaddfeature -\let\subff\dosubtractfeature +\aliased\let\setff\setfontfeature % obsolete +\aliased\let\addfs\doaddfeature % obsolete +\aliased\let\subfs\dosubtractfeature % obsolete +\aliased\let\addff\doaddfeature % obsolete +\aliased\let\subff\dosubtractfeature % obsolete %D \macros %D {os} %D -%D In good old \TEX, the old style numerals were often taken -%D from the math fonts. No longer. +%D In good old \TEX, the old style numerals were often taken from the math fonts. No +%D longer. \definefontfeature [just-os] @@ -334,8 +336,8 @@ \permanent\def\doifelsefontfeature #feature{\clf_doifelsefontfeature {#feature}} % expandable \permanent\def\doifunknownfontfeature #feature{\clf_doifunknownfontfeature {#feature}} % expandable -\let\doifcurrentfonthasfeatureelse\doifelsecurrentfonthasfeature -\let\doiffontfeatureelse \doifelsefontfeature +\aliased\let\doifcurrentfonthasfeatureelse\doifelsecurrentfonthasfeature +\aliased\let\doiffontfeatureelse \doifelsefontfeature % new: diff --git a/tex/context/base/mkiv/font-sol.mklx b/tex/context/base/mkiv/font-sol.mklx new file mode 100644 index 000000000..8f3d3d712 --- /dev/null +++ b/tex/context/base/mkiv/font-sol.mklx @@ -0,0 +1,131 @@ +%D \module +%D [ file=font-sol, +%D version=2009.05.19, +%D title=\CONTEXT\ Font Macros, +%D subtitle=Solutions, +%D author=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. + +\writestatus{loading}{ConTeXt Node Support / Splitters} + +% todo: pass color for tracing + +%D This module is specially made for the oriental \TEX\ project. The working is as +%D follows (and tuned for fonts like Idris' Husayni. The following method came to +%D my mind after a couple of Skype sessions with Idris while working on the rough +%D edges of the Husayni font and playing with font dynamics. +%D +%D \startitemize[packed] +%D +%D \item We define a couple of features sets, some can have stylistics variants +%D that result in the same words getting a different width. Normally this +%D happens in a goodies file. +%D +%D \item We group such features in a solution set. A solutionset can be enabled +%D by setting an attribute. +%D +%D \item For each paragraph we identify words that get this set applied. We replace +%D these words by a user node that refers to the original. +%D +%D \item For each word we apply the features to a copy that we associate with this +%D original word. +%D +%D \item At the end we have a paragraph (node list) with user nodes that point to a +%D cache that has originals and processed variants. +%D +%D \item When the paragraph is broken into lines we optimize the spacing by +%D substituting variants. +%D +%D \stopitemize +%D +%D This approach permits us to use a dedicated paragraph builder, one that treats +%D the user nodes special and takes the alternatives into account. +%D +%D Currently we assume only one solution being active. Maybe some day I'll support +%D a mixture. This is only one way of optimizing and after several experiments this +%D one was chosen as testcase. It took quite some experiments (and time) to get thus +%D far. +%D +%D The is experimental code for the Oriental \TEX\ project and aspects of it might +%D change. +%D +%D \starttyping +%D \setupfontsolutions[method={random,preroll},criterium=1,randomseed=101] +%D +%D \definefontsolution % actually only the last run needs to be done this way +%D [FancyHusayni] +%D [goodies=husayni, +%D solution=experimental] +%D +%D \definedfont[husayni*husayni-default at 24pt] +%D \setupinterlinespace[line=36pt] +%D \righttoleft +%D \enabletrackers[parbuilders.solutions.splitters.colors] +%D \setfontsolution[FancyHusayni] +%D alb alb alb \par +%D \resetfontsolution +%D \disabletrackers[parbuilders.solutions.splitters.colors] +%D \stoptyping + +\registerctxluafile{font-sol}{} + +\unprotect + +\definesystemattribute[splitter][public] + +\installcorenamespace{fontsolution} + +\installcommandhandler \??fontsolution {fontsolution} \??fontsolution + +\aliased\let\setupfontsolutions\setupfontsolution + +\appendtoks + \clf_definefontsolution + {\currentfontsolution}% + {% these are frozen + goodies {\fontsolutionparameter\s!goodies}% + solution {\fontsolutionparameter\c!solution}% + less {\fontsolutionparameter\c!less}% + more {\fontsolutionparameter\c!more}% + }% + \relax +\to \everydefinefontsolution + +\permanent\protected\def\setfontsolution[#solution]% just one + {\edef\currentfontsolution{#solution}% + \clf_setfontsolution + {\currentfontsolution}% + {% + method {\fontsolutionparameter\c!method}% + criterium {\fontsolutionparameter\c!criterium}% + % randomseed {\fontsolutionparameter\c!random}% + }% + \relax} + +\let\currentfontsolution\empty + +\permanent\protected\def\resetfontsolution % resets all + {\clf_resetfontsolution + \let\currentfontsolution\empty} + +\permanent\protected\def\startfontsolution % [#1] + {\pushmacro\currentfontsolution + \setfontsolution} + +\permanent\protected\def\stopfontsolution + {\ifhmode\par\fi + \clf_stopfontsolution + \popmacro\currentfontsolution} + +% We initialize this module at the \LUA\ end. +% +% \setupfontsolutions +% [\c!method={\v!normal,preroll}, +% \c!criterium=0] + +\protect diff --git a/tex/context/base/mkiv/lxml-css.lua b/tex/context/base/mkiv/lxml-css.lua index 96dc626f7..f783a9224 100644 --- a/tex/context/base/mkiv/lxml-css.lua +++ b/tex/context/base/mkiv/lxml-css.lua @@ -17,6 +17,8 @@ local setmetatableindex = table.setmetatableindex xml.css = xml.css or { } local css = xml.css +local report_css = logs and logs.reporter("xml","css") or function(...) print(string.format(...)) end + local getid = lxml.getid if not number.dimenfactors then @@ -787,7 +789,7 @@ local p_not = P(":not") * Cc(true) * skipspace * P("(") * skipspace local p_yes = Cc(false) * skipspace * p_step local p_stepper = Ct((skipspace * (p_not+p_yes))^1) -local p_steps = Ct((p_stepper * p_separator^0)^1) * skipspace * (P(-1) + function() print("error") end) +local p_steps = Ct((p_stepper * p_separator^0)^1) * skipspace * (P(-1) + function() report_css("recovering from error") end) local cache = setmetatableindex(function(t,k) local v = lpegmatch(p_steps,k) or false diff --git a/tex/context/base/mkiv/pack-rul.mkxl b/tex/context/base/mkiv/pack-rul.mkxl index 8ab327c79..c9383dff0 100644 --- a/tex/context/base/mkiv/pack-rul.mkxl +++ b/tex/context/base/mkiv/pack-rul.mkxl @@ -70,7 +70,7 @@ %D Inheritance: \permanent\protected\def\installinheritedframed#1% - {\normalexpanded{\doinstallinheritedframed + {\normalexpanded{\mult_interfaces_install_inherited_framed \expandafter\noexpand\csname current#1\endcsname \expandafter\noexpand\csname #1parameter\endcsname \expandafter\noexpand\csname #1parameterhash\endcsname @@ -81,7 +81,7 @@ \expandafter\noexpand\csname inherited#1framed\endcsname \expandafter\noexpand\csname inherited#1framedbox\endcsname}} % new -\protected\def\doinstallinheritedframed#1#2#3#4#5#6#7#8#9% +\protected\def\mult_interfaces_install_inherited_framed#1#2#3#4#5#6#7#8#9% {\enforced\frozen\def#5##1##2{\ifx##1\relax#6{##2}\else#4{##1}{##2}\fi}% \enforced\frozen\def#6##1{\ifcsname\??framed:##1\endcsname\??framed:##1\else\??empty\fi}% root \frozen\instance\protected\def#8% diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index d9a49b9af..a71011ae0 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 b9de0083b..39b3b5304 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-lev.mklx b/tex/context/base/mkiv/strc-lev.mklx new file mode 100644 index 000000000..b8b633c32 --- /dev/null +++ b/tex/context/base/mkiv/strc-lev.mklx @@ -0,0 +1,101 @@ +%D \module +%D [ file=strc-lev, +%D version=2010.09.23, +%D title=\CONTEXT\ Structure Macros, +%D subtitle=Automatic Levels, +%D author=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. + +\writestatus{loading}{ConTeXt Structure Macros / Automatic Levels} + +%D This module is the result of a discussion between Alan Braslau and +%D me. I used to have a private (\MKII) module for this but the new +%D structure code in \MKIV\ is more suitable for this so now we have +%D it as core functionality. For the moment this an experiment that +%D Alan and I conduct so it might evolve. + +\registerctxluafile{strc-lev}{} + +\unprotect + +\unexpanded\def\definesectionlevels{\dodoubleargument\strc_levels_define} +\unexpanded\def\startsectionlevel {\dosingleempty \strc_levels_start_section} +\unexpanded\def\startsubjectlevel {\dosingleempty \strc_levels_start_subject} + +\unexpanded\def\strc_levels_define[#category][#list]{\clf_definesectionlevels{#category}{#list}} +\unexpanded\def\stopsectionlevel {\clf_stopsectionlevel} +\unexpanded\def\stopsubjectlevel {\clf_stopsectionlevel} + +\unexpanded\def\nostarthead{\dotripleargument\strc_levels_start_nop} % used at the lua end +\unexpanded\def\nostophead {\dosingleargument\strc_levels_stop_nop } % used at the lua end + +\unexpanded\def\strc_levels_start_section[#category]% + {\doifelseassignment{#category}% + {\clf_startsectionlevel\plusone{\v!default}{\currentnamedsection}[#category]}% + {\clf_startsectionlevel\plusone {#category}{\currentnamedsection}}} + +\unexpanded\def\strc_levels_start_subject[#category]% + {\doifelseassignment{#category}% + {\clf_startsectionlevel\plustwo{\v!default}{\currentnamedsection}[#category]}% + {\clf_startsectionlevel\plustwo {#category}{\currentnamedsection}}} + +\unexpanded\def\strc_levels_start_nop[#category][#settings][#userdata]% + {\blank + \noindentation{\tttf[start missing section level #category]} + \blank} + +\unexpanded\def\strc_levels_stop_nop[#category]% + {\blank + \noindentation{\tttf[stop missing section level #category]} + \blank} + +\definesectionlevels + [\v!default] + [{\v!chapter,\v!title}, + {\v!section,\v!subject}, + {\v!subsection,\v!subsubject}, + {\v!subsubsection,\v!subsubsubject}, + {\v!subsubsubsection,\v!subsubsubject}, + {\v!subsubsubsubsection,\v!subsubsubject}] + +\let\definestructurelevels\definesectionlevels +\let\startstructurelevel \startsectionlevel +\let\stopstructurelevel \stopsectionlevel + +\protect \endinput + +% \starttext +% +% \definehead[xxxxxxsection][subsubsection] +% \setuphead [xxxxxxsection][color=red] +% +% \definesectionlevels[main][chapter,section,subsection,subsubsection] +% \definesectionlevels[next][chapter,section,subsection,xxxxxxsection] +% +% \startsectionlevel [main] [title=first top level] +% +% \startsectionlevel [main] [title=first lower level] +% \startsectionlevel [main] [title=second lower level] +% \startsectionlevel [main] [title=third lower level] +% test +% \stopsectionlevel +% \stopsectionlevel +% \stopsectionlevel +% +% \startsectionlevel [main] [title=first lower level] +% \startsectionlevel [main] [title=second lower level] +% \startsectionlevel [next] [title=third lower level] +% test +% \stopsectionlevel +% \stopsectionlevel +% \stopsectionlevel +% +% \stopsectionlevel +% +% \stoptext + diff --git a/tex/context/base/mkiv/strc-lev.mkvi b/tex/context/base/mkiv/strc-lev.mkvi index b8b633c32..cfb704fc9 100644 --- a/tex/context/base/mkiv/strc-lev.mkvi +++ b/tex/context/base/mkiv/strc-lev.mkvi @@ -23,33 +23,31 @@ \unprotect -\unexpanded\def\definesectionlevels{\dodoubleargument\strc_levels_define} -\unexpanded\def\startsectionlevel {\dosingleempty \strc_levels_start_section} -\unexpanded\def\startsubjectlevel {\dosingleempty \strc_levels_start_subject} +\permanent\tolerant\protected\def\definesectionlevels[#category]#spacer[#list]% + {\clf_definesectionlevels{#category}{#list}} % we could scan/use public at the lua end -\unexpanded\def\strc_levels_define[#category][#list]{\clf_definesectionlevels{#category}{#list}} -\unexpanded\def\stopsectionlevel {\clf_stopsectionlevel} -\unexpanded\def\stopsubjectlevel {\clf_stopsectionlevel} - -\unexpanded\def\nostarthead{\dotripleargument\strc_levels_start_nop} % used at the lua end -\unexpanded\def\nostophead {\dosingleargument\strc_levels_stop_nop } % used at the lua end - -\unexpanded\def\strc_levels_start_section[#category]% +\permanent\tolerant\protected\def\startsectionlevel[#category]% {\doifelseassignment{#category}% {\clf_startsectionlevel\plusone{\v!default}{\currentnamedsection}[#category]}% {\clf_startsectionlevel\plusone {#category}{\currentnamedsection}}} -\unexpanded\def\strc_levels_start_subject[#category]% +\permanent\protected\def\stopsectionlevel + {\clf_stopsectionlevel} % we could use public at the lua end + +\permanent\tolerant\protected\def\startsubjectlevel[#category]% {\doifelseassignment{#category}% {\clf_startsectionlevel\plustwo{\v!default}{\currentnamedsection}[#category]}% {\clf_startsectionlevel\plustwo {#category}{\currentnamedsection}}} -\unexpanded\def\strc_levels_start_nop[#category][#settings][#userdata]% +\permanent\protected\def\stopsubjectlevel + {\clf_stopsectionlevel} % we could use public at the lua end + +\permanent\tolerant\protected\def\nostarthead[#category]#spacer[#settings]#spacer[#userdata]% {\blank \noindentation{\tttf[start missing section level #category]} \blank} -\unexpanded\def\strc_levels_stop_nop[#category]% +\permanent\tolerant\protected\def\nostarthead[#category]% {\blank \noindentation{\tttf[stop missing section level #category]} \blank} @@ -63,9 +61,9 @@ {\v!subsubsubsection,\v!subsubsubject}, {\v!subsubsubsubsection,\v!subsubsubject}] -\let\definestructurelevels\definesectionlevels -\let\startstructurelevel \startsectionlevel -\let\stopstructurelevel \stopsectionlevel +\aliased\let\definestructurelevels\definesectionlevels +\aliased\let\startstructurelevel \startsectionlevel +\aliased\let\stopstructurelevel \stopsectionlevel \protect \endinput diff --git a/tex/context/base/mkiv/symb-ini.mkxl b/tex/context/base/mkiv/symb-ini.mkxl index ae1fe8565..53a1f8979 100644 --- a/tex/context/base/mkiv/symb-ini.mkxl +++ b/tex/context/base/mkiv/symb-ini.mkxl @@ -208,8 +208,7 @@ %D By default, such symbols scale along the current bodyfont size or running font %D size (which is better). -\ifdefined\externalfigure \else \def\externalfigure[#1][#2]{#1} \fi -\ifdefined\resetexternalfigures \else \let\resetexternalfigures\relax \fi +\ifdefined\externalfigure \else \def\externalfigure[#1][#2]{#1} \fi \def\defaultsymbolfactor{10} \def\defaultsymbolheight{1.25ex} @@ -217,10 +216,6 @@ \permanent\tolerant\protected\def\figuresymbol[#1]#*[#2]% {\externalfigure[#1][\c!reset=\v!yes,\c!symbol=\v!yes,\c!height=\defaultsymbolheight,#2]} -\appendtoks - \resetexternalfigures -\to \everysymbol - \permanent\tolerant\protected\def\definefiguresymbol[#1]#*[#2]#*[#3]% {\ifarguments\or\else \definesymbol[#1][{\symb_figure[#2][#3]}]% diff --git a/tex/context/base/mkiv/syst-ini.mkxl b/tex/context/base/mkiv/syst-ini.mkxl index 02202063c..f04e2e2db 100644 --- a/tex/context/base/mkiv/syst-ini.mkxl +++ b/tex/context/base/mkiv/syst-ini.mkxl @@ -514,7 +514,7 @@ \permanent\def\emptyvbox{\normalvpack{}} % no copy as we need to set attributes \permanent\def\emptyhbox{\normalhpack{}} % no copy as we need to set attributes -\let\leavevmode\unvoidbox % we prefer to use \dontleavehmode +\aliased\let\leavevmode\unvoidbox % we prefer to use \dontleavehmode %D \macros %D {dontcomplain} diff --git a/tex/context/base/mkiv/trac-set.lua b/tex/context/base/mkiv/trac-set.lua index 85a1155f1..3974830fa 100644 --- a/tex/context/base/mkiv/trac-set.lua +++ b/tex/context/base/mkiv/trac-set.lua @@ -254,8 +254,12 @@ end -- we could make this into a module but we also want the rest avaliable -local function report_setter(setter,fmt,...) - print(formatters["%-15s : %s\n"](setter.name,formatters[fmt](...))) +function setters.report(setter,fmt,...) + if fmt then + print(formatters["%-15s : %s"](setter.name,formatters[fmt](...))) + else + print("") + end end local function setter_default(setter,name) @@ -273,7 +277,7 @@ local function new_setter(name) -- we could use foo:bar syntax (but not used tha setter = { data = allocate(), -- indexed, but also default and value fields name = name, - report = function(...) report_setter (setter,...) end, + report = function(...) setters.report (setter,...) end, -- setters.report gets implemented later enable = function(...) enable_setter (setter,...) end, disable = function(...) disable_setter (setter,...) end, reset = function(...) reset_setter (setter,...) end, -- can be dangerous @@ -289,7 +293,7 @@ end setters.enable = enable_setter setters.disable = disable_setter -setters.report = report_setter +-------.report = report_setter -- todo: adapt after call (defaults to print) setters.register = register_setter setters.list = list_setter setters.show = show_setter diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 368ce6215..da9e5bc11 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 : 2020-11-07 18:44 +-- merge date : 2020-11-08 12:31 do -- begin closure to overcome local limits and interference -- cgit v1.2.3