summaryrefslogtreecommitdiff
path: root/tex/context/base
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-05-16 00:21:21 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-05-16 00:21:21 +0200
commitb344014638169aad6e5f6d2a9a703cb03a8b5064 (patch)
treea4457c5d1fdb99f6e8cfe67d53db97b297c1b3ef /tex/context/base
parentc7a8e05aac805e409247e3b36c000ab196831727 (diff)
downloadcontext-b344014638169aad6e5f6d2a9a703cb03a8b5064.tar.gz
2016-05-15 20:51:00
Diffstat (limited to 'tex/context/base')
-rw-r--r--tex/context/base/context-version.pdfbin4252 -> 4248 bytes
-rw-r--r--tex/context/base/mkiv/char-def.lua7
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-otr.lua1
-rw-r--r--tex/context/base/mkiv/font-syn.lua35
-rw-r--r--tex/context/base/mkiv/grph-rul.lua20
-rw-r--r--tex/context/base/mkiv/math-ini.mkiv16
-rw-r--r--tex/context/base/mkiv/mult-fun.lua2
-rw-r--r--tex/context/base/mkiv/page-str.lua16
-rw-r--r--tex/context/base/mkiv/page-str.mkiv4
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin9214 -> 9237 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin266627 -> 266724 bytes
-rw-r--r--tex/context/base/mkiv/strc-ref.lua6
-rw-r--r--tex/context/base/mkiv/strc-rsc.lua4
-rw-r--r--tex/context/base/mkiv/util-prs.lua28
16 files changed, 105 insertions, 38 deletions
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index 2aacea69d..c9c3510dd 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua
index bf21be70c..f112f2b67 100644
--- a/tex/context/base/mkiv/char-def.lua
+++ b/tex/context/base/mkiv/char-def.lua
@@ -625,7 +625,6 @@ characters.data={
direction="cs",
linebreak="is",
mathclass="relation",
---mathsymbol=0x2236,
unicodeslot=0x3A,
},
{
@@ -54755,10 +54754,10 @@ characters.data={
category="lu",
description="LATIN CAPITAL LETTER SHARP S",
direction="l",
- linebreak="al",
- unicodeslot=0x1E9E,
lccode=0xDF,
+ linebreak="al",
shcode={ 0x53, 0x53 },
+ unicodeslot=0x1E9E,
},
[0x1E9F]={
category="ll",
@@ -227052,4 +227051,4 @@ characters.data={
linebreak="cm",
unicodeslot=0xE007F,
},
-}
+} \ No newline at end of file
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 65128dabb..863426692 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2016.05.14 14:06}
+\newcontextversion{2016.05.15 20:46}
%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/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index 72718b53c..7cce1c958 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -39,7 +39,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2016.05.14 14:06}
+\edef\contextversion{2016.05.15 20:46}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/font-otr.lua b/tex/context/base/mkiv/font-otr.lua
index 24f68543e..c967e2411 100644
--- a/tex/context/base/mkiv/font-otr.lua
+++ b/tex/context/base/mkiv/font-otr.lua
@@ -1874,6 +1874,7 @@ local function getinfo(maindata,sub,platformnames,rawfamilynames)
-- format = fontdata.format,
fontname = fontname,
fullname = fullname,
+ -- cfffullname = cff.fullname,
family = family,
subfamily = subfamily,
familyname = familyname,
diff --git a/tex/context/base/mkiv/font-syn.lua b/tex/context/base/mkiv/font-syn.lua
index ef0d44a84..435aa1ddc 100644
--- a/tex/context/base/mkiv/font-syn.lua
+++ b/tex/context/base/mkiv/font-syn.lua
@@ -565,6 +565,7 @@ local function check_name(data,result,filename,modification,suffix,subfont)
local familyname = result.familyname
local subfamilyname = result.subfamilyname
-- local compatiblename = result.compatiblename
+ -- local cfffullname = result.cfffullname
local weight = result.weight
local italicangle = tonumber(result.italicangle)
local subfont = subfont
@@ -579,6 +580,7 @@ local function check_name(data,result,filename,modification,suffix,subfont)
familyname = familyname and cleanname(familyname)
subfamilyname = subfamilyname and cleanname(subfamilyname)
-- compatiblename = compatiblename and cleanname(compatiblename)
+ -- cfffullname = cfffullname and cleanname(cfffullname)
weight = weight and cleanname(weight)
italicangle = italicangle == 0 and nil
-- analyze
@@ -630,6 +632,7 @@ local function check_name(data,result,filename,modification,suffix,subfont)
familyname = familyname,
subfamilyname = subfamilyname,
-- compatiblename = compatiblename, -- nor used / needed
+ -- cfffullname = cfffullname,
weight = weight,
style = style,
width = width,
@@ -792,18 +795,20 @@ local function collecthashes()
local nofmappings = 0
local noffallbacks = 0
if specifications then
- -- maybe multiple passes
+ -- maybe multiple passes (for the compatible and cffnames so that they have less preference)
for index=1,#specifications do
- local specification = specifications[index]
- local format = specification.format
- local fullname = specification.fullname
- local fontname = specification.fontname
- local familyname = specification.familyname or specification.family
- local subfamilyname = specification.subfamilyname
- local subfamily = specification.subfamily
- local weight = specification.weight
- local mapping = mappings[format]
- local fallback = fallbacks[format]
+ local specification = specifications[index]
+ local format = specification.format
+ local fullname = specification.fullname
+ local fontname = specification.fontname
+ -- local compatiblename = specification.compatiblename
+ -- local cfffullname = specification.cfffullname
+ local familyname = specification.familyname or specification.family
+ local subfamilyname = specification.subfamilyname
+ local subfamily = specification.subfamily
+ local weight = specification.weight
+ local mapping = mappings[format]
+ local fallback = fallbacks[format]
if fullname and not mapping[fullname] then
mapping[fullname] = index
nofmappings = nofmappings + 1
@@ -812,6 +817,14 @@ local function collecthashes()
mapping[fontname] = index
nofmappings = nofmappings + 1
end
+ -- if compatiblename and not mapping[compatiblename] then
+ -- mapping[compatiblename] = index
+ -- nofmappings = nofmappings + 1
+ -- end
+ -- if cfffullname and not mapping[cfffullname] then
+ -- mapping[cfffullname] = index
+ -- nofmappings = nofmappings + 1
+ -- end
if familyname then
if weight and weight ~= sub(familyname,#familyname-#weight+1,#familyname) then
local madename = familyname .. weight
diff --git a/tex/context/base/mkiv/grph-rul.lua b/tex/context/base/mkiv/grph-rul.lua
index e5aa05396..e6b10cce6 100644
--- a/tex/context/base/mkiv/grph-rul.lua
+++ b/tex/context/base/mkiv/grph-rul.lua
@@ -69,6 +69,7 @@ FakeWord(%width%,%height%,%depth%,%line%,%color%);
FakeRule(%width%,%height%,%depth%,%line%,%color%);
]],
["fake:rest"] = replacer [[
+RuleDirection := "%direction%" ;
RuleOption := "%option%" ;
RuleWidth := %width% ;
RuleHeight := %height% ;
@@ -84,15 +85,16 @@ def RuleColor = %color% enddef ;
ruleactions.mp = function(p,h,v,i,n)
local name = p.name or "fake:rest"
local code = (predefined[name] or predefined["fake:rest"]) {
- data = p.data or "",
- width = p.width * bpfactor,
- height = p.height * bpfactor,
- depth = p.depth * bpfactor,
- factor = (p.factor or 0) * bpfactor, -- needs checking
- offset = p.offset or 0,
- line = (p.line or 65536) * bpfactor,
- color = mpcolor(p.ma,p.ca,p.ta),
- option = p.option or "",
+ data = p.data or "",
+ width = p.width * bpfactor,
+ height = p.height * bpfactor,
+ depth = p.depth * bpfactor,
+ factor = (p.factor or 0) * bpfactor, -- needs checking
+ offset = p.offset or 0,
+ line = (p.line or 65536) * bpfactor,
+ color = mpcolor(p.ma,p.ca,p.ta),
+ option = p.option or "",
+ direction = p.direction or "TLT",
}
local m = cache[code]
if trace_mp then
diff --git a/tex/context/base/mkiv/math-ini.mkiv b/tex/context/base/mkiv/math-ini.mkiv
index 8627436b7..2e7831d75 100644
--- a/tex/context/base/mkiv/math-ini.mkiv
+++ b/tex/context/base/mkiv/math-ini.mkiv
@@ -386,7 +386,7 @@
\let\mathalternate \math_set_font_alternate
\unexpanded\def\mathupright {\math_set_attribute\s!regular\s!tf\math_set_font_style_alternate\s!tf}
-\unexpanded\def\mathdefault {\math_set_attribute\s!regular\s!it\math_set_font_style_alternate\s!it}
+\unexpanded\def\mathitalic {\math_set_attribute\s!regular\s!it\math_set_font_style_alternate\s!it}
\unexpanded\def\mathscript {\math_set_alphabet \s!script \math_set_font_style_alternate\s!script}
\unexpanded\def\mathfraktur {\math_set_alphabet \s!fraktur \math_set_font_style_alternate\s!fraktur}
\unexpanded\def\mathblackboard{\math_set_alphabet \s!blackboard \math_set_font_style_alternate\s!blackboard}
@@ -403,6 +403,20 @@
\unexpanded\def\mathbs {\math_set_font_style\s!bi \math_set_font_style_alternate\s!bi} % no sl
\unexpanded\def\mathbi {\math_set_font_style\s!bi \math_set_font_style_alternate\s!bi}
+\let\mathdefault\mathitalic
+
+\appendtoks
+ \edef\p_default{\mathematicsparameter\c!default}%
+ \ifx\p_default\v!normal
+ \let\mathdefault\mathupright
+ \else
+ \let\mathdefault\mathitalic
+ \fi
+\to \everysetupmathematics
+
+\setupmathematics
+ [\c!default=\v!italic]
+
\let\tfmath\mathtf % maybe a grouped command
\let\slmath\mathsl
\let\itmath\mathit
diff --git a/tex/context/base/mkiv/mult-fun.lua b/tex/context/base/mkiv/mult-fun.lua
index 76a2ab915..6c722aa40 100644
--- a/tex/context/base/mkiv/mult-fun.lua
+++ b/tex/context/base/mkiv/mult-fun.lua
@@ -106,7 +106,7 @@ return {
-- "remapcolors", "normalcolors", "resetcolormap", "remapcolor", "remappedcolor",
-- "recolor", "refill", "redraw", "retext", "untext", "restroke", "reprocess", "repathed",
"tensecircle", "roundedsquare",
- "colortype", "whitecolor", "blackcolor", "basiccolors",
+ "colortype", "whitecolor", "blackcolor", "basiccolors", "complementary",
--
-- "swappointlabels",
"normalfill", "normaldraw", "visualizepaths", "detailpaths", "naturalizepaths",
diff --git a/tex/context/base/mkiv/page-str.lua b/tex/context/base/mkiv/page-str.lua
index 56c6167aa..b2f597633 100644
--- a/tex/context/base/mkiv/page-str.lua
+++ b/tex/context/base/mkiv/page-str.lua
@@ -22,6 +22,12 @@ local implement = interfaces.implement
local new_kern = nodepool.kern
local new_glyph = nodepool.glyph
+local nodecodes = nodes.nodecodes
+local gluecodes = nodes.gluecodes
+local hlist_code = nodecodes.hlist
+local vlist_code = nodecodes.vlist
+local glue_code = nodecodes.glue
+
local slide_nodelist = node.slide
local write_node = node.write
local free_node = node.free
@@ -167,6 +173,16 @@ function streams.synchronize(list) -- this is an experiment !
local dana = data[name]
local slot = dana[m]
if slot then
+-- for n in nodes.traverse(slot) do
+-- local id = n.id
+-- if id == hlist_code or id == vlist_code then
+-- print(n,n.height,n.depth)
+-- elseif id == glue_code then
+-- print(n,n.width,gluecodes[n.subtype])
+-- else
+-- print(n)
+-- end
+-- end
local vbox = vpack_nodelist(slot)
local ht, dp = vbox.height, vbox.depth
if ht > height then
diff --git a/tex/context/base/mkiv/page-str.mkiv b/tex/context/base/mkiv/page-str.mkiv
index e4b2fa229..b6b8d1cce 100644
--- a/tex/context/base/mkiv/page-str.mkiv
+++ b/tex/context/base/mkiv/page-str.mkiv
@@ -50,7 +50,9 @@
\the\everyenableoutputstream
\inoutputstreamtrue
\xdef\currentoutputstream{#1}%
- \clf_enablestream{#1}}
+ \clf_enablestream{#1}
+ \prevdepth\zeropoint % maybe more is needed i.e. we need to get rid of leading glue
+ }
\unexpanded\def\disableoutputstream
{\inoutputstreamfalse
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index c0eaf445a..761ce692e 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index c4c0c12ac..d805ec463 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/strc-ref.lua b/tex/context/base/mkiv/strc-ref.lua
index de0577423..70d79dc57 100644
--- a/tex/context/base/mkiv/strc-ref.lua
+++ b/tex/context/base/mkiv/strc-ref.lua
@@ -68,7 +68,8 @@ local logsnewline = logs.newline
local logspushtarget = logs.pushtarget
local logspoptarget = logs.poptarget
-local settings_to_array = utilities.parsers.settings_to_array
+----- settings_to_array = utilities.parsers.settings_to_array
+local settings_to_table = utilities.parsers.settings_to_array_obey_fences
local process_settings = utilities.parsers.process_stripped_settings
local unsetvalue = attributes.unsetvalue
@@ -883,7 +884,8 @@ local function resolve(prefix,reference,args,set) -- we start with prefix,refere
if not set.reference then set.reference = reference end
if not set.prefix then set.prefix = prefix end
end
- local r = settings_to_array(reference)
+ -- local r = settings_to_array(reference)
+ local r = settings_to_table(reference) -- maybe option to honor () []
for i=1,#r do
local ri = r[i]
local d = defined[prefix][ri] or defined[""][ri]
diff --git a/tex/context/base/mkiv/strc-rsc.lua b/tex/context/base/mkiv/strc-rsc.lua
index 627e443b2..ee7f885e0 100644
--- a/tex/context/base/mkiv/strc-rsc.lua
+++ b/tex/context/base/mkiv/strc-rsc.lua
@@ -183,3 +183,7 @@ references.splitcomponent = splitcomponent
-- inspect(splitreference([[special(operation{"argument,argument{whatever"})]]))
-- inspect(splitreference([[special(operation{"argument{whatever"})]]))
+-- inspect(splitreference([[url(http://a,b.c)]]))
+-- inspect(splitcomponent([[url(http://a,b.c)]]))
+-- inspect(splitcomponent([[url(http://a.b.c)]]))
+
diff --git a/tex/context/base/mkiv/util-prs.lua b/tex/context/base/mkiv/util-prs.lua
index 01138f1bb..02729dd0e 100644
--- a/tex/context/base/mkiv/util-prs.lua
+++ b/tex/context/base/mkiv/util-prs.lua
@@ -36,6 +36,8 @@ local lbrace = P("{")
local rbrace = P("}")
local lparent = P("(")
local rparent = P(")")
+local lbracket = P("[")
+local rbracket = P("]")
local period = S(".")
local punctuation = S(".,:;")
local spacer = lpegpatterns.spacer
@@ -44,8 +46,9 @@ local newline = lpegpatterns.newline
local anything = lpegpatterns.anything
local endofstring = lpegpatterns.endofstring
-local nobrace = 1 - (lbrace + rbrace )
-local noparent = 1 - (lparent + rparent)
+local nobrace = 1 - (lbrace + rbrace )
+local noparent = 1 - (lparent + rparent)
+local nobracket = 1 - (lbracket + rbracket)
-- we could use a Cf Cg construct
@@ -56,11 +59,12 @@ lpegpatterns.balanced = P {
[2] = left * V(1) * right
}
-local nestedbraces = P { lbrace * (nobrace + V(1))^0 * rbrace }
-local nestedparents = P { lparent * (noparent + V(1))^0 * rparent }
-local spaces = space^0
-local argument = Cs((lbrace/"") * ((nobrace + nestedbraces)^0) * (rbrace/""))
-local content = (1-endofstring)^0
+local nestedbraces = P { lbrace * (nobrace + V(1))^0 * rbrace }
+local nestedparents = P { lparent * (noparent + V(1))^0 * rparent }
+local nestedbrackets = P { lbracket * (nobracket + V(1))^0 * rbracket }
+local spaces = space^0
+local argument = Cs((lbrace/"") * ((nobrace + nestedbraces)^0) * (rbrace/""))
+local content = (1-endofstring)^0
lpegpatterns.nestedbraces = nestedbraces -- no capture
lpegpatterns.nestedparents = nestedparents -- no capture
@@ -193,6 +197,16 @@ function parsers.settings_to_array(str,strict)
end
end
+local value = P(lbrace * C((nobrace + nestedbraces)^0) * rbrace)
+ + C((nestedbraces + nestedbrackets + nestedparents + (1-comma))^0)
+local pattern = spaces * Ct(value*(separator*value)^0)
+
+function parsers.settings_to_array_obey_fences(str)
+ return lpegmatch(pattern,str)
+end
+
+-- inspect(parsers.settings_to_array_obey_fences("url(http://a,b.c)"))
+
-- this one also strips end spaces before separators
--
-- "{123} , 456 " -> "123" "456"