OSDN Git Service

Add README.
[luatex-ja/luatexja.git] / test / valign.lua
1 require('luatexja.base');      local ltjb = luatexja.base
2 require('luatexja.jfont');     local ltjf = luatexja.jfont
3
4 local round = tex.round
5
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 function set_valign(fmtable, fn)
15    local fi = fonts.ids[fn]
16    local mt = ltjf.metrics[fmtable.jfm].char_type[0]
17    local ma = mt.height / (mt.height + mt.depth) * (fi.ascender + fi.descender)
18    fmtable.down_offset = round(fi.ascender - ma)
19    print('loading :', fn, print_scaled(fmtable.down_offset)
20       .. ' / ' .. print_scaled(fi.size))
21    return fmtable
22 end
23 luatexbase.add_to_callback("luatexja.define_jfont", 
24                            set_valign, "ltj.valign.define_jfont", 1)
25 --  ´û¤ËÆɤ߹þ¤Þ¤ì¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤ËÂФ·¤Æ¤â¡¤Æ±¤¸¤³¤È¤ò¤ä¤é¤Ê¤¤¤È¤¤¤±¤Ê¤¤
26 for fn, v in pairs(ltjf_font_metric_table) do
27    ltjf_font_metric_table[fn] = set_valign(v, fn)
28 end
29
30 local function get_valign (fstable, fmtable, jchar_class) 
31    local d = fmtable.down_offset or 0
32    fstable.down = fstable.down + d
33    return fstable
34 end
35
36 luatexbase.add_to_callback("luatexja.set_width", 
37                            get_valign, "ltj.valign.define_jfont", 1)