OSDN Git Service

Merged test/ivs.lua into ltj-otf.lua
[luatex-ja/luatexja.git] / tool / ivslist.tex
1 %#!lualatex
2 \documentclass[twocolumn]{article}
3 \batchmode
4 \usepackage{luaotfload,booktabs,array,luacode,longtable}
5 \usepackage[ratio=0.80]{geometry}
6 \errorstopmode
7
8 {\newlinechar=`@
9 \message{@Name of the font to test = }
10 \read-1 to\fontname \global\let\fontname\fontname}
11 \message{@}
12 \font\test=\fontname at 12pt
13 {\test\directlua{testfn = font.current()}}
14
15 \def\FMT#1#2{{\oalign{\test#1\crcr\rm\tiny\hss#2\hss\crcr}}}
16 \def\OUT#1{\leavevmode\hbox to 7em{{\test\char"#1}\ ({\tt U+#1})\hss}}%"
17 \begin{document}
18 {\noindent\Large\bf \fontname\\\null\hfill (%
19   \directlua{tex.sprint(fonts.hashes.identifiers[testfn].fullname)}%
20 )}
21
22 \bigskip
23 \baselineskip18pt
24
25 \begin{luacode*}
26    local identifiers = fonts.hashes.identifiers
27    local ubyte = unicode.utf8.byte
28    local uchar = unicode.utf8.char
29    local sort = table.sort
30    local t, ti = {}, {}
31    local sort_func = function(a,b) return a[1]<b[1] end
32    local pt = identifiers[testfn]
33    pt = pt and pt.resources; pt = pt and pt.variants
34    if pt then
35       for vs,v in pairs(pt) do
36          if vs>=0xe0100 and vs<0xe01f0 then
37            for bc, rc in pairs(v) do
38               if not t[bc] then t[bc] = {}; ti[1+#ti] = bc end
39               t[bc][1+#(t[bc])]={ vs-0xe0100, rc }
40            end
41          end
42       end
43       sort(ti)
44       for _,v in pairs(ti) do 
45          local s = '\\OUT{' .. string.format('%X', v) .. '}'
46          local tx = t[v]; sort(tx, sort_func)
47          for _,x in ipairs(tx) do
48            s = s .. '\\FMT{' .. uchar(x[2]) .. '}{' .. tostring(x[1]) .. '}'
49          end
50          tex.sprint(s .. '\\par')
51       end
52    end
53 \end{luacode*}
54
55
56 \end{document}