From d643b65f7ab840157f538914b07f8d3cddf94bec Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 7 Feb 2023 19:22:47 +0100 Subject: 2023-02-07 19:04:00 --- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-cs.mkii | 4 ++ tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/font-cff.lua | 80 +++++++++++++-------------- tex/context/base/mkiv/font-enc.lua | 2 +- tex/context/base/mkiv/font-mis.lua | 2 +- tex/context/base/mkiv/font-shp.lua | 2 +- tex/context/base/mkiv/status-files.pdf | Bin 24598 -> 24576 bytes tex/context/base/mkiv/status-lua.pdf | Bin 265646 -> 265606 bytes tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 2 +- tex/context/base/mkxl/font-onr.lmt | 14 +++-- tex/context/base/mkxl/font-otl.lmt | 2 +- tex/context/base/mkxl/font-tpk.lmt | 2 +- tex/context/base/mkxl/lpdf-lmt.lmt | 5 ++ tex/context/base/mkxl/math-act.lmt | 14 ++++- tex/context/base/mkxl/math-fnt.lmt | 5 +- tex/context/base/mkxl/math-vfu.lmt | 95 ++++++++++++++++++--------------- tex/context/interface/mkii/keys-cs.xml | 4 ++ 21 files changed, 140 insertions(+), 103 deletions(-) (limited to 'tex/context') diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 37361a1dc..c61c97d8a 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{2023.02.06 17:55} +\newcontextversion{2023.02.07 19:02} %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 ea7523043..b62aa3a85 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{2023.02.06 17:55} +\edef\contextversion{2023.02.07 19:02} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-cs.mkii b/tex/context/base/mkii/mult-cs.mkii index 8f5571627..b8c7f3fda 100644 --- a/tex/context/base/mkii/mult-cs.mkii +++ b/tex/context/base/mkii/mult-cs.mkii @@ -450,6 +450,7 @@ \setinterfacevariable{printable}{tisknutelne} \setinterfacevariable{process}{process} \setinterfacevariable{product}{produkt} +\setinterfacevariable{profile}{profile} \setinterfacevariable{program}{program} \setinterfacevariable{project}{projekt} \setinterfacevariable{protected}{chranene} @@ -591,6 +592,7 @@ \setinterfacevariable{temporary}{docasne} \setinterfacevariable{test}{test} \setinterfacevariable{text}{text} +\setinterfacevariable{textdisplay}{textdisplay} \setinterfacevariable{textnote}{textnote} \setinterfacevariable{three}{tri} \setinterfacevariable{thursday}{ctvrtek} @@ -718,6 +720,7 @@ \setinterfaceconstant{bookmark}{zalozka} \setinterfaceconstant{bottom}{spodek} \setinterfaceconstant{bottomafter}{bottomafter} +\setinterfaceconstant{bottomalign}{bottomalign} \setinterfaceconstant{bottombefore}{bottombefore} \setinterfaceconstant{bottomcolor}{bottomcolor} \setinterfaceconstant{bottomcommand}{bottomcommand} @@ -1332,6 +1335,7 @@ \setinterfaceconstant{toffset}{toffset} \setinterfaceconstant{tolerance}{tolerance} \setinterfaceconstant{top}{vrsek} +\setinterfaceconstant{topalign}{topalign} \setinterfaceconstant{topcolor}{topcolor} \setinterfaceconstant{topcommand}{topcommand} \setinterfaceconstant{topdistance}{vzdalenostvrsku} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 97de2e2d5..d524240e6 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2023.02.06 17:55} +\newcontextversion{2023.02.07 19:02} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index ee8b3bfe0..1e3ce084e 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -49,7 +49,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2023.02.06 17:55} +\edef\contextversion{2023.02.07 19:02} %D Kind of special: diff --git a/tex/context/base/mkiv/font-cff.lua b/tex/context/base/mkiv/font-cff.lua index ee6b843bc..c71c3aef3 100644 --- a/tex/context/base/mkiv/font-cff.lua +++ b/tex/context/base/mkiv/font-cff.lua @@ -1714,7 +1714,8 @@ end -- todo: round in blend - local encode = { } + local encode = { } + local typeone = false -- this eventually can become a helper @@ -1865,7 +1866,7 @@ end -- stack[top] = -t*256 + 251*256 - tab[i+1] - 108 stack[top] = -t*256 + 64148 - tab[i+1] i = i + 2 - elseif version == "cff" then + elseif typeone then local n = 0x1000000 * tab[i+1] + 0x10000 * tab[i+2] + 0x100 * tab[i+3] + tab[i+4] if n >= 0x8000000 then n = n - 0xFFFFFFFF - 1 @@ -2282,13 +2283,14 @@ result = nil return privatedata.nominalwidthx or 0, privatedata.defaultwidthx or 0 end - parsecharstrings = function(fontdata,data,glphs,doshapes,tversion,streams,nobias) + parsecharstrings = function(fontdata,data,glphs,doshapes,tversion,streams,nobias,istypeone) local dictionary = data.dictionaries[1] local charstrings = dictionary.charstrings keepcurve = doshapes version = tversion + typeone = istypeone or false strings = data.strings globals = data.routines or { } locals = dictionary.subroutines or { } @@ -2526,7 +2528,7 @@ local function readnoselect(f,fontdata,data,glyphs,doshapes,version,streams) parseprivates(data,data.dictionaries) readlocals(f,data,dictionary,version) startparsing(fontdata,data,streams) - parsecharstrings(fontdata,data,glyphs,doshapes,version,streams) + parsecharstrings(fontdata,data,glyphs,doshapes,version,streams,false) stopparsing(fontdata,data) end @@ -2746,38 +2748,38 @@ end -- temporary helper needed for checking backend patches -function readers.cffcheck(filename) - local f = io.open(filename,"rb") - if f then - local fontdata = { - glyphs = { }, - } - local header = readheader(f) - if header.major ~= 1 then - report("only version %s is supported for table %a",1,"cff") - return - end - local names = readfontnames(f) - local dictionaries = readtopdictionaries(f) - local strings = readstrings(f) - local glyphs = { } - local data = { - header = header, - names = names, - dictionaries = dictionaries, - strings = strings, - glyphs = glyphs, - nofglyphs = 0, - } - -- - parsedictionaries(data,dictionaries,"cff") - -- - local cid = data.dictionaries[1].cid - if cid and cid.fdselect then - readfdselect(f,fontdata,data,glyphs,false) - else - readnoselect(f,fontdata,data,glyphs,false) - end - return data - end -end +-- function readers.cffcheck(filename) +-- local f = io.open(filename,"rb") +-- if f then +-- local fontdata = { +-- glyphs = { }, +-- } +-- local header = readheader(f) +-- if header.major ~= 1 then +-- report("only version %s is supported for table %a",1,"cff") +-- return +-- end +-- local names = readfontnames(f) +-- local dictionaries = readtopdictionaries(f) +-- local strings = readstrings(f) +-- local glyphs = { } +-- local data = { +-- header = header, +-- names = names, +-- dictionaries = dictionaries, +-- strings = strings, +-- glyphs = glyphs, +-- nofglyphs = 0, +-- } +-- -- +-- parsedictionaries(data,dictionaries,"cff") +-- -- +-- local cid = data.dictionaries[1].cid +-- if cid and cid.fdselect then +-- readfdselect(f,fontdata,data,glyphs,false) +-- else +-- readnoselect(f,fontdata,data,glyphs,false) +-- end +-- return data +-- end +-- end diff --git a/tex/context/base/mkiv/font-enc.lua b/tex/context/base/mkiv/font-enc.lua index 608539c59..f2f0595dd 100644 --- a/tex/context/base/mkiv/font-enc.lua +++ b/tex/context/base/mkiv/font-enc.lua @@ -26,7 +26,7 @@ local report_encoding = logs.reporter("fonts","encoding") local encodings = fonts.encodings or { } fonts.encodings = encodings -encodings.version = 1.03 +encodings.version = 1.04 encodings.cache = containers.define("fonts", "enc", fonts.encodings.version, true) encodings.known = allocate { -- sort of obsolete texnansi = true, diff --git a/tex/context/base/mkiv/font-mis.lua b/tex/context/base/mkiv/font-mis.lua index 42dc0bd3c..f721be0ef 100644 --- a/tex/context/base/mkiv/font-mis.lua +++ b/tex/context/base/mkiv/font-mis.lua @@ -21,7 +21,7 @@ local readers = otf.readers if readers then - otf.version = otf.version or 3.132 + otf.version = otf.version or 3.133 otf.cache = otf.cache or containers.define("fonts", "otl", otf.version, true) function fonts.helpers.getfeatures(name,save) diff --git a/tex/context/base/mkiv/font-shp.lua b/tex/context/base/mkiv/font-shp.lua index 843f75eb8..197a3f1cc 100644 --- a/tex/context/base/mkiv/font-shp.lua +++ b/tex/context/base/mkiv/font-shp.lua @@ -17,7 +17,7 @@ local pfb = fonts.handlers.pfb local hashes = fonts.hashes local identifiers = hashes.identifiers -local version = otf.version or 0.014 +local version = otf.version or 0.015 local shapescache = containers.define("fonts", "shapes", version, true) local streamscache = containers.define("fonts", "streams", version, true) diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index 4395a2a82..cf4d8480a 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 96871e62a..258228978 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index 549404709..9a267bc5f 100644 --- a/tex/context/base/mkxl/cont-new.mkxl +++ b/tex/context/base/mkxl/cont-new.mkxl @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2023.02.06 17:55} +\newcontextversion{2023.02.07 19:02} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl index e51c3d732..143c67ffb 100644 --- a/tex/context/base/mkxl/context.mkxl +++ b/tex/context/base/mkxl/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \immutable\edef\contextformat {\jobname} -\immutable\edef\contextversion{2023.02.06 17:55} +\immutable\edef\contextversion{2023.02.07 19:02} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/font-onr.lmt b/tex/context/base/mkxl/font-onr.lmt index f48b8e545..2c18f6e89 100644 --- a/tex/context/base/mkxl/font-onr.lmt +++ b/tex/context/base/mkxl/font-onr.lmt @@ -44,7 +44,7 @@ afm.version = 1.513 -- incrementing this number one up will force a local pfb = handlers.pfb or { } handlers.pfb = pfb -pfb.version = 1.000 +pfb.version = 1.002 local readers = afm.readers or { } afm.readers = readers @@ -212,6 +212,7 @@ do + C("FontName") * nam + C("FontMatrix") * arr + C("FontBBox") * arr + + C("FontType") * num ) ) / function (t,k,v) t[lower(k)] = v end + P(1) )^0 * Carg(1) @@ -278,8 +279,12 @@ do binary = decrypt(binary,55665,4) - encoding = names or lpegmatch(p_filterencoding,ascii) - metadata = names or lpegmatch(p_filtermetadata,ascii,1,{}) + if not encoding then + encoding = lpegmatch(p_filterencoding,ascii) + end + if not metadata then + metadata = lpegmatch(p_filtermetadata,ascii,1,{}) + end glyphs = { } routines = { } @@ -299,8 +304,9 @@ do } }, } + local version = metadata.FontType or 1 -- only cff 1 in type 1 fonts - fonts.handlers.otf.readers.parsecharstrings(false,data,glyphs,true,"cff",streams,true) + fonts.handlers.otf.readers.parsecharstrings(false,data,glyphs,true,"cff",streams,true,true) elseif not names then lpegmatch(p_filternames,binary,1,filename) end diff --git a/tex/context/base/mkxl/font-otl.lmt b/tex/context/base/mkxl/font-otl.lmt index 0d654edf6..065a2c2ee 100644 --- a/tex/context/base/mkxl/font-otl.lmt +++ b/tex/context/base/mkxl/font-otl.lmt @@ -52,7 +52,7 @@ local report_otf = logs.reporter("fonts","otf loading") local fonts = fonts local otf = fonts.handlers.otf -otf.version = 3.131 -- beware: also sync font-mis.lua and in mtx-fonts +otf.version = 3.133 -- beware: also sync font-mis.lua and in mtx-fonts otf.cache = containers.define("fonts", "otl", otf.version, true) otf.svgcache = containers.define("fonts", "svg", otf.version, true) otf.pngcache = containers.define("fonts", "png", otf.version, true) diff --git a/tex/context/base/mkxl/font-tpk.lmt b/tex/context/base/mkxl/font-tpk.lmt index 2ad74d2a9..d265433c5 100644 --- a/tex/context/base/mkxl/font-tpk.lmt +++ b/tex/context/base/mkxl/font-tpk.lmt @@ -44,7 +44,7 @@ if not fonts then fonts = { handlers = { tfm = { } } } end local handlers = fonts.handlers local tfm = handlers.tfm or { } handlers.tfm = tfm -tfm.version = 1.005 +tfm.version = 1.006 local readers = tfm.readers or { } tfm.readers = readers diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt index 6c321ec54..1d47c1620 100644 --- a/tex/context/base/mkxl/lpdf-lmt.lmt +++ b/tex/context/base/mkxl/lpdf-lmt.lmt @@ -1192,6 +1192,7 @@ local flushimage do local r = boxresources[objnum] if r then flushlist(l.list) + l.list = nil -- added end boxresources[objnum] = l if immediate then @@ -2131,6 +2132,10 @@ local finalize do finalize = function(driver,details) + if not details then + report("something is wrong, no details in 'finalize'") + end + level = level + 1 pdf_goto_pagemode() -- for now diff --git a/tex/context/base/mkxl/math-act.lmt b/tex/context/base/mkxl/math-act.lmt index 3a7324586..faa0d2ae5 100644 --- a/tex/context/base/mkxl/math-act.lmt +++ b/tex/context/base/mkxl/math-act.lmt @@ -3452,8 +3452,18 @@ do } local chars = fontchars[id] local dropin = fontdata[id] - local index = #fonts + 1 - fonts[index] = { id = id, size = size } + local index = false + for i=1,#fonts do + local f = fonts[i] + if f.id == id and f.size == size then + index = i + break + end + end + if not index then + index = #fonts + 1 + fonts[index] = { id = id, size = size } + end -- copy characters for s=firstsource,lastsource do local t = s + offset diff --git a/tex/context/base/mkxl/math-fnt.lmt b/tex/context/base/mkxl/math-fnt.lmt index cf14b4aa2..911e0adb5 100644 --- a/tex/context/base/mkxl/math-fnt.lmt +++ b/tex/context/base/mkxl/math-fnt.lmt @@ -54,14 +54,13 @@ local cache = setmetatableindex(function(t,width) return v end) - local function register_extensible(font,char,style,box) -- We don't share (yet)! local fontdata = chardata[font] local oldchar = fontdata[char] if oldchar and oldchar.keepvirtual then -- for now, needed for iwona etc - return + return nil else local bx = tonut(box) updaters.apply("tagging.state.disable") -- fast enough @@ -81,7 +80,6 @@ local function register_extensible(font,char,style,box) local p = fonts.hashes.parameters[font] local sx = round(1000/p.extendfactor) local sy = round(1000/p.squeezefactor) - nuts.setscales(g,1000,sx,sy) -- we saved a scaled glyph stream so we now use an unscaled one ... horrible hack: if sx ~= 1000 then wd = wd * 7200/7227 @@ -98,6 +96,7 @@ local function register_extensible(font,char,style,box) cache[wd][ht][dp][font][unicode] = private end local glyph = new_glyph(font,private,al) + nuts.setscales(glyph,1000,sx,sy) -- -- if fonts.hashes.properties[font].compactmath then -- nuts.setscales(g,1000,1000,1000) diff --git a/tex/context/base/mkxl/math-vfu.lmt b/tex/context/base/mkxl/math-vfu.lmt index 1046a0c19..53988036c 100644 --- a/tex/context/base/mkxl/math-vfu.lmt +++ b/tex/context/base/mkxl/math-vfu.lmt @@ -17,6 +17,9 @@ if not modules then modules = { } end modules ['math-vfu'] = { -- from when we emulated \UNICODE\ math and \OPENTYPE\ math fonts using traditional -- fonts. +-- Musical timestamp: Januari 2023 Riverside ID.Entity release date, after all we +-- only use the following code for ther Polish Iwona, Kurier and Antykwa fonts. + local type, next, tonumber = type, next, tonumber local max = math.max local fastcopy, sortedhash = table.copy, table.sortedhash @@ -674,52 +677,56 @@ local noitalics = true -- false can be used to test the engine -- bit to suit that purpose. It might get even simpler. local function virtualize(s,uni,fci,skewchar,move,mathparameters,unicode,parameters) - local kerns = fci.kerns - local width = fci.width - local height = fci.height - local depth = fci.depth - local italic = fci.italic - local advance = width - local bottomright - local topanchor - local yoffset - if kerns and skewchar then - local k = kerns[skewchar] - if k then - topanchor = width/2 + k + if fci then + local kerns = fci.kerns + local width = fci.width + local height = fci.height + local depth = fci.depth + local italic = fci.italic + local advance = width + local bottomright + local topanchor + local yoffset + if kerns and skewchar then + local k = kerns[skewchar] + if k then + topanchor = width/2 + k + end end + if italic and noitalics then + width = width + italic + bottomright = - italic + italic = nil + end + if move then -- 0x222B + local axis = move * mathparameters.axisheight + local half = (height + depth ) / 2 + yoffset = depth - (half - axis) + height = half + axis + depth = half - axis + end + -- + return { + advance = advance, + width = width, + height = height, + depth = depth, + italic = italic, + bottomright = bottomright, + topanchor = topanchor, + yoffset = yoffset, + commands = { slotcommand[s][uni] }, + -- keepvirtual = true, + next = fci.next, + parts = fci.parts, + partsorientation = fci.partsorientation, + partsitalic = fci.partsitalic, + unicode = unicode, + name = fci.name, + } + else + -- error end - if italic and noitalics then - width = width + italic - bottomright = - italic - italic = nil - end - if move then -- 0x222B - local axis = move * mathparameters.axisheight - local half = (height + depth ) / 2 - yoffset = depth - (half - axis) - height = half + axis - depth = half - axis - end - -- - return { - advance = advance, - width = width, - height = height, - depth = depth, - italic = italic, - bottomright = bottomright, - topanchor = topanchor, - yoffset = yoffset, - commands = { slotcommand[s][uni] }, - -- keepvirtual = true, - next = fci.next, - parts = fci.parts, - partsorientation = fci.partsorientation, - partsitalic = fci.partsitalic, - unicode = unicode, - name = fci.name, - } end function vfmath.define(specification,set,goodies) diff --git a/tex/context/interface/mkii/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml index c5e12f9a1..14f82227a 100644 --- a/tex/context/interface/mkii/keys-cs.xml +++ b/tex/context/interface/mkii/keys-cs.xml @@ -453,6 +453,7 @@ + @@ -594,6 +595,7 @@ + @@ -724,6 +726,7 @@ + @@ -1338,6 +1341,7 @@ + -- cgit v1.2.3