OSDN Git Service

Remove space characters between JAchars and ALchars from test files.
[luatex-ja/luatexja.git] / test / valign.lua
1 luatexja.load_module('base');      local ltjb = luatexja.base
2 luatexja.load_module('jfont');     local ltjf = luatexja.jfont
3
4 local round = tex.round
5 local floor = math.floor
6 local attr_curjfnt = luatexbase.attributes['ltj@curjfnt']
7 local attr_jchar_class = luatexbase.attributes['ltj@charclass']
8 local attr_yablshift = luatexbase.attributes['ltj@yablshift']
9 local attr_ykblshift = luatexbase.attributes['ltj@ykblshift']
10
11 local ltjf_font_metric_table = ltjf.font_metric_table
12 local ltjf_find_char_class = ltjf.find_char_class
13
14 local unity=65536
15 local function print_scaled(s)
16    local out=''
17    local delta=10
18    if s<0 then
19       out=out..'-'; s=-s
20    end
21    out=out..tostring(floor(s/unity)) .. '.'
22    s=10*(s%unity)+5
23    repeat
24       if delta>unity then s=s+32768-50000 end
25       out=out .. tostring(floor(s/unity))
26       s=10*(s%unity)
27       delta=delta*10
28    until s<=delta
29    return out
30 end
31 local function set_valign(fmtable, fn)
32    local fi = fonts.ids[fn]
33    local mt = ltjf.metrics[fmtable.jfm].char_type[0]
34    local ma = mt.height / (mt.height + mt.depth) * (fi.ascender + fi.descender)
35    fmtable.down_offset = round(fi.ascender - ma)
36    print('loading :', fn, print_scaled(fmtable.down_offset)
37       .. ' / ' .. print_scaled(fi.size))
38    return fmtable
39 end
40 luatexbase.add_to_callback("luatexja.define_jfont", 
41                            set_valign, "ltj.valign.define_jfont", 1)
42 --  既に読み込まれているフォントに対しても,同じことをやらないといけない
43 for fn, v in pairs(ltjf_font_metric_table) do
44    ltjf_font_metric_table[fn] = set_valign(v, fn)
45 end
46
47 local function get_valign (fstable, fmtable, jchar_class) 
48    local d = fmtable.down_offset or 0
49    fstable.down = fstable.down + d
50    return fstable
51 end
52
53 luatexbase.add_to_callback("luatexja.set_width", 
54                            get_valign, "ltj.valign.define_jfont", 1)