X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=test%2Fvalign.lua;h=2366351f7dc47d2c615eadafa7c3524e616c7caf;hb=ad5ab423c468a7b55785fc540c1b5e09766aed4f;hp=c044e6ff06f5da4bea0141f23ea97fa49b4bac86;hpb=841f150c3f03294f6df7484f8d35a46eb0486d2d;p=luatex-ja%2Fluatexja.git diff --git a/test/valign.lua b/test/valign.lua index c044e6f..2366351 100644 --- a/test/valign.lua +++ b/test/valign.lua @@ -1,8 +1,8 @@ -require('luatexja.base'); local ltjb = luatexja.base -require('luatexja.jfont'); local ltjf = luatexja.jfont +luatexja.load_module('base'); local ltjb = luatexja.base +luatexja.load_module('jfont'); local ltjf = luatexja.jfont local round = tex.round - +local floor = math.floor local attr_curjfnt = luatexbase.attributes['ltj@curjfnt'] local attr_jchar_class = luatexbase.attributes['ltj@charclass'] local attr_yablshift = luatexbase.attributes['ltj@yablshift'] @@ -11,9 +11,27 @@ local attr_ykblshift = luatexbase.attributes['ltj@ykblshift'] local ltjf_font_metric_table = ltjf.font_metric_table local ltjf_find_char_class = ltjf.find_char_class +local unity=65536 +local function print_scaled(s) + local out='' + local delta=10 + if s<0 then + out=out..'-'; s=-s + end + out=out..tostring(floor(s/unity)) .. '.' + s=10*(s%unity)+5 + repeat + if delta>unity then s=s+32768-50000 end + out=out .. tostring(floor(s/unity)) + s=10*(s%unity) + delta=delta*10 + until s<=delta + return out +end local function set_valign(fmtable, fn) - local fi = fonts.ids[fn] - local mt = ltjf.metrics[fmtable.jfm].char_type[0] + local fi = fonts.hashes.identifiers[fn] + if not fi.ascender then fi = fi.parameters end + local mt = fmtable.char_type[0] local ma = mt.height / (mt.height + mt.depth) * (fi.ascender + fi.descender) fmtable.down_offset = round(fi.ascender - ma) print('loading :', fn, print_scaled(fmtable.down_offset) @@ -22,7 +40,7 @@ local function set_valign(fmtable, fn) end luatexbase.add_to_callback("luatexja.define_jfont", set_valign, "ltj.valign.define_jfont", 1) --- ´û¤ËÆɤ߹þ¤Þ¤ì¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤ËÂФ·¤Æ¤â¡¤Æ±¤¸¤³¤È¤ò¤ä¤é¤Ê¤¤¤È¤¤¤±¤Ê¤¤ +-- 既に読み込まれているフォントに対しても,同じことをやらないといけない for fn, v in pairs(ltjf_font_metric_table) do ltjf_font_metric_table[fn] = set_valign(v, fn) end