From a74fc8b35a066ab9f8a523287dc59d2a9edb28e4 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Fri, 1 Oct 2010 23:14:00 +0200 Subject: beta 2010.10.01 23:14 --- scripts/context/lua/mtxrun.lua | 2 +- scripts/context/stubs/mswin/mtxrun.lua | 2 +- scripts/context/stubs/unix/mtxrun | 2 +- tex/context/base/anch-pgr.mkiv | 3 +- tex/context/base/back-pdf.lua | 2 +- tex/context/base/bibl-bib.mkiv | 1 + tex/context/base/bibl-tra.mkiv | 6 +- tex/context/base/font-ext.lua | 2 + tex/context/base/font-fbk.lua | 70 +++++-------------- tex/context/base/m-database.lua | 33 ++++++--- tex/context/base/node-bck.mkiv | 3 +- tex/context/base/node-ini.lua | 16 +++-- tex/context/base/s-fnt-29.tex | 77 +++++++++++++++++++++ tex/context/base/spac-ver.lua | 119 ++++++++++++++++++++++++++++++--- tex/context/base/strc-lst.lua | 2 +- tex/context/base/strc-lst.mkiv | 8 ++- tex/context/base/tabl-tbl.mkiv | 71 ++++++++------------ tex/context/base/type-otf.mkiv | 35 ++++++++++ tex/context/fonts/lucida-math.lfg | 5 ++ 19 files changed, 327 insertions(+), 132 deletions(-) create mode 100644 tex/context/base/s-fnt-29.tex diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index 622643f9c..de44f7f6a 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -13178,7 +13178,7 @@ end function runners.locate_file(filename) -- differs from texmfstart where locate appends .com .exe .bat ... todo if filename and filename ~= "" then - runners.report_location(resolvers.find_given_file(filename)) + runners.report_location(resolvers.findgivenfile(filename)) end end diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index 622643f9c..de44f7f6a 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -13178,7 +13178,7 @@ end function runners.locate_file(filename) -- differs from texmfstart where locate appends .com .exe .bat ... todo if filename and filename ~= "" then - runners.report_location(resolvers.find_given_file(filename)) + runners.report_location(resolvers.findgivenfile(filename)) end end diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index 622643f9c..de44f7f6a 100755 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -13178,7 +13178,7 @@ end function runners.locate_file(filename) -- differs from texmfstart where locate appends .com .exe .bat ... todo if filename and filename ~= "" then - runners.report_location(resolvers.find_given_file(filename)) + runners.report_location(resolvers.findgivenfile(filename)) end end diff --git a/tex/context/base/anch-pgr.mkiv b/tex/context/base/anch-pgr.mkiv index 2b63ade6f..f1a8e8a51 100644 --- a/tex/context/base/anch-pgr.mkiv +++ b/tex/context/base/anch-pgr.mkiv @@ -1493,8 +1493,7 @@ {\unvbox\tabulatebox}% \setbox\tabulatebox\hbox to \wd\tabulatebox {\hss\dotabulatehook{\box\tabulatebox}\hss}% - \ht\tabulatebox\strutht - \dp\tabulatebox\strutdp + \donormalizetabulatesplitline \box\tabulatebox \iftrialtypesetting\else\ifconditional\tablehaspositions\doflushtabulateepos\fi\fi} diff --git a/tex/context/base/back-pdf.lua b/tex/context/base/back-pdf.lua index 436685426..4341b465a 100644 --- a/tex/context/base/back-pdf.lua +++ b/tex/context/base/back-pdf.lua @@ -416,7 +416,7 @@ function registrations.transparency(n,a,t) Type = pdf_extgstate, ca = tonumber(t), CA = tonumber(t), - BM = transparencies[a] or transparencies[0], + BM = transparencies[tonumber(a)] or transparencies[0], AIS = false, } local m = pdfimmediateobject(tostring(d)) diff --git a/tex/context/base/bibl-bib.mkiv b/tex/context/base/bibl-bib.mkiv index 5b40a3739..4bdb7713a 100644 --- a/tex/context/base/bibl-bib.mkiv +++ b/tex/context/base/bibl-bib.mkiv @@ -619,6 +619,7 @@ {\currentbibtexsession} {\currentbibtexcriterium} {\namedlistparameter\currentbibtexsession\c!number}% + {\namedlistparameter\currentbibtexsession\c!extras}% \ctxlua{bibtex.hacks.flush("\bibtexpublicationsparameter\c!sorttype")}% \doendoflist} diff --git a/tex/context/base/bibl-tra.mkiv b/tex/context/base/bibl-tra.mkiv index 3a373346b..56886e28b 100644 --- a/tex/context/base/bibl-tra.mkiv +++ b/tex/context/base/bibl-tra.mkiv @@ -821,7 +821,11 @@ \edef\currentlist{pubs}% \doif{\listparameter\c!criterium}\v!cite{\setuplist[pubs][\c!criterium=\v!here]}% \ctxlua{bibtex.hacks.reset(\number\bibtexoncemode)}% - \placestructurelist{pubs}{\listparameter\c!criterium}{\listparameter\c!number}% + \placestructurelist + {pubs}% + {\listparameter\c!criterium}% + {\listparameter\c!number}% + {\listparameter\c!extras}% \ctxlua{bibtex.hacks.flush("\@@pbsorttype")}% \doendoflist} diff --git a/tex/context/base/font-ext.lua b/tex/context/base/font-ext.lua index 11ec77b93..79d0f0955 100644 --- a/tex/context/base/font-ext.lua +++ b/tex/context/base/font-ext.lua @@ -274,6 +274,7 @@ vectors['pure'] = { [0x003A] = { 0, 1 }, -- colon [0x003B] = { 0, 1 }, -- semicolon [0x002D] = { 0, 1 }, -- hyphen + [0x00AD] = { 0, 1 }, -- also hyphen [0x2013] = { 0, 0.50 }, -- endash [0x2014] = { 0, 0.33 }, -- emdash [0x3001] = { 0, 1 }, -- ideographic comma 、 @@ -299,6 +300,7 @@ vectors['punctuation'] = { [0x003A] = { 0, 0.50 }, -- colon [0x003B] = { 0, 0.50 }, -- semicolon [0x002D] = { 0, 0.70 }, -- hyphen + [0x00AD] = { 0, 0.70 }, -- also hyphen [0x2013] = { 0, 0.30 }, -- endash [0x2014] = { 0, 0.20 }, -- emdash [0x060C] = { 0, 0.70 }, -- arabic comma diff --git a/tex/context/base/font-fbk.lua b/tex/context/base/font-fbk.lua index 2a5b3cc22..d91e1f08b 100644 --- a/tex/context/base/font-fbk.lua +++ b/tex/context/base/font-fbk.lua @@ -7,6 +7,9 @@ if not modules then modules = { } end modules ['font-fbk'] = { } local cos, tan, rad, format = math.cos, math.tan, math.rad, string.format +local byte = utf.byte + +-- maybe use compose instead of combine local trace_combining = false trackers.register("fonts.combining", function(v) trace_combining = v end) @@ -159,12 +162,12 @@ local cache = { } -- we could make these weak function vf.aux.compose_characters(g) -- todo: scaling depends on call location -- this assumes that slot 1 is self, there will be a proper self some day local chars, descs = g.characters, g.descriptions - local X = ("X"):byte() + local X = byte("X") local xchar = chars[X] local xdesc = descs[X] if xchar and xdesc then local scale = g.factor or 1 - local cap_lly = scale*xdesc.boundingbox[4] + local cap_ury = scale*xdesc.boundingbox[4] local ita_cor = cos(rad(90+(g.italicangle or 0))) local fallbacks = characters.fallbacks local vfspecials = backends.tables.vfspecials @@ -223,66 +226,27 @@ function vf.aux.compose_characters(g) -- todo: scaling depends on call location local dd = (c_urx - c_llx)*ita_cor if a_ury < 0 then if trace_combining then - t.commands = { - push, - {"right", dx-dd}, - red, - acc_t, - black, - pop, - chr_t, - } + t.commands = { push, {"right", dx-dd}, red, acc_t, black, pop, chr_t } else - t.commands = { - push, - {"right", dx-dd}, - acc_t, - pop, - chr_t, - } + t.commands = { push, {"right", dx-dd}, acc_t, pop, chr_t } end elseif c_ury > a_lly then - local dy = cap_lly-a_lly +--~ local dy = cap_ury - a_lly +local X = byte("x") +local xdesc = descs[X] +local x_ury = scale*xdesc.boundingbox[4] -- x height +local dy = c_ury - x_ury + if trace_combining then - t.commands = { - push, - {"right", dx+dd}, - {"down", -dy}, - green, - acc_t, - black, - pop, - chr_t, - } + t.commands = { push, {"right", dx+dd}, {"down", -dy}, green, acc_t, black, pop, chr_t } else - t.commands = { - push, - {"right", dx+dd}, - {"down", -dy}, - acc_t, - pop, - chr_t, - } + t.commands = { push, {"right", dx+dd}, {"down", -dy}, acc_t, pop, chr_t } end else if trace_combining then - t.commands = { - push, - {"right", dx+dd}, - blue, - acc_t, - black, - pop, - chr_t, - } + t.commands = { push, {"right", dx+dd}, blue, acc_t, black, pop, chr_t } else - t.commands = { - push, - {"right", dx+dd}, - acc_t, - pop, - chr_t, - } + t.commands = { push, {"right", dx+dd}, acc_t, pop, chr_t } end end done = true diff --git a/tex/context/base/m-database.lua b/tex/context/base/m-database.lua index 8d0d1e1e0..810c8ba39 100644 --- a/tex/context/base/m-database.lua +++ b/tex/context/base/m-database.lua @@ -15,6 +15,7 @@ buffers.database = buffers.database or { } local separators = { -- not interfaced tab = lpegpatterns.tab, + tabs = lpegpatterns.tab^1, comma = lpegpatterns.comma, space = lpegpatterns.space, spaces = lpegpatterns.space^1, @@ -30,6 +31,12 @@ function buffers.database.process(settings) else data = buffers.raw(settings.database) end +local function sprint(c,...) + tex.sprint(tex.ctxcatcodes,[[\tt\bgroup]]) + tex.sprint(tex.vrbcatcodes,...) + tex.sprint(tex.ctxcatcodes,[[\egroup\crlf]]) +end + if data and #data > 0 then local separatorchar, quotechar, commentchar = settings.separator, settings.quotechar, settings.commentchar local before, after = settings.before or "", settings.after or "" @@ -58,30 +65,38 @@ function buffers.database.process(settings) for i=1,#data do local line = data[i] if line ~= "" and (not checker or not lpegmatch(checker,line)) then + local result = { } -- we collect as this is nicer in tracing local list = lpegmatch(splitter,line) - if found then - sprint(ctxcatcodes,first) - else + if not found then local setups = settings.setups or "" if setups == "" then - sprint(ctxcatcodes,"\\begingroup",before,first) + sprint(ctxcatcodes,"\\begingroup") else - sprint(ctxcatcodes,"\\begingroup\\setups[",setups,"]",before,first) + sprint(ctxcatcodes,"\\begingroup\\setups[",setups,"]") end + sprint(ctxcatcodes,before) found = true end + result[#result+1] = first for j=1,#list do + result[#result+1] = left if command == "" then - sprint(ctxcatcodes,left,list[j],right) + result[#result+1] = list[j] else - sprint(ctxcatcodes,left,command,"{",list[j],"}",right) + result[#result+1] = command + result[#result+1] = "{" + result[#result+1] = list[j] + result[#result+1] = "}" end + result[#result+1] = right end - sprint(ctxcatcodes,last) + result[#result+1] = last + sprint(ctxcatcodes,result) end end if found then - sprint(ctxcatcodes,after,"\\endgroup") + sprint(ctxcatcodes,after) + sprint(ctxcatcodes,"\\endgroup") end else -- message diff --git a/tex/context/base/node-bck.mkiv b/tex/context/base/node-bck.mkiv index e7ec49d27..18149ef4d 100644 --- a/tex/context/base/node-bck.mkiv +++ b/tex/context/base/node-bck.mkiv @@ -117,8 +117,7 @@ \setbox\tabulatebox\hbox to \wd\tabulatebox {\iftrialtypesetting\else\ifconditional\tabulatehascolors\repeatsettabulatecolor\fi\fi \hss\dotabulatehook{\box\tabulatebox}\hss}% - \ht\tabulatebox\strutht - \dp\tabulatebox\strutdp + \donormalizetabulatesplitline \box\tabulatebox \iftrialtypesetting\else\ifconditional\tablehaspositions\doflushtabulateepos\fi\fi} diff --git a/tex/context/base/node-ini.lua b/tex/context/base/node-ini.lua index 8dd55b468..e94e0c797 100644 --- a/tex/context/base/node-ini.lua +++ b/tex/context/base/node-ini.lua @@ -213,11 +213,6 @@ local hlist_code = nodecodes.hlist local vlist_code = nodecodes.vlist local glue_code = nodecodes.glue -function nodes.remove(head, current, free_too) - local t = current - head, current = remove_node(head,current) - if t then - if free_too then --~ if t.id == glue_code then --~ local s = t.spec --~ print(t) @@ -227,6 +222,13 @@ function nodes.remove(head, current, free_too) --~ 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 free_node(t) t = nil else @@ -236,8 +238,10 @@ function nodes.remove(head, current, free_too) return head, current, t end +nodes.remove = remove + function nodes.delete(head,current) - return nodes.remove(head,current,true) + return remove(head,current,true) end nodes.before = insert_node_before diff --git a/tex/context/base/s-fnt-29.tex b/tex/context/base/s-fnt-29.tex new file mode 100644 index 000000000..bdff5d087 --- /dev/null +++ b/tex/context/base/s-fnt-29.tex @@ -0,0 +1,77 @@ +%D \module +%D [ file=s-fnt-29, +%D version=2010.09.27, +%D title=\CONTEXT\ Style File, +%D subtitle=Tracing Shapes, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright=PRAGMA-ADE] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\startluacode + + local function char(k) + if type(k) == "table" then + for i=1,#k do + context([[\char%s\relax]],k[i]) + end + elseif k then + context([[\char%s\relax]],k) + end + end + + -- context.char = char -- to be considered + + function fonts.tracers.shapes() -- todo: ranges + local NC, NR = context.NC, context.NR + local chrs = fonts.ids[font.current()].characters + context.starttabulate { "|l|c|c|c|c|l|" } + context.FL() + NC() context("unicode") + NC() context("glyph") + NC() context("shape") + NC() context("lower") + NC() context("upper") + NC() context("description") + NC() NR() + context.TL() + for k, v in next, characters.data do + if chrs[k] then + NC() context("0x%05X",k) + NC() char(k) + NC() char(v.shcode) + NC() char(v.lccode or k) + NC() char(v.uccode or k) + NC() context(v.description) + NC() NR() + end + end + context.stoptabulate() + end + +\stopluacode + +\doifnotmode{demo}{\endinput} + +\setupbodyfont[dejavu,tt,9pt] + +\setuplayout + [backspace=1cm, + topspace=1cm, + footer=1cm, + header=0cm, + height=middle, + width=middle] + +\setupfootertexts + [] + [\fontname\font\quad\pagenumber] + +\starttext + + \ctxlua{fonts.tracers.shapes()} + +\stoptext diff --git a/tex/context/base/spac-ver.lua b/tex/context/base/spac-ver.lua index 59f66803e..a0ced869f 100644 --- a/tex/context/base/spac-ver.lua +++ b/tex/context/base/spac-ver.lua @@ -733,8 +733,11 @@ local discard, largest, force, penalty, add, disable, nowhite, goback, together --~ local function free_glue_node(n) --~ -- free_node(n.spec) ---~ print(n) +--~ print("before",n) +--~ io.flush() --~ free_node(n) +--~ print("after") +--~ io.flush() --~ end function vspacing.snapbox(n,how) @@ -832,7 +835,7 @@ local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also while current do local id, subtype = current.id, current.subtype if id == hlist_code or id == vlist_code then --- needs checking, why so many calls + -- needs checking, why so many calls if snap then local list = current.list local s = has_attribute(current,a_snapmethod) @@ -847,7 +850,7 @@ local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also else local sv = snapmethods[s] if sv then --- check if already snapped + -- check if already snapped if list and already_done(id,list,a_snapmethod) then local ht, dp = current.height, current.depth -- assume that the box is already snapped @@ -995,7 +998,7 @@ local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also head, current = remove_node(head, current, true) elseif sc == add then if trace then trace_skip('add',sc,so,sp,current) end ---~ local old, new = glue_data.spec, current.spec + -- local old, new = glue_data.spec, current.spec local old, new = writable_spec(glue_data), current.spec old.width = old.width + new.width old.stretch = old.stretch + new.stretch @@ -1162,6 +1165,102 @@ local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also return head, true end +--~ function remove_node(head, current, free_too) +--~ local t = current +--~ -- node.slide(head) +--~ print("") +--~ print("BEFORE R",nodes.idstostring(head)) +--~ print(" ",nodes.xidstostring(head)) +--~ head, current = node.remove(head,current) +--~ print("MIDDLE R",nodes.idstostring(head)) +--~ print(" ",nodes.xidstostring(head)) +--~ if t then +--~ if free_too then +--~ node.free(t) +--~ t = nil +--~ else +--~ t.next, t.prev = nil, nil +--~ end +--~ end +--~ print("AFTER R",nodes.idstostring(head)) +--~ print(" ",nodes.xidstostring(head)) +--~ return head, current, t +--~ end +--~ function nodes.xidstostring(head,tail) +--~ local n = head +--~ while n.next do +--~ n = n.next +--~ end +--~ local t, last_id, last_n = { }, nil, 0 +--~ while n do +--~ local id = n.id +--~ if not last_id then +--~ last_id, last_n = id, 1 +--~ elseif last_id == id then +--~ last_n = last_n + 1 +--~ else +--~ if last_n > 1 then +--~ t[#t+1] = string.format("[%s*%s]",last_n,node.type(last_id) or "?") +--~ else +--~ t[#t+1] = string.format("[%s]",node.type(last_id) or "?") +--~ end +--~ last_id, last_n = id, 1 +--~ end +--~ if n == head then +--~ break +--~ end +--~ n = n.prev +--~ end +--~ if not last_id then +--~ t[#t+1] = "no nodes" +--~ elseif last_n > 1 then +--~ t[#t+1] = string.format("[%s*%s]",last_n,node.type(last_id) or "?") +--~ else +--~ t[#t+1] = string.format("[%s]",node.type(last_id) or "?") +--~ end +--~ return table.concat(table.reverse(t)," ") +--~ end +--~ local function collapser(head) +--~ local current, glue_data = head, nil +--~ while current do +--~ local id, subtype = current.id, current.subtype +--~ if id == glue_code and subtype == userskip_code then +--~ local sc = has_attribute(current,a_skipcategory) +--~ if not sc then +--~ if glue_data then +--~ head, current = nodes.before(head,current,glue_data) +--~ current = current.next +--~ else +--~ local previous = current.prev +--~ if previous and previous.id == glue_code and previous.subtype == userskip_code then +--~ if previous.spec.writable then +--~ if current.spec.writable then +--~ head, current = remove_node(head, current, true) +--~ else +--~ current = current.next +--~ end +--~ else +--~ current = current.next +--~ end +--~ else +--~ current = current.next +--~ end +--~ end +--~ glue_data = nil +--~ elseif not glue_data then +--~ head, current, glue_data = remove_node(head, current) +--~ else +--~ head, current = remove_node(head, current, true) +--~ end +--~ else +--~ current = current.next +--~ end +--~ end +--~ return head, true +--~ end + + + -- alignment after_output end box new_graf vmode_par hmode_par insert penalty before_display after_display -- \par -> vmode_par -- @@ -1179,9 +1278,9 @@ local function report(message,lst) end function vspacing.pagehandler(newhead,where) ---~ local newhead = texlists.contrib_head + -- local newhead = texlists.contrib_head if newhead then ---~ starttiming(vspacing) + -- starttiming(vspacing) local newtail = find_node_tail(newhead) local flush = false stackhack = true -- todo: only when grid snapping once enabled @@ -1228,12 +1327,12 @@ function vspacing.pagehandler(newhead,where) stackhead = newhead end stacktail = newtail ---~ texlists.contrib_head = nil -newhead = nil + -- texlists.contrib_head = nil + newhead = nil end ---~ stoptiming(vspacing) + -- stoptiming(vspacing) end -return newhead + return newhead end local ignore = table.tohash { diff --git a/tex/context/base/strc-lst.lua b/tex/context/base/strc-lst.lua index c15b834d0..17de279a5 100644 --- a/tex/context/base/strc-lst.lua +++ b/tex/context/base/strc-lst.lua @@ -192,7 +192,7 @@ end local function filtercollected(names, criterium, number, collected, forced, nested) -- names is hash or string local numbers, depth = documents.data.numbers, documents.data.depth local result, detail = { }, nil - criterium = gsub(criterium," ","") -- not needed + criterium = gsub(criterium or ""," ","") -- not needed forced = forced or { } -- todo: also on other branched, for the moment only needed for bookmarks if type(names) == "string" then names = settings_to_hash(names) diff --git a/tex/context/base/strc-lst.mkiv b/tex/context/base/strc-lst.mkiv index e13ad52c8..b61733cbc 100644 --- a/tex/context/base/strc-lst.mkiv +++ b/tex/context/base/strc-lst.mkiv @@ -159,7 +159,11 @@ \dostoptagged} \unexpanded\def\analyzestructurelist#1#2#3% - {\ctxlua{structures.lists.analyze("#1","#2","#3")}} + {\ctxlua{structures.lists.analyze { + names = "#1", + criterium = "#2", + number = "#3" + }}} \def\firststructureelementinlist#1% {\ctxlua{commands.firstinlist("#1")}} @@ -929,7 +933,7 @@ {\combinedlist}% {\combinedlistparameter\c!criterium}% {\combinedlistparameter\c!number}% - {\combinedlistparameter\c!pageboundaries}% + {\combinedlistparameter\c!extras}% \doendoflist \stoplistreferences \endgroup diff --git a/tex/context/base/tabl-tbl.mkiv b/tex/context/base/tabl-tbl.mkiv index 5e25539fd..ca5aa426d 100644 --- a/tex/context/base/tabl-tbl.mkiv +++ b/tex/context/base/tabl-tbl.mkiv @@ -584,6 +584,27 @@ \expandafter\nexttabulate \fi} +% \def\donormalizetabulatesplitline +% {\ht\tabulatebox\strutht +% \dp\tabulatebox\strutdp} + +\setnewconstant \tabulatesplitlinemode \plusone + +\def\donormalizetabulatesplitline + {\ifcase\tabulatesplitlinemode + % nothing + \or + \ht\tabulatebox\strutht + \dp\tabulatebox\strutdp + \or + \ifdim\ht\tabulatebox<\strutht + \ht\tabulatebox\strutht + \fi + \ifdim\dp\tabulatebox<\strutdp + \dp\tabulatebox\strutdp + \fi + \fi} + \def\splitofftabulatebox % overloaded in anch-pgr {\dontcomplain \global\setbox\tabulatebox % % % global ? % % % @@ -592,8 +613,7 @@ {\unvbox\tabulatebox}% \setbox\tabulatebox\hbox to \wd\tabulatebox {\hss\dotabulatehook{\box\tabulatebox}\hss}% - \ht\tabulatebox\strutht - \dp\tabulatebox\strutdp + \donormalizetabulatesplitline \box\tabulatebox} \def\dotabulatehook {\csname\??tt:h:\the\tabulatecolumn\endcsname} @@ -615,22 +635,6 @@ \global\tabulatemaxpheight\scratchdimen \fi} -% \def\handletabulatepbreak -% {\TABLEnoalign -% {\ifhandletabulatepbreak -% \iftabulatenopbreak -% \dotabulatenobreak -% \else\ifnum\tabulatemaxplines>\plusone -% \ifnum\tabulateminplines=\plusone -% \dotabulatenobreak -% \fi -% \global\advance\tabulateminplines\plusone -% \ifnum\tabulateminplines=\tabulatemaxplines\relax -% \dotabulatenobreak -% \fi -% \fi \fi -% \fi}} - \def\dohandletabulatepbreak {\ifhandletabulatepbreak \iftabulatenopbreak @@ -738,11 +742,6 @@ \let\tabulatetailcontent\empty \fi} -% \def\fulltabulatecontent -% {\tabulateheadcontent -% \tabulatecontent -% \tabulatetailcontent} - \def\fulltabulatecontent {\tabulateheadcontent \tabulatecontent @@ -797,7 +796,7 @@ \egroup -% The much neede hook: +% The much needed hook: \newtoks\everytabulate @@ -1129,18 +1128,6 @@ \def\tabulatexbskiptwo{\bskip} \def\tabulatexeskiptwo{\eskip} -% \def\tabulateflushtabulatedtwo -% {\TABLEnoalign % noalign % no interference ! -% {\glet\flushtabulatedindeed\empty -% \global\tabulatecolumn\zerocount -% \handletabulatepbreak -% \dorecurse\tabulatecolumns % was: \noftabcolumns -% {\ifvoid\tablebox\recurselevel\else -% \gdef\flushtabulatedindeed{\the\tabulatedummy}% -% \fi}% -% \global\tabulatefirstflushedtrue}% -% \flushtabulatedindeed} - \def\dotabulateflushtabulatedtwo {\glet\flushtabulatedindeed\empty \global\tabulatecolumn\zerocount @@ -1275,7 +1262,7 @@ \dotabulaterule \dotabulatenobreak \dotabulateruleseperator -% \prevdepth\strutdp % todo, might differ between TL and BL + %\prevdepth\strutdp % todo, might differ between TL and BL \dotabulatenobreak}} \let\tabulateBLfive\tabulateTLfive @@ -1421,12 +1408,12 @@ \setbox\tabulatebox\vbox \bgroup \fi % -\dostarttagged\t!tabulate\empty -\dostarttagged\t!tabulaterow\empty -\appendtoks\dostoptagged\dostarttagged\t!tabulaterow\empty\to\everycr + \dostarttagged\t!tabulate\empty + \dostarttagged\t!tabulaterow\empty + \appendtoks\dostoptagged\dostarttagged\t!tabulaterow\empty\to\everycr \@EA\halign\@EA{\the\!!toksa\crcr\fulltabulatecontent\crcr}% -\dostoptagged -\dostoptagged + \dostoptagged + \dostoptagged \prevdepth\strutdp % nog eens beter, temporary hack \doifvalue{\??tt\currenttabulate\c!distance}\v!grid{\vskip-\strutdp}% experimental tm-prikkels % diff --git a/tex/context/base/type-otf.mkiv b/tex/context/base/type-otf.mkiv index 2a710a528..a68379f64 100644 --- a/tex/context/base/type-otf.mkiv +++ b/tex/context/base/type-otf.mkiv @@ -1907,4 +1907,39 @@ \stoptypescriptcollection +\starttypescriptcollection[computer-modern-unicode] + + \starttypescript [serif,sans,mono] [computer-modern-unicode] + \definefontsynonym [\s!Serif] [\s!file:cmunrm] [\s!features=\s!default] + \definefontsynonym [\s!SerifItalic] [\s!file:cmunti] [\s!features=\s!default] + \definefontsynonym [\s!SerifSlanted] [\s!file:cmunsl] [\s!features=\s!default] + \definefontsynonym [\s!SerifBold] [\s!file:cmunbx] [\s!features=\s!default] + \definefontsynonym [\s!SerifBoldItalic] [\s!file:cmunbi] [\s!features=\s!default] + \definefontsynonym [\s!Sans] [\s!file:cmunss] [\s!features=\s!default] + \definefontsynonym [\s!SansItalic] [\s!file:cmunsi] [\s!features=\s!default] + \definefontsynonym [\s!SansBold] [\s!file:cmunsx] [\s!features=\s!default] + \definefontsynonym [\s!SansBoldItalic] [\s!file:cmunso] [\s!features=\s!default] + \definefontsynonym [\s!Mono] [\s!file:cmuntt] [\s!features=\s!none] + \definefontsynonym [\s!MonoItalic] [\s!file:cmunit] [\s!features=\s!none] + \definefontsynonym [\s!MonoSlanted] [\s!file:cmunst] [\s!features=\s!none] + \definefontsynonym [\s!MonoBold] [\s!file:cmuntb] [\s!features=\s!none] + \definefontsynonym [\s!MonoBoldItalic] [\s!file:cmuntx] [\s!features=\s!none] + \stoptypescript + + \starttypescript [serif] [computer-modern-unicode-concrete] + \definefontsynonym [\s!Serif] [\s!file:cmunorm] [\s!features=\s!default] + \definefontsynonym [\s!SerifItalic] [\s!file:cmunoti] [\s!features=\s!default] + \definefontsynonym [\s!SerifBold] [\s!file:cmunobx] [\s!features=\s!default] + \definefontsynonym [\s!SerifBoldItalic] [\s!file:cmunobi] [\s!features=\s!default] + \stoptypescript + + \starttypescript[computer-modern-unicode] + \definetypeface[computer-modern-unicode][rm][\s!serif][computer-modern-unicode][\s!default] + \definetypeface[computer-modern-unicode][ss][\s!sans] [computer-modern-unicode][\s!default] + \definetypeface[computer-modern-unicode][tt][\s!mono] [computer-modern-unicode][\s!default] + \definetypeface[computer-modern-unicode][mm][\s!math] [modern] [\s!default] + \stoptypescript + +\stoptypescriptcollection + \protect \endinput diff --git a/tex/context/fonts/lucida-math.lfg b/tex/context/fonts/lucida-math.lfg index b4ece4e89..9a554d65b 100644 --- a/tex/context/fonts/lucida-math.lfg +++ b/tex/context/fonts/lucida-math.lfg @@ -250,7 +250,12 @@ mathencodings["lbr-mb"] = { [0x1D718] = 0x9B, -- varkappa } + mathencodings["lbr-sy"] = { + + [0x0002B] = 0x82, -- plus + [0x0003D] = 0x83, -- equal + [0x021CB] = 0x8D, -- leftrightharpoons [0x021CC] = 0x8E, -- rightleftharpoons [0x02214] = 0x89, -- dotplus -- cgit v1.2.3