OSDN Git Service

luatexja-fontspec: fix an error with fontspec v2.7
[luatex-ja/luatexja.git] / src / ltj-jfont.lua
index 372b397..76ec212 100644 (file)
@@ -3,7 +3,7 @@
 --
 luatexbase.provides_module({
   name = 'luatexja.jfont',
-  date = '2018/11/01',
+  date = '2018/12/15',
   description = 'Loader for Japanese fonts',
 })
 
@@ -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
 
@@ -267,10 +271,11 @@ end
 -- LOADING JAPANESE FONTS
 ------------------------------------------------------------------------
 
+local load_jfont_metric
 do
    local cstemp
    local global_flag -- true if \globaljfont, false if \jfont
-   local function load_jfont_metric()
+   load_jfont_metric = function()
       if jfm_file_name=='' then
          ltjb.package_error('luatexja',
                             'no JFM specified',
@@ -452,6 +457,18 @@ do
    luatexbase.create_callback('luatexja.define_font', 'simple', function (n) return n end)
    otfl_fdr= luatexbase.remove_from_callback('define_font', 'luaotfload.define_font')
    luatexbase.add_to_callback('define_font',luatexja.font_callback,"luatexja.font_callback", 1)
+
+   local match, sp = string.match, tex.sp
+   local function load_jfmonly(spec, dir)
+      local spec, size = match(spec,'(.+)%s+at%s*([%.%w]*)')
+      size = sp(size); extract_metric(spec)
+      jfm_dir = dir
+      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, '\\ltj@cur' .. (dir=='yoko' and 'j' or 't') .. 'fnt' .. tostring(j) .. '\\relax')
+   end
+   luatexja.jfont.load_jfmonly = load_jfmonly
 end
 
 ------------------------------------------------------------------------
@@ -640,7 +657,7 @@ do
    -- EXT
    function luatexja.jfont.does_alt_set(bbase)
       aftl_base = alt_font_table_latex[bbase]
-      tex.sprint(cat_lp, '\\if' .. (aftl_base and 'true' or 'false'))
+      tex.sprint(cat_lp, aftl_base and '\\@firstofone' or '\\@gobble')
    end
    -- EXT
    function luatexja.jfont.print_aftl_address()