summaryrefslogtreecommitdiff
path: root/tex/context/base
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base')
-rw-r--r--tex/context/base/char-def.lua9
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4106 -> 4106 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/font-fea.mkvi2
-rw-r--r--tex/context/base/font-gds.lua2
-rw-r--r--tex/context/base/font-mis.lua2
-rw-r--r--tex/context/base/font-otf.lua36
-rw-r--r--tex/context/base/font-pre.mkiv10
-rw-r--r--tex/context/base/font-syn.lua42
-rw-r--r--tex/context/base/m-graph.mkiv59
-rw-r--r--tex/context/base/math-fbk.lua26
-rw-r--r--tex/context/base/mlib-pdf.lua42
-rw-r--r--tex/context/base/mult-fun.lua2
-rw-r--r--tex/context/base/status-files.pdfbin24545 -> 24577 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin224981 -> 224895 bytes
-rw-r--r--tex/context/base/strc-bkm.lua2
-rw-r--r--tex/context/base/tabl-ntb.mkiv1
-rw-r--r--tex/context/base/tabl-tbl.mkiv1
-rw-r--r--tex/context/base/typo-tal.mkiv23
20 files changed, 195 insertions, 68 deletions
diff --git a/tex/context/base/char-def.lua b/tex/context/base/char-def.lua
index 1261bd45a..9642d1736 100644
--- a/tex/context/base/char-def.lua
+++ b/tex/context/base/char-def.lua
@@ -452,7 +452,6 @@ characters.data={
adobename="slash",
category="po",
cjkwd="na",
- comment="mathsymbol=0x2044",
contextname="textslash",
description="SOLIDUS",
direction="cs",
@@ -460,11 +459,13 @@ characters.data={
mathspec={
{
class="middle",
- unicode=0x2044,
+ -- unicode=0x2044,
+ -- unicode=0x2215,
},
{
class="ordinary",
- unicode=0x2044,
+ -- unicode=0x2044,
+ -- unicode=0x2215,
},
},
unicodeslot=0x002F,
@@ -58822,6 +58823,8 @@ characters.data={
category="mn",
description="COMBINING ANNUITY SYMBOL",
direction="nsm",
+ mathclass="topaccent",
+ mathname="actuarial",
linebreak="cm",
unicodeslot=0x20E7,
},
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index b625a0ff3..fe2418d7e 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.10.20 07:09}
+\newcontextversion{2013.10.30 13:30}
%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 0909c6799..204b0d1d6 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 5f3866345..eaff168ec 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.10.20 07:09}
+\edef\contextversion{2013.10.30 13:30}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/font-fea.mkvi b/tex/context/base/font-fea.mkvi
index 777c6e3ca..8d985b411 100644
--- a/tex/context/base/font-fea.mkvi
+++ b/tex/context/base/font-fea.mkvi
@@ -286,7 +286,7 @@
\unexpanded\def\featureattribute#feature%
{\ctxcommand{featureattribute("#feature")}}
-\unexpanded\def\setfontfeature #feature%
+\unexpanded\def\setfontfeature#feature%
{\edef\currentfeature{#feature}%
\let\m_font_feature_list\currentfeature
\ctxcommand{setfontfeature("\currentfeature")}}
diff --git a/tex/context/base/font-gds.lua b/tex/context/base/font-gds.lua
index 7f8bb91d1..7131ecad5 100644
--- a/tex/context/base/font-gds.lua
+++ b/tex/context/base/font-gds.lua
@@ -372,7 +372,7 @@ setmetatableindex(cache,function(t,a)
setmetatableindex(v,function(t,c)
local v = "colorscheme:" .. a .. ":" .. c
t[c] = v
- return c
+ return v
end)
t[a]= v
return v
diff --git a/tex/context/base/font-mis.lua b/tex/context/base/font-mis.lua
index 0796356c4..6b6789481 100644
--- a/tex/context/base/font-mis.lua
+++ b/tex/context/base/font-mis.lua
@@ -22,7 +22,7 @@ local handlers = fonts.handlers
handlers.otf = handlers.otf or { }
local otf = handlers.otf
-otf.version = otf.version or 2.745
+otf.version = otf.version or 2.747
otf.cache = otf.cache or containers.define("fonts", "otf", otf.version, true)
function otf.loadcached(filename,format,sub)
diff --git a/tex/context/base/font-otf.lua b/tex/context/base/font-otf.lua
index 7598a9c35..6ebcb9cf9 100644
--- a/tex/context/base/font-otf.lua
+++ b/tex/context/base/font-otf.lua
@@ -48,7 +48,7 @@ local otf = fonts.handlers.otf
otf.glists = { "gsub", "gpos" }
-otf.version = 2.745 -- beware: also sync font-mis.lua
+otf.version = 2.747 -- beware: also sync font-mis.lua
otf.cache = containers.define("fonts", "otf", otf.version, true)
local fontdata = fonts.hashes.identifiers
@@ -1056,20 +1056,21 @@ local g_directions = {
gsub_reversecontextchain = -1,
gpos_reversecontextchain = -1,
}
-
--- Research by Khaled Hosny has demonstrated that the font loader merges
--- regular and AAT features and that these can interfere (especially because
--- we dropped checking for valid features elsewhere. So, we just check for
--- the special flag and drop the feature if such a tag is found.
-
-local function supported(features)
- for i=1,#features do
- if features[i].ismac then
- return false
- end
- end
- return true
-end
+-- The following is no longer needed as AAT is ignored per end October 2013.
+--
+-- -- Research by Khaled Hosny has demonstrated that the font loader merges
+-- -- regular and AAT features and that these can interfere (especially because
+-- -- we dropped checking for valid features elsewhere. So, we just check for
+-- -- the special flag and drop the feature if such a tag is found.
+--
+-- local function supported(features)
+-- for i=1,#features do
+-- if features[i].ismac then
+-- return false
+-- end
+-- end
+-- return true
+-- end
actions["reorganize subtables"] = function(data,filename,raw)
local resources = data.resources
@@ -1084,8 +1085,7 @@ actions["reorganize subtables"] = function(data,filename,raw)
for k=1,#dw do
local gk = dw[k]
local features = gk.features
--- if features and supported(features) then
- if not features or supported(features) then -- not always features !
+ -- if not features or supported(features) then -- not always features !
local typ = gk.type
local chain = g_directions[typ] or 0
local subtables = gk.subtables
@@ -1152,7 +1152,7 @@ actions["reorganize subtables"] = function(data,filename,raw)
markclass = markclass,
}
end
- end
+ -- end
end
end
end
diff --git a/tex/context/base/font-pre.mkiv b/tex/context/base/font-pre.mkiv
index 75f42f8f5..7d892ad37 100644
--- a/tex/context/base/font-pre.mkiv
+++ b/tex/context/base/font-pre.mkiv
@@ -52,6 +52,16 @@
tlig=yes,
trep=yes] % texligatures=yes,texquotes=yes
+\definefontfeature
+ [inlinenumbers]
+ [lnum=yes,
+ tnum=no]
+
+\definefontfeature
+ [tabularnumbers]
+ [tnum=yes,
+ lnum=no]
+
% \definefontfeature
% [newstyle]
% [onum=no]
diff --git a/tex/context/base/font-syn.lua b/tex/context/base/font-syn.lua
index 18da4f2e1..8af31f222 100644
--- a/tex/context/base/font-syn.lua
+++ b/tex/context/base/font-syn.lua
@@ -41,37 +41,39 @@ local trace_names = false trackers.register("fonts.names", fu
local trace_warnings = false trackers.register("fonts.warnings", function(v) trace_warnings = v end)
local trace_specifications = false trackers.register("fonts.specifications", function(v) trace_specifications = v end)
-local report_names = logs.reporter("fonts","names")
+local report_names = logs.reporter("fonts","names")
--[[ldx--
<p>This module implements a name to filename resolver. Names are resolved
using a table that has keys filtered from the font related files.</p>
--ldx]]--
-fonts = fonts or { } -- also used elsewhere
+fonts = fonts or { } -- also used elsewhere
-local names = font.names or allocate { }
-fonts.names = names
+local names = font.names or allocate { }
+fonts.names = names
-local filters = names.filters or { }
-names.filters = filters
+local filters = names.filters or { }
+names.filters = filters
-local treatments = names.treatments or { }
-names.treatments = treatments
+local treatments = fonts.treatments or { }
+fonts.treatments = treatments
-names.data = names.data or allocate { }
+names.data = names.data or allocate { }
-names.version = 1.123
-names.basename = "names"
-names.saved = false
-names.loaded = false
-names.be_clever = true
-names.enabled = true
-names.cache = containers.define("fonts","data",names.version,true)
+names.version = 1.123
+names.basename = "names"
+names.saved = false
+names.loaded = false
+names.be_clever = true
+names.enabled = true
+names.cache = containers.define("fonts","data",names.version,true)
-local autoreload = true
+local usesystemfonts = true
+local autoreload = true
-directives.register("fonts.autoreload", function(v) autoreload = toboolean(v) end)
+directives.register("fonts.autoreload", function(v) autoreload = toboolean(v) end)
+directives.register("fonts.usesystemfonts", function(v) usesystemfonts = toboolean(v) end)
--[[ldx--
<p>A few helpers.</p>
@@ -979,7 +981,9 @@ local function analyzefiles(olddata)
walk_tree(names.getpaths(trace),suffix,identify)
end
traverse("tree",withtree) -- TEXTREE only
- if texconfig.kpse_init then
+ if not usesystemfonts then
+ report_names("ignoring system fonts")
+ elseif texconfig.kpse_init then
traverse("lsr", withlsr)
else
traverse("system", withsystem)
diff --git a/tex/context/base/m-graph.mkiv b/tex/context/base/m-graph.mkiv
index e99921c43..f8114561c 100644
--- a/tex/context/base/m-graph.mkiv
+++ b/tex/context/base/m-graph.mkiv
@@ -22,6 +22,37 @@
local simplify = true
+ -- local function strip(n,e)
+ -- -- get rid of e(0)
+ -- -- get rid of e(+*)
+ -- e = gsub(e,"^+","")
+ -- -- remove leading zeros
+ -- e = gsub(e,"^([+-]*)0+(%d)","%1%2")
+ -- if not simplify then
+ -- -- take it as it is
+ -- elseif n == "1" then
+ -- return format("10^{%s}",e)
+ -- end
+ -- return format("%s\\times10^{%s}",n,e)
+ -- end
+ --
+ -- function metapost.format_n(fmt,...)
+ -- fmt = gsub(fmt,"@","%%")
+ -- local initial, hasformat, final = match(fmt,"^(.-)(%%.-[%a])(.-)$")
+ -- if hasformat then
+ -- str = format(fmt,...)
+ -- str = gsub(str,"(.-)e(.-)$",strip)
+ -- str = format("%s\\mathematics{%s}%s",initial,str,final)
+ -- elseif not find(fmt,"%%") then
+ -- str = format("%"..fmt,...)
+ -- str = gsub(str,"(.-)e(.-)$",strip)
+ -- str = format("\\mathematics{%s}",str)
+ -- end
+ -- context(str)
+ -- end
+
+ -- todo: proper lpeg
+
local function strip(n,e)
-- get rid of e(0)
-- get rid of e(+*)
@@ -31,28 +62,28 @@
if not simplify then
-- take it as it is
elseif n == "1" then
- return format("10^{%s}",e)
+ return format("\\mathematics{10^{%s}}",e)
end
- return format("%s\\times10^{%s}",n,e)
+ return format("\\mathematics{%s\\times10^{%s}}",n,e)
end
- function metapost.format_n(fmt,str)
+ function metapost.format_n(fmt,...)
fmt = gsub(fmt,"@","%%")
- local initial, hasformat, final = match(fmt,"^(.-)(%%.-[%a])(.-)$")
- if hasformat then
- str = format(fmt,str)
- str = gsub(str,"(.-)e(.-)$",strip)
- str = format("%s\\mathematics{%s}%s",initial,str,final)
- elseif not find(fmt,"%%") then
- str = format("%"..fmt,str)
- str = gsub(str,"(.-)e(.-)$",strip)
- str = format("\\mathematics{%s}",str)
+ if find(fmt,"%%") then
+ str = format(fmt,...)
+ else -- yes or no
+ str = format("%"..fmt,...)
end
+ str = gsub(str,"([%-%+]-[%.%d]+)e([%-%+]-[%.%d]+)",strip)
context(str)
end
+
+ function metapost.format_v(fmt,str)
+ metapost.format_n(fmt,metapost.untagvariable(str,false))
+ end
\stopluacode
-\unexpanded\def\MPgraphformat#1#2{\ctxlua{metapost.format_n("#1","#2")}}
+\unexpanded\def\MPgraphformat#1#2{\ctxlua{metapost.format_v("#1","#2")}}
% We could also delegate parsing using lower level plugins.
@@ -86,6 +117,8 @@
label(format("@g","1"), (2cm,-2.0cm)) ;
label(format("@g","1e-102"),(0, -2.5cm)) ;
label(format("@g","1e+102"),(2cm,-2.5cm)) ;
+ label(format("@f,@f",(1.23,4.56)),(0cm,-3.0cm)) ;
+ label(format("@i,@f",(1.23,4.56)),(0cm,-3.5cm)) ;
\stopMPpage
% \startMPpage[instance=graph]
diff --git a/tex/context/base/math-fbk.lua b/tex/context/base/math-fbk.lua
index b364d1208..fe4cd1929 100644
--- a/tex/context/base/math-fbk.lua
+++ b/tex/context/base/math-fbk.lua
@@ -503,3 +503,29 @@ virtualcharacters[0xFE935] = function(data) return smashed(data,0x02035,true) en
virtualcharacters[0xFE936] = function(data) return smashed(data,0x02036,true) end
virtualcharacters[0xFE937] = function(data) return smashed(data,0x02037,true) end
+-- actuarian
+
+virtualcharacters[0x020E7] = function(data)
+ local characters = data.target.characters
+ -- if characters[0x020E7] then
+ -- -- we cannot assume that the character is useable
+ -- else
+ local parameters = data.target.parameters
+ local basechar = characters[0x0078] -- x (0x0058 X)
+ local linewidth = parameters.xheight / 10
+ local basewidth = basechar.width
+ local baseheight = basechar.height
+ return {
+ -- compromise: lm has large hooks e.g. \actuarial{a}
+ commands = {
+ { "right", 2 * linewidth },
+ { "down", - baseheight - 3 * linewidth },
+ { "rule", linewidth, basewidth + 4 * linewidth },
+ { "right", -linewidth },
+ { "down", baseheight + 4 * linewidth },
+ { "rule", baseheight + 5 * linewidth, linewidth },
+ },
+ width = basewidth + 4 * linewidth,
+ }
+ -- end
+end
diff --git a/tex/context/base/mlib-pdf.lua b/tex/context/base/mlib-pdf.lua
index d5f22cd7e..1f37223a7 100644
--- a/tex/context/base/mlib-pdf.lua
+++ b/tex/context/base/mlib-pdf.lua
@@ -276,13 +276,31 @@ local key = C((1-equal)^1) * equal
local newline = S("\n\r")^1
local number = (((1-space-newline)^1) / tonumber) * (space^0)
local variable =
- lpeg.P("1:") * key * number
- + lpeg.P("2:") * key * C((1-newline)^0)
- + lpeg.P("3:") * key * (P("false") * Cc(false) + P("true") * Cc(true))
- + lpeg.S("4568") * P(":") * key * Ct(number^1)
- + lpeg.P("7:") * key * Ct(Ct(number * number^-5)^1)
+ P("1:") * key * number
+ + P("2:") * key * C((1-newline)^0)
+ + P("3:") * key * (P("false") * Cc(false) + P("true") * Cc(true))
+ + S("4568") * P(":") * key * Ct(number^1)
+ + P("7:") * key * Ct(Ct(number * number^-5)^1)
-local pattern = Cf ( Carg(1) * (Cg(variable * newline^0)^0), rawset)
+local pattern_key = Cf ( Carg(1) * (Cg(variable * newline^0)^0), rawset)
+
+local variable =
+ P("1:") * number
+ + P("2:") * C((1-newline)^0)
+ + P("3:") * (P("false") * Cc(false) + P("true") * Cc(true))
+ + S("4568") * P(":") * Ct(number^1)
+ + P("7:") * Ct(Ct(number * number^-5)^1)
+
+local pattern_tab = Cf ( Carg(1) * (Cg(variable * newline^0)^0), rawset)
+
+local variable =
+ P("1:") * number
+ + P("2:") * C((1-newline)^0)
+ + P("3:") * (P("false") * Cc(false) + P("true") * Cc(true))
+ + S("4568") * P(":") * number^1
+ + P("7:") * (number * number^-5)^1
+
+local pattern_lst = (variable * newline^0)^0
metapost.variables = { } -- to be stacked
metapost.llx = 0 -- to be stacked
@@ -290,7 +308,7 @@ metapost.lly = 0 -- to be stacked
metapost.urx = 0 -- to be stacked
metapost.ury = 0 -- to be stacked
-function commands.mprunvar(key,n)
+function commands.mprunvar(key,n) -- should be defined in another lib
local value = metapost.variables[key]
if value ~= nil then
local tvalue = type(value)
@@ -311,6 +329,14 @@ function commands.mprunvar(key,n)
end
end
+function metapost.untagvariable(str,variables)
+ if variables == false then
+ return lpegmatch(pattern_lst,str)
+ else
+ return lpegmatch(pattern_tab,str,1,variables or { })
+ end
+end
+
function metapost.flush(result,flusher,askedfig)
if result then
local figures = result.fig
@@ -366,7 +392,7 @@ function metapost.flush(result,flusher,askedfig)
if objecttype == "start_bounds" or objecttype == "stop_bounds" then
-- skip
elseif objecttype == "special" then
- lpegmatch(pattern,object.prescript,1,variables)
+ lpegmatch(pattern_key,object.prescript,1,variables)
elseif objecttype == "start_clip" then
t[#t+1] = "q"
flushnormalpath(object.path,t,false)
diff --git a/tex/context/base/mult-fun.lua b/tex/context/base/mult-fun.lua
index 3867489bf..3167fe7bf 100644
--- a/tex/context/base/mult-fun.lua
+++ b/tex/context/base/mult-fun.lua
@@ -100,6 +100,6 @@ return {
--
"decorated", "redecorated", "undecorated",
--
- "passvariable",
+ "passvariable", "tostring"
},
}
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index e2c3f3255..86c2ca88a 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index 82a45e683..931f19bde 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/strc-bkm.lua b/tex/context/base/strc-bkm.lua
index d9c268ce4..13508e820 100644
--- a/tex/context/base/strc-bkm.lua
+++ b/tex/context/base/strc-bkm.lua
@@ -85,7 +85,7 @@ end
local function stripped(str) -- kind of generic
str = gsub(str,"\\([A-Z]+)","%1") -- \LOGO
str = gsub(str,"\\ "," ") -- \
- str = gsub(str,"\\([A-Za-z]+) *{(.-)}","%1") -- \bla{...}
+ str = gsub(str,"\\([A-Za-z]+) *{(.-)}","%2") -- \bla{...}
str = gsub(str," +"," ") -- spaces
return str
end
diff --git a/tex/context/base/tabl-ntb.mkiv b/tex/context/base/tabl-ntb.mkiv
index 242c3d6fe..2db908f8e 100644
--- a/tex/context/base/tabl-ntb.mkiv
+++ b/tex/context/base/tabl-ntb.mkiv
@@ -1539,6 +1539,7 @@
{\ifcase\c_tabl_tbl_pass \or
\setcharacteralign{#2}{\naturaltablelocalparameter\c!alignmentcharacter}%
\fi
+ \typo_charalign_adapt_font
\signalcharacteralign{#2}{#1}}
\unexpanded\def\tabl_ntb_cell_process_a#1#2[#3]#4% grouping added ! ! !
diff --git a/tex/context/base/tabl-tbl.mkiv b/tex/context/base/tabl-tbl.mkiv
index fa2417712..7a58182aa 100644
--- a/tex/context/base/tabl-tbl.mkiv
+++ b/tex/context/base/tabl-tbl.mkiv
@@ -625,6 +625,7 @@
\def\tabl_tabulate_hook_g % partly expanded
{\ifconditional\c_tabl_auto_align_mode
\signalcharacteralign\c_tabl_tabulate_column{\c_tabl_tabulate_noflines+\plusone}%
+ \typo_charalign_adapt_font
\fi}
\def\tabl_tabulate_set_align#1%
diff --git a/tex/context/base/typo-tal.mkiv b/tex/context/base/typo-tal.mkiv
index a34cb8bb6..fb3955aec 100644
--- a/tex/context/base/typo-tal.mkiv
+++ b/tex/context/base/typo-tal.mkiv
@@ -109,4 +109,27 @@
\def\setfirstpasscharacteralign {\let\checkcharacteralign\gobbleoneargument}
\def\setsecondpasscharacteralign{\let\checkcharacteralign\firstofoneargument}
+%D We need fonts to provide tabular digits that is, the digits need to have the same
+%D width.
+
+\definefontfeature
+ [system:tabnum]
+ [tnum=yes,
+ lnum=no]
+
+\newconditional\c_tabl_ntb_char_align_auto_font \settrue\c_tabl_ntb_char_align_auto_font
+
+\installtexdirective % yes or no ?
+ {typesetters.characteralign.autofont}
+ {\settrue \c_tabl_ntb_char_align_auto_font}
+ {\setfalse\c_tabl_ntb_char_align_auto_font}
+
+\def\m_font_feature_auto_tabnum{system:tabnum}
+
+\def\typo_charalign_adapt_font % slow but seldom used
+ {\ifconditional\c_tabl_ntb_char_align_auto_font
+ \let\m_font_feature_asked\m_font_feature_auto_tabnum
+ \font_feature_reset_add_indeed
+ \fi}
+
\protect \endinput