X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fluatexja.lua;h=2f83b48ac79760a4be19e52791a89367a1e2afad;hb=c35bc9236b8c249d3089a824fe197d0d1cde7e78;hp=d9f137d608cbde3ea72b84bcb861a34505096900;hpb=1a139ec449b922a03f1e6608380bdea12aa532b0;p=luatex-ja%2Fluatexja.git diff --git a/src/luatexja.lua b/src/luatexja.lua index d9f137d..2f83b48 100644 --- a/src/luatexja.lua +++ b/src/luatexja.lua @@ -79,13 +79,15 @@ local cat_lp = luatexbase.catcodetables['latex-package'] local ITALIC = 1 local PACKED = 2 local KINSOKU = 3 -local FROM_JFM = 4 -local LINE_END = 5 -local KANJI_SKIP = 6 -local XKANJI_SKIP = 7 -local PROCESSED = 8 -local IC_PROCESSED = 9 +local FROM_JFM = 6 +-- FROM_JFM: 4, 5, 6, 7, 8 →優先度高 +-- 6 が標準 +local KANJI_SKIP = 9 +local XKANJI_SKIP = 10 +local PROCESSED = 11 +local IC_PROCESSED = 12 local BOXBDD = 15 +local PROCESSED_BEGIN_FLAG = 32 -- Three aux. functions, bollowed from tex.web @@ -120,7 +122,7 @@ local function print_glue(d,order) return out end -local function print_spec(p) +function print_spec(p) local out=print_scaled(p.width)..'pt' if p.stretch~=0 then out=out..' plus '..print_glue(p.stretch,p.stretch_order) @@ -131,8 +133,6 @@ local function print_spec(p) return out end -function math.two_add(a,b) return a+b end -function math.two_average(a,b) return (a+b)/2 end ---- table: charprop_stack_table [stack_level].{pre|post|xsp}[chr_code] @@ -174,15 +174,23 @@ end -- EXT: print parameters that need arguments function luatexja.ext_get_parameter_binary(k,c) + if type(c)~='number' then + ltjb.package_error('luatexja', + 'invalid the second argument (' .. tostring(c) .. ')', + 'I changed this one to zero.') + c=0 + end if k == 'jacharrange' then - if c<0 or c>216 then + if c>=7*ltjc.ATTR_RANGE then ltjb.package_error('luatexja', 'invalid character range number (' .. c .. ')', - 'A character range number should be in the range 0..216,\n'.. + 'A character range number should be in the range 0..' + .. 7+ATTR_RANGE-1 .. ",\n".. 'So I changed this one to zero.') c=0 end - tex.write(ltjc.get_range_setting(c)) + -- 負の値は 0x10FFFF then ltjb.package_error('luatexja', @@ -208,7 +216,7 @@ end -- EXT: print \global if necessary function luatexja.ext_print_global() - if isglobal=='global' then tex.sprint(cat_lp, '\\global') end + if luatexja.isglobal=='global' then tex.sprint(cat_lp, '\\global') end end -- main process @@ -236,17 +244,20 @@ luatexbase.add_to_callback('hpack_filter', 'luaotfload.hpack_filter') + 1) -- debug +local function get_attr_icflag(p) + return (has_attr(p, attr_icflag) or 0) % PROCESSED_BEGIN_FLAG +end + local debug_depth local function debug_show_node_X(p,print_fn) local k = debug_depth local s local pt=node_type(p.id) - local base = debug_depth .. string.format('%X', has_attr(p,attr_icflag) or 0) - .. ' ' .. string.format('%X', has_attr(p, attr_uniqid) or 0) - .. ' ' .. node.type(p.id) .. ' ' .. tostring(p.subtype ) + local base = debug_depth .. string.format('%X', get_attr_icflag(p)) + .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' ' if pt == 'glyph' then - s = base .. ' ' .. utf.char(p.char) .. ' ' .. tostring(p.font) + s = base .. ' ' .. utf.char(p.char) .. ' ' .. tostring(p.font) .. ' (' .. print_scaled(p.height) .. '+' .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width) print_fn(s) @@ -254,36 +265,36 @@ local function debug_show_node_X(p,print_fn) s = base .. '(' .. print_scaled(p.height) .. '+' .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width) .. p.dir if p.shift~=0 then - s = s .. ', shifted ' .. print_scaled(p.shift) + s = s .. ', shifted ' .. print_scaled(p.shift) end if p.glue_sign >= 1 then - s = s .. ' glue set ' - if p.glue_sign == 2 then s = s .. '-' end - s = s .. tostring(floor(p.glue_set*10000)/10000) - if p.glue_order == 0 then - s = s .. 'pt' - else - s = s .. 'fi' - for i = 2, p.glue_order do s = s .. 'l' end - end + s = s .. ' glue set ' + if p.glue_sign == 2 then s = s .. '-' end + s = s .. tostring(floor(p.glue_set*10000)/10000) + if p.glue_order == 0 then + s = s .. 'pt' + else + s = s .. 'fi' + for i = 2, p.glue_order do s = s .. 'l' end + end end - if has_attr(p, attr_icflag, PACKED) then - s = s .. ' (packed)' + if get_attr_icflag(p) == PACKED then + s = s .. ' (packed)' end print_fn(s) local q = p.head debug_depth=debug_depth.. '.' while q do - debug_show_node_X(q, print_fn); q = node_next(q) + debug_show_node_X(q, print_fn); q = node_next(q) end debug_depth=k elseif pt == 'glue' then s = base .. ' ' .. print_spec(p.spec) - if has_attr(p, attr_icflag)==FROM_JFM then - s = s .. ' (from JFM)' - elseif has_attr(p, attr_icflag)==KANJI_SKIP then + if get_attr_icflag(p)>KINSOKU and get_attr_icflag(p)KINSOKU and get_attr_icflag(p)