diff options
Diffstat (limited to 'tex')
-rw-r--r-- | tex/context/base/context-version.pdf | bin | 4165 -> 4155 bytes | |||
-rw-r--r-- | tex/context/base/mkiv/cont-new.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/mkiv/context-todo.tex | 3 | ||||
-rw-r--r-- | tex/context/base/mkiv/context.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/mkiv/font-ots.lua | 12 | ||||
-rw-r--r-- | tex/context/base/mkiv/font-pre.mkiv | 4 | ||||
-rw-r--r-- | tex/context/base/mkiv/grph-inc.mkiv | 10 | ||||
-rw-r--r-- | tex/context/base/mkiv/node-met.lua | 4 | ||||
-rw-r--r-- | tex/context/base/mkiv/node-nut.lua | 101 | ||||
-rw-r--r-- | tex/context/base/mkiv/node-res.lua | 17 | ||||
-rw-r--r-- | tex/context/base/mkiv/pack-mrl.mkiv | 47 | ||||
-rw-r--r-- | tex/context/base/mkiv/spac-prf.lua | 6 | ||||
-rw-r--r-- | tex/context/base/mkiv/status-files.pdf | bin | 9121 -> 9122 bytes | |||
-rw-r--r-- | tex/context/base/mkiv/status-lua.pdf | bin | 267198 -> 267228 bytes | |||
-rw-r--r-- | tex/context/base/mkiv/typo-krn.lua | 4 | ||||
-rw-r--r-- | tex/context/base/mkiv/typo-tal.lua | 5 | ||||
-rw-r--r-- | tex/generic/context/luatex/luatex-fonts-merged.lua | 14 |
17 files changed, 105 insertions, 126 deletions
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex fb8f7e3eb..a1aeca783 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 8fe6401f1..1148bb842 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2016.03.30 11:59} +\newcontextversion{2016.03.31 09:08} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context-todo.tex b/tex/context/base/mkiv/context-todo.tex index 933b15e6f..86a5f82ce 100644 --- a/tex/context/base/mkiv/context-todo.tex +++ b/tex/context/base/mkiv/context-todo.tex @@ -15,9 +15,6 @@ \startitem optimize some callback resolution (more direct) \stopitem - \startitem - move glue specs into glue nodes - \stopitem \stopitemize \subsubject{\CONTEXT} diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index 50f23ec32..10c935822 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -39,7 +39,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2016.03.30 11:59} +\edef\contextversion{2016.03.31 09:08} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua index 15de12867..879a1ffc7 100644 --- a/tex/context/base/mkiv/font-ots.lua +++ b/tex/context/base/mkiv/font-ots.lua @@ -3648,13 +3648,21 @@ local function spaceinitializer(tfmdata,value) -- attr local kerns = coverage[32] if kerns then for k, v in next, kerns do - right[k] = v + if type(v) == "table" then + right[k] = v[3] -- needs checking + else + right[k] = v + end end end for k, v in next, coverage do local kern = v[32] if kern then - left[k] = kern + if type(v) == "table" then + left[k] = kern[3] -- needs checking + else + left[k] = kern + end end end end diff --git a/tex/context/base/mkiv/font-pre.mkiv b/tex/context/base/mkiv/font-pre.mkiv index 584bd1779..3b3a76d9c 100644 --- a/tex/context/base/mkiv/font-pre.mkiv +++ b/tex/context/base/mkiv/font-pre.mkiv @@ -56,13 +56,13 @@ \definefontfeature [inlinenumbers] - [lnum=yes, + [pnum=yes, tnum=no] \definefontfeature [tabularnumbers] [tnum=yes, - lnum=no] + pnum=no] \definefontfeature [oldstylenumbers] diff --git a/tex/context/base/mkiv/grph-inc.mkiv b/tex/context/base/mkiv/grph-inc.mkiv index b7923d16e..deba82c58 100644 --- a/tex/context/base/mkiv/grph-inc.mkiv +++ b/tex/context/base/mkiv/grph-inc.mkiv @@ -782,8 +782,16 @@ % Bonus: \useexternalfigure - [buffer] + [\v!buffer] [\jobname.buffer] [\c!object=\v!no] +% Another one: + +\defineexternalfigure + [\v!inline] + [\c!height=\lineheight] + +\unexpanded\def\inlinefigure[#1]{\dontleavehmode\sbox{\externalfigure[#1][\v!inline]}} + \protect \endinput diff --git a/tex/context/base/mkiv/node-met.lua b/tex/context/base/mkiv/node-met.lua index a2398da90..272b1d176 100644 --- a/tex/context/base/mkiv/node-met.lua +++ b/tex/context/base/mkiv/node-met.lua @@ -116,6 +116,10 @@ nodes.mlist_to_hlist = node.mlist_to_hlist nodes.effective_glue = node.effective_glue +nodes.is_zero_glue = node.is_zero_glue +nodes.getglue = node.getglue +nodes.getglue = node.getglue + -- if not gonuts or not node.getfield then -- node.getfield = metatable.__index -- node.setfield = metatable.__newindex diff --git a/tex/context/base/mkiv/node-nut.lua b/tex/context/base/mkiv/node-nut.lua index 6fe2e0f33..1465a6680 100644 --- a/tex/context/base/mkiv/node-nut.lua +++ b/tex/context/base/mkiv/node-nut.lua @@ -200,29 +200,7 @@ nuts.ligaturing = direct.ligaturing nuts.kerning = direct.kerning nuts.effective_glue = direct.effective_glue --- placeholders - -if not nuts.kerning then - - local n_kerning = node.kerning - - function nuts.kerning(head) - return tonode(n_kerning(tonut(head))) - end - -end - -if not nuts.ligaturing then - - local n_ligaturing = node.ligaturing - - function nuts.ligaturing(head) - return tonode(n_ligaturing(tonut(head))) - end - -end - -if not direct.mlist_to_hlist then +if not direct.mlist_to_hlist then -- needed local n_mlist_to_hlist = node.mlist_to_hlist @@ -232,15 +210,36 @@ if not direct.mlist_to_hlist then end -if not direct.setlist then - - local setfield = nuts.setfield +local is_zero_glue = direct.is_zero_glue +local setglue = direct.setglue +local getglue = direct.getglue + +if not is_zero_glue then + is_zero_glue = function(n) + return not n or ( + getfield(n,"width") == 0 and + getfield(n,"stretch") == 0 and + getfield(n,"shrink") == 0 + ) + end + setglue = function(n,width,stretch,shrink,stretch_order,shrink_order) + setfield(n,"width", width or 0) + setfield(n,"stretch", stretch or 0) + setfield(n,"shrink", shrink or 0) + setfield(n,"stretch_order",stretch_order or 0) + setfield(n,"shrink_order", shrink_order or 0) + end + getglue = function(n) + return + getfield(n,"width"), getfield(n,"stretch"), getfield(n,"shrink"), + getfield(n,"stretch_order"), getfield(n,"shrink_order") + end +end - function direct.setlist (n,l) setfield(n,"list",l) end - function direct.setleader (n,l) setfield(n,"leader",l) end - function direct.setsubtype(n,s) setfield(n,"subtype",s) end +nuts.is_zero_glue = is_zero_glue +nuts.setglue = setglue +nuts.getglue = getglue -end -- if not direct.getpre then -- @@ -252,10 +251,11 @@ end -- -- end -nuts.getdisc = direct.getdisc ----.getpre = direct.getpre ----.getpost = direct.getpost ----.getreplace = direct.getreplace + +nuts.getdisc = direct.getdisc nuts.setdisc = direct.setdisc nuts.setchar = direct.setchar nuts.setnext = direct.setnext @@ -267,45 +267,6 @@ nuts.setlist = direct.setlist nuts.setleader = direct.setleader nuts.setsubtype = direct.setsubtype -if not direct.is_glyph then - - local getchar = direct.getchar - local getid = direct.getid - local getfont = direct.getfont - local getsubtype = direct.getsubtype - - local glyph_code = nodes.nodecodes.glyph - - function direct.is_glyph(n,f) - local id = getid(n) - if id == glyph_code then - if f and getfont(n) == f then - return getchar(n) - else - return false - end - else - return nil, id - end - end - - function direct.is_char(n,f) - local id = getid(n) - if id == glyph_code then - if getsubtype(n) >= 256 then - return false - elseif f and getfont(n) == f then - return getchar(n) - else - return false - end - else - return nil, id - end - end - -end - nuts.is_char = direct.is_char nuts.ischar = direct.is_char nuts.is_glyph = direct.is_glyph diff --git a/tex/context/base/mkiv/node-res.lua b/tex/context/base/mkiv/node-res.lua index b74929a81..d87f40df7 100644 --- a/tex/context/base/mkiv/node-res.lua +++ b/tex/context/base/mkiv/node-res.lua @@ -82,23 +82,6 @@ local free_nut = nuts.free local copy_node = nodes.copy local new_node = nodes.new -local reset_glue = nuts.reset_glue - -if not reset_glue then - reset_glue = function(n,width,stretch,shrink,stretch_order,shrink_order) - setfield(n,"width",width or 0) - setfield(n,"stretch",stretch or 0) - setfield(n,"shrink",shrink or 0) - setfield(n,"stretch_order",stretch_order or 0) - setfield(n,"shrink_order",shrink_order or 0) - end - nuts.reset_glue = reset_glue -end - -nuts.resetglue = reset_glue - --- todo: nodes.reset_glue - -- at some point we could have a dual set (the overhead of tonut is not much larger than -- metatable associations at the lua/c end esp if we also take assignments into account diff --git a/tex/context/base/mkiv/pack-mrl.mkiv b/tex/context/base/mkiv/pack-mrl.mkiv index 39e1f4086..649b29fa6 100644 --- a/tex/context/base/mkiv/pack-mrl.mkiv +++ b/tex/context/base/mkiv/pack-mrl.mkiv @@ -346,26 +346,35 @@ \def\pack_thinrules[#1]% {\bgroup \setupcurrentthinrules[#1]% - \assignvalue{\directthinrulesparameter\c!interlinespace}\m_pack_thinrules_interlinespace{1.0}{1.5}{2.0}% - \spacing\m_pack_thinrules_interlinespace - \edef\p_after {\directthinrulesparameter\c!after}% - \edef\p_inbetween{\directthinrulesparameter\c!inbetween}% - \directthinrulesparameter\c!before \scratchcounter\directthinrulesparameter\c!n\relax - \dorecurse\scratchcounter - {\ifnum\recurselevel=\scratchcounter \directvspacing\v!samepage \else % \penalty500 - \ifnum\recurselevel=\plustwo \directvspacing\v!samepage \fi\fi % \penalty500 - \thinrule - \ifnum\recurselevel<\scratchcounter\relax - % test needed, else messed up whitespace - \ifx\p_inbetween\empty - \softbreak % \ifhmode \hskip \parfillskip \break \fi - \else - \endgraf - \nowhitespace - \p_inbetween - \fi - \fi}% + \ifcase\scratchcounter + % nothing, not even before/after + \let\p_after\relax + \else + \assignvalue{\directthinrulesparameter\c!interlinespace}\m_pack_thinrules_interlinespace{1.0}{1.5}{2.0}% + \spacing\m_pack_thinrules_interlinespace + \edef\p_after {\directthinrulesparameter\c!after}% + \edef\p_inbetween{\directthinrulesparameter\c!inbetween}% + \directthinrulesparameter\c!before + \ifcase\scratchcounter\or + \thinrule + \else + \dorecurse\scratchcounter + {\ifnum\recurselevel=\scratchcounter \directvspacing\v!samepage \else % \penalty500 + \ifnum\recurselevel=\plustwo \directvspacing\v!samepage \fi\fi % \penalty500 + \thinrule + \ifnum\recurselevel<\scratchcounter\relax + % test needed, else messed up whitespace + \ifx\p_inbetween\empty + \softbreak % \ifhmode \hskip \parfillskip \break \fi + \else + \endgraf + \nowhitespace + \p_inbetween + \fi + \fi}% + \fi + \fi \ifx\p_after\empty \carryoverpar\egroup \else diff --git a/tex/context/base/mkiv/spac-prf.lua b/tex/context/base/mkiv/spac-prf.lua index 3bfd89f2e..39d90794c 100644 --- a/tex/context/base/mkiv/spac-prf.lua +++ b/tex/context/base/mkiv/spac-prf.lua @@ -71,7 +71,7 @@ local new_kern = nuts.pool.kern local hpack_nodes = nuts.hpack local link_nodes = nuts.link local find_node_tail = nuts.tail -local reset_glue = nuts.reset_glue +local setglue = nuts.setglue local properties = nodes.properties.data @@ -720,7 +720,7 @@ local function profilelist(line,mvl) if action then local ok = action(top,bot,t_profile,b_profile,specification) if ok and lastglue and distance ~= 0 then - resetglue(lastglue) + setglue(lastglue) end end t_profile.done = true @@ -826,7 +826,7 @@ function profiling.profilebox(specification) if action then local ok = action(top,bot,t_profile,b_profile,specification) if ok and lastglue and distance ~= 0 then - reset_glue(lastglue) + setglue(lastglue) end end t_profile.done = true diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex 0af031181..0885f937d 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 11167c0ca..710b5e838 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/typo-krn.lua b/tex/context/base/mkiv/typo-krn.lua index bb9061c56..7607fc5f5 100644 --- a/tex/context/base/mkiv/typo-krn.lua +++ b/tex/context/base/mkiv/typo-krn.lua @@ -50,7 +50,7 @@ local setsubtype = nuts.setsubtype local texsetattribute = tex.setattribute local unsetvalue = attributes.unsetvalue -local resetglue = nuts.resetglue +local setglue = nuts.setglue -- todo local new_kern = nodepool.kern local new_glue = nodepool.glue @@ -554,13 +554,13 @@ function kerns.handler(head) local width = w + gluefactor * w * krn local stretch = getfield(start,"stretch") * width / w local shrink = getfield(start,"shrink") * width / w - setfield(start,"width",width) if fillup then stretch = 2 * stretch shrink = 2 * shrink setfield(start,"stretch_order",1) -- shrink_order ? end + setfield(start,"width",width) setfield(start,"stretch",stretch) setfield(start,"shrink", shrink) -- diff --git a/tex/context/base/mkiv/typo-tal.lua b/tex/context/base/mkiv/typo-tal.lua index f76a69a26..a67cd0a4b 100644 --- a/tex/context/base/mkiv/typo-tal.lua +++ b/tex/context/base/mkiv/typo-tal.lua @@ -54,7 +54,8 @@ local insert_node_after = nuts.insert_after local traverse_list_by_id = nuts.traverse_id local dimensions_of_list = nuts.dimensions local first_glyph = nuts.first_glyph -local reset_glue = nuts.reset_glue + +local setglue = nuts.setglue local nodepool = nuts.pool local new_kern = nodepool.kern @@ -260,7 +261,7 @@ function characteralign.handler(originalhead,where) local prev = getprev(current) if next and prev and getid(next) == glyph_code and getid(prev) == glyph_code then -- too much checking local width = fontcharacters[getfont(b_start)][separator or period].width - reset_glue(current,width) + setglue(current,width) setattr(current,a_character,punctuationspace) if a_start then a_stop = current diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index c1d06ea0e..f354a246f 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 03/30/16 11:59:12 +-- merge date : 03/31/16 09:08:01 do -- begin closure to overcome local limits and interference @@ -20938,13 +20938,21 @@ local function spaceinitializer(tfmdata,value) local kerns=coverage[32] if kerns then for k,v in next,kerns do - right[k]=v + if type(v)=="table" then + right[k]=v[3] + else + right[k]=v + end end end for k,v in next,coverage do local kern=v[32] if kern then - left[k]=kern + if type(v)=="table" then + left[k]=kern[3] + else + left[k]=kern + end end end end |