OSDN Git Service

Negative value of \ltj@curtfont means "Only JFM is loaded to calculate the baseline...
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Fri, 14 Dec 2018 06:53:32 +0000 (15:53 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Fri, 14 Dec 2018 06:53:32 +0000 (15:53 +0900)
src/ltj-jfont.lua
src/patches/lltjfont.sty

index 8d1416b..aa69e73 100644 (file)
@@ -198,8 +198,9 @@ do
          return new
       else return nil end
    end
+   local size_cache_num = 1
    update_jfm_cache = function (j,sz)
-      if metrics[j].size_cache[sz] then return end
+      if metrics[j].size_cache[sz] then return metrics[j].size_cache[sz].index end
       local t = {}
       metrics[j].size_cache[sz] = t
       t.chars = metrics[j].chars
@@ -233,6 +234,9 @@ do
       t.zw = round(metrics[j].zw*sz)
       t.zh = round(metrics[j].zh*sz)
       t.size = sz
+      size_cache_num = size_cache_num + 1
+      t.index = size_cache_num
+      return size_cache_num
    end
 end
 
@@ -459,13 +463,11 @@ do
       local spec, size = match(spec,'(.+)%s+at%s*([%.%w]*)')
       size = sp(size); extract_metric(spec)
       jfm_dir = 'tate'
-      local i = load_jfont_metric(); update_jfm_cache(i, size)
+      local i = load_jfont_metric()
+      local j = -update_jfm_cache(i, size)
+      font_metric_table[j]=metrics[i].size_cache[s]      
       tex.sprint(cat_lp, 
-        '\\noexpand\\directlua{luatexja.jfont.set_tfont_jfmonly_result('
-         .. tostring(i) .. ',' .. tostring(size) .. ')}')
-   end
-   function luatexja.jfont.set_tfont_jfmonly_result(i,s)
-      luatexja.jfont.tfont_jfmonly_result=metrics[i].size_cache[s]
+        '\\noexpand\\ltj@curtfnt' .. tostring(-j) .. '\\relax')
    end
    luatexja.jfont.load_tfont_jfmonly = load_tfont_jfmonly
 end
index 5344666..efbc2b6 100644 (file)
   local dir = luatexja.unary_pars.direction
   t[\the\ltj@@adjust@baseline@inner] = function()
     local dir = dir()
-    local ft = (dir==dir_tate
-      and fmt[get_attr('ltj@curtfnt')] or luatexja.jfont.tfont_jfmonly_result)
-      or nulltable
-    %local ft = fmt[get_attr('ltj@curtfnt')] or nulltable
+    %local ft = (dir==dir_tate
+    %  and fmt[get_attr('ltj@curtfnt')] or luatexja.jfont.tfont_jfmonly_result)
+    %  or nulltable
+    local ft = fmt[get_attr('ltj@curtfnt')] or nulltable
     ft = ft and ft.char_type or nulltable
     local fk = ft and ft[0] or nulltable
     local ht, dp, wd = fk.height or 0, fk.depth or 0,