userid_table.STCK = luatexbase.newuserwhatsitid('stack_marker', 'luatexja') -- スタック管理
userid_table.BPAR = luatexbase.newuserwhatsitid('begin_par', 'luatexja') -- 「段落始め」
userid_table.DIR = luatexbase.newuserwhatsitid('direction', 'luatexja') -- 組方向
-userid_table.DNODE= luatexbase.newuserwhatsitid('dir_node', 'luatexja') -- dir_node
local dir_table = {}
luatexja.dir_table = dir_table
dir_table.dir_dtou = 1
dir_table.dir_tate = 3
dir_table.dir_yoko = 4
+dir_table.dir_node_auto = 16 -- 組方向を合わせるために自動で作られたもの
+dir_table.dir_node_manual = 32 -- 寸法代入によって作られたもの
+
------------------------------------------------------------------------
-- FIX node.remove
load_module('base'); local ltjb = luatexja.base
load_module('rmlgbm'); local ltjr = luatexja.rmlgbm -- must be 1st
+if luatexja_debug then load_module('debug') end
+
+load_module('charrange'); local ltjc = luatexja.charrange
+load_module('jfont'); local ltjf = luatexja.jfont
+
-- define_font
do
local otfl_fdr = fonts.definers.read
local ltjr_font_callback = ltjr.font_callback
+ local ltjf_extract_metric = ltjf.extract_metric
function luatexja.font_callback(name, size, id)
- local res = ltjr_font_callback(name, size, id, otfl_fdr)
+ local new_name = ltjf_extract_metric(name)
+ local res = ltjr_font_callback(new_name, size, id, otfl_fdr)
luatexbase.call_callback('luatexja.define_font', res, name, size, id)
return res
end
luatexbase.add_to_callback('define_font',luatexja.font_callback,"luatexja.font_callback", 1)
end
-if luatexja_debug then load_module('debug') end
-load_module('charrange'); local ltjc = luatexja.charrange
-load_module('jfont'); local ltjf = luatexja.jfont
+
load_module('inputbuf'); local ltji = luatexja.inputbuf
load_module('stack'); local ltjs = luatexja.stack
load_module('pretreat'); local ltjp = luatexja.pretreat
if luatexja.isglobal=='global' then tex.sprint(cat_lp, '\\global') end
end
+
-- main process
do
local start_time_measure, stop_time_measure
local nullfunc = function (n) return n end
local to_node = (Dnode ~= node) and Dnode.tonode or nullfunc
local to_direct = (Dnode ~= node) and Dnode.todirect or nullfunc
- local time_jfm, time_width = 0,0
+ local tex_set_attr = tex.setattribute
-- mode = true iff main_process is called from pre_linebreak_filter
local function main_process(head, mode, dir, gc)
- tex.setattribute('global', attr_icflag, 0)
+ tex_set_attr('global', attr_icflag, 0)
if gc == 'fin_row' then return head
else
local p = to_direct(head)
local function adjust_icflag(h)
-- kern from luaotfload will have icflag = 1
-- (same as italic correction)
- tex.setattribute('global', attr_icflag, 1)
+ tex_set_attr('global', attr_icflag, 1)
return h
end
end,'ltj.hpack_filter',
luatexbase.priority_in_callback('hpack_filter',
'luaotfload.node_processor') + 1)
- luatexbase.add_to_callback('pre_linebreak_filter', adjust_icflag, 'adjust_icflag', 1)
- luatexbase.add_to_callback('hpack_filter', adjust_icflag, 'adjust_icflag', 1)
+ luatexbase.add_to_callback('pre_linebreak_filter', adjust_icflag, 'ltj.adjust_icflag', 1)
+ luatexbase.add_to_callback('hpack_filter', adjust_icflag, 'ltj.adjust_icflag', 1)
end
print_fn(s)
else
s = s .. ' userid:' .. t .. '(node list)'
+ if p.user_id==userid_table.DIR then
+ s = s .. ' dir: ' .. tostring(node.has_attribute(p, attr_dir))
+ end
print_fn(s)
debug_depth=debug_depth.. '.'
for q in node.traverse(p.value) do
end
end
+