X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fluatexja.lua;h=2f83b48ac79760a4be19e52791a89367a1e2afad;hb=c35bc9236b8c249d3089a824fe197d0d1cde7e78;hp=02cf1b8340b9e198c11b112695865ee1361c44a8;hpb=79c1a4f5603de6146a511cc3d7340ac7525f850d;p=luatex-ja%2Fluatexja.git diff --git a/src/luatexja.lua b/src/luatexja.lua index 02cf1b8..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 @@ -151,9 +153,9 @@ function luatexja.ext_get_parameter_unary(k) elseif k == 'jcharwidowpenalty' then tex.write(ltjs.get_penalty_table('jwp', 0, 0, tex.getcount('ltj@@stack'))) elseif k == 'autospacing' then - tex.write(math.floor(tex.getattribute('ltj@autospc')/2)) + tex.write(tex.getattribute('ltj@autospc')) elseif k == 'autoxspacing' then - tex.write(tex.getattribute('ltj@autospc')%2) + tex.write(tex.getattribute('ltj@autoxspc')) elseif k == 'differentjfm' then if luatexja.jfmglue.diffmet_rule == math.max then tex.write('large') @@ -179,14 +181,16 @@ function luatexja.ext_get_parameter_binary(k,c) 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', @@ -212,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 @@ -240,16 +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) + 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) .. ' (' .. 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) @@ -270,7 +278,7 @@ local function debug_show_node_X(p,print_fn) for i = 2, p.glue_order do s = s .. 'l' end end end - if has_attr(p, attr_icflag, PACKED) then + if get_attr_icflag(p) == PACKED then s = s .. ' (packed)' end print_fn(s) @@ -282,11 +290,11 @@ local function debug_show_node_X(p,print_fn) 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)