OSDN Git Service

reduce overhead
[luatex-ja/luatexja.git] / src / ltj-jfont.lua
index 372b397..8d1416b 100644 (file)
@@ -267,10 +267,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 +453,21 @@ 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_tfont_jfmonly(spec)
+      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)
+      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]
+   end
+   luatexja.jfont.load_tfont_jfmonly = load_tfont_jfmonly
 end
 
 ------------------------------------------------------------------------
@@ -640,7 +656,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()