From de0507377f78f5c05fcece1ec7dc53bacdc0247c Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 19 Mar 2013 16:34:00 +0100 Subject: beta 2013.03.19 16:34 --- tex/context/base/cont-new.mkii | 2 +- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4137 -> 4132 bytes tex/context/base/context-version.png | Bin 40464 -> 40500 bytes tex/context/base/context.mkii | 2 +- tex/context/base/context.mkiv | 2 +- tex/context/base/font-ota.lua | 12 +++++++----- tex/context/base/font-otn.lua | 9 ++++----- tex/context/base/node-aux.lua | 9 ++++++--- tex/context/base/node-fnt.lua | 1 - tex/context/base/node-ini.lua | 19 +++++++++---------- tex/context/base/node-rul.lua | 12 ++++++------ tex/context/base/spac-chr.lua | 8 ++++---- tex/context/base/status-files.pdf | Bin 24761 -> 24788 bytes tex/context/base/status-lua.pdf | Bin 211332 -> 211443 bytes tex/context/base/typo-cap.lua | 6 ++++-- tex/context/base/typo-dir.lua | 2 ++ tex/context/base/typo-itc.lua | 3 +++ tex/context/base/typo-krn.lua | 3 +++ tex/context/base/typo-spa.lua | 3 +++ tex/generic/context/luatex/luatex-fonts-merged.lua | 18 ++++++++++++------ 21 files changed, 67 insertions(+), 46 deletions(-) diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index ed69cb76c..b2cd286ae 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{2013.03.19 14:27} +\newcontextversion{2013.03.19 16:34} %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 973c1ab68..55950cb0f 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2013.03.19 14:27} +\newcontextversion{2013.03.19 16:34} %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 index af99b8369..5c3d53e2e 100644 Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png index 5cfb728c5..90a866ce2 100644 Binary files a/tex/context/base/context-version.png and b/tex/context/base/context-version.png differ diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index 87bb0f8cb..cbd731f50 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{2013.03.19 14:27} +\edef\contextversion{2013.03.19 16:34} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index fd01490f5..96fa9f535 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2013.03.19 14:27} +\edef\contextversion{2013.03.19 16:34} %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 b80241a06..5a50e704c 100644 --- a/tex/context/base/font-ota.lua +++ b/tex/context/base/font-ota.lua @@ -36,7 +36,7 @@ local math_code = nodecodes.math local traverse_id = node.traverse_id local traverse_node_list = node.traverse -local endofmath = nodes.endofmath +local end_of_math = node.end_of_math local fontdata = fonts.hashes.identifiers local categories = characters and characters.categories or { } -- sorry, only in context @@ -127,8 +127,9 @@ function analyzers.setstate(head,font) last[a_state] = s_fina end first, last, n = nil, nil, 0 --- elseif id == math_code then --- current = endofmath(current) + if id == math_code then + current = end_of_math(current) + end end current = current.next end @@ -370,8 +371,9 @@ function methods.arab(head,font,attr) -- maybe make a special version with no tr end else first, last = finish(first,last) --- elseif id == math_code then --- current = endofmath(current).next + if id == math_code then + current = end_of_math(current) + end end current = current.next end diff --git a/tex/context/base/font-otn.lua b/tex/context/base/font-otn.lua index 6eed30c94..739caa997 100644 --- a/tex/context/base/font-otn.lua +++ b/tex/context/base/font-otn.lua @@ -175,8 +175,7 @@ local delete_node = nodes.delete local copy_node = node.copy local find_node_tail = node.tail or node.slide local flush_node_list = node.flush_list - -local endofmath = nodes.endofmath +local end_of_math = node.end_of_math local setmetatableindex = table.setmetatableindex @@ -2203,7 +2202,7 @@ for s=1,#datasets do start = start.next end elseif id == math_code then - start = endofmath(start).next + start = end_of_math(start).next else start = start.next end @@ -2244,7 +2243,7 @@ for s=1,#datasets do end start = start.next elseif id == math_code then - start = endofmath(start).next + start = end_of_math(start).next else start = start.next end @@ -2324,7 +2323,7 @@ for s=1,#datasets do end start = start.next elseif id == math_code then - start = endofmath(start).next + start = end_of_math(start).next else start = start.next end diff --git a/tex/context/base/node-aux.lua b/tex/context/base/node-aux.lua index 2e431d364..e3fc7ad6f 100644 --- a/tex/context/base/node-aux.lua +++ b/tex/context/base/node-aux.lua @@ -204,12 +204,15 @@ function nodes.firstcharinbox(n) return 0 end -function nodes.endofmath(n) - for n in traverse_id(math_code,n.next) do - return n +if not node.end_of_math then + function node.end_of_math(n) + for n in traverse_id(math_code,n.next) do + return n + end end end +nodes.endofmath = node.end_of_math -- local function firstline(n) -- while n do diff --git a/tex/context/base/node-fnt.lua b/tex/context/base/node-fnt.lua index 946b07ee5..54359117e 100644 --- a/tex/context/base/node-fnt.lua +++ b/tex/context/base/node-fnt.lua @@ -95,7 +95,6 @@ function handlers.characters(head) n = n.next end end - -- todo: time a while and skip over or make a special traverse_id that skips over math for n in traverse_id(glyph_code,head) do -- if n.subtype<256 then -- all are 1 local font = n.font diff --git a/tex/context/base/node-ini.lua b/tex/context/base/node-ini.lua index be1eb77bf..5a3986c3a 100644 --- a/tex/context/base/node-ini.lua +++ b/tex/context/base/node-ini.lua @@ -281,19 +281,18 @@ local hlist_code = nodecodes.hlist local vlist_code = nodecodes.vlist local glue_code = nodecodes.glue ---~ if t.id == glue_code then ---~ local s = t.spec ---~ print(t) ---~ print(s,s and s.writable) ---~ if s and s.writable then ---~ free_node(s) ---~ end ---~ t.spec = nil ---~ end +-- if t.id == glue_code then +-- local s = t.spec +-- print(t) +-- print(s,s and s.writable) +-- if s and s.writable then +-- free_node(s) +-- end +-- t.spec = nil +-- end local function remove(head, current, free_too) local t = current ---~ print(t) head, current = remove_node(head,current) if t then if free_too then diff --git a/tex/context/base/node-rul.lua b/tex/context/base/node-rul.lua index bac042353..09300964e 100644 --- a/tex/context/base/node-rul.lua +++ b/tex/context/base/node-rul.lua @@ -43,12 +43,12 @@ function nodes.striprange(first,last) -- todo: dir if id == glyph_code or id == disc_code then -- or id == rule_code break else -local prev = last.prev -- luatex < 0.70 has italic correction kern not prev'd -if prev then - last = last.prev -else - break -end + local prev = last.prev -- luatex < 0.70 has italic correction kern not prev'd + if prev then + last = last.prev + else + break + end end end if not last then diff --git a/tex/context/base/spac-chr.lua b/tex/context/base/spac-chr.lua index 2502b1992..24364978a 100644 --- a/tex/context/base/spac-chr.lua +++ b/tex/context/base/spac-chr.lua @@ -74,7 +74,7 @@ local function inject_char_space(unicode,head,current,parent) local font = current.font local char = fontcharacters[font][parent] local glue = new_glue(char and char.width or fontparameters[font].space) --- glue.attr = copy_node_list(current.attr) + -- glue.attr = copy_node_list(current.attr) glue.attr = current.attr current.attr = nil glue[a_character] = unicode @@ -86,10 +86,10 @@ local function inject_nobreak_space(unicode,head,current,space,spacestretch,spac local attr = current.attr local glue = new_glue(space,spacestretch,spaceshrink) local penalty = new_penalty(10000) --- glue.attr = copy_node_list(attr) + -- glue.attr = copy_node_list(attr) glue.attr = attr -current.attr = nil --- penalty.attr = attr + current.attr = nil + -- penalty.attr = attr glue[a_character] = unicode head, current = insert_node_after(head,current,penalty) head, current = insert_node_after(head,current,glue) diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index 2ba67a882..8b9695149 100644 Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf index c94f04130..b6bdfe561 100644 Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ diff --git a/tex/context/base/typo-cap.lua b/tex/context/base/typo-cap.lua index 0285b262e..8f49580a4 100644 --- a/tex/context/base/typo-cap.lua +++ b/tex/context/base/typo-cap.lua @@ -18,6 +18,7 @@ local nodes, node = nodes, node local traverse_id = node.traverse_id local copy_node = node.copy +local end_of_math = node.end_of_math local texattribute = tex.attribute local unsetvalue = attributes.unsetvalue @@ -83,7 +84,6 @@ local function helper(start, codes, special, attribute, once) if next then next.prev = prev end ---~ node.free(start) return prev, true elseif lastfont and start.prev.id ~= glyph_code then fnt = lastfont @@ -279,8 +279,10 @@ local function process(namespace,attribute,head) -- not real fast but also not u report_casing("unknown case trigger %a",attr) end end + elseif id == math_code then + start = end_of_math(start) end - if start then + if start then -- why test start = start.next end end diff --git a/tex/context/base/typo-dir.lua b/tex/context/base/typo-dir.lua index 7f8975082..7e5f8c2d3 100644 --- a/tex/context/base/typo-dir.lua +++ b/tex/context/base/typo-dir.lua @@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['typo-dir'] = { license = "see context related readme files" } +-- todo: also use end_of_math here? + local next, type = next, type local format, insert, sub, find, match = string.format, table.insert, string.sub, string.find, string.match local utfchar = utf.char diff --git a/tex/context/base/typo-itc.lua b/tex/context/base/typo-itc.lua index ef44a7f28..73d841aa3 100644 --- a/tex/context/base/typo-itc.lua +++ b/tex/context/base/typo-itc.lua @@ -25,6 +25,7 @@ local tasks = nodes.tasks local insert_node_after = node.insert_after local delete_node = nodes.delete +local end_of_math = node.end_of_math local texattribute = tex.attribute local a_italics = attributes.private("italics") @@ -159,6 +160,8 @@ local function process(namespace,attribute,head) italic = 0 done = true end + elseif id == math_code then + current = end_of_math(current) elseif italic ~= 0 then if trace_italics then report_italics("inserting %p between italic %C and whatever",italic,prevchar) diff --git a/tex/context/base/typo-krn.lua b/tex/context/base/typo-krn.lua index 6dd3e6bd7..cd50c205e 100644 --- a/tex/context/base/typo-krn.lua +++ b/tex/context/base/typo-krn.lua @@ -18,6 +18,7 @@ local copy_node = node.copy local copy_nodelist = node.copy_list local insert_node_before = node.insert_before local insert_node_after = node.insert_after +local end_of_math = node.end_of_math local texattribute = tex.attribute local unsetvalue = attributes.unsetvalue @@ -280,6 +281,8 @@ local function do_process(namespace,attribute,head,force) -- todo: glue so that insert_node_after(head,start,kern_injector(fillup,quaddata[lastfont]*krn)) done = true end + elseif id == math_code then + start = end_of_math(start) end end end diff --git a/tex/context/base/typo-spa.lua b/tex/context/base/typo-spa.lua index 1464ea2af..4810a7163 100644 --- a/tex/context/base/typo-spa.lua +++ b/tex/context/base/typo-spa.lua @@ -18,6 +18,7 @@ local nodes, fonts, node = nodes, fonts, node local insert_node_before = node.insert_before local insert_node_after = node.insert_after local remove_node = nodes.remove +local end_of_math = node.end_of_math local fonthashes = fonts.hashes local fontdata = fonthashes.identifiers @@ -156,6 +157,8 @@ local function process(namespace,attribute,head) end end end + elseif id == math_code then + start = end_of_math(start) end start = start.next end diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 8d0a51e5f..d7d76dd7c 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 : 03/19/13 14:27:10 +-- merge date : 03/19/13 16:34:04 do -- begin closure to overcome local limits and interference @@ -7948,7 +7948,7 @@ local glyph_code=nodecodes.glyph local math_code=nodecodes.math local traverse_id=node.traverse_id local traverse_node_list=node.traverse -local endofmath=nodes.endofmath +local end_of_math=node.end_of_math local fontdata=fonts.hashes.identifiers local categories=characters and characters.categories or {} local otffeatures=fonts.constructors.newfeatures("otf") @@ -8020,6 +8020,9 @@ function analyzers.setstate(head,font) last[a_state]=s_fina end first,last,n=nil,nil,0 + if id==math_code then + current=end_of_math(current) + end end current=current.next end @@ -8224,6 +8227,9 @@ function methods.arab(head,font,attr) end else first,last=finish(first,last) + if id==math_code then + current=end_of_math(current) + end end current=current.next end @@ -8290,7 +8296,7 @@ local delete_node=nodes.delete local copy_node=node.copy local find_node_tail=node.tail or node.slide local flush_node_list=node.flush_list -local endofmath=nodes.endofmath +local end_of_math=node.end_of_math local setmetatableindex=table.setmetatableindex local zwnj=0x200C local zwj=0x200D @@ -10022,7 +10028,7 @@ for s=1,#datasets do start=start.next end elseif id==math_code then - start=endofmath(start).next + start=end_of_math(start).next else start=start.next end @@ -10063,7 +10069,7 @@ for s=1,#datasets do end start=start.next elseif id==math_code then - start=endofmath(start).next + start=end_of_math(start).next else start=start.next end @@ -10142,7 +10148,7 @@ for s=1,#datasets do end start=start.next elseif id==math_code then - start=endofmath(start).next + start=end_of_math(start).next else start=start.next end -- cgit v1.2.3