diff options
39 files changed, 940 insertions, 687 deletions
diff --git a/context/data/scite/lexers/data/scite-context-data-context.lua b/context/data/scite/lexers/data/scite-context-data-context.lua index 1c74aba9b..46c028941 100644 --- a/context/data/scite/lexers/data/scite-context-data-context.lua +++ b/context/data/scite/lexers/data/scite-context-data-context.lua @@ -1,4 +1,4 @@ return { ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "plussixteen", "plushundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "etexversion", "pdftexversion", "xetexversion", "xetexrevision", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "spaceasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vcentergroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "vadjustgroupcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathsupdisplay", "mathsupnormal", "mathsupcramped", "mathsubnormal", "mathsubcombined", "mathaxisheight", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifmodeelse", "doifnotmode", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "setupdocument", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "luastringsep", "!!bs", "!!es" }, - ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "doifelsecommandhandler", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthsargumenttrue", "sixthargumentfalse", "sixtsargumenttrue", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchcounter", "globalscratchcounter", "scratchdimen", "globalscratchdimen", "scratchskip", "globalscratchskip", "scratchmuskip", "globalscratchmuskip", "scratchtoks", "globalscratchtoks", "scratchbox", "globalscratchbox", "availablehsize", "localhsize", "setlocalhsize", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "doifinset", "doifnotinset", "doifinsetelse", "doifnextcharelse", "doifnextoptionalelse", "doifnextbgroupelse", "doifnextparenthesiselse", "doiffastoptionalcheckelse", "doifundefinedelse", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifdimensionelse", "doifnumberelse", "doifnumber", "doifnotnumber", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifinstringelse", "doifassignmentelse", "docheckassignment", "tracingall", "tracingnone", "loggingall", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "everyendpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "obeyspaces", "obeylines", "obeyedspace", "obeyedline", "normalspace", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "installcorenamespace", "getvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "glet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protected", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "dowith", "newconstant", "setnewconstant", "newconditional", "settrue", "setfalse", "setconstant", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "strut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "uncramped", "cramped", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expdoifelse", "expdoif", "expdoifnot", "expdoifcommonelse", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "carryoverpar", "Umathbotaccent" }, + ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "doifelsecommandhandler", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "strippedcsname", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthsargumenttrue", "sixthargumentfalse", "sixtsargumenttrue", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchcounter", "globalscratchcounter", "scratchdimen", "globalscratchdimen", "scratchskip", "globalscratchskip", "scratchmuskip", "globalscratchmuskip", "scratchtoks", "globalscratchtoks", "scratchbox", "globalscratchbox", "availablehsize", "localhsize", "setlocalhsize", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "doifinset", "doifnotinset", "doifinsetelse", "doifnextcharelse", "doifnextoptionalelse", "doifnextbgroupelse", "doifnextparenthesiselse", "doiffastoptionalcheckelse", "doifundefinedelse", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifdimensionelse", "doifnumberelse", "doifnumber", "doifnotnumber", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifinstringelse", "doifassignmentelse", "docheckassignment", "tracingall", "tracingnone", "loggingall", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "everyendpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "obeyspaces", "obeylines", "obeyedspace", "obeyedline", "normalspace", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "installcorenamespace", "getvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "glet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protected", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "dowith", "newconstant", "setnewconstant", "newconditional", "settrue", "setfalse", "setconstant", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "strut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "uncramped", "cramped", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expdoifelse", "expdoif", "expdoifnot", "expdoifcommonelse", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "carryoverpar", "Umathbotaccent" }, }
\ No newline at end of file diff --git a/context/data/scite/scite-context-data-context.properties b/context/data/scite/scite-context-data-context.properties index 0de70e9c5..da62440da 100644 --- a/context/data/scite/scite-context-data-context.properties +++ b/context/data/scite/scite-context-data-context.properties @@ -71,109 +71,109 @@ setsystemmode resetsystemmode pushsystemmode popsystemmode booleanmodevalue \ newcount newdimen newskip newmuskip newbox \ newtoks newread newwrite newmarks newinsert \ newattribute newif newlanguage newfamily newfam \ -newhelp then begcsname firstargumentfalse firstargumenttrue \ -secondargumentfalse secondargumenttrue thirdargumentfalse thirdargumenttrue fourthargumentfalse \ -fourthargumenttrue fifthargumentfalse fifthsargumenttrue sixthargumentfalse sixtsargumenttrue \ -doglobal dodoglobal redoglobal resetglobal donothing \ -dontcomplain forgetall donetrue donefalse htdp \ -unvoidbox hfilll vfilll mathbox mathlimop \ -mathnolop mathnothing mathalpha currentcatcodetable defaultcatcodetable \ -catcodetablename newcatcodetable startcatcodetable stopcatcodetable startextendcatcodetable \ -stopextendcatcodetable pushcatcodetable popcatcodetable restorecatcodes setcatcodetable \ -letcatcodecommand defcatcodecommand uedcatcodecommand hglue vglue \ -hfillneg vfillneg hfilllneg vfilllneg ruledhss \ -ruledhfil ruledhfill ruledhfilneg ruledhfillneg normalhfillneg \ -ruledvss ruledvfil ruledvfill ruledvfilneg ruledvfillneg \ -normalvfillneg ruledhbox ruledvbox ruledvtop ruledvcenter \ -ruledhskip ruledvskip ruledkern ruledmskip ruledmkern \ -ruledhglue ruledvglue normalhglue normalvglue ruledpenalty \ -filledhboxb filledhboxr filledhboxg filledhboxc filledhboxm \ -filledhboxy filledhboxk scratchcounter globalscratchcounter scratchdimen \ -globalscratchdimen scratchskip globalscratchskip scratchmuskip globalscratchmuskip \ -scratchtoks globalscratchtoks scratchbox globalscratchbox availablehsize \ -localhsize setlocalhsize nextbox dowithnextbox dowithnextboxcs \ -dowithnextboxcontent dowithnextboxcontentcs scratchwidth scratchheight scratchdepth \ -scratchoffset scratchdistance scratchhsize scratchvsize scratchxoffset \ -scratchyoffset scratchhoffset scratchvoffset scratchxposition scratchyposition \ -scratchtopoffset scratchbottomoffset scratchleftoffset scratchrightoffset scratchcounterone \ -scratchcountertwo scratchcounterthree scratchdimenone scratchdimentwo scratchdimenthree \ -scratchskipone scratchskiptwo scratchskipthree scratchmuskipone scratchmuskiptwo \ -scratchmuskipthree scratchtoksone scratchtokstwo scratchtoksthree scratchboxone \ -scratchboxtwo scratchboxthree scratchnx scratchny scratchmx \ -scratchmy scratchunicode scratchleftskip scratchrightskip scratchtopskip \ -scratchbottomskip doif doifnot doifelse doifinset \ -doifnotinset doifinsetelse doifnextcharelse doifnextoptionalelse doifnextbgroupelse \ -doifnextparenthesiselse doiffastoptionalcheckelse doifundefinedelse doifdefinedelse doifundefined \ -doifdefined doifelsevalue doifvalue doifnotvalue doifnothing \ -doifsomething doifelsenothing doifsomethingelse doifvaluenothing doifvaluesomething \ -doifelsevaluenothing doifdimensionelse doifnumberelse doifnumber doifnotnumber \ -doifcommonelse doifcommon doifnotcommon doifinstring doifnotinstring \ -doifinstringelse doifassignmentelse docheckassignment tracingall tracingnone \ -loggingall removetoks appendtoks prependtoks appendtotoks \ -prependtotoks to endgraf endpar everyendpar \ -reseteverypar finishpar empty null space \ -quad enspace obeyspaces obeylines obeyedspace \ -obeyedline normalspace executeifdefined singleexpandafter doubleexpandafter \ -tripleexpandafter dontleavehmode removelastspace removeunwantedspaces keepunwantedspaces \ -wait writestatus define defineexpandable redefine \ -setmeasure setemeasure setgmeasure setxmeasure definemeasure \ -freezemeasure measure measured installcorenamespace getvalue \ -setvalue setevalue setgvalue setxvalue letvalue \ -letgvalue resetvalue undefinevalue ignorevalue setuvalue \ -setuevalue setugvalue setuxvalue globallet glet \ -udef ugdef uedef uxdef checked \ -unique getparameters geteparameters getgparameters getxparameters \ -forgetparameters copyparameters getdummyparameters dummyparameter directdummyparameter \ -setdummyparameter letdummyparameter usedummystyleandcolor usedummystyleparameter usedummycolorparameter \ -processcommalist processcommacommand quitcommalist quitprevcommalist processaction \ -processallactions processfirstactioninset processallactionsinset unexpanded expanded \ -startexpanded stopexpanded protected protect unprotect \ -firstofoneargument firstoftwoarguments secondoftwoarguments firstofthreearguments secondofthreearguments \ -thirdofthreearguments firstoffourarguments secondoffourarguments thirdoffourarguments fourthoffourarguments \ -firstoffivearguments secondoffivearguments thirdoffivearguments fourthoffivearguments fifthoffivearguments \ -firstofsixarguments secondofsixarguments thirdofsixarguments fourthofsixarguments fifthofsixarguments \ -sixthofsixarguments firstofoneunexpanded gobbleoneargument gobbletwoarguments gobblethreearguments \ -gobblefourarguments gobblefivearguments gobblesixarguments gobblesevenarguments gobbleeightarguments \ -gobbleninearguments gobbletenarguments gobbleoneoptional gobbletwooptionals gobblethreeoptionals \ -gobblefouroptionals gobblefiveoptionals dorecurse doloop exitloop \ -dostepwiserecurse recurselevel recursedepth dofastloopcs dowith \ -newconstant setnewconstant newconditional settrue setfalse \ -setconstant newmacro setnewmacro newfraction newsignal \ -dosingleempty dodoubleempty dotripleempty doquadrupleempty doquintupleempty \ -dosixtupleempty doseventupleempty dosingleargument dodoubleargument dotripleargument \ -doquadrupleargument doquintupleargument dosixtupleargument doseventupleargument dosinglegroupempty \ -dodoublegroupempty dotriplegroupempty doquadruplegroupempty doquintuplegroupempty permitspacesbetweengroups \ -dontpermitspacesbetweengroups nopdfcompression maximumpdfcompression normalpdfcompression modulonumber \ -dividenumber getfirstcharacter doiffirstcharelse startnointerference stopnointerference \ -twodigits threedigits strut setstrut strutbox \ -strutht strutdp strutwd struthtdp begstrut \ -endstrut lineheight ordordspacing ordopspacing ordbinspacing \ -ordrelspacing ordopenspacing ordclosespacing ordpunctspacing ordinnerspacing \ -opordspacing opopspacing opbinspacing oprelspacing opopenspacing \ -opclosespacing oppunctspacing opinnerspacing binordspacing binopspacing \ -binbinspacing binrelspacing binopenspacing binclosespacing binpunctspacing \ -bininnerspacing relordspacing relopspacing relbinspacing relrelspacing \ -relopenspacing relclosespacing relpunctspacing relinnerspacing openordspacing \ -openopspacing openbinspacing openrelspacing openopenspacing openclosespacing \ -openpunctspacing openinnerspacing closeordspacing closeopspacing closebinspacing \ -closerelspacing closeopenspacing closeclosespacing closepunctspacing closeinnerspacing \ -punctordspacing punctopspacing punctbinspacing punctrelspacing punctopenspacing \ -punctclosespacing punctpunctspacing punctinnerspacing innerordspacing inneropspacing \ -innerbinspacing innerrelspacing inneropenspacing innerclosespacing innerpunctspacing \ -innerinnerspacing normalreqno startimath stopimath normalstartimath \ -normalstopimath startdmath stopdmath normalstartdmath normalstopdmath \ -uncramped cramped triggermathstyle mathstylefont mathsmallstylefont \ -mathstyleface mathsmallstyleface mathstylecommand mathpalette mathstylehbox \ -mathstylevbox mathstylevcenter mathstylevcenteredhbox mathstylevcenteredvbox mathtext \ -setmathsmalltextbox setmathtextbox triggerdisplaystyle triggertextstyle triggerscriptstyle \ -triggerscriptscriptstyle triggeruncrampedstyle triggercrampedstyle triggersmallstyle triggeruncrampedsmallstyle \ -triggercrampedsmallstyle triggerbigstyle triggeruncrampedbigstyle triggercrampedbigstyle luaexpr \ -expdoifelse expdoif expdoifnot expdoifcommonelse expdoifinsetelse \ -ctxdirectlua ctxlatelua ctxsprint ctxwrite ctxcommand \ -ctxdirectcommand ctxlatecommand ctxreport ctxlua luacode \ -lateluacode directluacode registerctxluafile ctxloadluafile luaversion \ -luamajorversion luaminorversion ctxluacode luaconditional luaexpanded \ -startluaparameterset stopluaparameterset luaparameterset definenamedlua obeylualines \ -obeyluatokens startluacode stopluacode startlua stoplua \ -carryoverpar Umathbotaccent +newhelp then begcsname strippedcsname firstargumentfalse \ +firstargumenttrue secondargumentfalse secondargumenttrue thirdargumentfalse thirdargumenttrue \ +fourthargumentfalse fourthargumenttrue fifthargumentfalse fifthsargumenttrue sixthargumentfalse \ +sixtsargumenttrue doglobal dodoglobal redoglobal resetglobal \ +donothing dontcomplain forgetall donetrue donefalse \ +htdp unvoidbox hfilll vfilll mathbox \ +mathlimop mathnolop mathnothing mathalpha currentcatcodetable \ +defaultcatcodetable catcodetablename newcatcodetable startcatcodetable stopcatcodetable \ +startextendcatcodetable stopextendcatcodetable pushcatcodetable popcatcodetable restorecatcodes \ +setcatcodetable letcatcodecommand defcatcodecommand uedcatcodecommand hglue \ +vglue hfillneg vfillneg hfilllneg vfilllneg \ +ruledhss ruledhfil ruledhfill ruledhfilneg ruledhfillneg \ +normalhfillneg ruledvss ruledvfil ruledvfill ruledvfilneg \ +ruledvfillneg normalvfillneg ruledhbox ruledvbox ruledvtop \ +ruledvcenter ruledhskip ruledvskip ruledkern ruledmskip \ +ruledmkern ruledhglue ruledvglue normalhglue normalvglue \ +ruledpenalty filledhboxb filledhboxr filledhboxg filledhboxc \ +filledhboxm filledhboxy filledhboxk scratchcounter globalscratchcounter \ +scratchdimen globalscratchdimen scratchskip globalscratchskip scratchmuskip \ +globalscratchmuskip scratchtoks globalscratchtoks scratchbox globalscratchbox \ +availablehsize localhsize setlocalhsize nextbox dowithnextbox \ +dowithnextboxcs dowithnextboxcontent dowithnextboxcontentcs scratchwidth scratchheight \ +scratchdepth scratchoffset scratchdistance scratchhsize scratchvsize \ +scratchxoffset scratchyoffset scratchhoffset scratchvoffset scratchxposition \ +scratchyposition scratchtopoffset scratchbottomoffset scratchleftoffset scratchrightoffset \ +scratchcounterone scratchcountertwo scratchcounterthree scratchdimenone scratchdimentwo \ +scratchdimenthree scratchskipone scratchskiptwo scratchskipthree scratchmuskipone \ +scratchmuskiptwo scratchmuskipthree scratchtoksone scratchtokstwo scratchtoksthree \ +scratchboxone scratchboxtwo scratchboxthree scratchnx scratchny \ +scratchmx scratchmy scratchunicode scratchleftskip scratchrightskip \ +scratchtopskip scratchbottomskip doif doifnot doifelse \ +doifinset doifnotinset doifinsetelse doifnextcharelse doifnextoptionalelse \ +doifnextbgroupelse doifnextparenthesiselse doiffastoptionalcheckelse doifundefinedelse doifdefinedelse \ +doifundefined doifdefined doifelsevalue doifvalue doifnotvalue \ +doifnothing doifsomething doifelsenothing doifsomethingelse doifvaluenothing \ +doifvaluesomething doifelsevaluenothing doifdimensionelse doifnumberelse doifnumber \ +doifnotnumber doifcommonelse doifcommon doifnotcommon doifinstring \ +doifnotinstring doifinstringelse doifassignmentelse docheckassignment tracingall \ +tracingnone loggingall removetoks appendtoks prependtoks \ +appendtotoks prependtotoks to endgraf endpar \ +everyendpar reseteverypar finishpar empty null \ +space quad enspace obeyspaces obeylines \ +obeyedspace obeyedline normalspace executeifdefined singleexpandafter \ +doubleexpandafter tripleexpandafter dontleavehmode removelastspace removeunwantedspaces \ +keepunwantedspaces wait writestatus define defineexpandable \ +redefine setmeasure setemeasure setgmeasure setxmeasure \ +definemeasure freezemeasure measure measured installcorenamespace \ +getvalue setvalue setevalue setgvalue setxvalue \ +letvalue letgvalue resetvalue undefinevalue ignorevalue \ +setuvalue setuevalue setugvalue setuxvalue globallet \ +glet udef ugdef uedef uxdef \ +checked unique getparameters geteparameters getgparameters \ +getxparameters forgetparameters copyparameters getdummyparameters dummyparameter \ +directdummyparameter setdummyparameter letdummyparameter usedummystyleandcolor usedummystyleparameter \ +usedummycolorparameter processcommalist processcommacommand quitcommalist quitprevcommalist \ +processaction processallactions processfirstactioninset processallactionsinset unexpanded \ +expanded startexpanded stopexpanded protected protect \ +unprotect firstofoneargument firstoftwoarguments secondoftwoarguments firstofthreearguments \ +secondofthreearguments thirdofthreearguments firstoffourarguments secondoffourarguments thirdoffourarguments \ +fourthoffourarguments firstoffivearguments secondoffivearguments thirdoffivearguments fourthoffivearguments \ +fifthoffivearguments firstofsixarguments secondofsixarguments thirdofsixarguments fourthofsixarguments \ +fifthofsixarguments sixthofsixarguments firstofoneunexpanded gobbleoneargument gobbletwoarguments \ +gobblethreearguments gobblefourarguments gobblefivearguments gobblesixarguments gobblesevenarguments \ +gobbleeightarguments gobbleninearguments gobbletenarguments gobbleoneoptional gobbletwooptionals \ +gobblethreeoptionals gobblefouroptionals gobblefiveoptionals dorecurse doloop \ +exitloop dostepwiserecurse recurselevel recursedepth dofastloopcs \ +dowith newconstant setnewconstant newconditional settrue \ +setfalse setconstant newmacro setnewmacro newfraction \ +newsignal dosingleempty dodoubleempty dotripleempty doquadrupleempty \ +doquintupleempty dosixtupleempty doseventupleempty dosingleargument dodoubleargument \ +dotripleargument doquadrupleargument doquintupleargument dosixtupleargument doseventupleargument \ +dosinglegroupempty dodoublegroupempty dotriplegroupempty doquadruplegroupempty doquintuplegroupempty \ +permitspacesbetweengroups dontpermitspacesbetweengroups nopdfcompression maximumpdfcompression normalpdfcompression \ +modulonumber dividenumber getfirstcharacter doiffirstcharelse startnointerference \ +stopnointerference twodigits threedigits strut setstrut \ +strutbox strutht strutdp strutwd struthtdp \ +begstrut endstrut lineheight ordordspacing ordopspacing \ +ordbinspacing ordrelspacing ordopenspacing ordclosespacing ordpunctspacing \ +ordinnerspacing opordspacing opopspacing opbinspacing oprelspacing \ +opopenspacing opclosespacing oppunctspacing opinnerspacing binordspacing \ +binopspacing binbinspacing binrelspacing binopenspacing binclosespacing \ +binpunctspacing bininnerspacing relordspacing relopspacing relbinspacing \ +relrelspacing relopenspacing relclosespacing relpunctspacing relinnerspacing \ +openordspacing openopspacing openbinspacing openrelspacing openopenspacing \ +openclosespacing openpunctspacing openinnerspacing closeordspacing closeopspacing \ +closebinspacing closerelspacing closeopenspacing closeclosespacing closepunctspacing \ +closeinnerspacing punctordspacing punctopspacing punctbinspacing punctrelspacing \ +punctopenspacing punctclosespacing punctpunctspacing punctinnerspacing innerordspacing \ +inneropspacing innerbinspacing innerrelspacing inneropenspacing innerclosespacing \ +innerpunctspacing innerinnerspacing normalreqno startimath stopimath \ +normalstartimath normalstopimath startdmath stopdmath normalstartdmath \ +normalstopdmath uncramped cramped triggermathstyle mathstylefont \ +mathsmallstylefont mathstyleface mathsmallstyleface mathstylecommand mathpalette \ +mathstylehbox mathstylevbox mathstylevcenter mathstylevcenteredhbox mathstylevcenteredvbox \ +mathtext setmathsmalltextbox setmathtextbox triggerdisplaystyle triggertextstyle \ +triggerscriptstyle triggerscriptscriptstyle triggeruncrampedstyle triggercrampedstyle triggersmallstyle \ +triggeruncrampedsmallstyle triggercrampedsmallstyle triggerbigstyle triggeruncrampedbigstyle triggercrampedbigstyle \ +luaexpr expdoifelse expdoif expdoifnot expdoifcommonelse \ +expdoifinsetelse ctxdirectlua ctxlatelua ctxsprint ctxwrite \ +ctxcommand ctxdirectcommand ctxlatecommand ctxreport ctxlua \ +luacode lateluacode directluacode registerctxluafile ctxloadluafile \ +luaversion luamajorversion luaminorversion ctxluacode luaconditional \ +luaexpanded startluaparameterset stopluaparameterset luaparameterset definenamedlua \ +obeylualines obeyluatokens startluacode stopluacode startlua \ +stoplua carryoverpar Umathbotaccent diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index b345d61f0..422946ceb 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -5485,7 +5485,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 16976, stripped down to: 12143 +-- original size: 17754, stripped down to: 12749 if not modules then modules={} end modules ['util-prs']={ version=1.001, @@ -5555,7 +5555,9 @@ patterns.settings_to_hash_a=pattern_a_s patterns.settings_to_hash_b=pattern_b_s patterns.settings_to_hash_c=pattern_c_s function parsers.make_settings_to_hash_pattern(set,how) - if how=="strict" then + if type(str)=="table" then + return set + elseif how=="strict" then return (pattern_c/set)^1 elseif how=="tolerant" then return (pattern_b/set)^1 @@ -5564,7 +5566,16 @@ function parsers.make_settings_to_hash_pattern(set,how) end end function parsers.settings_to_hash(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_a_s,str) return hash @@ -5573,7 +5584,16 @@ function parsers.settings_to_hash(str,existing) end end function parsers.settings_to_hash_tolerant(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_b_s,str) return hash @@ -5582,7 +5602,16 @@ function parsers.settings_to_hash_tolerant(str,existing) end end function parsers.settings_to_hash_strict(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_c_s,str) return next(hash) and hash @@ -5595,7 +5624,9 @@ local value=P(lbrace*C((nobrace+nestedbraces)^0)*rbrace)+C((nestedbraces+(1-comm local pattern=spaces*Ct(value*(separator*value)^0) patterns.settings_to_array=pattern function parsers.settings_to_array(str,strict) - if not str or str=="" then + if type(str)=="table" then + return str + elseif not str or str=="" then return {} elseif strict then if find(str,"{") then @@ -16008,8 +16039,8 @@ end -- of closure -- used libraries : l-lua.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-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-mrg.lua util-tpl.lua util-env.lua luat-env.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 util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 667729 --- stripped bytes : 244539 +-- original bytes : 668507 +-- stripped bytes : 244711 -- end library merge diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index b345d61f0..422946ceb 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -5485,7 +5485,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 16976, stripped down to: 12143 +-- original size: 17754, stripped down to: 12749 if not modules then modules={} end modules ['util-prs']={ version=1.001, @@ -5555,7 +5555,9 @@ patterns.settings_to_hash_a=pattern_a_s patterns.settings_to_hash_b=pattern_b_s patterns.settings_to_hash_c=pattern_c_s function parsers.make_settings_to_hash_pattern(set,how) - if how=="strict" then + if type(str)=="table" then + return set + elseif how=="strict" then return (pattern_c/set)^1 elseif how=="tolerant" then return (pattern_b/set)^1 @@ -5564,7 +5566,16 @@ function parsers.make_settings_to_hash_pattern(set,how) end end function parsers.settings_to_hash(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_a_s,str) return hash @@ -5573,7 +5584,16 @@ function parsers.settings_to_hash(str,existing) end end function parsers.settings_to_hash_tolerant(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_b_s,str) return hash @@ -5582,7 +5602,16 @@ function parsers.settings_to_hash_tolerant(str,existing) end end function parsers.settings_to_hash_strict(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_c_s,str) return next(hash) and hash @@ -5595,7 +5624,9 @@ local value=P(lbrace*C((nobrace+nestedbraces)^0)*rbrace)+C((nestedbraces+(1-comm local pattern=spaces*Ct(value*(separator*value)^0) patterns.settings_to_array=pattern function parsers.settings_to_array(str,strict) - if not str or str=="" then + if type(str)=="table" then + return str + elseif not str or str=="" then return {} elseif strict then if find(str,"{") then @@ -16008,8 +16039,8 @@ end -- of closure -- used libraries : l-lua.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-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-mrg.lua util-tpl.lua util-env.lua luat-env.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 util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 667729 --- stripped bytes : 244539 +-- original bytes : 668507 +-- stripped bytes : 244711 -- end library merge diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index b345d61f0..422946ceb 100755 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -5485,7 +5485,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 16976, stripped down to: 12143 +-- original size: 17754, stripped down to: 12749 if not modules then modules={} end modules ['util-prs']={ version=1.001, @@ -5555,7 +5555,9 @@ patterns.settings_to_hash_a=pattern_a_s patterns.settings_to_hash_b=pattern_b_s patterns.settings_to_hash_c=pattern_c_s function parsers.make_settings_to_hash_pattern(set,how) - if how=="strict" then + if type(str)=="table" then + return set + elseif how=="strict" then return (pattern_c/set)^1 elseif how=="tolerant" then return (pattern_b/set)^1 @@ -5564,7 +5566,16 @@ function parsers.make_settings_to_hash_pattern(set,how) end end function parsers.settings_to_hash(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_a_s,str) return hash @@ -5573,7 +5584,16 @@ function parsers.settings_to_hash(str,existing) end end function parsers.settings_to_hash_tolerant(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_b_s,str) return hash @@ -5582,7 +5602,16 @@ function parsers.settings_to_hash_tolerant(str,existing) end end function parsers.settings_to_hash_strict(str,existing) - if str and str~="" then + if type(str)=="table" then + if existing then + for k,v in next,str do + existing[k]=v + end + return exiting + else + return str + end + elseif str and str~="" then hash=existing or {} lpegmatch(pattern_c_s,str) return next(hash) and hash @@ -5595,7 +5624,9 @@ local value=P(lbrace*C((nobrace+nestedbraces)^0)*rbrace)+C((nestedbraces+(1-comm local pattern=spaces*Ct(value*(separator*value)^0) patterns.settings_to_array=pattern function parsers.settings_to_array(str,strict) - if not str or str=="" then + if type(str)=="table" then + return str + elseif not str or str=="" then return {} elseif strict then if find(str,"{") then @@ -16008,8 +16039,8 @@ end -- of closure -- used libraries : l-lua.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-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-mrg.lua util-tpl.lua util-env.lua luat-env.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 util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 667729 --- stripped bytes : 244539 +-- original bytes : 668507 +-- stripped bytes : 244711 -- end library merge diff --git a/tex/context/base/cldf-bas.lua b/tex/context/base/cldf-bas.lua index 08d881271..6adeb2272 100644 --- a/tex/context/base/cldf-bas.lua +++ b/tex/context/base/cldf-bas.lua @@ -29,12 +29,16 @@ local format = string.format local utfchar = utf.char local concat = table.concat -local context = context -local generics = context.generics -local variables = interfaces.variables +local context = context +local generics = context.generics +local variables = interfaces.variables -local new_rule = nodes.pool.rule -local texcount = tex.count +local nodepool = nodes.pool +local new_rule = nodepool.rule +local new_glyph = nodepool.glyph + +local current_font = font.current +local texcount = tex.count function context.char(k) -- used as escape too, so don't change to utf if type(k) == "table" then @@ -83,6 +87,15 @@ function context.hrule(w,h,d,dir) end end +function context.glyph(id,k) + if id then + if not k then + id, k = current_font(), id + end + context(new_glyph(id,k)) + end +end + context.vrule = context.hrule --~ local hbox, bgroup, egroup = context.hbox, context.bgroup, context.egroup diff --git a/tex/context/base/colo-ini.lua b/tex/context/base/colo-ini.lua index 148733932..b9e8eb203 100644 --- a/tex/context/base/colo-ini.lua +++ b/tex/context/base/colo-ini.lua @@ -39,8 +39,6 @@ local attributes_list = attributes.list local colorvalues = colors.values local transparencyvalues = transparencies.values -local texattribute = tex.attribute - colors.sets = colors.sets or { } -- sets are mostly used for local colorsets = colors.sets -- showing lists of defined local colorset = { } -- colors @@ -500,7 +498,7 @@ local function mpcolor(model,ca,ta,default) end local function mpnamedcolor(name) - return mpcolor(texattribute[a_colorspace],l_color[name] or l_color.black) + return mpcolor(gettexattribute(a_colorspace),l_color[name] or l_color.black) end local function mpoptions(model,ca,ta,default) -- will move to mlib-col diff --git a/tex/context/base/cont-fil.mkiv b/tex/context/base/cont-fil.mkiv index 42d333992..93a135170 100644 --- a/tex/context/base/cont-fil.mkiv +++ b/tex/context/base/cont-fil.mkiv @@ -105,8 +105,12 @@ % downward compatible mapping: \definefilesynonym [pre-41] [present-tiles] +\definefilesynonym [fnt-29] [fonts-shapes] \definefilesynonym [fnt-33] [math-coverage] +\definefilesynonym [mat-12] [math-parameters] \definefilesynonym [mat-20] [math-parameters] +\definefilesynonym [fnt-25] [math-characters] +\definefilesynonym [fnt-28] [fonts-goodies] \definefilesynonym [mat-10] [math-characters] \definefilesynonym [mat-11] [math-characters] diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 56058a1bd..8574253c9 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2013.05.16 13:51} +\newcontextversion{2013.05.16 23:48} %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/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex 899723dde..aea5cbfaa 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 8d68cc543..93569d55d 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2013.05.16 13:51} +\edef\contextversion{2013.05.16 23:48} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/file-mod.mkvi b/tex/context/base/file-mod.mkvi index 3140b35de..cd7970292 100644 --- a/tex/context/base/file-mod.mkvi +++ b/tex/context/base/file-mod.mkvi @@ -240,26 +240,36 @@ %D Relatively new: -\unexpanded\def\syst_modules_direct_lua#1% - {\ctxlua{#1()}} - -\unexpanded\def\syst_modules_single_lua#1% - {\edef\m_module_command_function{#1}% +\unexpanded\def\syst_modules_direct_lua#1#2% + {\edef\m_module_command_command {#1}% + \edef\m_module_command_function{#2}% + \directsetup{module:\m_module_command_command:start}% + \ctxlua{\m_module_command_function()}% + \directsetup{module:\m_module_command_command:stop}} + +\unexpanded\def\syst_modules_single_lua#1#2% + {\edef\m_module_command_command {#1}% + \edef\m_module_command_function{#2}% \dosingleempty\syst_modules_single_lua_indeed} -\def\syst_modules_single_lua_indeed[#1]% - {\ctxlua{\m_module_command_function(\!!bs#1\!!es)}} +\unexpanded\def\syst_modules_single_lua_indeed[#1]% + {\directsetup{module:\m_module_command_command:start}% + \ctxlua{\m_module_command_function(\!!bs#1\!!es)}% + \directsetup{module:\m_module_command_command:stop}} -\unexpanded\def\syst_modules_double_lua#1% - {\edef\m_module_command_function{#1}% +\unexpanded\def\syst_modules_double_lua#1#2% + {\edef\m_module_command_command {#1}% + \edef\m_module_command_function{#2}% \dodoubleempty\syst_modules_double_lua_indeed} -\def\syst_modules_double_lua_indeed[#1][#2]% - {\ctxlua{\m_module_command_function(\!!bs#1\!!es,\!!bs#2\!!es)}} +\unexpanded\def\syst_modules_double_lua_indeed[#1][#2]% + {\directsetup{module:\m_module_command_command:start}% + \ctxlua{\m_module_command_function(\!!bs#1\!!es,\!!bs#2\!!es)}% + \directsetup{module:\m_module_command_command:stop}} -\def\installmodulecommandlua #1#2{\unexpanded\def#1{\syst_modules_direct_lua{#2}}} -\def\installmodulecommandluasingle#1#2{\unexpanded\def#1{\syst_modules_single_lua{#2}}} -\def\installmodulecommandluadouble#1#2{\unexpanded\def#1{\syst_modules_double_lua{#2}}} +\def\installmodulecommandlua #1#2{\unexpanded\def#1{\normalexpanded{\syst_modules_direct_lua{\strippedcsname#1}{#2}}}} +\def\installmodulecommandluasingle#1#2{\unexpanded\def#1{\normalexpanded{\syst_modules_single_lua{\strippedcsname#1}{#2}}}} +\def\installmodulecommandluadouble#1#2{\unexpanded\def#1{\normalexpanded{\syst_modules_double_lua{\strippedcsname#1}{#2}}}} % obsolete % diff --git a/tex/context/base/font-ini.mkvi b/tex/context/base/font-ini.mkvi index 63b7863c8..5f7aaa92f 100644 --- a/tex/context/base/font-ini.mkvi +++ b/tex/context/base/font-ini.mkvi @@ -2297,4 +2297,18 @@ \unexpanded\def\font_basics_predefined#1% {\font_basics_predefine{\??predefinedfont#1}{#1}} +%D Handy helper: + +\unexpanded\def\savedefinedfont[#1]% + {\bgroup + \definedfont[#1]% + \xdef\saveddefinedfontid {\number\fontid\font}% + \xdef\saveddefinedfontname{\fontname\font}% + \egroup} + +\def\saveddefinedfontid {\number\fontid\font} +\def\saveddefinedfontname{\fontname\font} + + + \protect \endinput diff --git a/tex/context/base/math-ini.lua b/tex/context/base/math-ini.lua index 20c98afbe..7ba1d4514 100644 --- a/tex/context/base/math-ini.lua +++ b/tex/context/base/math-ini.lua @@ -15,10 +15,10 @@ if not modules then modules = { } end modules ['math-ini'] = { -- to the fam when set ... we use other means .. ok, we could use it for spacing but -- then we also have to set the other characters (only a subset done now) -local formatters = string.formatters +local formatters, find = string.formatters, string.find local utfchar, utfbyte = utf.char, utf.byte local setmathcode, setdelcode = tex.setmathcode, tex.setdelcode -local texattribute = tex.attribute +local settexattribute = tex.setattribute local floor = math.floor local context = context @@ -26,19 +26,19 @@ local context = context local contextsprint = context.sprint local contextfprint = context.fprint -- a bit inefficient -local allocate = utilities.storage.allocate - local trace_defining = false trackers.register("math.defining", function(v) trace_defining = v end) local report_math = logs.reporter("mathematics","initializing") -mathematics = mathematics or { } -local mathematics = mathematics +mathematics = mathematics or { } +local mathematics = mathematics mathematics.extrabase = 0xFE000 -- here we push some virtuals mathematics.privatebase = 0xFF000 -- here we push the ex -local chardata = characters.data +local unsetvalue = attributes.unsetvalue +local allocate = utilities.storage.allocate +local chardata = characters.data local families = allocate { mr = 0, @@ -491,10 +491,10 @@ end -- -- function commands.taggedmathfunction(tag,label) -- if label then --- texattribute[a_mathcategory] = registercategory(1,tag,tag) +-- settexattribute(a_mathcategory,registercategory(1,tag,tag)) -- context.mathlabeltext(tag) -- else --- texattribute[a_mathcategory] = 1 +-- settexattribute(a_mathcategory,1) -- context(tag) -- end -- end @@ -517,13 +517,31 @@ function commands.taggedmathfunction(tag,label,apply) noffunctions = noffunctions + 1 functions[noffunctions] = tag functions[tag] = noffunctions - texattribute[a_mathcategory] = noffunctions + delta + settexattribute(a_mathcategory,noffunctions + delta) else - texattribute[a_mathcategory] = n + delta + settexattribute(a_mathcategory,n + delta) end context.mathlabeltext(tag) else - texattribute[a_mathcategory] = 1000 + delta + settexattribute(a_mathcategory,1000 + delta) context(tag) end end + +-- + +local list + +function commands.resetmathattributes() + if not list then + list = { } + for k, v in next, attributes.numbers do + if find(k,"^math") then + list[#list+1] = v + end + end + end + for i=1,#list do + settexattribute(list[i],unsetvalue) + end +end diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv index 72daa8341..c19e24365 100644 --- a/tex/context/base/math-ini.mkiv +++ b/tex/context/base/math-ini.mkiv @@ -71,6 +71,26 @@ \setnewconstant\defaultmathfamily \zerocount % 255 +\unexpanded\def\resetmathattributes{\ctxcommand{resetmathattributes()}} + +% \unexpanded\def\rawmathcharacter#1% slow but only for tracing +% {\begingroup +% \ifmmode +% \resetmathattributes\Uchar#1% +% \else +% \startimath\resetmathattributes\Uchar#1\stopimath +% \fi +% \endgroup} + +\unexpanded\def\rawmathematics#1% slow but only for tracing + {\begingroup + \ifmmode + \resetmathattributes#1% + \else + \startimath\resetmathattributes#1\stopimath + \fi + \endgroup} + %D Some measures (maybe spac-mth): % \def\mathskipsmall {\mskip\thinmuskip} diff --git a/tex/context/base/mult-low.lua b/tex/context/base/mult-low.lua index 2e960114e..867235b33 100644 --- a/tex/context/base/mult-low.lua +++ b/tex/context/base/mult-low.lua @@ -142,6 +142,8 @@ return { "then", "begcsname", -- + "strippedcsname", + -- "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", diff --git a/tex/context/base/phys-dim.mkiv b/tex/context/base/phys-dim.mkiv index 4efaa65a8..73cc2ea25 100644 --- a/tex/context/base/phys-dim.mkiv +++ b/tex/context/base/phys-dim.mkiv @@ -519,13 +519,13 @@ \fi} \unexpanded\def\checkedtextcelsius - {\iffontchar\font"2103\relax\iffontchar\font"2109\relax - ℉\else\phys_units_text_celsius\fi\else\phys_units_text_celsius + {\iffontchar\font"2103\relax + ℃\else\phys_units_text_celsius \fi} \unexpanded\def\checkedtextfahrenheit - {\iffontchar\font"2109\relax\iffontchar\font"2103\relax - ℉\else\phys_units_text_fahrenheit\fi\else\phys_units_text_fahrenheit + {\iffontchar\font"2109\relax + ℉\else\phys_units_text_fahrenheit \fi} \setelementnature[unit] [mixed] diff --git a/tex/context/base/s-fnt-11.mkiv b/tex/context/base/s-fnt-11.mkiv index a91e069ea..db803eefc 100644 --- a/tex/context/base/s-fnt-11.mkiv +++ b/tex/context/base/s-fnt-11.mkiv @@ -70,4 +70,12 @@ end \ctxlua{fonts.names.table("#1",\reload,\all)}% \egroup} -\protect \endinput +\protect + +\continueifinputfile{s-fnt-11.mkiv} + +\starttext + +\showinstalledfonts + +\stoptext diff --git a/tex/context/base/s-fnt-23.mkiv b/tex/context/base/s-fnt-23.mkiv index 17fc5463d..283f751ea 100644 --- a/tex/context/base/s-fnt-23.mkiv +++ b/tex/context/base/s-fnt-23.mkiv @@ -237,7 +237,6 @@ \def\StartShowGlyphShape#1% {\startTEXpage - \nonknuthmode % default anyway \def\GlyphUnicode{#1}} \def\StopShowGlyphShape @@ -254,7 +253,6 @@ \def\ShowAllGlyphShapes#1#2% name size {\begingroup - \nonknuthmode % default anyway \definedfont[#1 at #2]% \ctxlua{moduledata.fonts.show_all_shapes()}% \endgroup} diff --git a/tex/context/base/s-fnt-26.mkiv b/tex/context/base/s-fnt-26.mkiv deleted file mode 100644 index 904091f06..000000000 --- a/tex/context/base/s-fnt-26.mkiv +++ /dev/null @@ -1,82 +0,0 @@ -%D \module -%D [ file=s-fnt-26, -%D version=2009.10.26, -%D title=\CONTEXT\ Style File, -%D subtitle=Goodies Tables, -%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. - -\startluacode - - function document.show_goodies_stylistics(name) - local goodies = fonts.goodies.load(name) - local stylistics = goodies and goodies.stylistics - if stylistics then - local col, row, type = context.NC, context.NR, context.type - context.starttabulate { "|l|pl|" } - col() context("feature") col() context("meaning") col() row() - for feature, meaning in table.sortedpairs(stylistics) do - col() type(feature) col() type(meaning) col() row() - end - context.stoptabulate() - end - end - - function document.show_goodies_featuresets(name) - local goodies = fonts.goodies.load(name) - local featuresets = goodies and goodies.featuresets - if featuresets then - local col, row, type = context.NC, context.NR, context.type - context.starttabulate { "|l|pl|" } - col() context("featureset") col() context("definitions") col() row() - for featureset, definitions in table.sortedpairs(featuresets) do - col() type(featureset) col() - for k, v in table.sortedpairs(definitions) do - type(string.format("%s=%s",k,tostring(v))) - context.quad() - end - col() row() - end - context.stoptabulate() - end - end - - function document.show_goodies_colorschemes(name) - local goodies = fonts.goodies.load(name) - local colorschemes = goodies and goodies.colorschemes - if colorschemes then - local col, row, type = context.NC, context.NR, context.type - context.starttabulate { "|l|pl|" } - col() context("colorscheme") col() context("numbers") col() row() - for colorscheme, numbers in table.sortedpairs(colorschemes) do - col() type(colorscheme) col() - for i=1,#numbers do - type(i) - context.quad() - end - col() row() - end - context.stoptabulate() - end - end - -\stopluacode - -\def\showgoodiesstylistics #1{\ctxlua{document.show_goodies_stylistics ("#1")}} -\def\showgoodiesfeaturesets #1{\ctxlua{document.show_goodies_featuresets ("#1")}} -\def\showgoodiescolorschemes#1{\ctxlua{document.show_goodies_colorschemes("#1")}} - -\continueifinputfile{s-fnt-26.mkiv} - -\starttext - - \showgoodiesstylistics {husayni} - \showgoodiesfeaturesets {husayni} - \showgoodiescolorschemes{husayni} - -\stoptext diff --git a/tex/context/base/s-fnt-28.mkiv b/tex/context/base/s-fnt-28.mkiv deleted file mode 100644 index 778a4c390..000000000 --- a/tex/context/base/s-fnt-28.mkiv +++ /dev/null @@ -1,46 +0,0 @@ -%D \module -%D [ file=s-fnt-28, -%D version=2010.09.22, -%D title=\CONTEXT\ Style File, -%D subtitle=Tracing Names, -%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. - -\startluacode - function fonts.tracers.files(goodyfile) - local goodies = fonts.goodies.load(goodyfile) - if goodies then - local files = goodies.files - if files and files.list then - for filename, specification in table.sortedpairs(files.list) do - context.start() - context.dontleavehmode() - context.definedfont{ filename .. "*default" } - context("%s-%s-%s-%s-%s", - specification.name or files.name, - specification.weight or "normal", - specification.style or "normal", - specification.width or "normal", - specification.variant or "normal") - context.par() - context.stop() - end - end - end - end -\stopluacode - -\continueifinputfile{s-fnt-28.mkiv} - -\starttext - - \loadfontgoodies[antykwapoltawskiego] - - \ctxlua{fonts.tracers.files("antykwapoltawskiego")} - -\stoptext diff --git a/tex/context/base/s-fnt-29.mkiv b/tex/context/base/s-fnt-29.mkiv deleted file mode 100644 index f9e0a1658..000000000 --- a/tex/context/base/s-fnt-29.mkiv +++ /dev/null @@ -1,71 +0,0 @@ -%D \module -%D [ file=s-fnt-29, -%D version=2010.09.27, -%D title=\CONTEXT\ Style File, -%D subtitle=Tracing Shapes, -%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. - -\startluacode - - local fontdata = fonts.hashes.identifiers - - function fonts.tracers.shapes() -- todo: ranges - local NC, NR = context.NC, context.NR - local char = context.char - local chrs = fontdata[font.current()].characters - -- local desc = fontdata[font.current()].descriptions - context.starttabulate { "|l|c|c|c|c|l|" } - context.FL() - NC() context("unicode") - NC() context("glyph") - NC() context("shape") - NC() context("lower") - NC() context("upper") - -- NC() context("name") - NC() context("description") - NC() NR() - context.TL() - for k, v in next, characters.data do - if chrs[k] then - NC() context("0x%05X",k) - NC() char(k) - NC() char(v.shcode) - NC() char(v.lccode or k) - NC() char(v.uccode or k) - -- NC() context(desc[k].name) - NC() context(v.description) - NC() NR() - end - end - context.stoptabulate() - end - -\stopluacode - -\continueifinputfile{s-fnt-29.mkiv} - -\setupbodyfont[dejavu,tt,9pt] - -\setuplayout - [backspace=1cm, - topspace=1cm, - footer=1cm, - header=0cm, - height=middle, - width=middle] - -\setupfootertexts - [] - [\fontname\font\quad\pagenumber] - -\starttext - - \ctxlua{fonts.tracers.shapes()} - -\stoptext diff --git a/tex/context/base/s-fnt-31.mkiv b/tex/context/base/s-fnt-31.mkiv deleted file mode 100644 index 24f7f2d7e..000000000 --- a/tex/context/base/s-fnt-31.mkiv +++ /dev/null @@ -1,180 +0,0 @@ -%D \module -%D [ file=s-fnt-31, -%D version=2011.01.02, % about -%D title=\CONTEXT\ Style File, -%D subtitle=Comparing Fonts, -%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. - -% begin info -% -% title : compare glyphs in fonts -% -% comment : show glyphs in several fonts alongside in order to to compare coverage -% status : experimental, used for luatex testing -% -% end info - -\startluacode - -local format, upper, find = string.format, string.upper, string.find -local chardata = characters.data - -function fonts.tracers.coverage(fontfiles,pattern) -- todo: patterns - - local present, names = { }, { } - local pattern = pattern and upper(pattern) - - for i=1,#fontfiles do - local fontname = format("testfont-%s",i) - local fontfile = fontfiles[i] - local fontsize = tex.dimen.bodyfontsize - local id, fontdata = fonts.definers.define { - name = fontfile, - size = fontsize, - cs = fontname, - } - for k, v in next, fontdata.characters do - present[k] = true - end - names[i] = fontname - end - - local t = { } - - context.starttabulate {"|Tr" .. string.rep("|l",#names) .. "|" } - for i=1,#fontfiles do - local file = fontfiles[i] - t[#t+1] = i .. "=" .. file - context.NC() - context(i) - context.NC() - context.type(file) - context.NC() - context.NR() - end - context.stoptabulate() - - context.setupfootertexts { - table.concat(t," ") - } - - context.starttabulate {"|Tl" .. string.rep("|c",#names) .. "|Tl|" } - context.NC() - context.type("unicode") - context.NC() - for i=1,#names do - context.type(i) - context.NC() - end - context.type("description") - context.NC() - context.NR() - context.HL() - for k, v in table.sortedpairs(present) do - local description = chardata[k].description - if not pattern or (pattern == k) or (description and find(description,pattern)) then - context.NC() - context(format("%05X",k)) - context.NC() - for i=1,#names do - context.getvalue(names[i]) - context.char(k) - context.NC() - end - context(description) - context.NC() - context.NR() - end - end - context.stoptabulate() - -end - -\stopluacode - -\continueifinputfile{s-fnt-31.mkiv} - -\setupbodyfont[10pt] - -\setupfootertexts - [style=\ttx] - -\setuplayout - [backspace=1cm, - topspace=1cm, - footer=1cm, - header=0cm, - height=middle, - width=middle] - -\starttext - -% \startluacode -% fonts.tracers.coverage { -% "pirat.ttf", -% } -% \stopluacode - -% \startluacode -% fonts.tracers.coverage { -% -- "cambria.ttf", -% "lbr.afm", -% "LucidaBrightRegular.ttf", -% "lbi.afm", -% "LucidaBrightItalic.ttf", -% "lbd.afm", -% "LucidaBrightDemiBold.ttf", -% "lbdi.afm", -% "LucidaBrightDemiItalic.ttf", -% } -% \stopluacode - -% \startluacode -% fonts.tracers.coverage ( { -% "LucidaBrightRegular.ttf", -% "cambria.ttf", -% "iwona-regular.otf", -% "texgyrepagella-regular.otf", -% "texgyretermes-regular.otf", -% "texgyrebonum-regular.otf", -% "antpolt-regular.otf", -% }, "OGONEK") -% \stopluacode - -% \loadfontgoodies[lucida-math] -% \loadfontgoodies[lm-math] - -% \startluacode -% fonts.tracers.coverage { -% "LucidaBrightRegular.ttf", -% "LucidaBrightOne@lucida-math", -% "cambria.ttc(Cambria Math)", -% "xits-math.otf", -% "LMMath10-Regular@lmroman10-math", -% } -% \stopluacode - -% \loadfontgoodies[px-math] -% \loadfontgoodies[lm-math] - -\startluacode - fonts.tracers.coverage { - "cambria.ttc(Cambria Math)", - "xits-math.otf", - "stixmath-regular.otf", - -- "lmmath-regular", - -- "LMMath10-Regular@lmroman10-math", - -- "pxmath@px-math", - -- "lucida-math.otf", - -- "lucida-math-demi.otf", - -- "LinLibertine_Re-4.7.5.otf", - } -\stopluacode - -\stoptext diff --git a/tex/context/base/s-fnt-32.mkiv b/tex/context/base/s-fnt-32.mkiv deleted file mode 100644 index 20a939a97..000000000 --- a/tex/context/base/s-fnt-32.mkiv +++ /dev/null @@ -1,60 +0,0 @@ -%D \module -%D [ file=s-fnt-31, -%D version=2011.05.12, -%D title=\CONTEXT\ Style File, -%D subtitle=Unicode Math Scripts, -%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. - -\startluacode - function fonts.tracers.mathscripts() - context.starttabulate { "|cT|c|cT|c|c|l|" } - for k, v in table.sortedpairs(table.merged(characters.superscripts,characters.subscripts)) do - local ck = utf.char(k) - local cv = utf.char(v) - local ss = characters.superscripts[k] and "^" or "_" - context.NC() context("U+%05X",k) - context.NC() context(ck) - context.NC() context("U+%05X",v) - context.NC() context(cv) - context.NC() context("$x%s = x%s%s$",ck,ss,cv) - context.NC() context(string.lower(characters.data[k].description)) - context.NC() context.NR() - end - context.stoptabulate() - end -\stopluacode - -\continueifinputfile{s-fnt-32.mkiv} - -\setupbodyfont[dejavu,10pt] - -% \enabletrackers[math.normalizing] -% \setupbackend[export=yes] - -\setuplayout - [backspace=1cm, - topspace=1cm, - footer=1cm, - header=0cm, - height=middle, - width=middle] - -\starttext - -\startbuffer -$e=mc²$ ${}²$ $²$ $x²ᶞ$ $x⁽²⁺²⁼²⁺²⁾$ $x²⁺²⁼²⁺²$ $x₅²$ $x²₅²$ -\stopbuffer - -\typebuffer \getbuffer - -\startluacode - fonts.tracers.mathscripts() -\stopluacode - -\stoptext diff --git a/tex/context/base/s-fonts-goodies.lua b/tex/context/base/s-fonts-goodies.lua new file mode 100644 index 000000000..381fc45ea --- /dev/null +++ b/tex/context/base/s-fonts-goodies.lua @@ -0,0 +1,117 @@ +if not modules then modules = { } end modules['s-fonts-goodies'] = { + version = 1.001, + comment = "companion to s-fonts-goodies.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +moduledata.fonts = moduledata.fonts or { } +moduledata.fonts.goodies = moduledata.fonts.goodies or { } + +local NC, NR, HL = context.NC, context.NR, context.HL + +local function initialized(specification) + specification = interfaces.checkedspecification(specification) + local name = specification.name + if name then + local goodies = fonts.goodies.load(name) + if goodies then + return specification, goodies + end + end +end + +function moduledata.fonts.goodies.showstylistics(specification) + local specification, goodies = initialized(specification) + if goodies then + local stylistics = goodies.stylistics + if stylistics then + context.starttabulate { "|Tl|Tpl|" } + HL() + NC() context.bold("feature") + NC() context.bold("meaning") + NC() NR() + HL() + for feature, meaning in table.sortedpairs(stylistics) do + NC() context(feature) + NC() context(string.lower(meaning)) + NC() NR() + end + HL() + context.stoptabulate() + end + end +end + +function moduledata.fonts.goodies.showfeaturesets(specification) + local specification, goodies = initialized(specification) + if goodies then + local featuresets = goodies.featuresets + if featuresets then + context.starttabulate { "|Tl|Tpl|" } + HL() + NC() context.bold("featureset") + NC() context.bold("definitions") + NC() NR() + HL() + for featureset, definitions in table.sortedpairs(featuresets) do + NC() context.type(featureset) NC() + for k, v in table.sortedpairs(definitions) do + context("%s=%S",k,v) + context.quad() + end + NC() NR() + end + HL() + context.stoptabulate() + end + end +end + +function moduledata.fonts.goodies.showcolorschemes(specification) + local specification, goodies = initialized(specification) + if goodies then + local colorschemes = goodies.colorschemes + if colorschemes then + context.starttabulate { "|Tl|Tpl|" } + HL() + NC() context.bold("colorscheme") + NC() context.bold("numbers") + NC() NR() + HL() + for colorscheme, numbers in table.sortedpairs(colorschemes) do + NC() context.type(colorscheme) NC() + for i=1,#numbers do + context(i) + context.quad() + end + NC() NR() + end + HL() + context.stoptabulate() + end + end +end + +function moduledata.fonts.goodies.showfiles(specification) + local specification, goodies = initialized(specification) + if goodies then + local files = goodies.files + if files and files.list then + for filename, specification in table.sortedpairs(files.list) do + context.start() + context.dontleavehmode() + context.definedfont{ filename .. "*default" } + context("%s-%s-%s-%s-%s", + specification.name or files.name, + specification.weight or "normal", + specification.style or "normal", + specification.width or "normal", + specification.variant or "normal") + context.par() + context.stop() + end + end + end +end diff --git a/tex/context/base/s-fonts-goodies.mkiv b/tex/context/base/s-fonts-goodies.mkiv new file mode 100644 index 000000000..f07081825 --- /dev/null +++ b/tex/context/base/s-fonts-goodies.mkiv @@ -0,0 +1,37 @@ +%D \module +%D [ file=s-fonts-goodies, % s-fnt-26, s-fnt-28 +%D version=2009.10.26, +%D title=\CONTEXT\ Style File, +%D subtitle=Goodies Tables, +%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. + +%D More tables will follow here as we have many more goodies by now. + +\startmodule[s-fonts-goodies] + +\registerctxluafile{s-fonts-goodies}{} + +\installmodulecommandluasingle \showfontgoodiesstylistics {moduledata.fonts.goodies.showstylistics} +\installmodulecommandluasingle \showfontgoodiesfeaturesets {moduledata.fonts.goodies.showfeaturesets} +\installmodulecommandluasingle \showfontgoodiescolorschemes {moduledata.fonts.goodies.showcolorschemes} +\installmodulecommandluasingle \showfontgoodiesfiles {moduledata.fonts.goodies.showfiles} + +\stopmodule + +\continueifinputfile{s-fonts-goodies.mkiv} + +\starttext + + \showfontgoodiesstylistics [name=husayni] \page + \showfontgoodiesfeaturesets [name=husayni] \page + \showfontgoodiescolorschemes[name=husayni] \page + + \showfontgoodiesfiles [name=antykwapoltawskiego] \page + +\stoptext diff --git a/tex/context/base/s-fonts-missing.lua b/tex/context/base/s-fonts-missing.lua index 0d409c3a6..829fed45f 100644 --- a/tex/context/base/s-fonts-missing.lua +++ b/tex/context/base/s-fonts-missing.lua @@ -50,7 +50,7 @@ local function legend(id) end end -function moduledata.fonts.missing.legend(specification) +function moduledata.fonts.missing.showlegend(specification) specification = interfaces.checkedspecification(specification) context.begingroup() context.definedfont { "Mono*missing" } -- otherwise no privates added @@ -93,7 +93,7 @@ local function missings() end end -function moduledata.fonts.missing.characters(specification) +function moduledata.fonts.missing.showcharacters(specification) context.begingroup() context.definedfont { "Mono*missing" } -- otherwise no privates added context(function() missings() end) diff --git a/tex/context/base/s-fonts-missing.mkiv b/tex/context/base/s-fonts-missing.mkiv index 4215d2d88..6acef819e 100644 --- a/tex/context/base/s-fonts-missing.mkiv +++ b/tex/context/base/s-fonts-missing.mkiv @@ -15,8 +15,8 @@ \registerctxluafile{s-fonts-missing}{} -\installmodulecommandluasingle \showmissingcharacterslegend {moduledata.fonts.missing.legend} -\installmodulecommandluasingle \showmissingcharacters {moduledata.fonts.missing.characters} +\installmodulecommandluasingle \showmissingcharacterslegend {moduledata.fonts.missing.showlegend} +\installmodulecommandluasingle \showmissingcharacters {moduledata.fonts.missing.showcharacters} \stopmodule diff --git a/tex/context/base/s-fonts-shapes.lua b/tex/context/base/s-fonts-shapes.lua new file mode 100644 index 000000000..e0c1262c5 --- /dev/null +++ b/tex/context/base/s-fonts-shapes.lua @@ -0,0 +1,62 @@ +if not modules then modules = { } end modules['s-fonts-shapes'] = { + version = 1.001, + comment = "companion to s-fonts-shapes.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +moduledata.fonts = moduledata.fonts or { } +moduledata.fonts.shapes = moduledata.fonts.shapes or { } + +local fontdata = fonts.hashes.identifiers + +local NC, NR = context.NC, context.NR +local space, dontleavehmode, glyph = context.space, context.dontleavehmode, context.glyph + +function moduledata.fonts.shapes.showlist(specification) -- todo: ranges + specification = interfaces.checkedspecification(specification) + local id = tonumber(specification.number) or font.current() + local chrs = fontdata[id].characters + function char(k) + dontleavehmode() + glyph(id,k) + end + local function special(v) + local specials = v.specials + if specials and #specials > 1 then + context("%s:",specials[1]) + for i=2,#specials do + space() + char(specials[i]) + end + end + end + context.begingroup() + context.tt() + context.starttabulate { "|l|c|c|c|c|l|l|" } + context.FL() + NC() context.bold("unicode") + NC() context.bold("glyph") + NC() context.bold("shape") + NC() context.bold("lower") + NC() context.bold("upper") + NC() context.bold("specials") + NC() context.bold("description") + NC() NR() + context.TL() + for k, v in next, characters.data do + if chrs[k] then + NC() context("0x%05X",k) + NC() char(k) + NC() char(v.shcode) + NC() char(v.lccode or k) + NC() char(v.uccode or k) + NC() special(v) + NC() context.tx(v.description) + NC() NR() + end + end + context.stoptabulate() + context.endgroup() +end diff --git a/tex/context/base/s-fonts-shapes.mkiv b/tex/context/base/s-fonts-shapes.mkiv new file mode 100644 index 000000000..257a18fba --- /dev/null +++ b/tex/context/base/s-fonts-shapes.mkiv @@ -0,0 +1,44 @@ +%D \module +%D [ file=s-fonts-shapes, % s-fnt-29, +%D version=2010.09.27, +%D title=\CONTEXT\ Style File, +%D subtitle=Tracing Shapes, +%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. + +\startmodule[s-fonts-shapes] + +\registerctxluafile{s-fonts-shapes}{} + +\installmodulecommandluasingle \showfontshapes {moduledata.fonts.shapes.showlist} + +\stopmodule + +\continueifinputfile{s-fonts-shapes.mkiv} + +\setupbodyfont[dejavu,9pt] + +\setuplayout + [backspace=1cm, + topspace=1cm, + footer=1cm, + header=0cm, + height=middle, + width=middle] + +\setupfootertexts + [] + [\saveddefinedfontname\quad\pagenumber] + +\starttext + + \savedefinedfont[Bold*default] + + \showfontshapes[number=\saveddefinedfontid] + +\stoptext diff --git a/tex/context/base/s-fonts-tables.lua b/tex/context/base/s-fonts-tables.lua index 2849c0540..5c91d5ee7 100644 --- a/tex/context/base/s-fonts-tables.lua +++ b/tex/context/base/s-fonts-tables.lua @@ -164,17 +164,17 @@ end tabletracers.typeset = typeset -function tabletracers.properties(nesting) +function tabletracers.showproperties(nesting) local tfmdata = fonts.hashes.identifiers[font.current()] typeset(tfmdata.properties,fonts.constructors.keys.properties,nesting) end -function tabletracers.parameters(nesting) +function tabletracers.showparameters(nesting) local tfmdata = fonts.hashes.identifiers[font.current()] typeset(tfmdata.parameters,fonts.constructors.keys.parameters,nesting) end -function tabletracers.positionings() +function tabletracers.showpositionings() local tfmdata = fonts.hashes.identifiers[font.current()] local resources = tfmdata.resources if resources then @@ -206,7 +206,7 @@ end local dynamics = true -function tabletracers.substitutions() +function tabletracers.showsubstitutions() local tfmdata = fonts.hashes.identifiers[font.current()] local resources = tfmdata.resources if resources then @@ -281,7 +281,7 @@ function tabletracers.substitutions() end end -function tabletracers.all(specification) -- not interfaced +function tabletracers.showall(specification) -- not interfaced specification = interfaces.checkedspecification(specification) @@ -290,19 +290,19 @@ function tabletracers.all(specification) -- not interfaced end context.startsubject { title = "Properties" } - tabletracers.properties() + tabletracers.showproperties() context.stopsubject() context.startsubject { title = "Parameters" } - tabletracers.parameters() + tabletracers.showparameters() context.stopsubject() context.startsubject { title = "Positioning features" } - tabletracers.positionings() + tabletracers.showpositionings() context.stopsubject() context.startsubject { title = "Substitution features" } - tabletracers.substitutions() + tabletracers.showsubstitutions() context.stopsubject() if title then diff --git a/tex/context/base/s-fonts-tables.mkiv b/tex/context/base/s-fonts-tables.mkiv index d991d7d81..98f9052ca 100644 --- a/tex/context/base/s-fonts-tables.mkiv +++ b/tex/context/base/s-fonts-tables.mkiv @@ -17,11 +17,11 @@ \registerctxluafile{s-fonts-tables}{} -\installmodulecommandluasingle \showfonttables {moduledata.fonts.tables.all} -\installmodulecommandluasingle \showfontproperties {moduledata.fonts.tables.properties} -\installmodulecommandluasingle \showfontparameters {moduledata.fonts.tables.parameters} -\installmodulecommandluasingle \showfontpositionings {moduledata.fonts.tables.positionings} -\installmodulecommandluasingle \showfontsubstitutions {moduledata.fonts.tables.substitutions} +\installmodulecommandluasingle \showfonttables {moduledata.fonts.tables.showall} +\installmodulecommandluasingle \showfontproperties {moduledata.fonts.tables.showproperties} +\installmodulecommandluasingle \showfontparameters {moduledata.fonts.tables.showparameters} +\installmodulecommandluasingle \showfontpositionings {moduledata.fonts.tables.showpositionings} +\installmodulecommandluasingle \showfontsubstitutions {moduledata.fonts.tables.showsubstitutions} \stopmodule diff --git a/tex/context/base/s-math-coverage.lua b/tex/context/base/s-math-coverage.lua index 05a311ee6..c06f14b11 100644 --- a/tex/context/base/s-math-coverage.lua +++ b/tex/context/base/s-math-coverage.lua @@ -10,6 +10,13 @@ moduledata.math = moduledata.math or { } moduledata.math.coverage = moduledata.math.coverage or { } local utfchar, utfbyte = utf.char, utf.byte +local formatters, lower, upper, find, format = string.formatters, string.lower, string.upper, string.find, string.format +local lpegmatch = lpeg.match +local concat = table.concat + +local context = context +local NC, NR, HL = context.NC, context.NR, context.HL +local char, getglyph, bold, getvalue = context.char, context.getglyph, context.bold, context.getvalue local ucgreek = { 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, @@ -67,6 +74,10 @@ local alphabets = { local getboth = mathematics.getboth local remapalphabets = mathematics.remapalphabets +local chardata = characters.data +local superscripts = characters.superscripts +local subscripts = characters.subscripts + function moduledata.math.coverage.showalphabets() context.starttabulate { "|lT|l|Tl|" } for i=1,#styles do @@ -75,11 +86,11 @@ function moduledata.math.coverage.showalphabets() local alternative = alternatives[i] for i=1,#alphabets do local alphabet = alphabets[i] - context.NC() + NC() if i == 1 then context("%s %s",style,alternative) end - context.NC() + NC() context.startimath() context.setmathattribute(style,alternative) for i=1,#alphabet do @@ -95,15 +106,15 @@ function moduledata.math.coverage.showalphabets() end end context.stopimath() - context.NC() + NC() local first = alphabet[1] local last = alphabet[#alphabet] local id = getboth(style,alternative) local f_unicode = remapalphabets(first,id) or utfbyte(first) local l_unicode = remapalphabets(last,id) or utfbyte(last) context("%05X - %05X",f_unicode,l_unicode) - context.NC() - context.NR() + NC() + NR() end end end @@ -111,29 +122,28 @@ function moduledata.math.coverage.showalphabets() end function moduledata.math.coverage.showcharacters() - local NC, NR, getglyph, concat = context.NC, context.NR, context.getglyph, table.concat context.startcolumns() context.setupalign { "nothyphenated" } context.starttabulate { "|T|i2|Tpl|" } - for u, d in table.sortedpairs(characters.data) do + for u, d in table.sortedpairs(chardata) do local mathclass = d.mathclass local mathspec = d.mathspec if mathclass or mathspec then NC() - context("%05X",u) + context("%05X",u) NC() - getglyph("MathRoman",u) + getglyph("MathRoman",u) NC() - if mathspec then - local t = { } - for i=1,#mathspec do - t[mathspec[i].class] = true + if mathspec then + local t = { } + for i=1,#mathspec do + t[mathspec[i].class] = true + end + t = table.sortedkeys(t) + context("% t",t) + else + context(mathclass) end - t = table.sortedkeys(t) - context(concat(t," ")) - else - context(mathclass) - end NC() NR() end @@ -141,3 +151,124 @@ function moduledata.math.coverage.showcharacters() context.stoptabulate() context.stopcolumns() end + +-- This is a somewhat tricky table as we need to bypass the math machinery. + +function moduledata.math.coverage.showscripts() + context.starttabulate { "|cT|c|cT|c|c|c|l|" } + for k, v in table.sortedpairs(table.merged(superscripts,subscripts)) do + local ck = utfchar(k) + local cv = utfchar(v) + local ss = superscripts[k] and "^" or "_" + NC() + context("%05X",k) + NC() + context(ck) + NC() + context("%05X",v) + NC() + context(cv) + NC() + context.formatted.rawmathematics("x%s = x%s%s",ck,ss,cv) + NC() + context.formatted.mathematics("x%s = x%s%s",ck,ss,cv) + NC() + context(lower(chardata[k].description)) + NC() + NR() + end + context.stoptabulate() +end + +function moduledata.math.coverage.showcomparison(specification) + + specification = interfaces.checkedspecification(specification) + + local fontfiles = utilities.parsers.settings_to_array(specification.list or "") + local pattern = upper(specification.pattern or "") + + local present = { } + local names = { } + local files = { } + + if not pattern then + -- skip + elseif pattern == "" then + pattern = nil + elseif tonumber(pattern) then + pattern = tonumber(pattern) + else + pattern = lpeg.oneof(utilities.parsers.settings_to_array(pattern)) + pattern = (1-pattern)^0 * pattern + end + + for i=1,#fontfiles do + local fontname = format("testfont-%s",i) + local fontfile = fontfiles[i] + local fontsize = tex.dimen.bodyfontsize + local id, fontdata = fonts.definers.define { + name = fontfile, + size = fontsize, + cs = fontname, + } + if id and fontdata then + for k, v in next, fontdata.characters do + present[k] = true + end + names[#names+1] = fontname + files[#files+1] = fontfile + end + end + + local t = { } + + context.starttabulate { "|Tr" .. string.rep("|l",#names) .. "|" } + for i=1,#files do + local file = files[i] + t[#t+1] = i .. "=" .. file + NC() + context(i) + NC() + context(file) + NC() + NR() + end + context.stoptabulate() + + context.setupfootertexts { + table.concat(t," ") + } + + context.starttabulate { "|Tl" .. string.rep("|c",#names) .. "|Tl|" } + NC() + bold("unicode") + NC() + for i=1,#names do + bold(i) + NC() + end + bold("description") + NC() + NR() + HL() + for k, v in table.sortedpairs(present) do + if k > 0 then + local description = chardata[k].description + if not pattern or (pattern == k) or (description and lpegmatch(pattern,description)) then + NC() + context("%05X",k) + NC() + for i=1,#names do + getvalue(names[i]) + char(k) + NC() + end + context(description) + NC() + NR() + end + end + end + context.stoptabulate() + +end diff --git a/tex/context/base/s-math-coverage.mkiv b/tex/context/base/s-math-coverage.mkiv index fd7498d2e..185c382d6 100644 --- a/tex/context/base/s-math-coverage.mkiv +++ b/tex/context/base/s-math-coverage.mkiv @@ -1,6 +1,6 @@ %D \module -%D [ file=s-math-coverage, % s-fnt-33, -%D version=2011.05.10, % about then +%D [ file=s-math-coverage, % s-fnt-33, s-fnt-32, s-fnt-31 +%D version=2011.05.10, % and older %D title=\CONTEXT\ Style File, %D subtitle=Show Math Coverage, %D author=Hans Hagen, @@ -11,31 +11,128 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. +% begin info +% +% title : compare glyphs in fonts +% +% comment : show glyphs in several fonts alongside in order to to compare coverage +% status : experimental, used for luatex testing +% +% end info + \startmodule[math-coverage] \registerctxluafile{s-math-coverage}{} \installmodulecommandluasingle \showmathalphabets {moduledata.math.coverage.showalphabets} \installmodulecommandluasingle \showmathcharacters {moduledata.math.coverage.showcharacters} +\installmodulecommandluasingle \showmathscripts {moduledata.math.coverage.showscripts} +\installmodulecommandluasingle \showmathcomparison {moduledata.math.coverage.showcomparison} \stopmodule \continueifinputfile{s-math-coverage.mkiv} -\setupbodyfont - [modern] - -\setuplayout - [backspace=1cm, - topspace=1cm, - header=1cm, - footer=1cm, - width=middle, - height=middle] +\usemodule[art-01] \starttext \showmathalphabets \page \showmathcharacters \page + \showmathscripts \page + + \showmathcomparison + [list={texgyrepagella-regular.otf,texgyretermes-regular.otf,texgyrebonum-regular.otf}, + pattern=ogonek] + + \page + + % $e=mc²$ ${}²$ $²$ $x²ᶞ$ $x⁽²⁺²⁼²⁺²⁾$ $x²⁺²⁼²⁺²$ $x₅²$ $x²₅²$ + + % \startluacode + % moduledata.math.coverage.showcomparison { + % list = { + % "texgyrepagella-math.otf", + % "texgyretermes-math.otf", + % "texgyrebonum-math.otf", + % } + % } + % \stopluacode + + % \startluacode + % moduledata.math.coverage.showcomparison { + % list = "pirat.ttf", + % } + % \stopluacode + + % \startluacode + % moduledata.math.coverage.showcomparison { + % list = { + % "lucidabrightot.otf", + % "cambria.ttf", + % "iwona-regular.otf", + % "texgyrepagella-regular.otf", + % "texgyretermes-regular.otf", + % "texgyrebonum-regular.otf", + % "antpolt-regular.otf", + % }, + % pattern = "OGONEK" + % } + % \stopluacode + + % \loadfontgoodies[lucida-math] + % \loadfontgoodies[lm-math] + % + % \startluacode + % moduledata.math.coverage.showcomparison { + % list = { + % "LucidaBrightRegular.ttf", + % "LucidaBrightOne@lucida-math", + % "cambria.ttc(Cambria Math)", + % "xits-math.otf", + % "LMMath10-Regular@lmroman10-math", + % }, + % } + % \stopluacode + + % \loadfontgoodies[px-math] + % \loadfontgoodies[lm-math] + % + % \startluacode + % moduledata.math.coverage.showcomparison { + % list = { + % "cambria.ttc(Cambria Math)", + % "xits-math.otf", + % -- "stixmath-regular.otf", + % "latinmodern-math.otf", + % -- "lucidabrightmathot.otf", + % -- "lucidabrightmathot-demi.otf", + % "texgyrepagella-math.otf", + % "texgyretermes-math.otf", + % "texgyrebonum-math.otf", + % -- "LMMath10-Regular@lmroman10-math", + % -- "pxmath@px-math", + % -- "txmath@tx-math", + % }, + % } + % \stopluacode + + % \startluacode + % moduledata.math.coverage.showcomparison { + % list = { + % "dejavuserif.ttf", + % "dejavusans.ttf", + % "dejavusansmono.ttf", + % "lucidabrightot.otf", + % "cambria.ttf", + % "iwona-regular.otf", + % "texgyrepagella-regular.otf", + % "texgyretermes-regular.otf", + % "texgyrebonum-regular.otf", + % "antpolt-regular.otf", + % }, + % pattern = "CELSIUS,FAHRENHEIT" + % } + % \stopluacode \stoptext diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex cf8a52e83..6266ba72d 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf Binary files differindex 8e05e1f2b..90f5b1bd4 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/status-mkiv.lua b/tex/context/base/status-mkiv.lua index 6ee7c8da8..75db1b910 100644 --- a/tex/context/base/status-mkiv.lua +++ b/tex/context/base/status-mkiv.lua @@ -4277,6 +4277,11 @@ return { }, { category = "lua", + filename = "s-fonts-shapes", + status = "okay", + }, + { + category = "lua", filename = "s-fonts-tables", status = "okay", }, @@ -4302,6 +4307,11 @@ return { }, { category = "lua", + filename = "s-fonts-goodies", + status = "okay", + }, + { + category = "lua", filename = "s-math-parameters", status = "okay", }, @@ -5316,42 +5326,27 @@ return { }, { category = "mkiv", - filename = "s-fnt-26", - status = "todo", - }, - { - category = "mkiv", - filename = "s-fnt-28", - status = "todo", - }, - { - category = "mkiv", - filename = "s-fnt-29", - status = "todo", - }, - { - category = "mkiv", filename = "s-fnt-30", status = "todo", }, { category = "mkiv", - filename = "s-fnt-31", - status = "todo", + filename = "s-fonts-features", + status = "okay", }, { category = "mkiv", - filename = "s-fnt-32", - status = "todo", + filename = "s-fonts-goodies", + status = "okay", }, { category = "mkiv", - filename = "s-fonts-features", + filename = "s-fonts-missing", status = "okay", }, { category = "mkiv", - filename = "s-fonts-missing", + filename = "s-fonts-shapes", status = "okay", }, { diff --git a/tex/context/base/util-prs.lua b/tex/context/base/util-prs.lua index 31e7ffa53..cdf497588 100644 --- a/tex/context/base/util-prs.lua +++ b/tex/context/base/util-prs.lua @@ -93,7 +93,9 @@ patterns.settings_to_hash_b = pattern_b_s patterns.settings_to_hash_c = pattern_c_s function parsers.make_settings_to_hash_pattern(set,how) - if how == "strict" then + if type(str) == "table" then + return set + elseif how == "strict" then return (pattern_c/set)^1 elseif how == "tolerant" then return (pattern_b/set)^1 @@ -103,7 +105,16 @@ function parsers.make_settings_to_hash_pattern(set,how) end function parsers.settings_to_hash(str,existing) - if str and str ~= "" then + if type(str) == "table" then + if existing then + for k, v in next, str do + existing[k] = v + end + return exiting + else + return str + end + elseif str and str ~= "" then hash = existing or { } lpegmatch(pattern_a_s,str) return hash @@ -113,7 +124,16 @@ function parsers.settings_to_hash(str,existing) end function parsers.settings_to_hash_tolerant(str,existing) - if str and str ~= "" then + if type(str) == "table" then + if existing then + for k, v in next, str do + existing[k] = v + end + return exiting + else + return str + end + elseif str and str ~= "" then hash = existing or { } lpegmatch(pattern_b_s,str) return hash @@ -123,7 +143,16 @@ function parsers.settings_to_hash_tolerant(str,existing) end function parsers.settings_to_hash_strict(str,existing) - if str and str ~= "" then + if type(str) == "table" then + if existing then + for k, v in next, str do + existing[k] = v + end + return exiting + else + return str + end + elseif str and str ~= "" then hash = existing or { } lpegmatch(pattern_c_s,str) return next(hash) and hash @@ -144,7 +173,9 @@ patterns.settings_to_array = pattern -- we could use a weak table as cache function parsers.settings_to_array(str,strict) - if not str or str == "" then + if type(str) == "table" then + return str + elseif not str or str == "" then return { } elseif strict then if find(str,"{") then diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index fae9586a9..e4e1e1e5d 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 : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 05/16/13 13:51:17 +-- merge date : 05/16/13 23:48:12 do -- begin closure to overcome local limits and interference |