OSDN Git Service
(root)
/
luatex-ja
/
luatexja.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bugfix: gi might be nil
[luatex-ja/luatexja.git]
/
src
/
ltj-jfont.lua
diff --git
a/src/ltj-jfont.lua
b/src/ltj-jfont.lua
index
66f9407
..
aa92ceb
100644
(file)
--- a/
src/ltj-jfont.lua
+++ b/
src/ltj-jfont.lua
@@
-136,6
+136,11
@@
end
local update_jfm_cache
do
local update_jfm_cache
do
+ local node_copy = Dnode.copy
+ local kern_skel = node_new(id_kern)
+ set_attr(kern_skel, attr_icflag, FROM_JFM)
+ setfield(kern_skel, 'subtype', 1)
+
local function mult_table(old,scale) -- modified from table.fastcopy
if old then
local new = { }
local function mult_table(old,scale) -- modified from table.fastcopy
if old then
local new = { }
@@
-172,10
+177,8
@@
do
setfield(h, 'shrink_order', 0)
end
for k,w in pairs(v.kern) do
setfield(h, 'shrink_order', 0)
end
for k,w in pairs(v.kern) do
- local g = node_
new(id_kern
)
+ local g = node_
copy(kern_skel
)
setfield(g, 'kern', w[1])
setfield(g, 'kern', w[1])
- setfield(g, 'subtype', 1)
- set_attr(g, attr_icflag, FROM_JFM)
v[k] = {false, g, w[2]/sz}
end
end
v[k] = {false, g, w[2]/sz}
end
end
@@
-651,7
+654,7
@@
do
-- vertical metric
local vw, tsb, vk = glyph_vmetric(gv)
local gi = unitable[gv.name]
-- vertical metric
local vw, tsb, vk = glyph_vmetric(gv)
local gi = unitable[gv.name]
- if vw and vw~=asc_des then
+ if
gi and
vw and vw~=asc_des then
-- We do not use tsidebearing, since (1) fontloader does not read VORG table
-- and (2) 'tsidebearing' doea not appear in the returned table by fontloader.fields.
-- Hence, we assume that vertical origin == ascender
-- We do not use tsidebearing, since (1) fontloader does not read VORG table
-- and (2) 'tsidebearing' doea not appear in the returned table by fontloader.fields.
-- Hence, we assume that vertical origin == ascender
@@
-660,7
+663,7
@@
do
dest[gi].vwidth = vw/units
end
-- vertical kern
dest[gi].vwidth = vw/units
end
-- vertical kern
- if vk then
+ if
gi and
vk then
dest = dest or {};
local dest_vk = dest.vkerns or {}; dest.vkerns = dest_vk
for _,v in pairs(vk) do
dest = dest or {};
local dest_vk = dest.vkerns or {}; dest.vkerns = dest_vk
for _,v in pairs(vk) do
@@
-695,7
+698,7
@@
do
fl.ascent + fl.descent, fl.units_per_em)
end
end
fl.ascent + fl.descent, fl.units_per_em)
end
end
- fontloader.close(fl)
+ fontloader.close(fl)
; collectgarbage("collect")
return dest
end
-- supply vkern table
return dest
end
-- supply vkern table
@@
-878,7
+881,7
@@
end
do
local get_dir_count = ltjd.get_dir_count
local is_ucs_in_japanese_char = ltjc.is_ucs_in_japanese_char_direct
do
local get_dir_count = ltjd.get_dir_count
local is_ucs_in_japanese_char = ltjc.is_ucs_in_japanese_char_direct
- local
tex_set_attr = tex.setattribute
+ local
ensure_tex_attr = ltjb.ensure_tex_attr
local font = font
-- EXT: italic correction
function append_italic()
local font = font
-- EXT: italic correction
function append_italic()
@@
-897,12
+900,12
@@
do
if h then
setfield(g, 'kern', h.characters[getchar(p)].italic)
else
if h then
setfield(g, 'kern', h.characters[getchar(p)].italic)
else
-
tex_set
_attr(attr_icflag, 0)
+
ensure_tex
_attr(attr_icflag, 0)
return node_free(g)
end
end
node_write(g)
return node_free(g)
end
end
node_write(g)
-
tex_set
_attr(attr_icflag, 0)
+
ensure_tex
_attr(attr_icflag, 0)
end
end
end
end
end
end