summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2017-03-21 14:58:43 +0100
committerContext Git Mirror Bot <phg42.2a@gmail.com>2017-03-21 14:58:43 +0100
commit8516f1b516a309aebe2194af1c049dbfe76635e5 (patch)
tree51f6289fb13f673e03f96a0f4e0aff8eece0780a
parent8e0089484acf80066e7393b1245d59dda211be09 (diff)
downloadcontext-8516f1b516a309aebe2194af1c049dbfe76635e5.tar.gz
2017-03-21 14:27:00
-rw-r--r--doc/context/documents/general/qrcs/setup-cs.pdfbin799421 -> 799410 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-de.pdfbin801322 -> 801327 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-en.pdfbin804058 -> 804059 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-fr.pdfbin799227 -> 799227 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-it.pdfbin799575 -> 799573 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-nl.pdfbin796501 -> 796139 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-ro.pdfbin796445 -> 796447 bytes
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-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-shp.lua57
-rw-r--r--tex/context/base/mkiv/font-ttf.lua65
-rw-r--r--tex/context/base/mkiv/sort-ini.lua7
-rw-r--r--tex/context/base/mkiv/sort-lan.lua83
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin25633 -> 25644 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin422419 -> 422422 bytes
-rw-r--r--tex/context/base/mkiv/strc-reg.lua2
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin804058 -> 804059 bytes
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin60772 -> 60772 bytes
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua59
21 files changed, 168 insertions, 113 deletions
diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf
index dfd26b22c..d09ee2552 100644
--- a/doc/context/documents/general/qrcs/setup-cs.pdf
+++ b/doc/context/documents/general/qrcs/setup-cs.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf
index 9b138a715..d6fdd710d 100644
--- a/doc/context/documents/general/qrcs/setup-de.pdf
+++ b/doc/context/documents/general/qrcs/setup-de.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf
index 496d93c5f..e24960fd7 100644
--- a/doc/context/documents/general/qrcs/setup-en.pdf
+++ b/doc/context/documents/general/qrcs/setup-en.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf
index ed0cb493a..545680a32 100644
--- a/doc/context/documents/general/qrcs/setup-fr.pdf
+++ b/doc/context/documents/general/qrcs/setup-fr.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf
index 52419a337..175c11733 100644
--- a/doc/context/documents/general/qrcs/setup-it.pdf
+++ b/doc/context/documents/general/qrcs/setup-it.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf
index 122590485..7fa843219 100644
--- a/doc/context/documents/general/qrcs/setup-nl.pdf
+++ b/doc/context/documents/general/qrcs/setup-nl.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf
index ce6fe75a1..a697b3486 100644
--- a/doc/context/documents/general/qrcs/setup-ro.pdf
+++ b/doc/context/documents/general/qrcs/setup-ro.pdf
Binary files differ
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 547fdc99d..e2bd35d0e 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2017.03.20 17:33}
+\newcontextversion{2017.03.21 14:21}
%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/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index 334f20b95..b6b570e81 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2017.03.20 17:33}
+\edef\contextversion{2017.03.21 14:21}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index ec63ac14b..2b9f458b6 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{2017.03.20 17:33}
+\newcontextversion{2017.03.21 14:21}
%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 0a70af437..9bd5b1aba 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{2017.03.20 17:33}
+\edef\contextversion{2017.03.21 14:21}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/font-shp.lua b/tex/context/base/mkiv/font-shp.lua
index 9447af94c..6e21848a4 100644
--- a/tex/context/base/mkiv/font-shp.lua
+++ b/tex/context/base/mkiv/font-shp.lua
@@ -298,26 +298,41 @@ local f_m = string.formatters["%F %F m"]
local function segmentstopdf(segments,factor,bt,et)
local t = { }
+ local m = 0
local n = #segments
+ local d = false
for i=1,n do
local s = segments[i]
- local m = #s
- local w = s[m]
+ local w = s[#s]
if w == "c" then
- t[i] = f_c(s[1]*factor,s[2]*factor,s[3]*factor,s[4]*factor,s[5]*factor,s[6]*factor)
+ m = m + 1
+ t[m] = f_c(s[1]*factor,s[2]*factor,s[3]*factor,s[4]*factor,s[5]*factor,s[6]*factor)
elseif w == "l" then
- t[i] = f_l(s[1]*factor,s[2]*factor)
+ m = m + 1
+ t[m] = f_l(s[1]*factor,s[2]*factor)
elseif w == "m" then
- t[i] = f_m(s[1]*factor,s[2]*factor)
- else
- t[i] = ""
+ m = m + 1
+ t[m] = f_m(s[1]*factor,s[2]*factor)
+ elseif w == "q" then
+ local p = segments[i-1]
+ local n = #p
+ local l_x, l_y = factor*p[n-2], factor*p[n-1]
+ local m_x, m_y = factor*s[1], factor*s[2]
+ local r_x, r_y = factor*s[3], factor*s[4]
+ m = m + 1
+ t[m] = f_c (
+ l_x + 2/3 * (m_x-l_x), l_y + 2/3 * (m_y-l_y),
+ r_x + 2/3 * (m_x-r_x), r_y + 2/3 * (m_y-r_y),
+ r_x, r_y
+ )
end
end
- t[n+1] = "h f" -- B*
+ m = m + 1
+ t[m] = "h f" -- B*
if bt and et then
t[0] = bt
- t[n+2] = et
- return concat(t,"\n",0,n+2)
+ t[m+1] = et
+ return concat(t,"\n",0,m+1)
else
return concat(t,"\n")
end
@@ -379,13 +394,17 @@ otf.features.register {
local streams = fonts.hashes.streams
-callback.register("glyph_stream_provider",function(id,index,mode)
- if id > 0 then
- local streams = streams[id].streams
- -- print(id,index,streams[index])
- if streams then
- return streams[index] or ""
+if callbacks.supported.glyph_stream_provider then
+
+ callback.register("glyph_stream_provider",function(id,index,mode)
+ if id > 0 then
+ local streams = streams[id].streams
+ -- print(id,index,streams[index])
+ if streams then
+ return streams[index] or ""
+ end
end
- end
- return ""
- end)
+ return ""
+ end)
+
+end
diff --git a/tex/context/base/mkiv/font-ttf.lua b/tex/context/base/mkiv/font-ttf.lua
index d222de4ba..96c1d165a 100644
--- a/tex/context/base/mkiv/font-ttf.lua
+++ b/tex/context/base/mkiv/font-ttf.lua
@@ -135,11 +135,10 @@ end
-- begin of converter
local function curveto(m_x,m_y,l_x,l_y,r_x,r_y) -- todo: inline this
- return {
+ return
l_x + 2/3 *(m_x-l_x), l_y + 2/3 *(m_y-l_y),
r_x + 2/3 *(m_x-r_x), r_y + 2/3 *(m_y-r_y),
- r_x, r_y, "c" -- "curveto"
- }
+ r_x, r_y, "c"
end
-- We could omit the operator which saves some 10%:
@@ -228,9 +227,10 @@ end
-- round or not ?
+-- local quadratic = true -- both methods work, todo: install a directive
+local quadratic = false
+
local function contours2outlines_normal(glyphs,shapes) -- maybe accept the bbox overhead
- local quadratic = true
- -- local quadratic = false
for index=1,#glyphs do
local shape = shapes[index]
if shape then
@@ -305,7 +305,7 @@ local function contours2outlines_normal(glyphs,shapes) -- maybe accept the bbox
if quadratic then
segments[nofsegments] = { x1, y1, x2, y2, "q" } -- "quadraticto"
else
- x1, x2, x2, y2, px, py = curveto(x1, x2, px, py, x2, y2)
+ x1, y1, x2, y2, px, py = curveto(x1, y1, px, py, x2, y2)
segments[nofsegments] = { x1, y1, x2, y2, px, py, "c" } -- "curveto"
end
control_pt = false
@@ -316,7 +316,7 @@ local function contours2outlines_normal(glyphs,shapes) -- maybe accept the bbox
if quadratic then
segments[nofsegments] = { x1, y1, x2, y2, "q" } -- "quadraticto"
else
- x1, x2, x2, y2, px, py = curveto(x1, x2, px, py, x2, y2)
+ x1, y1, x2, y2, px, py = curveto(x1, y1, px, py, x2, y2)
segments[nofsegments] = { x1, y1, x2, y2, px, py, "c" } -- "curveto"
end
control_pt = current_pt
@@ -327,17 +327,16 @@ local function contours2outlines_normal(glyphs,shapes) -- maybe accept the bbox
-- we're already done, probably a simple curve
else
nofsegments = nofsegments + 1
+ local x2, y2 = first_pt[1], first_pt[2]
if not control_pt then
- segments[nofsegments] = { first_pt[1], first_pt[2], "l" } -- "lineto"
+ segments[nofsegments] = { x2, y2, "l" } -- "lineto"
elseif quadratic then
local x1, y1 = control_pt[1], control_pt[2]
- -- local x2, y2 = first_pt[1], first_pt[2]
- segments[nofsegments] = { x1, y1, first_pt[1], first_pt[2], "q" } -- "quadraticto"
+ segments[nofsegments] = { x1, y1, x2, y2, "q" } -- "quadraticto"
else
local x1, y1 = control_pt[1], control_pt[2]
- local x2, y2 = first_pt[1], first_pt[2]
- x1, x2, x2, y2, px, py = curveto(x1, x2, px, py, x2, y2)
- segments[nofsegments] = { x1, y1, y2, y2, px, py, "c" } -- "curveto"
+ x1, y1, x2, y2, px, py = curveto(x1, y1, px, py, x2, y2)
+ segments[nofsegments] = { x1, y1, x2, y2, px, py, "c" } -- "curveto"
-- px, py = x2, y2
end
end
@@ -352,8 +351,6 @@ local function contours2outlines_normal(glyphs,shapes) -- maybe accept the bbox
end
local function contours2outlines_shaped(glyphs,shapes,keepcurve)
- local quadratic = true
- -- local quadratic = false
for index=1,#glyphs do
local shape = shapes[index]
if shape then
@@ -447,7 +444,7 @@ local function contours2outlines_shaped(glyphs,shapes,keepcurve)
segments[nofsegments] = { x1, y1, x2, y2, "q" } -- "quadraticto"
end
else
- x1, x2, x2, y2, px, py = curveto(x1, x2, px, py, x2, y2)
+ x1, y1, x2, y2, px, py = curveto(x1, y1, px, py, x2, y2)
if x1 < xmin then xmin = x1 elseif x1 > xmax then xmax = x1 end
if y1 < ymin then ymin = y1 elseif y1 > ymax then ymax = y1 end
if x2 < xmin then xmin = x2 elseif x2 > xmax then xmax = x2 end
@@ -471,7 +468,7 @@ local function contours2outlines_shaped(glyphs,shapes,keepcurve)
segments[nofsegments] = { x1, y1, x2, y2, "q" } -- "quadraticto"
end
else
- x1, x2, x2, y2, px, py = curveto(x1, x2, px, py, x2, y2)
+ x1, y1, x2, y2, px, py = curveto(x1, y1, px, py, x2, y2)
if x1 < xmin then xmin = x1 elseif x1 > xmax then xmax = x1 end
if y1 < ymin then ymin = y1 elseif y1 > ymax then ymax = y1 end
if x2 < xmin then xmin = x2 elseif x2 > xmax then xmax = x2 end
@@ -494,30 +491,28 @@ local function contours2outlines_shaped(glyphs,shapes,keepcurve)
nofsegments = nofsegments + 1
segments[nofsegments] = { first_pt[1], first_pt[2], "l" } -- "lineto"
end
- elseif quadratic then
- local x1, y1 = control_pt[1], control_pt[2]
- -- local x2, y2 = first_pt[1], first_pt[2]
- if x1 < xmin then xmin = x1 elseif x1 > xmax then xmax = x1 end
- if y1 < ymin then ymin = y1 elseif y1 > ymax then ymax = y1 end
- if keepcurve then
- nofsegments = nofsegments + 1
- segments[nofsegments] = { x1, y1, first_pt[1], first_pt[2], "q" } -- "quadraticto"
- end
else
local x1, y1 = control_pt[1], control_pt[2]
local x2, y2 = first_pt[1], first_pt[2]
- x1, x2, x2, y2, px, py = curveto(x1, x2, px, py, x2, y2)
if x1 < xmin then xmin = x1 elseif x1 > xmax then xmax = x1 end
if y1 < ymin then ymin = y1 elseif y1 > ymax then ymax = y1 end
- if x2 < xmin then xmin = x2 elseif x2 > xmax then xmax = x2 end
- if y2 < ymin then ymin = y2 elseif y2 > ymax then ymax = y2 end
- if px < xmin then xmin = px elseif px > xmax then xmax = px end
- if py < ymin then ymin = py elseif py > ymax then ymax = py end
- if keepcurve then
- nofsegments = nofsegments + 1
- segments[nofsegments] = { x1, y1, y2, y2, px, py, "c" } -- "curveto"
+ if quadratic then
+ if keepcurve then
+ nofsegments = nofsegments + 1
+ segments[nofsegments] = { x1, y1, x2, y2, "q" } -- "quadraticto"
+ end
+ else
+ x1, y1, x2, y2, px, py = curveto(x1, y1, px, py, x2, y2)
+ if x2 < xmin then xmin = x2 elseif x2 > xmax then xmax = x2 end
+ if y2 < ymin then ymin = y2 elseif y2 > ymax then ymax = y2 end
+ if px < xmin then xmin = px elseif px > xmax then xmax = px end
+ if py < ymin then ymin = py elseif py > ymax then ymax = py end
+ if keepcurve then
+ nofsegments = nofsegments + 1
+ segments[nofsegments] = { x1, y1, x2, y2, px, py, "c" } -- "curveto"
+ end
+ -- px, py = x2, y2
end
- -- px, py = x2, y2
end
end
end
diff --git a/tex/context/base/mkiv/sort-ini.lua b/tex/context/base/mkiv/sort-ini.lua
index 3266425cb..7cd28d08f 100644
--- a/tex/context/base/mkiv/sort-ini.lua
+++ b/tex/context/base/mkiv/sort-ini.lua
@@ -50,7 +50,7 @@ just hook those into the replacer code that we reun beforehand.</p>
have language etc properties that then can be used.</p>
]]--
-local gsub, rep, sub, sort, concat, tohash, format = string.gsub, string.rep, string.sub, table.sort, table.concat, table.tohash, string.format
+local gsub, find, rep, sub, sort, concat, tohash, format = string.gsub, string.find, string.rep, string.sub, table.sort, table.concat, table.tohash, string.format
local utfbyte, utfchar, utfcharacters, utfvalues = utf.byte, utf.char, utf.characters, utf.values
local next, type, tonumber, rawget, rawset = next, type, tonumber, rawget, rawset
local P, Cs, R, S, lpegmatch = lpeg.P, lpeg.Cs, lpeg.R, lpeg.S, lpeg.match
@@ -557,7 +557,10 @@ function splitters.utf(str,checked) -- we could append m and u but this is clean
-- todo make an lpeg for this
for k=1,#replacements do
local v = replacements[k]
- str = gsub(str,v[1],v[2])
+ local s = v[1]
+ if find(str,s) then
+ str = gsub(str,s,v[2])
+ end
end
end
local m_case, z_case, p_case, m_mapping, z_mapping, p_mapping, char, byte, n = { }, { }, { }, { }, { }, { }, { }, { }, 0
diff --git a/tex/context/base/mkiv/sort-lan.lua b/tex/context/base/mkiv/sort-lan.lua
index e84692afc..21aabf3eb 100644
--- a/tex/context/base/mkiv/sort-lan.lua
+++ b/tex/context/base/mkiv/sort-lan.lua
@@ -59,7 +59,7 @@ definitions["en"] = { parent = "default" }
definitions['nl'] = {
parent = 'default',
replacements = {
- { "ij", 'y' }, { "IJ", 'Y' }, -- hm
+ -- { "ij", 'y' }, { "IJ", 'Y' }, -- no longer, or will be option
},
}
@@ -593,6 +593,35 @@ definitions["is"] = {
--- Greek
definitions["gr"] = {
+ replacements = {
+ { "α", "αa" }, { "ά", "αb" }, { "ὰ", "αc" }, { "ὰ", "αd" }, { "ᾳ", "αe" },
+ { "ἀ", "αf" }, { "ἁ", "αg" }, { "ἄ", "αh" }, { "ἂ", "αi" }, { "ἆ", "αj" },
+ { "ἁ", "αk" }, { "ἅ", "αl" }, { "ἃ", "αm" }, { "ἇ", "αn" }, { "ᾁ", "αo" },
+ { "ᾴ", "αp" }, { "ᾲ", "αq" }, { "ᾷ", "αr" }, { "ᾄ", "αs" }, { "ὰ", "αt" },
+ { "ᾅ", "αu" }, { "ᾃ", "αv" }, { "ᾆ", "αw" }, { "ᾇ", "αx" },
+ { "ε", "εa" }, { "έ", "εb" }, { "ὲ", "εc" }, { "ἐ", "εd" }, { "ἔ", "εe" },
+ { "ἒ", "εf" }, { "ἑ", "εg" }, { "ἕ", "εh" }, { "ἓ", "εi" },
+ { "η", "ηa" }, { "η", "ηb" }, { "ή", "ηc" }, { "ὴ", "ηd" }, { "ῆ", "ηe" },
+ { "ῃ", "ηf" }, { "ἠ", "ηg" }, { "ἤ", "ηh" }, { "ἢ", "ηi" }, { "ἦ", "ηj" },
+ { "ᾐ", "ηk" }, { "ἡ", "ηl" }, { "ἥ", "ηm" }, { "ἣ", "ηn" }, { "ἧ", "ηo" },
+ { "ᾑ", "ηp" }, { "ῄ", "ηq" }, { "ῂ", "ηr" }, { "ῇ", "ηs" }, { "ᾔ", "ηt" },
+ { "ᾒ", "ηu" }, { "ᾕ", "ηv" }, { "ᾓ", "ηw" }, { "ᾖ", "ηx" }, { "ᾗ", "ηy" },
+ { "ι", "ιa" }, { "ί", "ιb" }, { "ὶ", "ιc" }, { "ῖ", "ιd" }, { "ἰ", "ιe" },
+ { "ἴ", "ιf" }, { "ἲ", "ιg" }, { "ἶ", "ιh" }, { "ἱ", "ιi" }, { "ἵ", "ιj" },
+ { "ἳ", "ιk" }, { "ἷ", "ιl" }, { "ϊ", "ιm" }, { "ΐ", "ιn" }, { "ῒ", "ιo" },
+ { "ῗ", "ιp" },
+ { "ο", "οa" }, { "ό", "οb" }, { "ὸ", "οc" }, { "ὀ", "οd" }, { "ὄ", "οe" },
+ { "ὂ", "οf" }, { "ὁ", "οg" }, { "ὅ", "οh" }, { "ὃ", "οi" },
+ { "ρ", "ρa" }, { "ῤ", "ῤb" }, { "ῥ", "ῥc" },
+ { "υ", "υa" }, { "ύ", "υb" }, { "ὺ", "υc" }, { "ῦ", "υd" }, { "ὐ", "υe" },
+ { "ὔ", "υf" }, { "ὒ", "υg" }, { "ὖ", "υh" }, { "ὑ", "υi" }, { "ὕ", "υj" },
+ { "ὓ", "υk" }, { "ὗ", "υl" }, { "ϋ", "υm" }, { "ΰ", "υn" }, { "ῢ", "υo" },
+ { "ω", "ωa" }, { "ώ", "ωb" }, { "ὼ", "ωc" }, { "ῶ", "ωd" }, { "ῳ", "ωe" },
+ { "ὠ", "ωf" }, { "ὤ", "ωg" }, { "ὢ", "ωh" }, { "ὦ", "ωi" }, { "ᾠ", "ωj" },
+ { "ὡ", "ωk" }, { "ὥ", "ωl" }, { "ὣ", "ωm" }, { "ὧ", "ωn" }, { "ᾡ", "ωo" },
+ { "ῴ", "ωp" }, { "ῲ", "ωq" }, { "ῷ", "ωr" }, { "ᾤ", "ωs" }, { "ᾢ", "ωt" },
+ { "ᾥ", "ωu" }, { "ᾣ", "ωv" }, { "ᾦ", "ωw" }, { "ᾧ", "ωx" },
+ },
entries = {
["α"] = "α", ["ά"] = "α", ["ὰ"] = "α", ["ᾶ"] = "α", ["ᾳ"] = "α",
["ἀ"] = "α", ["ἁ"] = "α", ["ἄ"] = "α", ["ἂ"] = "α", ["ἆ"] = "α",
@@ -617,29 +646,34 @@ definitions["gr"] = {
["υ"] = "υ", ["ύ"] = "υ", ["ὺ"] = "υ", ["ῦ"] = "υ", ["ὐ"] = "υ",
["ὔ"] = "υ", ["ὒ"] = "υ", ["ὖ"] = "υ", ["ὑ"] = "υ", ["ὕ"] = "υ",
["ὓ"] = "υ", ["ὗ"] = "υ", ["ϋ"] = "υ", ["ΰ"] = "υ", ["ῢ"] = "υ",
- ["ῧ"] = "υ", ["φ"] = "φ", ["χ"] = "χ", ["ψ"] = "ω", ["ω"] = "ω",
+ ["ῧ"] = "υ", ["φ"] = "φ", ["χ"] = "χ", ["ψ"] = "ψ", ["ω"] = "ω",
["ώ"] = "ω", ["ὼ"] = "ω", ["ῶ"] = "ω", ["ῳ"] = "ω", ["ὠ"] = "ω",
["ὤ"] = "ω", ["ὢ"] = "ω", ["ὦ"] = "ω", ["ᾠ"] = "ω", ["ὡ"] = "ω",
["ὥ"] = "ω", ["ὣ"] = "ω", ["ὧ"] = "ω", ["ᾡ"] = "ω", ["ῴ"] = "ω",
["ῲ"] = "ω", ["ῷ"] = "ω", ["ᾤ"] = "ω", ["ᾢ"] = "ω", ["ᾥ"] = "ω",
["ᾣ"] = "ω", ["ᾦ"] = "ω", ["ᾧ"] = "ω",
},
+ -- orders = {
+ -- "α", "ά", "ὰ", "ᾶ", "ᾳ", "ἀ", "ἁ", "ἄ", "ἂ", "ἆ",
+ -- "ἁ", "ἅ", "ἃ", "ἇ", "ᾁ", "ᾴ", "ᾲ", "ᾷ", "ᾄ", "ᾂ",
+ -- "ᾅ", "ᾃ", "ᾆ", "ᾇ", "β", "γ", "δ", "ε", "έ", "ὲ",
+ -- "ἐ", "ἔ", "ἒ", "ἑ", "ἕ", "ἓ", "ζ", "η", "η", "ή",
+ -- "ὴ", "ῆ", "ῃ", "ἠ", "ἤ", "ἢ", "ἦ", "ᾐ", "ἡ", "ἥ",
+ -- "ἣ", "ἧ", "ᾑ", "ῄ", "ῂ", "ῇ", "ᾔ", "ᾒ", "ᾕ", "ᾓ",
+ -- "ᾖ", "ᾗ", "θ", "ι", "ί", "ὶ", "ῖ", "ἰ", "ἴ", "ἲ",
+ -- "ἶ", "ἱ", "ἵ", "ἳ", "ἷ", "ϊ", "ΐ", "ῒ", "ῗ", "κ",
+ -- "λ", "μ", "ν", "ξ", "ο", "ό", "ὸ", "ὀ", "ὄ", "ὂ",
+ -- "ὁ", "ὅ", "ὃ", "π", "ρ", "ῤ", "ῥ", "σ", "ς", "τ",
+ -- "υ", "ύ", "ὺ", "ῦ", "ὐ", "ὔ", "ὒ", "ὖ", "ὑ", "ὕ",
+ -- "ὓ", "ὗ", "ϋ", "ΰ", "ῢ", "ῧ", "φ", "χ", "ψ", "ω",
+ -- "ώ", "ὼ", "ῶ", "ῳ", "ὠ", "ὤ", "ὢ", "ὦ", "ᾠ", "ὡ",
+ -- "ὥ", "ὣ", "ὧ", "ᾡ", "ῴ", "ῲ", "ῷ", "ᾤ", "ᾢ", "ᾥ",
+ -- "ᾣ", "ᾦ", "ᾧ",
+ -- },
orders = {
- "α", "ά", "ὰ", "ᾶ", "ᾳ", "ἀ", "ἁ", "ἄ", "ἂ", "ἆ",
- "ἁ", "ἅ", "ἃ", "ἇ", "ᾁ", "ᾴ", "ᾲ", "ᾷ", "ᾄ", "ᾂ",
- "ᾅ", "ᾃ", "ᾆ", "ᾇ", "β", "γ", "δ", "ε", "έ", "ὲ",
- "ἐ", "ἔ", "ἒ", "ἑ", "ἕ", "ἓ", "ζ", "η", "η", "ή",
- "ὴ", "ῆ", "ῃ", "ἠ", "ἤ", "ἢ", "ἦ", "ᾐ", "ἡ", "ἥ",
- "ἣ", "ἧ", "ᾑ", "ῄ", "ῂ", "ῇ", "ᾔ", "ᾒ", "ᾕ", "ᾓ",
- "ᾖ", "ᾗ", "θ", "ι", "ί", "ὶ", "ῖ", "ἰ", "ἴ", "ἲ",
- "ἶ", "ἱ", "ἵ", "ἳ", "ἷ", "ϊ", "ΐ", "ῒ", "ῗ", "κ",
- "λ", "μ", "ν", "ξ", "ο", "ό", "ὸ", "ὀ", "ὄ", "ὂ",
- "ὁ", "ὅ", "ὃ", "π", "ρ", "ῤ", "ῥ", "σ", "ς", "τ",
- "υ", "ύ", "ὺ", "ῦ", "ὐ", "ὔ", "ὒ", "ὖ", "ὑ", "ὕ",
- "ὓ", "ὗ", "ϋ", "ΰ", "ῢ", "ῧ", "φ", "χ", "ψ", "ω",
- "ώ", "ὼ", "ῶ", "ῳ", "ὠ", "ὤ", "ὢ", "ὦ", "ᾠ", "ὡ",
- "ὥ", "ὣ", "ὧ", "ᾡ", "ῴ", "ῲ", "ῷ", "ᾤ", "ᾢ", "ᾥ",
- "ᾣ", "ᾦ", "ᾧ",
+ "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ",
+ "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "σ", "ς", "τ",
+ "υ", "φ", "χ", "ψ", "ω",
},
}
@@ -722,12 +756,17 @@ definitions["es"] = {
["u"] = "u", ["ú"] = "u", ["ü"] = "u", ["v"] = "v", ["w"] = "w",
["x"] = "x", ["y"] = "y", ["z"] = "z",
},
+ -- orders = {
+ -- "a", "á", "b", "c", "d", "e", "é", "f", "g", "h",
+ -- "i", "í", "j", "k", "l", "m", "n", "ñ", "o", "ó",
+ -- "p", "q", "r", "s", "t", "u", "ú", "ü", "v", "w",
+ -- "x", "y", "z",
+ -- },
orders = {
- "a", "á", "b", "c", "d", "e", "é", "f", "g", "h",
- "i", "í", "j", "k", "l", "m", "n", "ñ", "o", "ó",
- "p", "q", "r", "s", "t", "u", "ú", "ü", "v", "w",
- "x", "y", "z",
- }
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
+ "k", "l", "m", "n", "ñ", "o", "p", "q", "r", "s",
+ "t", "u", "v", "w", "x", "y", "z",
+ },
}
--- Portuguese
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 641067bfc..3327fca5f 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 6c11b6984..4710e5c0d 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-reg.lua b/tex/context/base/mkiv/strc-reg.lua
index 51f87a66c..32924ad81 100644
--- a/tex/context/base/mkiv/strc-reg.lua
+++ b/tex/context/base/mkiv/strc-reg.lua
@@ -1073,6 +1073,8 @@ local function collapsepages(pages)
return #pages
end
+-- todo: create an intermediate structure and flush that
+
function registers.flush(data,options,prefixspec,pagespec)
local compress = options.compress
local collapse_singles = compress == v_yes
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index 496d93c5f..e24960fd7 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index d69065fa9..a003f6f03 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index d946dedfd..d5ea30f8b 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 : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 03/20/17 17:33:01
+-- merge date : 03/21/17 14:21:12
do -- begin closure to overcome local limits and interference
@@ -11784,11 +11784,10 @@ local function readnothing(f,nofcontours)
}
end
local function curveto(m_x,m_y,l_x,l_y,r_x,r_y)
- return {
+ return
l_x+2/3*(m_x-l_x),l_y+2/3*(m_y-l_y),
r_x+2/3*(m_x-r_x),r_y+2/3*(m_y-r_y),
- r_x,r_y,"c"
- }
+ r_x,r_y,"c"
end
local function applyaxis(glyph,shape,points,deltas)
if points then
@@ -11840,8 +11839,8 @@ local function applyaxis(glyph,shape,points,deltas)
end
end
end
+local quadratic=false
local function contours2outlines_normal(glyphs,shapes)
- local quadratic=true
for index=1,#glyphs do
local shape=shapes[index]
if shape then
@@ -11914,7 +11913,7 @@ local function contours2outlines_normal(glyphs,shapes)
if quadratic then
segments[nofsegments]={ x1,y1,x2,y2,"q" }
else
- x1,x2,x2,y2,px,py=curveto(x1,x2,px,py,x2,y2)
+ x1,y1,x2,y2,px,py=curveto(x1,y1,px,py,x2,y2)
segments[nofsegments]={ x1,y1,x2,y2,px,py,"c" }
end
control_pt=false
@@ -11925,7 +11924,7 @@ local function contours2outlines_normal(glyphs,shapes)
if quadratic then
segments[nofsegments]={ x1,y1,x2,y2,"q" }
else
- x1,x2,x2,y2,px,py=curveto(x1,x2,px,py,x2,y2)
+ x1,y1,x2,y2,px,py=curveto(x1,y1,px,py,x2,y2)
segments[nofsegments]={ x1,y1,x2,y2,px,py,"c" }
end
control_pt=current_pt
@@ -11935,16 +11934,16 @@ local function contours2outlines_normal(glyphs,shapes)
if first_pt==last_pt then
else
nofsegments=nofsegments+1
+ local x2,y2=first_pt[1],first_pt[2]
if not control_pt then
- segments[nofsegments]={ first_pt[1],first_pt[2],"l" }
+ segments[nofsegments]={ x2,y2,"l" }
elseif quadratic then
local x1,y1=control_pt[1],control_pt[2]
- segments[nofsegments]={ x1,y1,first_pt[1],first_pt[2],"q" }
+ segments[nofsegments]={ x1,y1,x2,y2,"q" }
else
local x1,y1=control_pt[1],control_pt[2]
- local x2,y2=first_pt[1],first_pt[2]
- x1,x2,x2,y2,px,py=curveto(x1,x2,px,py,x2,y2)
- segments[nofsegments]={ x1,y1,y2,y2,px,py,"c" }
+ x1,y1,x2,y2,px,py=curveto(x1,y1,px,py,x2,y2)
+ segments[nofsegments]={ x1,y1,x2,y2,px,py,"c" }
end
end
end
@@ -11957,7 +11956,6 @@ local function contours2outlines_normal(glyphs,shapes)
end
end
local function contours2outlines_shaped(glyphs,shapes,keepcurve)
- local quadratic=true
for index=1,#glyphs do
local shape=shapes[index]
if shape then
@@ -12048,7 +12046,7 @@ local function contours2outlines_shaped(glyphs,shapes,keepcurve)
segments[nofsegments]={ x1,y1,x2,y2,"q" }
end
else
- x1,x2,x2,y2,px,py=curveto(x1,x2,px,py,x2,y2)
+ x1,y1,x2,y2,px,py=curveto(x1,y1,px,py,x2,y2)
if x1<xmin then xmin=x1 elseif x1>xmax then xmax=x1 end
if y1<ymin then ymin=y1 elseif y1>ymax then ymax=y1 end
if x2<xmin then xmin=x2 elseif x2>xmax then xmax=x2 end
@@ -12072,7 +12070,7 @@ local function contours2outlines_shaped(glyphs,shapes,keepcurve)
segments[nofsegments]={ x1,y1,x2,y2,"q" }
end
else
- x1,x2,x2,y2,px,py=curveto(x1,x2,px,py,x2,y2)
+ x1,y1,x2,y2,px,py=curveto(x1,y1,px,py,x2,y2)
if x1<xmin then xmin=x1 elseif x1>xmax then xmax=x1 end
if y1<ymin then ymin=y1 elseif y1>ymax then ymax=y1 end
if x2<xmin then xmin=x2 elseif x2>xmax then xmax=x2 end
@@ -12094,27 +12092,26 @@ local function contours2outlines_shaped(glyphs,shapes,keepcurve)
nofsegments=nofsegments+1
segments[nofsegments]={ first_pt[1],first_pt[2],"l" }
end
- elseif quadratic then
- local x1,y1=control_pt[1],control_pt[2]
- if x1<xmin then xmin=x1 elseif x1>xmax then xmax=x1 end
- if y1<ymin then ymin=y1 elseif y1>ymax then ymax=y1 end
- if keepcurve then
- nofsegments=nofsegments+1
- segments[nofsegments]={ x1,y1,first_pt[1],first_pt[2],"q" }
- end
else
local x1,y1=control_pt[1],control_pt[2]
local x2,y2=first_pt[1],first_pt[2]
- x1,x2,x2,y2,px,py=curveto(x1,x2,px,py,x2,y2)
if x1<xmin then xmin=x1 elseif x1>xmax then xmax=x1 end
if y1<ymin then ymin=y1 elseif y1>ymax then ymax=y1 end
- if x2<xmin then xmin=x2 elseif x2>xmax then xmax=x2 end
- if y2<ymin then ymin=y2 elseif y2>ymax then ymax=y2 end
- if px<xmin then xmin=px elseif px>xmax then xmax=px end
- if py<ymin then ymin=py elseif py>ymax then ymax=py end
- if keepcurve then
- nofsegments=nofsegments+1
- segments[nofsegments]={ x1,y1,y2,y2,px,py,"c" }
+ if quadratic then
+ if keepcurve then
+ nofsegments=nofsegments+1
+ segments[nofsegments]={ x1,y1,x2,y2,"q" }
+ end
+ else
+ x1,y1,x2,y2,px,py=curveto(x1,y1,px,py,x2,y2)
+ if x2<xmin then xmin=x2 elseif x2>xmax then xmax=x2 end
+ if y2<ymin then ymin=y2 elseif y2>ymax then ymax=y2 end
+ if px<xmin then xmin=px elseif px>xmax then xmax=px end
+ if py<ymin then ymin=py elseif py>ymax then ymax=py end
+ if keepcurve then
+ nofsegments=nofsegments+1
+ segments[nofsegments]={ x1,y1,x2,y2,px,py,"c" }
+ end
end
end
end