OSDN Git Service

Changed the property of box drawing characters (U+2500--U+257F).
[luatex-ja/luatexja.git] / test / valign.lua
index 819504e..581dd82 100644 (file)
@@ -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,18 +11,35 @@ 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 fa = fi.ascender / (fi.ascender + fi.descender)
    local mt = ltjf.metrics[fmtable.jfm].char_type[0]
-   local ma = mt.height / (mt.height + mt.depth)
-   fmtable.down_offset = round((fa - ma)*fi.size)
-   print('loading :', fn, fmtable.down_offset)
+   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)
+      .. ' / ' .. print_scaled(fi.size))
    return fmtable
 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