X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=tool%2Fivslist.tex;h=0e0a71246158de70fab3a3e27d7a1a53234db1de;hb=f078ac2f7998a102c7ec765e725f2269eed9f872;hp=3788bf2719161bb9852cc871263428999c20b270;hpb=7a489de5add64015285ffe39d4a8a6e9ce35fe49;p=luatex-ja%2Fluatexja.git diff --git a/tool/ivslist.tex b/tool/ivslist.tex index 3788bf2..0e0a712 100644 --- a/tool/ivslist.tex +++ b/tool/ivslist.tex @@ -29,52 +29,29 @@ \baselineskip18pt \begin{luacode} -local fl = fontloader.open(ident.filename) -local ft = fontloader.to_table(fl) - +local t = ident.shared.rawdata +t = t and t.resources +t = t and t.variants local ivs, ivsi = {}, {} -local uniq_flag -local function add_ivs_table(tg) - for gu, gv in pairs(tg) do - local ga = gv.altuni - if ga then - for _,at in pairs(ga) do - local bu, vs = at.unicode, (at.variant or 0)-0xE0100 - if vs>=0 and vs<0xF0 then - if not ivs[bu] then ivs[bu] = {}; ivsi[1+#ivsi]=bu end - uniq_flag = true - for _,v in pairs(ivs[bu]) do - if v[1]==vs then uniq_flag = false; break end - end - if uniq_flag then ivs[bu][1+#(ivs[bu])] = { vs, gv.name } end - end - end - end - end -end - -add_ivs_table(ft.glyphs) -if ft.subfonts then - for _,v in pairs(ft.subfonts) do - add_ivs_table(v.glyphs) - end +for i,v in pairs(t) do + if i>=0xE0100 then + for j,w in pairs(v) do + if not ivs[j] then table.insert(ivsi,j); ivs[j]=ivs[j] or {}; end + table.insert(ivs[j],{i-0xE0100,w}) + end + end end -fontloader.close(fl) - -local unicodes = ident.resources.unicodes local sort = table.sort local sortfn = function (a,b) return a[1]