diff options
author | Karl Berry <karl@freefriends.org> | 2020-09-03 21:06:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-09-03 21:06:29 +0000 |
commit | 24747f42d2ae33e72bd6cb817501a16951912000 (patch) | |
tree | 249041a4aa4763ff12d5925a69df1e65345e6b8d /Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-con.lua | |
parent | d34926349151181057a004f0aa9b9c90fbf0f2f2 (diff) |
luaotfload (3sep20)
git-svn-id: svn://tug.org/texlive/trunk@56251 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-con.lua')
-rw-r--r-- | Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-con.lua | 91 |
1 files changed, 45 insertions, 46 deletions
diff --git a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-con.lua b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-con.lua index 1bb63aa5192..7162338c66e 100644 --- a/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-con.lua +++ b/Master/texmf-dist/tex/luatex/luaotfload/fontloader-font-con.lua @@ -191,6 +191,9 @@ function constructors.assignmathparameters(target,original) -- simple variant, n if not mathparameters.FractionDelimiterDisplayStyleSize then targetmathparameters.FractionDelimiterDisplayStyleSize = 2.40 * targetparameters.size end + if not targetmathparameters.SpaceBeforeScript then + targetmathparameters.SpaceBeforeScript = targetmathparameters.SpaceAfterScript + end target.mathparameters = targetmathparameters end end @@ -210,60 +213,45 @@ end -- we default to false, so a macro package has to enable it explicitly. In -- LuaTeX the fullname is used to identify a font as being unique. -constructors.sharefonts = false -constructors.nofsharedfonts = 0 -local sharednames = { } +local nofinstances = 0 +local instances = setmetatableindex(function(t,k) + nofinstances = nofinstances + 1 + t[k] = nofinstances + return nofinstances +end) function constructors.trytosharefont(target,tfmdata) - if constructors.sharefonts then -- not robust ! - local characters = target.characters - local n = 1 - local t = { target.psname } - local u = sortedkeys(characters) - for i=1,#u do - local k = u[i] - n = n + 1 ; t[n] = k - n = n + 1 ; t[n] = characters[k].index or k + local properties = target.properties + local instance = properties.instance + if instance then + local fullname = target.fullname + local fontname = target.fontname + local psname = target.psname + local format = tfmdata.properties.format + if format == "opentype" then + target.streamprovider = 1 + elseif format == "truetype" then + target.streamprovider = 2 + else + target.streamprovider = 0 end - local h = md5.HEX(concat(t," ")) - local s = sharednames[h] - if s then - if trace_defining then - report_defining("font %a uses backend resources of font %a",target.fullname,s) + if target.streamprovider > 0 then + if fullname then + fullname = fullname .. ":" .. instances[instance] + target.fullname = fullname + end + if fontname then + fontname = fontname .. ":" .. instances[instance] + target.fontname = fontname + end + if psname then + psname = psname .. ":" .. instances[instance] + target.psname = psname end - target.fullname = s - constructors.nofsharedfonts = constructors.nofsharedfonts + 1 - target.properties.sharedwith = s - else - sharednames[h] = target.fullname end end end --- function constructors.enhanceparameters(parameters) --- local xheight = parameters.x_height --- local quad = parameters.quad --- local space = parameters.space --- local stretch = parameters.space_stretch --- local shrink = parameters.space_shrink --- local extra = parameters.extra_space --- local slant = parameters.slant --- -- synonyms --- parameters.xheight = xheight --- parameters.spacestretch = stretch --- parameters.spaceshrink = shrink --- parameters.extraspace = extra --- parameters.em = quad --- parameters.ex = xheight --- parameters.slantperpoint = slant --- parameters.spacing = { --- width = space, --- stretch = stretch, --- shrink = shrink, --- extra = extra, --- } --- end - local synonyms = { exheight = "x_height", xheight = "x_height", @@ -463,6 +451,7 @@ function constructors.scale(tfmdata,specification) target.format = properties.format target.cache = constructors.cacheintex and "yes" or "renew" -- + local original = properties.original or tfmdata.original local fontname = properties.fontname or tfmdata.fontname local fullname = properties.fullname or tfmdata.fullname local filename = properties.filename or tfmdata.filename @@ -474,6 +463,7 @@ function constructors.scale(tfmdata,specification) -- local psname, psfixed = fixedpsname(psname,fontname or fullname or file.nameonly(filename)) -- + target.original = original target.fontname = fontname target.fullname = fullname target.filename = filename @@ -578,6 +568,15 @@ function constructors.scale(tfmdata,specification) targetparameters.quad = targetquad targetparameters.extra_space = targetextra_space -- + local hshift = parameters.hshift + if hshift then + targetparameters.hshift = delta * hshift + end + local vshift = parameters.vshift + if vshift then + targetparameters.vshift = delta * vshift + end + -- local ascender = parameters.ascender if ascender then targetparameters.ascender = delta * ascender |