diff options
26 files changed, 271 insertions, 184 deletions
diff --git a/metapost/context/base/mp-mlib.mp b/metapost/context/base/mp-mlib.mp index 04c8be099..59028640c 100644 --- a/metapost/context/base/mp-mlib.mp +++ b/metapost/context/base/mp-mlib.mp @@ -18,6 +18,7 @@ boolean context_mlib ; context_mlib := true ; %D Color and transparency +%D Standard separable blend modes newinternal normaltransparent ; normaltransparent := 1 ; newinternal multiplytransparent ; multiplytransparent := 2 ; newinternal screentransparent ; screentransparent := 3 ; @@ -30,6 +31,11 @@ newinternal darkentransparent ; darkentransparent := 9 ; newinternal lightentransparent ; lightentransparent := 10 ; newinternal differencetransparent ; differencetransparent := 11 ; newinternal exclusiontransparent ; exclusiontransparent := 12 ; +%D Standard nonseparable blend modes +newinternal huetransparent ; huetransparent := 13 ; +newinternal saturationtransparent ; saturationtransparent := 14 ; +newinternal colortransparent ; colortransparent := 15 ; +newinternal luminositytransparent ; luminositytransparent := 16 ; vardef transparency_alternative_to_number(expr name) = if string name : @@ -38,7 +44,7 @@ vardef transparency_alternative_to_number(expr name) = else : 0 fi - elseif name < 13 : + elseif name < 17 : name else : 0 @@ -363,6 +369,39 @@ primarydef p withshade sc = p withprescript _defined_cs_pre_[sc] enddef ; + +vardef define_sampled_linear_shade(expr a,b,n)(text t) = + _defined_cs_ := _defined_cs_ + 1 ; + _defined_cs_pre_ [_defined_cs_] := "ssh_type=linear" + & prescript_separator & "ssh_center_a=" & ddecimal (a shifted shadeoffset) + & prescript_separator & "ssh_center_b=" & ddecimal (b shifted shadeoffset) + & prescript_separator & "ssh_nofcolors=" & decimal n + & prescript_separator & "ssh_domain=" & domstr + & prescript_separator & "ssh_extend=" & extstr + & prescript_separator & "ssh_colors=" & colstr + & prescript_separator & "ssh_bounds=" & bndstr + & prescript_separator & "ssh_ranges=" & ranstr + ; + _defined_cs_ +enddef ; + +vardef define_sampled_circular_shade(expr a,b,ra,rb,n)(text t) = + _defined_cs_ := _defined_cs_ + 1 ; + _defined_cs_pre_ [_defined_cs_] := "ssh_type=circular" + & prescript_separator & "ssh_center_a=" & ddecimal (a shifted shadeoffset) + & prescript_separator & "ssh_radius_a=" & decimal ra + & prescript_separator & "ssh_center_b=" & ddecimal (b shifted shadeoffset) + & prescript_separator & "ssh_radius_b=" & decimal rb + & prescript_separator & "ssh_nofcolors=" & decimal n + & prescript_separator & "ssh_domain=" & domstr + & prescript_separator & "ssh_extend=" & extstr + & prescript_separator & "ssh_colors=" & colstr + & prescript_separator & "ssh_bounds=" & bndstr + & prescript_separator & "ssh_ranges=" & ranstr + ; + _defined_cs_ +enddef ; + % vardef predefined_linear_shade (expr p, n, ca, cb) = % save a, b, sh ; pair a, b ; % set_linear_vector(a,b)(p,n) ; diff --git a/tex/context/base/back-exp.lua b/tex/context/base/back-exp.lua index 0fb7ca350..8a588ce6a 100644 --- a/tex/context/base/back-exp.lua +++ b/tex/context/base/back-exp.lua @@ -358,11 +358,12 @@ local usedimages = { } local imagetemplate = [[ %s[id="%s"] { - display : block ; - background-image : url(%s) ; - background-size : 100%% auto ; - width : %s ; - height : %s ; + display : block ; + background-image : url(%s) ; + background-size : 100%% auto ; + background-repeat : no-repeat ; + width : %s ; + height : %s ; }]] local function allusedimages(xmlfile) diff --git a/tex/context/base/colo-ini.lua b/tex/context/base/colo-ini.lua index 5c9ad61b5..1389eb71f 100644 --- a/tex/context/base/colo-ini.lua +++ b/tex/context/base/colo-ini.lua @@ -137,6 +137,10 @@ local transparent = { lighten = 10, difference = 11, exclusion = 12, + hue = 13, + saturation = 14, + color = 15, + luminosity = 16, } -- backend driven limitations diff --git a/tex/context/base/colo-ini.mkii b/tex/context/base/colo-ini.mkii index c81cec43c..f14f1e15e 100644 --- a/tex/context/base/colo-ini.mkii +++ b/tex/context/base/colo-ini.mkii @@ -2757,6 +2757,10 @@ \definetransparency [lighten] [10] \definetransparency [difference] [11] \definetransparency [exclusion] [12] +\definetransparency [hue] [13] +\definetransparency [saturation] [14] +\definetransparency [color] [15] +\definetransparency [luminosity] [16] \setupcolors [\c!state=\v!stop, diff --git a/tex/context/base/colo-ini.mkiv b/tex/context/base/colo-ini.mkiv index 0efe5df4e..9b1f37521 100644 --- a/tex/context/base/colo-ini.mkiv +++ b/tex/context/base/colo-ini.mkiv @@ -1082,6 +1082,10 @@ \definetransparency [lighten] [10] \definetransparency [difference] [11] \definetransparency [exclusion] [12] +\definetransparency [hue] [13] +\definetransparency [saturation] [14] +\definetransparency [color] [15] +\definetransparency [luminosity] [16] \setupcolors [\c!state=\v!stop, % will be enabled later on diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index eeebdcf05..e7ca44ef5 100644 --- a/tex/context/base/cont-new.mkii +++ b/tex/context/base/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.08.27 13:24} +\newcontextversion{2011.09.05 12:54} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 5f5917fb9..2f892eae1 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{2011.08.27 13:24} +\newcontextversion{2011.09.05 12:54} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex 1bf918623..b847b4a30 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png Binary files differindex 33940d225..7cf2dffdf 100644 --- a/tex/context/base/context-version.png +++ b/tex/context/base/context-version.png diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index fea7fe58c..74a27402b 100644 --- a/tex/context/base/context.mkii +++ b/tex/context/base/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.08.27 13:24} +\edef\contextversion{2011.09.05 12:54} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 1c6d3c78b..017f29af3 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.08.27 13:24} +\edef\contextversion{2011.09.05 12:54} %D For those who want to use this: diff --git a/tex/context/base/font-ota.lua b/tex/context/base/font-ota.lua index 1bf736531..c4663e1f4 100644 --- a/tex/context/base/font-ota.lua +++ b/tex/context/base/font-ota.lua @@ -163,7 +163,7 @@ registerotffeature { methods.latn = analyzers.setstate --- this info eventually will go into char-def adn we will have a state +-- this info eventually will go into char-def and we will have a state -- table for generic then local zwnj = 0x200C @@ -193,6 +193,12 @@ local isol_fina = { [0x076C] = true, [0x0771] = true, [0x0773] = true, [0x0774] = true, [0x0778] = true, [0x0779] = true, [0xFEF5] = true, [0xFEF7] = true, [0xFEF9] = true, [0xFEFB] = true, + + -- syriac + + [0x0710] = true, [0x0715] = true, [0x0716] = true, [0x0717] = true, + [0x0718] = true, [0x0719] = true, [0x0728] = true, [0x072A] = true, + [0x072C] = true, [0x071E] = true, } local isol_fina_medi_init = { @@ -230,10 +236,19 @@ local isol_fina_medi_init = { [0x0772] = true, [0x0775] = true, [0x0776] = true, [0x0777] = true, [0x077A] = true, [0x077B] = true, [0x077C] = true, [0x077D] = true, [0x077E] = true, [0x077F] = true, [zwj] = true, + + -- syriac + + [0x0712] = true, [0x0713] = true, [0x0714] = true, [0x071A] = true, + [0x071B] = true, [0x071C] = true, [0x071D] = true, [0x071F] = true, + [0x0720] = true, [0x0721] = true, [0x0722] = true, [0x0723] = true, + [0x0725] = true, [0x0726] = true, [0x0727] = true, [0x0729] = true, + [0x072B] = true, [0x0724] = true, [0x0706] = true, [0x0707] = true, } local arab_warned = { } + -- todo: gref local function warning(current,what) @@ -351,6 +366,8 @@ function methods.arab(head,font,attr) -- maybe make a special version with no tr return head, done end +methods.syrc = methods.arab + directives.register("otf.analyze.useunicodemarks",function(v) analyzers.useunicodemarks = v end) diff --git a/tex/context/base/lpdf-col.lua b/tex/context/base/lpdf-col.lua index 6aa412d6a..555c0290f 100644 --- a/tex/context/base/lpdf-col.lua +++ b/tex/context/base/lpdf-col.lua @@ -353,7 +353,11 @@ local transparencies = { [0] = pdfconstant("Lighten"), pdfconstant("Difference"), pdfconstant("Exclusion"), - pdfconstant("Compatible"), + pdfconstant("Hue"), + pdfconstant("Saturation"), + pdfconstant("Color"), + pdfconstant("Luminosity"), + pdfconstant("Compatible"), -- obsolete; 'Normal' is used in this case } local documenttransparencies = { } diff --git a/tex/context/base/lpdf-grp.lua b/tex/context/base/lpdf-grp.lua index bea0b2ee9..20946ca4a 100644 --- a/tex/context/base/lpdf-grp.lua +++ b/tex/context/base/lpdf-grp.lua @@ -105,6 +105,9 @@ function nodeinjections.injectbitmap(t) CS = colorspace, BPC = 8, F = pdfconstant("AHx"), +--~ CS = nil, +--~ BPC = 1, +--~ IM = true, } -- for some reasons it only works well if we take a 1bp boundingbox local urx, ury = 1/basepoints, 1/basepoints diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv index ccbe0b402..3f001f606 100644 --- a/tex/context/base/math-ini.mkiv +++ b/tex/context/base/math-ini.mkiv @@ -695,6 +695,8 @@ \csname\??mo:greek:\@@molcgreek:\@@moucgreek\endcsname \to \everymathematics +% todo: field specific sets in order to avoid option mess + \setupmathematics [lcgreek=\v!italic, ucgreek=\v!normal] % was: none diff --git a/tex/context/base/math-vfu.lua b/tex/context/base/math-vfu.lua index e07ded43e..b01af31bb 100644 --- a/tex/context/base/math-vfu.lua +++ b/tex/context/base/math-vfu.lua @@ -569,6 +569,7 @@ function vfmath.define(specification,set,goodies) local offset = 0xFF000 local vector = mathencodings[vectorname] local rotcev = reverse[vectorname] + local isextension = ss.extension if vector and rotcev then local fc, fd, si = fs.characters, fs.descriptions, shared[s] local skewchar = ss.skewchar @@ -599,9 +600,10 @@ function vfmath.define(specification,set,goodies) local kerns = fci.kerns local width = fci.width local italic = fci.italic - -- if italic then - -- width = width + italic -- old interpretation of otf math specs - -- end + if italic and isextension then + -- int_a^b + width = width + italic + end if kerns then local krn = { } for k, v in next, kerns do -- kerns is sparse @@ -621,7 +623,7 @@ function vfmath.define(specification,set,goodies) kerns = krn, commands = ref, } - if skewchar and kerns then + if skewchar then local k = kerns[skewchar] if k then t.top_accent = width/2 + k @@ -640,7 +642,7 @@ function vfmath.define(specification,set,goodies) --~ report_virtual("%05X %s %s",unicode,fci.height or "NO HEIGHT",fci.depth or "NO DEPTH") end end - if ss.extension then + if isextension then -- todo: if multiple ex, then 256 offsets per instance local extension = mathencodings["large-to-small"] local variants_done = fs.variants_done diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv index cabaec0f3..6c1a3ca9f 100644 --- a/tex/context/base/pack-rul.mkiv +++ b/tex/context/base/pack-rul.mkiv @@ -571,6 +571,9 @@ %D start with defining some booleans. These give an impression %D of what we are going to take into account. +% todo : \c_framed_hasoffset +% faster : \let\c_framed_hasoffset\falseconditional + \newif\ifboxhasoffset \newif\ifboxhaswidth \newif\ifboxhasheight @@ -991,6 +994,11 @@ \boxhasstrutfalse \boxisoverlaidtrue \@@localoffset\zeropoint +% \else\ifx\localoffset\v!strut +% \boxhasoffsetfalse +% \boxhasstruttrue +% \boxisoverlaidtrue +% \@@localoffset\zeropoint \else \boxhasoffsettrue \boxhasstruttrue @@ -1003,7 +1011,7 @@ \let\defaultframeoffset\localoffset \fi \@@localoffset\dimexpr\localoffset+\ruledlinewidth\relax - \fi\fi + \fi\fi % \fi \!!framedheight\zeropoint \!!framedwidth \zeropoint \ifx\localwidth\empty % fallback to fit diff --git a/tex/context/base/spec-fdf.mkii b/tex/context/base/spec-fdf.mkii index ebda30fd4..0713fa80c 100644 --- a/tex/context/base/spec-fdf.mkii +++ b/tex/context/base/spec-fdf.mkii @@ -3169,7 +3169,8 @@ /BM /\ifcase#1 Normal\or Normal\or Multiply\or Screen\or Overlay\or SoftLight\or HardLight\or ColorDodge\or ColorBurn\or Darken\or Lighten\or Difference\or - Exclusion\else Compatible\fi + Exclusion\or Hue\or Saturation\or Color\or + Luminosity\else Compatible\fi #3>>} \def\dodoPDFstarttransparency#1#2% diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex ca23a77e8..62373b642 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 398111145..98c96d877 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/strc-flt.mkiv b/tex/context/base/strc-flt.mkiv index 98fa0fed6..96287a24a 100644 --- a/tex/context/base/strc-flt.mkiv +++ b/tex/context/base/strc-flt.mkiv @@ -600,8 +600,8 @@ {\edef\floatlocation{\floatparameter\c!default}} {\edef\floatlocation{#2}}% \doifinsetelse\v!split{#2} - {\normalexpanded{\noexpand\dodocomplexsplitfloat[\currentfloat][\floatlocation]}} - {\normalexpanded{\noexpand\dodocomplexplacefloat[\currentfloat][\floatlocation]}}} + {\normalexpanded{\dodocomplexsplitfloat[\currentfloat][\floatlocation]}} + {\normalexpanded{\dodocomplexplacefloat[\currentfloat][\floatlocation]}}} \unexpanded\def\dodocomplexsplitfloat[#1][#2][#3]#4% {\splitfloat{\dodocomplexplacefloat[#1][#2][#3]{#4}}} @@ -788,9 +788,22 @@ \let\currentfloatattribute\empty % to be checked \def\floatcaptionattribute - {\iflocation \ifnofloatnumber \else \ifnofloatcaption \else \ifinsidesplitfloat \else - attr \destinationattribute \currentfloatattribute - \fi \fi \fi \fi} + {\iflocation + \ifnofloatnumber + \else + \ifnofloatcaption + \else + \ifinsidesplitfloat + \ifconditional\splitfloatfirstdone + \else + attr \destinationattribute \currentfloatattribute + \fi + \else + attr \destinationattribute \currentfloatattribute + \fi + \fi + \fi + \fi} \newconditional\usesamefloatnumber diff --git a/tex/context/base/supp-box.mkiv b/tex/context/base/supp-box.mkiv index a1d3eb15d..c67c46b3e 100644 --- a/tex/context/base/supp-box.mkiv +++ b/tex/context/base/supp-box.mkiv @@ -59,12 +59,12 @@ %D reducing the dimensions of a box to zero. The most resolute %D one is presented first. -\def\smashbox#1% +\unexpanded\def\smashbox#1% {\wd#1\zeropoint \ht#1\zeropoint \dp#1\zeropoint} -\def\smashboxed#1% +\unexpanded\def\smashboxed#1% {\smashbox{#1}% \box#1\relax} @@ -74,10 +74,10 @@ %D Smashing can be used for overlaying boxes. Depending on %D the mode, horizontal or vertical, one can use: -\def\hsmashbox#1% +\unexpanded\def\hsmashbox#1% {\wd#1\zeropoint} -\def\vsmashbox#1% +\unexpanded\def\vsmashbox#1% {\ht#1\zeropoint \dp#1\zeropoint} @@ -86,7 +86,7 @@ \newcount\registercount -\def\smashbox +\unexpanded\def\smashbox {\afterassignment\dosmashbox\registercount} \def\dosmashbox @@ -94,20 +94,20 @@ \ht\registercount\zeropoint \dp\registercount\zeropoint} -\def\smashedbox +\unexpanded\def\smashedbox {\afterassignment\thesmashedbox\registercount} -\def\thesmashedbox +\unexpanded\def\thesmashedbox {\dosmashbox \box\registercount} -\def\hsmashbox +\unexpanded\def\hsmashbox {\afterassignment\dohsmashbox\registercount} \def\dohsmashbox {\wd\registercount\zeropoint} -\def\vsmashbox +\unexpanded\def\vsmashbox {\afterassignment\dovsmashbox\registercount} \def\dovsmashbox @@ -142,10 +142,10 @@ \def\dosomesmash#1% (begin|end)group ipv (b|e)group ? {\bgroup\dowithnextbox{#1\nextbox\flushnextbox\egroup}} -\def\hsmash {\dosomesmash\hsmashbox\normalhbox} -\def\vsmash {\dosomesmash\vsmashbox\normalvbox} -\def\hsmashed{\dosomesmash\smashbox \normalhbox} -\def\vsmashed{\dosomesmash\smashbox \normalvbox} +\unexpanded\def\hsmash {\dosomesmash\hsmashbox\normalhbox} +\unexpanded\def\vsmash {\dosomesmash\vsmashbox\normalvbox} +\unexpanded\def\hsmashed{\dosomesmash\smashbox \normalhbox} +\unexpanded\def\vsmashed{\dosomesmash\smashbox \normalvbox} %D \macros %D {smashedhbox,smashedvbox} @@ -161,8 +161,8 @@ %{#1\bgroup\dowithnextbox{\smashbox\nextbox\flushnextbox\egroup}#1} {#1\bgroup\dowithnextbox{\smashedbox\nextbox\egroup}#1} -\def\smashedhbox{\dosmashedbox\hbox} -\def\smashedvbox{\dosmashedbox\vbox} +\unexpanded\def\smashedhbox{\dosmashedbox\hbox} +\unexpanded\def\smashedvbox{\dosmashedbox\vbox} %D \macros %D {smash} @@ -172,7 +172,7 @@ %D math module (although the \type {\leavevmode} is not added %D here). -\def\smash +\unexpanded\def\smash {\futurelet\nexttoken\dosmash} \def\dosmash @@ -293,7 +293,7 @@ %D it accepts \type {{12}} as well as \type {12} as box %D number. -\def\getboxheight#1\of#2\box#3% +\unexpanded\def\getboxheight#1\of#2\box#3% {\def\next{#1\dimexpr\ht\registercount+\dp\registercount\relax}% \afterassignment\next\registercount=#3} @@ -345,7 +345,7 @@ \newcount\noflines \newdimen\noflinesheight -\def\getnoflines#1% +\unexpanded\def\getnoflines#1% {\noflinesheight#1\relax \ifzeropt\noflinesheight \noflines\zerocount @@ -361,7 +361,7 @@ \advance\noflines\minusone \fi\fi} -\def\getroundednoflines#1% +\unexpanded\def\getroundednoflines#1% {\noflinesheight#1\relax \ifzeropt\noflinesheight \noflines\zerocount @@ -375,7 +375,7 @@ \noflines\noflinesheight \fi\fi} -\def\getrawnoflines#1% +\unexpanded\def\getrawnoflines#1% {\noflinesheight#1\relax \ifzeropt\noflinesheight \noflines\zerocount @@ -439,7 +439,7 @@ \reshapebox{\global\advance\scratchcounter\plusone}% \expandafter\egroup\expandafter\noflines\the\scratchcounter\relax} -\def\determinenoflines +\unexpanded\def\determinenoflines {\bgroup \forgetall \let\crlf\endgraf @@ -458,7 +458,7 @@ %D \doiftext {data} {then branch} %D \stoptyping -\def\doiftextelse#1% +\unexpanded\def\doiftextelse#1% {\bgroup \setbox\scratchbox\normalhbox {\settrialtypesetting @@ -469,7 +469,7 @@ \egroup\@EA\firstoftwoarguments \fi} -\def\doiftext#1#2% +\unexpanded\def\doiftext#1#2% {\doiftextelse{#1}{#2}\donothing} %D \macros @@ -512,7 +512,7 @@ \ifx\nextbox\undefined \newbox\nextbox \fi -\long\def\dowithnextbox#1% +\unexpanded\def\dowithnextbox#1% {\long\def\dodowithnextbox{#1}% \afterassignment\dododowithnextbox \setbox\nextbox} @@ -520,7 +520,7 @@ \def\dododowithnextbox {\aftergroup\dodowithnextbox} -\long\def\dowithnextboxcs#1% +\unexpanded\def\dowithnextboxcs#1% {\let\dodowithnextbox#1% \afterassignment\dododowithnextbox \setbox\nextbox} @@ -573,7 +573,7 @@ \def\nextboxdp {\dp\nextbox} \def\nextboxhtdp {\dimexpr\ht\nextbox+\dp\nextbox\relax} -\def\flushnextbox{\box\nextbox} +\unexpanded\def\flushnextbox{\box\nextbox} %D \macros %D {dowithnextboxcontent} @@ -588,7 +588,7 @@ %D %D {\em todo: Search source for potential usage!} -\long\def\dowithnextboxcontent#1#2% inside, after +\unexpanded\def\dowithnextboxcontent#1#2% inside, after {\long\def\dodowithnextbox{#2}% \def\dododowithnextbox{#1\aftergroup\dodowithnextbox}% \afterassignment\dododowithnextbox @@ -787,7 +787,7 @@ \def\shapesignal{.12345678pt} % or 12345sp -\def\reshapebox#1% +\unexpanded\def\reshapebox#1% {\doreshapebox {#1}% {\penalty\shapepenalty}% @@ -815,11 +815,11 @@ % We will turn this into a \MKIV\ variant. -\def\insertshapesignal +\unexpanded\def\insertshapesignal {\normalhbox to \shapesignal{\strut\hss}% plus \strut \prevdepth\strutdp} % never \nointerlineskip -\def\restoreshapebox % compensates for the signal +\unexpanded\def\restoreshapebox % compensates for the signal {\global\setbox\tmpshapebox\vbox{\vskip-\lineheight\unvcopy\oldshapebox}} \def\dodoreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip @@ -856,21 +856,21 @@ \advance\shapecounter \plusone \fi} -\def\beginofshapebox +\unexpanded\def\beginofshapebox {\setbox\oldshapebox\normalvbox \bgroup \reshapingboxtrue \the\everyshapebox \insertshapesignal} -\def\endofshapebox +\unexpanded\def\endofshapebox {\endgraf \egroup} \let\beginshapebox\beginofshapebox \let\endshapebox \endofshapebox -\def\flushshapebox +\unexpanded\def\flushshapebox {\bgroup \ifzeropt\ht\newshapebox % \ifdim\ht\newshapebox=\zeropoint \else @@ -921,7 +921,7 @@ % % \omlijnd[offset=0pt,hoogte=8mm,uitlijnen={rechts,laho}]{\bfa test} -\def\innerflushshapebox +\unexpanded\def\innerflushshapebox {\ifzeropt\ht\newshapebox \else \unvcopy\newshapebox\relax % unvcopy ! else spacing problem % \kern-\dp\newshapebox\relax @@ -946,7 +946,7 @@ %D of \type {\normalhbox}, since it manages the height and depth of %D the line. -\def\shapedhbox % lines with non strutted dimensions have +\unexpanded\def\shapedhbox % lines with non strutted dimensions have {\expanded{\dowithnextbox % interlineskip so if we want the original {\nextboxht\the\ht\shapebox % spacing, we need to preserve the original \nextboxdp\the\dp\shapebox % height and depth which is definitely @@ -969,7 +969,7 @@ \def\doshowhyphenatednextbox {\ctxcommand{showhyphenatedinlist(tex.box[\number\nextbox].list)}} -\def\showhyphens{\dowithnextbox\doshowhyphenatednextbox\hbox} +\unexpanded\def\showhyphens{\dowithnextbox\doshowhyphenatednextbox\hbox} %D The following macros are seldom used but handy for tracing. %D @@ -983,9 +983,9 @@ {\ctxcommand{hyphenatedlist(tex.box[\number\nextbox])}% \unhbox\nextbox} -\def\hyphenatedword {\dowithnextbox\dohyphenatednextbox \hbox} -\def\hyphenatedpar {\dowithnextbox\dohyphenatednextbox \hbox} -\def\hyphenatedfile#1{\dowithnextbox\dohyphenatednextbox \hbox{\readfile{#1}\donothing\donothing}} +\unexpanded\def\hyphenatedword {\dowithnextbox\dohyphenatednextbox \hbox} +\unexpanded\def\hyphenatedpar {\dowithnextbox\dohyphenatednextbox \hbox} +\unexpanded\def\hyphenatedfile#1{\dowithnextbox\dohyphenatednextbox \hbox{\readfile{#1}\donothing\donothing}} %D \macros %D {processtokens} @@ -1041,7 +1041,7 @@ \def\doprocesstokens% the space after = is essential {\afterassignment\dodoprocesstokens\let\nextprocessedtoken= } -\def\processtokens#1#2#3#4#5% +\unexpanded\def\processtokens#1#2#3#4#5% {\begingroup \def\lastcharacter{\lastcharacter}% \def\space{ }% @@ -1242,7 +1242,7 @@ \ifdim\wd2<\wd0 #1\else\unhbox0\fi \egroup} -\def\limitatetext#1#2#3% \expanded added 2003/01/16 +\unexpanded\def\limitatetext#1#2#3% \expanded added 2003/01/16 {\expanded{\beforesplitstring#2}\at,\to\leftlimit \expanded{\aftersplitstring #2}\at,\to\rightlimit \ifx\rightlimit\empty @@ -1257,7 +1257,7 @@ %D \limitatefirstline{\input tufte\relax}{10cm}{\unknown} %D \stoptyping -\def\limitatefirstline#1#2#3% +\unexpanded\def\limitatefirstline#1#2#3% {\hbox\bgroup\strut \setbox\scratchbox\hbox{\begstrut#1\endstrut}% \ifdim\wd\scratchbox>#2\relax @@ -1300,14 +1300,14 @@ % todo: provide variant with #1 picked up as box -\def\processisolatedchars#1#2% +\unexpanded\def\processisolatedchars#1#2% {\dontleavehmode \begingroup \setbox\scratchbox\normalhbox{#1}% \ctxcommand{applytochars(\number\scratchbox,"\strippedcsname#2",true)}% \endgroup} -\def\processisolatedwords#1#2% +\unexpanded\def\processisolatedwords#1#2% {\dontleavehmode \begingroup \setbox\scratchbox\normalhbox{#1}% @@ -1321,12 +1321,12 @@ %D The better variant: -\def\applytocharacters#1% +\unexpanded\def\applytocharacters#1% {\dontleavehmode \dowithnextbox{\ctxcommand{applytochars(\number\nextbox,"\strippedcsname#1",true)}}% \normalhbox} -\def\applytowords#1% +\unexpanded\def\applytowords#1% {\dontleavehmode \dowithnextbox{\ctxcommand{applytowords(\number\nextbox,"\strippedcsname#1",true)}}% \normalhbox} @@ -1358,7 +1358,7 @@ %D macro can be useful when building complicated menus, headers %D and footers and|/|or margin material. -\def\sbox% in handleiding, voorbeeld \inleft{xx} \extern.. +\unexpanded\def\sbox% in handleiding, voorbeeld \inleft{xx} \extern.. {\normalvbox\bgroup % new ! ! ! \dowithnextbox {\setbox\scratchbox\normalhbox @@ -1377,7 +1377,7 @@ %D This boxing macro limits the height and depth to those of %D a strut. -\def\struttedbox +\unexpanded\def\struttedbox {\normalhbox\bgroup % new ! ! ! \dowithnextbox {\nextboxdp\strutdepth @@ -1393,7 +1393,7 @@ %D and strutheight. Watch how we preserve the depth when it %D equals strutdepth. -\def\topskippedbox +\unexpanded\def\topskippedbox {\normalhbox\bgroup \dowithnextbox {\edef\next{\ifdim\strutdepth=\nextboxdp\nextboxdp\the\nextboxdp\fi}% @@ -1448,7 +1448,7 @@ %D intact. This commands handles positive and negative %D dimensions (which is why we need two boxes with rules). -\def\centeredbox#1#% height +/-dimen width +/-dimen +\unexpanded\def\centeredbox#1#% height +/-dimen width +/-dimen {\bgroup \setbox0\normalvbox to \vsize \bgroup @@ -1489,7 +1489,7 @@ %D %D Do you see what we call this one \type {next}? -\def\centerednextbox#1#% +\unexpanded\def\centerednextbox#1#% {\bgroup \dowithnextbox {\hsize\nextboxwd @@ -1510,7 +1510,7 @@ %D When omitted, the current \type {\hsize} and \type %D {\vsize} are used. Local dimensions are supported. -\long\def\centerbox#1#% optional height +/-dimen width +/-dimen +\unexpanded\def\centerbox#1#% optional height +/-dimen width +/-dimen {\bgroup \dowithnextbox {\setlocalhsize @@ -1546,7 +1546,7 @@ %D De eerste switch bepaald het uitlijnen, de tweede rekt de %D individuele kolommen op naar \type{\vsize}. -\def\setrigidcolumnhsize#1#2#3% todo: \dimexpr +\unexpanded\def\setrigidcolumnhsize#1#2#3% todo: \dimexpr {\xdef\savedrigidhsize{\the\hsize}% \hsize#1\relax \global\chardef\rigidcolumns#3\relax @@ -1567,7 +1567,7 @@ \let\rigidcolumnlines\!!zerocount -\def\rigidcolumnbalance#1% +\unexpanded\def\rigidcolumnbalance#1% {\ifnum\rigidcolumns=1 % tzt ook h/d correctie \ifinner\ifhmode\box\else\unvbox\fi\else\unvbox\fi#1\relax \else @@ -1653,7 +1653,7 @@ %D These macros are used in reformatting footnotes, so they do %D what they're meant for. -\def\setvboxtohbox +\unexpanded\def\setvboxtohbox {\bgroup \ifdim\baselineskip<16pt \relax \scratchdimen\baselineskip @@ -1667,25 +1667,25 @@ \xdef\normalvboxtohboxfactor{\withoutpt\the\scratchdimen}% \egroup} -\def\startvboxtohbox +\unexpanded\def\startvboxtohbox {\bgroup \setvboxtohbox \setbox\scratchbox\normalhbox\bgroup} -\def\stopvboxtohbox +\unexpanded\def\stopvboxtohbox {\egroup \dp\scratchbox\zeropoint \ht\scratchbox\normalvboxtohboxfactor\wd\scratchbox \box\scratchbox \egroup} -\def\convertvboxtohbox +\unexpanded\def\convertvboxtohbox {\setvboxtohbox \makehboxofhboxes \setbox0\normalhbox{\unhbox0 \removehboxes}% \noindent\unhbox0\par} -\def\makehboxofhboxes +\unexpanded\def\makehboxofhboxes {\setbox0\emptyhbox \loop % \doloop { .. \exitloop .. } \setbox2\lastbox @@ -1693,7 +1693,7 @@ \setbox0\normalhbox{\box2\unhbox0}% \repeat} -\def\removehboxes +\unexpanded\def\removehboxes {\setbox0\lastbox \ifhbox0 {\removehboxes}\unhbox0 @@ -1710,7 +1710,7 @@ \newdimen \lasthhboxwidth \newskip \hhboxindent -\def\unhhbox#1\with#2% +\unexpanded\def\unhhbox#1\with#2% {\bgroup \nopenalties \dontcomplain @@ -1741,7 +1741,7 @@ \unhbox1 \egroup} -\def\normalhboxofvbox +\unexpanded\def\normalhboxofvbox {\bgroup \afterassignment\dohboxofvbox \scratchcounter=} @@ -1829,13 +1829,13 @@ \newbox\processbox -\def\processboxes#1% +\unexpanded\def\processboxes#1% {\bgroup \def\doprocessbox{#1}% #1 can be redefined halfway \setbox\processbox\emptybox \afterassignment\dogetprocessbox\let\next=} -\def\endprocessboxes +\unexpanded\def\endprocessboxes {\ifhmode\unskip\fi \box\processbox \next @@ -1928,7 +1928,7 @@ \ifhbox\scratchcounter\normalhbox\else\normalvbox\fi{\box\scratchbox}% \egroup} -\def\fakebox +\unexpanded\def\fakebox {\bgroup \afterassignment\dofakebox\scratchcounter} @@ -1948,13 +1948,13 @@ %D middle and right. These box types can be used to typeset %D paragraphs. -\def\lbox{\makelrcbox\normalvbox\raggedleft} -\def\cbox{\makelrcbox\normalvbox\raggedcenter} -\def\rbox{\makelrcbox\normalvbox\raggedright} +\unexpanded\def\lbox{\makelrcbox\normalvbox\raggedleft} +\unexpanded\def\cbox{\makelrcbox\normalvbox\raggedcenter} +\unexpanded\def\rbox{\makelrcbox\normalvbox\raggedright} -\def\ltop{\makelrcbox\normalvtop\raggedleft} -\def\ctop{\makelrcbox\normalvtop\raggedcenter} -\def\rtop{\makelrcbox\normalvtop\raggedright} +\unexpanded\def\ltop{\makelrcbox\normalvtop\raggedleft} +\unexpanded\def\ctop{\makelrcbox\normalvtop\raggedcenter} +\unexpanded\def\rtop{\makelrcbox\normalvtop\raggedright} \def\makelrcbox#1#2#3#% {#1#3\bgroup \forgetall \let\\=\endgraf #2\let\next=} @@ -1979,8 +1979,8 @@ %D %D \getbuffer -\def\tbox{\tbbox\ht\dp} -\def\bbox{\tbbox\dp\ht} +\unexpanded\def\tbox{\tbbox\ht\dp} +\unexpanded\def\bbox{\tbbox\dp\ht} \def\tbbox#1#2% {\normalhbox\bgroup @@ -2004,9 +2004,9 @@ \def\dodomhbox{\normalhbox to \hsize{\hss\flushnextbox\hss}} \def\dodorhbox{\normalhbox to \hsize{\hss\flushnextbox }} -\def\lhbox{\dowithnextboxcs\dodolhbox\normalhbox} -\def\mhbox{\dowithnextboxcs\dodomhbox\normalhbox} -\def\rhbox{\dowithnextboxcs\dodorhbox\normalhbox} +\unexpanded\def\lhbox{\dowithnextboxcs\dodolhbox\normalhbox} +\unexpanded\def\mhbox{\dowithnextboxcs\dodomhbox\normalhbox} +\unexpanded\def\rhbox{\dowithnextboxcs\dodorhbox\normalhbox} \let\lefthbox \lhbox \let\midhbox \mhbox @@ -2028,7 +2028,7 @@ \newdimen\sizeofbox -\def\boxofsize#1% +\unexpanded\def\boxofsize#1% {\bgroup \sizeofbox\zeropoint \scratchdimen\zeropoint @@ -2050,7 +2050,7 @@ % \limitvbox % \limithbox -\def\limitatelines#1#2% size sentinel +\unexpanded\def\limitatelines#1#2% size sentinel {\dowithnextbox {\dimen0=#1\hsize \ifdim\nextboxwd>\dimen0 @@ -2061,7 +2061,7 @@ \unhbox\nextbox} \normalhbox} -\def\fittoptobaselinegrid % weg hier +\unexpanded\def\fittoptobaselinegrid % weg hier {\dowithnextbox {\bgroup \par @@ -2090,7 +2090,7 @@ \setbox\fakedboxcursor\normalhbox {\vrule\!!width\zeropoint\!!height\zeropoint\!!depth\zeropoint} -\def\boxcursor % overloaded in core-vis +\unexpanded\def\boxcursor % overloaded in core-vis {\iftraceboxplacement \bgroup \scratchdimen2pt @@ -2107,14 +2107,14 @@ \copy\fakedboxcursor \fi} -\def\placedbox +\unexpanded\def\placedbox {\iftraceboxplacement\ruledhbox\else\normalhbox\fi} \newdimen\boxoffset \newdimen\boxhdisplacement \newdimen\boxvdisplacement -\def\rightbox#1% +\unexpanded\def\rightbox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement\boxoffset @@ -2122,7 +2122,7 @@ \global\advance\boxvdisplacement-.5\dp\scratchbox \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box\scratchbox}} -\def\leftbox#1% +\unexpanded\def\leftbox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement-\wd\scratchbox @@ -2131,7 +2131,7 @@ \global\advance\boxvdisplacement-.5\dp\scratchbox \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box\scratchbox}} -\def\topbox#1% +\unexpanded\def\topbox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement-.5\wd\scratchbox @@ -2139,7 +2139,7 @@ \global\advance\boxvdisplacement-\boxoffset \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box\scratchbox}} -\def\bottombox#1% +\unexpanded\def\bottombox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement-.5\wd\scratchbox @@ -2147,7 +2147,7 @@ \global\advance\boxvdisplacement\boxoffset \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box\scratchbox}} -\def\lefttopbox#1% +\unexpanded\def\lefttopbox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement-\wd\scratchbox @@ -2156,7 +2156,7 @@ \global\advance\boxvdisplacement-\boxoffset \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box\scratchbox}} -\def\righttopbox#1% +\unexpanded\def\righttopbox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement\boxoffset @@ -2164,7 +2164,7 @@ \global\advance\boxvdisplacement-\boxoffset \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box\scratchbox}} -\def\leftbottombox#1% +\unexpanded\def\leftbottombox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement-\wd\scratchbox @@ -2173,7 +2173,7 @@ \global\advance\boxvdisplacement\boxoffset \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box\scratchbox}} -\def\rightbottombox#1% +\unexpanded\def\rightbottombox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement\boxoffset @@ -2186,10 +2186,10 @@ \let\bottomleftbox \leftbottombox \let\bottomrightbox\rightbottombox -\def\middlebox#1% +\unexpanded\def\middlebox#1% {\normalhbox{\setbox\scratchbox\placedbox{#1}\boxoffset=-.5\wd\scratchbox\rightbox{\box\scratchbox}}} -\def\baselinemiddlebox#1% +\unexpanded\def\baselinemiddlebox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement-.5\wd\scratchbox @@ -2197,7 +2197,7 @@ \global\boxvdisplacement-\boxoffset \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box\scratchbox}} -\def\baselineleftbox#1% +\unexpanded\def\baselineleftbox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement-\wd\scratchbox @@ -2205,7 +2205,7 @@ \global\boxvdisplacement-\boxoffset \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box\scratchbox}} -\def\baselinerightbox#1% +\unexpanded\def\baselinerightbox#1% {\normalhbox {\setbox\scratchbox\placedbox{#1}% \global\boxhdisplacement\boxoffset @@ -2217,7 +2217,7 @@ %D %D Experimental, not yet frozen: -\def\lrtbbox#1#2#3#4% l r t b +\unexpanded\def\lrtbbox#1#2#3#4% l r t b {\bgroup \dowithnextboxcontent {\advance\hsize-#1\advance\hsize-#2\advance\vsize-#3\advance\vsize-#4\relax} @@ -2229,7 +2229,7 @@ %D %D See core-tbl.tex for an example of its usage: -\def\toplinebox +\unexpanded\def\toplinebox {\dowithnextbox {\ifdim\nextboxdp>\strutdepth \scratchdimen\nextboxdp @@ -2265,20 +2265,20 @@ \def\@@stackbox{@box@} \def\@@stacklst{@xob@} -\def\setstackbox#1#2% +\unexpanded\def\setstackbox#1#2% {\ifcsname\@@stackbox:#1:#2\endcsname\else \expandafter\newbox\csname\@@stackbox:#1:#2\endcsname \fi \global\setbox\csname\@@stackbox:#1:#2\endcsname\normalvbox} -\def\initializeboxstack#1% +\unexpanded\def\initializeboxstack#1% {\def\docommand##1{\setstackbox{#1}{##1}{}}% \ifcsname\@@stacklst#1\endcsname \processcommacommand[\getvalue{\@@stacklst#1}]\docommand \fi \letgvalueempty{\@@stacklst#1}} -\def\savebox#1#2% stack name +\unexpanded\def\savebox#1#2% stack name {% beware, \setxvalue defines the cs beforehand so we cannot use the % test inside the { } \ifcsname\@@stacklst#1\endcsname @@ -2288,13 +2288,13 @@ \fi \setstackbox{#1}{#2}} -\def\foundbox#1#2% +\unexpanded\def\foundbox#1#2% {\normalvbox {\ifcsname\@@stackbox:#1:#2\endcsname \copy\csname\@@stackbox:#1:#2\endcsname \fi}} -\long\def\doifboxelse#1#2#3#4% +\unexpanded\def\doifboxelse#1#2#3#4% {\ifcsname\@@stackbox:#1:#2\endcsname \ifvoid\csname\@@stackbox:#1:#2\endcsname#4\else#3\fi \else @@ -2308,13 +2308,13 @@ %D \type {\obeydepth} makes sure we have depth. Both macros %D leave the \type {\prevdepth} untouched. -\def\removedepth +\unexpanded\def\removedepth {\ifvmode \ifdim\prevdepth>\zeropoint \kern-\prevdepth \fi \fi} -\def\obeydepth +\unexpanded\def\obeydepth {\par \removedepth \ifvmode \kern\strutdp \fi} -\def\undepthed +\unexpanded\def\undepthed {\dowithnextbox{\nextboxdp\zeropoint\flushnextbox}\hbox} %D \macros @@ -2322,10 +2322,10 @@ %D %D A funny (but rather stupid) one, plus a redefinition. -\def\removebottomthings +\unexpanded\def\removebottomthings {\dorecurse5{\unskip\unkern\unpenalty}} -\def\removelastskip % \ifvmode the plain tex one \fi +\unexpanded\def\removelastskip % \ifvmode the plain tex one \fi % {\ifvmode\ifdim\lastskip=\zeropoint\else\vskip-\lastskip\fi\fi} {\ifvmode\ifzeropt\lastskip\else\vskip-\lastskip\fi\fi} @@ -2340,7 +2340,7 @@ \dp\registercount\strutdp \wd\registercount\zeropoint} -\def\makestrutofbox +\unexpanded\def\makestrutofbox {\afterassignment\domakestrutofbox\registercount} %D \macros @@ -2365,12 +2365,12 @@ \flushnextbox}}% \afterassignment\next\scratchdimen=#2} -\def\raisebox{\doraiselowerbox\raise} -\def\lowerbox{\doraiselowerbox\lower} +\unexpanded\def\raisebox{\doraiselowerbox\raise} +\unexpanded\def\lowerbox{\doraiselowerbox\lower} % vcenter in text, we kunnen vcenter overloaden -\def\halfwaybox +\unexpanded\def\halfwaybox {\dowithnextbox {\nextboxdp\zeropoint \setbox\nextbox\normalhbox{\lower.5\nextboxht\flushnextbox}% @@ -2391,9 +2391,9 @@ \ifdefined\textdir - \def\naturalhbox{\normalhbox dir TLT} - \def\naturalvbox{\normalvbox dir TLT} - %def\naturalvtop{\normalvtop dir TLT} + \unexpanded\def\naturalhbox{\normalhbox dir TLT} + \unexpanded\def\naturalvbox{\normalvbox dir TLT} + %\unexpanded\def\naturalvtop{\normalvtop dir TLT} \fi @@ -2404,7 +2404,7 @@ \let\verynormalvcenter \vcenter % since \vcenter can be visualized -\def\vcenter +\unexpanded\def\vcenter {\normalvbox\bgroup \dowithnextbox{\normalhbox{$\verynormalvcenter{\flushnextbox}$}\egroup} \normalvbox} @@ -2419,7 +2419,7 @@ %D %D A not so well unhboxable bxo can be made with: -\def\frozenhbox +\unexpanded\def\frozenhbox {\hbox\bgroup\dowithnextbox{\hbox{\hbox{\flushnextbox}}\egroup}\hbox} %D \macros @@ -2427,11 +2427,11 @@ %D %D A prelude to an extended \TEX: -\def\setboxllx#1#2{\setevalue{b@@x\number#1}{\the\dimexpr#2\relax}} -\def\setboxlly#1#2{\setevalue{b@@y\number#1}{\the\dimexpr#2\relax}} +\unexpanded\def\setboxllx#1#2{\setevalue{b@@x\number#1}{\the\dimexpr#2\relax}} +\unexpanded\def\setboxlly#1#2{\setevalue{b@@y\number#1}{\the\dimexpr#2\relax}} -\def\gsetboxllx{\global\setboxllx} -\def\gsetboxlly{\global\setboxlly} +\unexpanded\def\gsetboxllx{\global\setboxllx} +\unexpanded\def\gsetboxlly{\global\setboxlly} \def\getboxllx#1{\executeifdefined{b@@x\number#1}\zeropoint} \def\getboxlly#1{\executeifdefined{b@@y\number#1}\zeropoint} @@ -2449,7 +2449,7 @@ %D \shownextbox\vbox{\setupwhitespace[big]test\endgraf\thinrule} %D \stoptyping -\def\shownextbox +\unexpanded\def\shownextbox {\dowithnextbox {\bgroup \showboxbreadth\maxdimen @@ -2461,7 +2461,7 @@ \interactionmode\scratchcounter \egroup}} -\def\spreadhbox#1% rebuilds \hbox{<box><hss><box><hss><box>} +\unexpanded\def\spreadhbox#1% rebuilds \hbox{<box><hss><box><hss><box>} {\bgroup \ifhbox#1\relax \setbox2\emptybox diff --git a/tex/context/base/supp-mpe.mkii b/tex/context/base/supp-mpe.mkii index a4ebef997..2e5e7e528 100644 --- a/tex/context/base/supp-mpe.mkii +++ b/tex/context/base/supp-mpe.mkii @@ -1268,7 +1268,8 @@ /BM /\ifcase#1 Normal\or Normal\or Multiply\or Screen\or Overlay\or SoftLight\or HardLight\or ColorDodge\or ColorBurn\or Darken\or Lighten\or Difference\or - Exclusion\else Compatible\fi + Exclusion\or Hue\or Saturation\or Color\or + Luminosity\else Compatible\fi #3>>} \fi diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv index 571ca05b9..c7a3d2325 100644 --- a/tex/context/base/syst-aux.mkiv +++ b/tex/context/base/syst-aux.mkiv @@ -3419,6 +3419,9 @@ \let\newconditional\setfalse \let\ifconditional \ifcase +\let\conditionalfalse\plusone +\let\conditionaltrue \zerocount + \let\then\relax % so that we can say: \ifnum1>2\then -) % demands that each conditional is defined .. it would be handy to have diff --git a/tex/context/fonts/xits-math.lfg b/tex/context/fonts/xits-math.lfg index 8043a0093..0d604e301 100644 --- a/tex/context/fonts/xits-math.lfg +++ b/tex/context/fonts/xits-math.lfg @@ -4,43 +4,6 @@ -- $ABC$ $\cal ABC$ $\mathalternate{cal}\cal ABC$ -- \stoptext --- fonts.handlers.otf.enhancers.patches.register("after","check metadata","xits%-math", function(data,filename) --- local variants = { --- [0xFE00] = { --- [0x2229] = "uni2229.vs1", --- [0x222A] = "uni222A.vs1", --- [0x2268] = "uni2268.vs1", --- [0x2269] = "uni2269.vs1", --- [0x2272] = "uni2272.vs1", --- [0x2273] = "uni2273.vs1", --- [0x228A] = "uni228A.vs1", --- [0x228B] = "uni228B.vs1", --- [0x2293] = "uni2293.vs1", --- [0x2294] = "uni2294.vs1", --- [0x2295] = "uni2295.vs1", --- [0x2297] = "uni2297.vs1", --- [0x229C] = "uni229C.vs1", --- [0x22DA] = "uni22DA.vs1", --- [0x22DB] = "uni22DB.vs1", --- [0x2A3C] = "uni2A3C.vs1", --- [0x2A3D] = "uni2A3D.vs1", --- [0x2A9D] = "uni2A9D.vs1", --- [0x2A9E] = "uni2A9E.vs1", --- [0x2AAC] = "uni2AAC.vs1", --- [0x2AAD] = "uni2AAD.vs1", --- [0x2ACB] = "uni2ACB.vs1", --- [0x2ACC] = "uni2ACC.vs1", --- } --- } --- local unicodes = data.resources.unicodes --- for k, v in next, variants do --- for kk, vv in next, v do --- v[kk] = unicodes[vv] --- end --- end --- data.resources.variants = variants --- end) - return { name = "xits-math", version = "1.00", @@ -57,6 +20,7 @@ return { mathbbit = { feature = 'ss06', value = 1, comment = "Mathematical Italic Double-Struck Alphabet" }, mathbbbi = { feature = 'ss07', value = 1, comment = "Mathematical Bold Italic Double-Struck Alphabet" }, upint = { feature = 'ss08', value = 1, comment = "Upright Integrals" }, + vertnot = { feature = 'ss09', value = 1, comment = "Negated Symbols With Vertical Stroke" }, }, } } diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 36111651a..e493ba948 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 : 08/27/11 13:24:43 +-- merge date : 09/05/11 12:54:46 do -- begin closure to overcome local limits and interference @@ -11532,7 +11532,7 @@ registerotffeature { methods.latn = analyzers.setstate --- this info eventually will go into char-def adn we will have a state +-- this info eventually will go into char-def and we will have a state -- table for generic then local zwnj = 0x200C @@ -11562,6 +11562,12 @@ local isol_fina = { [0x076C] = true, [0x0771] = true, [0x0773] = true, [0x0774] = true, [0x0778] = true, [0x0779] = true, [0xFEF5] = true, [0xFEF7] = true, [0xFEF9] = true, [0xFEFB] = true, + + -- syriac + + [0x0710] = true, [0x0715] = true, [0x0716] = true, [0x0717] = true, + [0x0718] = true, [0x0719] = true, [0x0728] = true, [0x072A] = true, + [0x072C] = true, [0x071E] = true, } local isol_fina_medi_init = { @@ -11599,10 +11605,19 @@ local isol_fina_medi_init = { [0x0772] = true, [0x0775] = true, [0x0776] = true, [0x0777] = true, [0x077A] = true, [0x077B] = true, [0x077C] = true, [0x077D] = true, [0x077E] = true, [0x077F] = true, [zwj] = true, + + -- syriac + + [0x0712] = true, [0x0713] = true, [0x0714] = true, [0x071A] = true, + [0x071B] = true, [0x071C] = true, [0x071D] = true, [0x071F] = true, + [0x0720] = true, [0x0721] = true, [0x0722] = true, [0x0723] = true, + [0x0725] = true, [0x0726] = true, [0x0727] = true, [0x0729] = true, + [0x072B] = true, [0x0724] = true, [0x0706] = true, [0x0707] = true, } local arab_warned = { } + -- todo: gref local function warning(current,what) @@ -11720,6 +11735,8 @@ function methods.arab(head,font,attr) -- maybe make a special version with no tr return head, done end +methods.syrc = methods.arab + directives.register("otf.analyze.useunicodemarks",function(v) analyzers.useunicodemarks = v end) |