end
end
+------------------------------------------------------------------------
+-- 終了時に各種ノードを破棄
+------------------------------------------------------------------------
+do
+ function cleanup_size_cache()
+ --local gs, ke = 0, 0
+ for _,n in pairs(metrics) do
+ for i,t in pairs(n.size_cache) do
+ for _,v in pairs(t.char_type) do
+ for k,w in pairs(v) do
+ if type(k)=='number' then
+ --if w[1] then gs = gs + 1 else ke = ke + 1 end
+ node_free(w[2])
+ end
+ end
+ end
+ n.size_cache[i]=nil
+ end
+ end
+ --print('glue spec: ', gs, 'kern: ', ke)
+ end
+end
------------------------------------------------------------------------
-- 追加のフォント情報
-- 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
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
fl.ascent + fl.descent, fl.units_per_em)
end
end
- fontloader.close(fl)
+ fontloader.close(fl); collectgarbage("collect")
return dest
end
-- supply vkern table
end
end
--- 縦書き用字形への変換テーブル
-local prepare_vert_data
-do
- -- local function add_feature_table(tname, src, dest)
- -- for i,v in pairs(src) do
- -- if type(v.slookups)=='table' then
- -- local s = v.slookups[tname]
- -- if s then
- -- dest = dest or {}
- -- dest[i] = dest[i] or {}
- -- dest[i].vert = dest[i].vert or s
- -- end
- -- end
- -- end
- -- return dest
- -- end
- -- prepare_vert_data = function (dest, id)
- -- local a = id.resources.sequences
- -- if a then
- -- local s = id.shared.rawdata.descriptions
- -- for i,v in pairs(a) do
- -- if v.features.vert or v.features.vrt2 then
- -- dest= add_feature_table(v.subtables[1], s, dest)
- -- end
- -- end
- -- end
- -- return dest
- -- end
- -- -- 縦書き用字形への変換
- -- function get_vert_glyph(n, chr)
- -- local fn = font_extra_info[n]
- -- return (fn and fn[chr] and fn[chr].vert) or chr
- -- end
-end
-
--
do
local cache_ver = 6
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()
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)
- tex_set_attr(attr_icflag, 0)
+ ensure_tex_attr(attr_icflag, 0)
end
end
end