summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/anch-pgr.mkiv3
-rw-r--r--tex/context/base/back-pdf.lua2
-rw-r--r--tex/context/base/bibl-bib.mkiv1
-rw-r--r--tex/context/base/bibl-tra.mkiv6
-rw-r--r--tex/context/base/font-ext.lua2
-rw-r--r--tex/context/base/font-fbk.lua70
-rw-r--r--tex/context/base/m-database.lua33
-rw-r--r--tex/context/base/node-bck.mkiv3
-rw-r--r--tex/context/base/node-ini.lua16
-rw-r--r--tex/context/base/s-fnt-29.tex77
-rw-r--r--tex/context/base/spac-ver.lua119
-rw-r--r--tex/context/base/strc-lst.lua2
-rw-r--r--tex/context/base/strc-lst.mkiv8
-rw-r--r--tex/context/base/tabl-tbl.mkiv71
-rw-r--r--tex/context/base/type-otf.mkiv35
-rw-r--r--tex/context/fonts/lucida-math.lfg5
16 files changed, 324 insertions, 129 deletions
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