summaryrefslogtreecommitdiff
path: root/tex/generic
diff options
context:
space:
mode:
Diffstat (limited to 'tex/generic')
-rw-r--r--tex/generic/context/luatex-fonts-merged.lua26
1 files changed, 14 insertions, 12 deletions
diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua
index c1a9ae835..808ee507d 100644
--- a/tex/generic/context/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 03/28/11 01:03:40
+-- merge date : 03/28/11 18:59:04
do -- begin closure to overcome local limits and interference
@@ -4777,7 +4777,7 @@ local otf = fonts.handlers.otf
otf.glists = { "gsub", "gpos" }
-otf.version = 2.720 -- beware: also sync font-mis.lua
+otf.version = 2.721 -- beware: also sync font-mis.lua
otf.cache = containers.define("fonts", "otf", otf.version, true)
local fontdata = fonts.hashes.identifiers
@@ -5340,7 +5340,7 @@ actions["prepare glyphs"] = function(data,filename,raw)
local subfont = rawsubfonts[cidindex]
local cidglyphs = subfont.glyphs
metadata.subfonts[cidindex] = somecopy(subfont)
- for index=0,subfont.glyphmax - 1 do
+ for index=0,subfont.glyphcnt-1 do -- we could take the previous glyphcnt instead of 0
local glyph = cidglyphs[index]
if glyph then
local unicode = glyph.unicode
@@ -5378,6 +5378,8 @@ actions["prepare glyphs"] = function(data,filename,raw)
}
descriptions[unicode] = description
+ else
+ -- report_otf("potential problem: glyph 0x%04X is used but empty",index)
end
end
end
@@ -5393,14 +5395,11 @@ actions["prepare glyphs"] = function(data,filename,raw)
else
- for index=0,raw.glyphmax-1 do
+ for index=0,raw.glyphcnt-1 do -- not raw.glyphmax-1 (as that will crash)
local glyph = rawglyphs[index]
---~ report_otf("1: 0x%04X: %s",index,tostring(glyph)) io.flush()
if glyph then
local unicode = glyph.unicode
---~ report_otf("2: 0x%04X: %s",index,tostring(unicode)) io.flush()
local name = glyph.name
---~ report_otf("3: 0x%04X: %s",index,tostring(name)) io.flush()
if not unicode or unicode == -1 or unicode >= criterium then
unicode = private
unicodes[name] = private
@@ -5423,6 +5422,8 @@ actions["prepare glyphs"] = function(data,filename,raw)
index = index,
glyph = glyph,
}
+ else
+ report_otf("potential problem: glyph 0x%04X is used but empty",index)
end
end
@@ -8463,7 +8464,6 @@ end
function handlers.gpos_single(start,kind,lookupname,kerns,sequence)
local startchar = start.char
- local kerns = kerns[start.char]
local dx, dy, w, h = setpair(start,tfmdata.parameters.factor,rlmode,sequence.flags[4],kerns,characters[startchar])
if trace_kerns then
logprocess("%s: shifting single %s by (%s,%s) and correction (%s,%s)",pref(kind,lookupname),gref(startchar),dx,dy,w,h)
@@ -9105,7 +9105,7 @@ function chainprocs.gpos_single(start,stop,kind,chainname,currentcontext,lookuph
local lookupname = subtables[1]
local kerns = lookuphash[lookupname]
if kerns then
- kerns = kerns[startchar]
+ kerns = kerns[startchar] -- needed ?
if kerns then
local dx, dy, w, h = setpair(start,tfmdata.parameters.factor,rlmode,sequence.flags[4],kerns,characters[startchar])
if trace_kerns then
@@ -10792,9 +10792,11 @@ function definers.resolve(specification)
-- for the moment here (goodies set outside features)
local goodies = specification.goodies
if goodies and goodies ~= "" then
- local normalgoodies = specification.features.normal.goodies
- if not normalgoodies or normalgoodies == "" then
- specification.features.normal.goodies = goodies
+ local normal = specification.features.normal
+ if not normal then
+ specification.features.normal = { goodies = goodies }
+ elseif not normal.goodies then
+ normal.goodies = goodies
end
end
--