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 |