diff options
Diffstat (limited to 'tex')
| -rw-r--r-- | tex/context/base/back-exp.lua | 3 | ||||
| -rw-r--r-- | tex/context/base/cont-new.mkiv | 2 | ||||
| -rw-r--r-- | tex/context/base/context-version.pdf | bin | 4202 -> 4200 bytes | |||
| -rw-r--r-- | tex/context/base/context.mkiv | 2 | ||||
| -rw-r--r-- | tex/context/base/core-con.lua | 2 | ||||
| -rw-r--r-- | tex/context/base/font-inj.lua | 48 | ||||
| -rw-r--r-- | tex/context/base/font-ots.lua | 13 | ||||
| -rw-r--r-- | tex/context/base/font-oup.lua | 2 | ||||
| -rw-r--r-- | tex/context/base/lxml-aux.lua | 1 | ||||
| -rw-r--r-- | tex/context/base/lxml-lpt.lua | 31 | ||||
| -rw-r--r-- | tex/context/base/m-newotf.mkiv | 4 | ||||
| -rw-r--r-- | tex/context/base/m-scite.mkiv | 4 | ||||
| -rw-r--r-- | tex/context/base/status-files.pdf | bin | 24483 -> 24450 bytes | |||
| -rw-r--r-- | tex/context/base/status-lua.pdf | bin | 255196 -> 255170 bytes | |||
| -rw-r--r-- | tex/context/base/strc-lst.lua | 21 | ||||
| -rw-r--r-- | tex/context/base/task-ini.lua | 2 | ||||
| -rw-r--r-- | tex/context/base/typo-bld.lua | 7 | ||||
| -rw-r--r-- | tex/context/base/util-sci.lua | 8 | ||||
| -rw-r--r-- | tex/generic/context/luatex/luatex-fonts-merged.lua | 2 | 
19 files changed, 119 insertions, 33 deletions
diff --git a/tex/context/base/back-exp.lua b/tex/context/base/back-exp.lua index 23940d2ee..da4c5d7e0 100644 --- a/tex/context/base/back-exp.lua +++ b/tex/context/base/back-exp.lua @@ -312,7 +312,8 @@ function wrapups.hashlistdata()          local tag = ci.references.tag          if tag then              local m = ci.metadata -            listdata[m.kind .. ">" .. tag] = ci +            local t = m.kind .. ">" .. tag -- todo: use internal (see strc-lst.lua where it's set) +            listdata[t] = ci          end      end  end diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index e415389bf..822f9f09b 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{2015.08.26 09:07} +\newcontextversion{2015.08.30 17:07}  %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 328813c62..4fed34b6b 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 dd2132720..e1c93c484 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -39,7 +39,7 @@  %D up and the dependencies are more consistent.  \edef\contextformat {\jobname} -\edef\contextversion{2015.08.26 09:07} +\edef\contextversion{2015.08.30 17:07}  \edef\contextkind   {beta}  %D For those who want to use this: diff --git a/tex/context/base/core-con.lua b/tex/context/base/core-con.lua index 63dfcae90..8773d9224 100644 --- a/tex/context/base/core-con.lua +++ b/tex/context/base/core-con.lua @@ -1272,7 +1272,7 @@ local function currentdate(str,currentlanguage) -- second argument false : no la              if currentlanguage == false then                  -- ignore              else -                context(converters.ordinal(whatordinal,currentlanguage)) -- no "%s" needed +                context.highordinalstr(converters.ordinal(whatordinal,currentlanguage))              end          end      end diff --git a/tex/context/base/font-inj.lua b/tex/context/base/font-inj.lua index 99172a89f..cdf14b935 100644 --- a/tex/context/base/font-inj.lua +++ b/tex/context/base/font-inj.lua @@ -16,6 +16,9 @@ if not modules then modules = { } end modules ['font-inj'] = {  -- cleaner to have an identification pass here. Also, I need to keep tracing in mind so  -- being too clever here is dangerous. +-- The subtype test is not needed as there will be no (new) properties set, given that we +-- reset the properties. +  if not nodes.properties then return end  local next, rawget = next, rawget @@ -211,9 +214,12 @@ function injections.setpair(current,factor,rlmode,r2lflag,spec,injection) -- r2l              if rlmode and rlmode < 0 then                  leftkern, rightkern = rightkern, leftkern              end +            if not injection then +                injection = "injections" +            end              local p = rawget(properties,current)              if p then -                local i = rawget(p,"injections") +                local i = rawget(p,injection)                  if i then                      if leftkern ~= 0 then                          i.leftkern  = (i.leftkern  or 0) + leftkern @@ -225,19 +231,19 @@ function injections.setpair(current,factor,rlmode,r2lflag,spec,injection) -- r2l                          i.yoffset = (i.yoffset or 0) + yoffset                      end                  elseif leftkern ~= 0 or rightkern ~= 0 then -                    p.injections = { +                    p[injection] = {                          leftkern  = leftkern,                          rightkern = rightkern,                          yoffset   = yoffset,                      }                  else -                    p.injections = { +                    p[injection] = {                          yoffset = yoffset,                      }                  end              elseif leftkern ~= 0 or rightkern ~= 0 then                  properties[current] = { -                    injections = { +                    [injection] = {                          leftkern  = leftkern,                          rightkern = rightkern,                          yoffset   = yoffset, @@ -245,7 +251,7 @@ function injections.setpair(current,factor,rlmode,r2lflag,spec,injection) -- r2l                  }              else                  properties[current] = { -                    injections = { +                    [injection] = {                          yoffset = yoffset,                      },                  } @@ -545,9 +551,9 @@ local function inject_marks(marks,marki,nofmarks)                           -- ox = px - getfield(p,"width") + pn.markx - pp.leftkern                              local leftkern = pp.leftkern                              if leftkern then -                                ox = px - pn.markx -                            else                                  ox = px - pn.markx - leftkern +                            else +                                ox = px - pn.markx                              end                          end                      else @@ -674,7 +680,15 @@ local function inject_cursives(glyphs,glyphi,nofglyphs)      end  end -local function inject_kerns(head,glist,ilist,length) +-- G  +D-pre        G +--     D-post+ +--    +D-replace+ +-- +-- G  +D-pre       +D-pre +--     D-post      +D-post +--    +D-replace   +D-replace + +local function inject_kerns(head,glist,ilist,length) -- not complete ! compare with inject_kerns_only (but unlikely disc here)      for i=1,length do          local n  = glist[i]          local pn = rawget(properties,n) @@ -682,8 +696,9 @@ local function inject_kerns(head,glist,ilist,length)  			local dp = nil  			local dr = nil              local ni = ilist[i] +            local p  = nil  			if ni == "injections" then -				local p = getprev(n) +				p = getprev(n)  				if p then  					local id = getid(p)  					if id == disc_code then @@ -699,6 +714,7 @@ local function inject_kerns(head,glist,ilist,length)  					if leftkern and leftkern ~= 0 then  						local t = find_tail(dp)  						insert_node_after(dp,t,newkern(leftkern)) +setfield(p,"post",dp) -- currently we need to force a tail refresh  					end  				end  			end @@ -709,6 +725,7 @@ local function inject_kerns(head,glist,ilist,length)  					if leftkern and leftkern ~= 0 then  						local t = find_tail(dr)  						insert_node_after(dr,t,newkern(leftkern)) +setfield(p,"replace",dr) -- currently we need to force a tail refresh  					end  				end  			else @@ -757,6 +774,14 @@ local function inject_everything(head,where)      return tonode(head), true  end +-- G  +D-pre        G +--     D-post+ +--    +D-replace+ +-- +-- G  +D-pre       +D-pre +--     D-post      +D-post +--    +D-replace   +D-replace +  local function inject_kerns_only(head,where)      head = tonut(head)      if trace_injections then @@ -779,6 +804,7 @@ local function inject_kerns_only(head,where)                                  if leftkern and leftkern ~= 0 then                                      local t = find_tail(d)                                      insert_node_after(d,t,newkern(leftkern)) +setfield(p,"post",d) -- currently we need to force a tail refresh                                  end                              end                          end @@ -790,6 +816,7 @@ local function inject_kerns_only(head,where)                                  if leftkern and leftkern ~= 0 then                                      local t = find_tail(d)                                      insert_node_after(d,t,newkern(leftkern)) +setfield(p,"replace",d) -- currently we need to force a tail refresh                                  end                              end                          else @@ -839,6 +866,7 @@ local function inject_kerns_only(head,where)                      setfield(n,"pre",h)                  end              end +            -- weird              local d = getfield(n,"post")              if d then                  local h = d @@ -923,6 +951,7 @@ local function inject_pairs_only(head,where)                                  if leftkern and leftkern ~= 0 then                                      local t = find_tail(d)                                      insert_node_after(d,t,newkern(leftkern)) +setfield(p,"post",d) -- currently we need to force a tail refresh                                  end                               -- local rightkern = i.rightkern                               -- if rightkern and rightkern ~= 0 then @@ -939,6 +968,7 @@ local function inject_pairs_only(head,where)                                  if leftkern and leftkern ~= 0 then                                      local t = find_tail(d)                                      insert_node_after(d,t,newkern(leftkern)) +setfield(p,"replace",d) -- currently we need to force a tail refresh                                  end                               -- local rightkern = i.rightkern                               -- if rightkern and rightkern ~= 0 then diff --git a/tex/context/base/font-ots.lua b/tex/context/base/font-ots.lua index c7497c16f..74d7ac60b 100644 --- a/tex/context/base/font-ots.lua +++ b/tex/context/base/font-ots.lua @@ -6,6 +6,11 @@ if not modules then modules = { } end modules ['font-ots'] = { -- sequences      license   = "see context related readme files",  } +-- assumptions: +-- +-- cursives don't cross discretionaries +-- marks precede bases +  -- This is a version of font-otn.lua adapted to the new font loader code. It  -- is a context version which can contain experimental code, but when we  -- have serious patches we will backport to the font-otn files. There will @@ -885,16 +890,16 @@ function handlers.gpos_pair(head,start,dataset,sequence,kerns,rlmode,step,i,inje              elseif step.format == "pair" then                  local a, b = krn[1], krn[2]                  if a and #a > 0 then -                    local startchar = getchar(start)                      local x, y, w, h = setpair(start,factor,rlmode,sequence.flags[4],a,injection) -- characters[startchar])                      if trace_kerns then +                        local startchar = getchar(start)                          logprocess("%s: shifting first of pair %s and %s by (%p,%p) and correction (%p,%p)",pref(dataset,sequence),gref(startchar),gref(nextchar),x,y,w,h)                      end                  end                  if b and #b > 0 then -                    local startchar = getchar(start)                      local x, y, w, h = setpair(snext,factor,rlmode,sequence.flags[4],b,injection) -- characters[nextchar])                      if trace_kerns then +                        local startchar = getchar(start)                          logprocess("%s: shifting second of pair %s and %s by (%p,%p) and correction (%p,%p)",pref(dataset,sequence),gref(startchar),gref(nextchar),x,y,w,h)                      end                  end @@ -1426,7 +1431,7 @@ function chainprocs.gsub_ligature(head,start,stop,dataset,sequence,currentlookup                  end              else                  local schar = getchar(current) -                    if skipmark and marks[schar] then -- marks +                if skipmark and marks[schar] then -- marks                      -- if current == stop then -- maybe add this                      --     break                      -- else @@ -2887,7 +2892,7 @@ local function featuresprocessor(head,font,attr)                      end                  end -               local function k_run(sub,injection,last) +                local function k_run(sub,injection,last)                      local a = getattr(sub,0)                      if a then                          a = (a == attr) and (not attribute or getprop(sub,a_state) == attribute) diff --git a/tex/context/base/font-oup.lua b/tex/context/base/font-oup.lua index f0e182be1..534bfe42e 100644 --- a/tex/context/base/font-oup.lua +++ b/tex/context/base/font-oup.lua @@ -1913,6 +1913,8 @@ function readers.expand(data)                                          local cu = coverage[unic]                                          if not cu then                                              coverage[unic] = rulehash -- can now be done cleaner i think +-- else +--     sequence[start] = nil                                          end                                      end                                  end diff --git a/tex/context/base/lxml-aux.lua b/tex/context/base/lxml-aux.lua index 8eedade39..01c2a8bfc 100644 --- a/tex/context/base/lxml-aux.lua +++ b/tex/context/base/lxml-aux.lua @@ -998,4 +998,3 @@ function xml.totable(x,strip,flat)          return convert(x,strip,flat)      end  end - diff --git a/tex/context/base/lxml-lpt.lua b/tex/context/base/lxml-lpt.lua index add29241e..6df89be20 100644 --- a/tex/context/base/lxml-lpt.lua +++ b/tex/context/base/lxml-lpt.lua @@ -1446,3 +1446,34 @@ function xml.finalizers.paragraphs(c)      end      return c  end + +-- local lpegmatch = lpeg.match +-- local w = lpeg.patterns.whitespace +-- local p = w^0 * lpeg.Cf(lpeg.Ct("") * lpeg.Cg(lpeg.C((1-w)^1) * lpeg.Cc(true) * w^0)^1,rawset) + +-- function xml.functions.classes(e) -- cache +--     local class = e.at.class +--     if class then +--         return lpegmatch(p,class) +--     else +--         return { } +--     end +-- end + +-- local gmatch = string.gmatch + +-- function xml.functions.hasclass(e,c,class) +--     class = class and e.at[class] or e.at.class +--     if class and class ~= "" then +--         if class == c then +--             return true +--         else +--             for s in gmatch(class,"%S+") do +--                 if s == c then +--                     return true +--                 end +--             end +--         end +--     end +--     return false +-- end diff --git a/tex/context/base/m-newotf.mkiv b/tex/context/base/m-newotf.mkiv index 5f5e617ff..0bdd6ec8e 100644 --- a/tex/context/base/m-newotf.mkiv +++ b/tex/context/base/m-newotf.mkiv @@ -19,8 +19,6 @@  \startluacode      local files = { -        "font-inj-new", -- for me, testing -        "node-fnt-new", -- for me, testing          "font-otr",          "font-cff",          "font-ttf", @@ -28,7 +26,7 @@          "font-oup",          "font-otl",          "font-ots", -        "font-ots-new", -- for me, testing +"font-ots-xxx", -- for me, testing          "font-oto",          "font-otd",          "font-otc", diff --git a/tex/context/base/m-scite.mkiv b/tex/context/base/m-scite.mkiv index 7a8e8b06e..38c2f249e 100644 --- a/tex/context/base/m-scite.mkiv +++ b/tex/context/base/m-scite.mkiv @@ -32,6 +32,8 @@  % TODO: as these files are in tds we can locate them and set the lexer root  % to that one. Currently we're on: we're on context/documents. +% TODO: tab +  % This is an experiment: eventually we need to hook it into the verbatim code  % and deal with widow lines and so. @@ -71,6 +73,7 @@ local f_mapping   = [[  \let\string\slxH\string\letterhash  \let\string\slxB\string\letterbackslash  \let\string\slxP\string\letterpercent +\let\string\slxT\string\lettertilde  \let\string\slxS\string\fixedspace  %]] @@ -84,6 +87,7 @@ local replacer = lpeg.replacer {      ["#"]  = "\\slxH ",      ["\\"] = "\\slxB ",      ["%"]  = "\\slxP ", +    ["~"]  = "\\slxT ",      [" "]  = "\\slxS ",  } diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex 05e61ce47..149bef03a 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 18f1af54b..9c3fbb81c 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/strc-lst.lua b/tex/context/base/strc-lst.lua index 050655e64..e36ed9eaa 100644 --- a/tex/context/base/strc-lst.lua +++ b/tex/context/base/strc-lst.lua @@ -227,6 +227,7 @@ function lists.addto(t) -- maybe more more here (saves parsing at the tex end)      end      local group = numberdata and numberdata.group      local name  = metadata.name +    local kind  = metadata.kind      if not group then          -- forget about it      elseif group == "" then @@ -246,6 +247,12 @@ function lists.addto(t) -- maybe more more here (saves parsing at the tex end)          r.section = structures.sections.currentid()      end      local i = r and r.internal or 0 -- brrr +if r and kind and name then +    local tag = tags.getid(kind,name) +    if tag and tag ~= "?" then +        r.tag = tag -- todo: use internal ... is unique enough +    end +end      local p = pushed[i]      if not p then          p = #cached + 1 @@ -314,13 +321,13 @@ function lists.enhance(n)          if trace_lists then              report_lists("enhancing %a, name %a",n,name)          end -        if references then -            -- is this used ? -            local tag = tags.getid(kind,name) -            if tag and tag ~= "?" then -                references.tag = tag -            end -        end +--         if references then +--             -- is this used ? +--             local tag = tags.getid(kind,name) +--             if tag and tag ~= "?" then +--                 references.tag = tag +--             end +--         end          -- specific enhancer (kind of obsolete)          local enhancer = kind and lists.enhancers[kind]          if enhancer then diff --git a/tex/context/base/task-ini.lua b/tex/context/base/task-ini.lua index 192f116e0..986044c6e 100644 --- a/tex/context/base/task-ini.lua +++ b/tex/context/base/task-ini.lua @@ -111,8 +111,6 @@ appendaction("math",         "builders",    "builders.kernel.mlist_to_hlist")  ------------("math",         "builders",    "noads.handlers.italics",  nil, "nohead")            -- disabled  appendaction("math",         "builders",    "typesetters.directions.processmath")                -- disabled (has to happen pretty late) -appendaction("finalizers",   "normalizers", "typesetters.paragraphs.normalize")                  -- enabled -  appendaction("finalizers",   "lists",       "typesetters.margins.localhandler")                  -- disabled  appendaction("finalizers",   "lists",       "builders.paragraphs.keeptogether")  ------------("finalizers",   "lists",       "nodes.handlers.graphicvadjust")                     -- todo diff --git a/tex/context/base/typo-bld.lua b/tex/context/base/typo-bld.lua index 964d0cd7e..75b294188 100644 --- a/tex/context/base/typo-bld.lua +++ b/tex/context/base/typo-bld.lua @@ -228,14 +228,17 @@ local build_par_codes = {      adjust     = true,  } +local normalize = typesetters.paragraphs.normalize +  function builders.buildpage_filter(groupcode)      -- the next check saves 1% runtime on 1000 tufte pages +    local head = texlists.contrib_head +    local done = false      if build_par_codes[groupcode] then          -- also called in vbox .. we really need another callback for these four -        return nil, false -- can be another action set .. like anchoring for box +        normalize(head) -- a bit weird place      end      -- -    local head, done = texlists.contrib_head, false      if head then          -- called quite often ... maybe time to remove timing          starttiming(builders) diff --git a/tex/context/base/util-sci.lua b/tex/context/base/util-sci.lua index c3e24cd9d..43d873b63 100644 --- a/tex/context/base/util-sci.lua +++ b/tex/context/base/util-sci.lua @@ -1,3 +1,11 @@ +if not modules then modules = { } end modules ['util-sci'] = { +    version   = 1.001, +    comment   = "companion to m-scite.mkiv", +    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL", +    copyright = "PRAGMA ADE / ConTeXt Development Team", +    license   = "see context related readme files" +} +  local gsub, sub, find = string.gsub, string.sub, string.find  local concat = table.concat  local formatters = string.formatters diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index ac2c42525..36548e688 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/26/15 09:07:04 +-- merge date  : 08/30/15 17:07:45  do -- begin closure to overcome local limits and interference  | 
