diff options
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 Binary files differindex dfd26b22c..d09ee2552 100644 --- a/doc/context/documents/general/qrcs/setup-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf Binary files differindex 9b138a715..d6fdd710d 100644 --- a/doc/context/documents/general/qrcs/setup-de.pdf +++ b/doc/context/documents/general/qrcs/setup-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf Binary files differindex 496d93c5f..e24960fd7 100644 --- a/doc/context/documents/general/qrcs/setup-en.pdf +++ b/doc/context/documents/general/qrcs/setup-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf Binary files differindex ed0cb493a..545680a32 100644 --- a/doc/context/documents/general/qrcs/setup-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf Binary files differindex 52419a337..175c11733 100644 --- a/doc/context/documents/general/qrcs/setup-it.pdf +++ b/doc/context/documents/general/qrcs/setup-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf Binary files differindex 122590485..7fa843219 100644 --- a/doc/context/documents/general/qrcs/setup-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf Binary files differindex ce6fe75a1..a697b3486 100644 --- a/doc/context/documents/general/qrcs/setup-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-ro.pdf 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 Binary files differindex 641067bfc..3327fca5f 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 6c11b6984..4710e5c0d 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf 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 Binary files differindex 496d93c5f..e24960fd7 100644 --- a/tex/context/interface/mkiv/i-context.pdf +++ b/tex/context/interface/mkiv/i-context.pdf diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf Binary files differindex d69065fa9..a003f6f03 100644 --- a/tex/context/interface/mkiv/i-readme.pdf +++ b/tex/context/interface/mkiv/i-readme.pdf 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 |