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 = { }
setfield(h, 'shrink_order', 0)
end
for k,w in pairs(v.kern) do
- local g = node_copy(kern_skel)
+ local g = node_new(id_kern)
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
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
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