summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua46
1 files changed, 26 insertions, 20 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
index ef05a671686..895cf9ca496 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
@@ -3,11 +3,10 @@
--
luatexbase.provides_module({
name = 'luatexja.jfmglue',
- date = '2017/05/05',
- description = 'Insertion process of JFM glues and kanjiskip',
+ date = '2018/02/18',
+ description = 'Insertion process of JFM glues, [x]kanjiskip and others',
})
-module('luatexja.jfmglue', package.seeall)
-local err, warn, info, log = luatexbase .errwarinf(_NAME)
+luatexja.jfmglue = luatexja.jfmglue or {}
luatexja.load_module('base'); local ltjb = luatexja.base
luatexja.load_module('stack'); local ltjs = luatexja.stack
@@ -16,9 +15,8 @@ luatexja.load_module('direction'); local ltjd = luatexja.direction
luatexja.load_module('setwidth'); local ltjw = luatexja.setwidth
local pairs = pairs
-local nullfunc = function(n) return n end
-local to_node = node.direct.tonode
-local to_direct = node.direct.todirect
+--local to_node = node.direct.tonode
+--local to_direct = node.direct.todirect
local setfield = node.direct.setfield
local setglue = luatexja.setglue
@@ -88,7 +86,7 @@ local list_dir
local capsule_glyph
local tex_dir
local attr_ablshift
-local set_np_xspc_jachar
+local set_np_xspc_jachar, set_np_xspc_alchar
local set_np_xspc_jachar_hbox
local ltjs_orig_char_table = ltjs.orig_char_table
@@ -147,7 +145,7 @@ end
end
-- 「異なる JFM」の間の調整方法
-diffmet_rule = math.two_paverage
+luatexja.jfmglue.diffmet_rule = math.two_paverage
function math.two_add(a,b) return a+b end
function math.two_average(a,b) return (a+b)*0.5 end
function math.two_paverage(a,b) return (a+b)/2 end
@@ -165,6 +163,7 @@ local non_ihb_flag -- JFM グルー挿入抑止用 flag
-------------------- hlist 内の文字の検索
local first_char, last_char, find_first_char
+local check_box_high
do
local ltjd_glyph_from_packed = ltjd.glyph_from_packed
local function check_box(box_ptr, box_end)
@@ -235,7 +234,7 @@ local function check_box(box_ptr, box_end)
return found_visible_node
end
-function check_box_high(Nx, box_ptr, box_end)
+check_box_high = function (Nx, box_ptr, box_end)
first_char = nil; last_char = nil; find_first_char = true
if check_box(box_ptr, box_end) then
local first_char = first_char
@@ -555,7 +554,7 @@ end
-- We think that "Np is a Japanese character" if Np.met~=nil,
-- "Np is an alphabetic character" if Np.pre~=nil,
-- "Np is not a character" otherwise.
-after_hlist = nil -- global
+local after_hlist = nil -- global
local after_alchar, extract_np
do
local PRE = luatexja.stack_table_index.PRE
@@ -601,6 +600,7 @@ do
-- 欧文文字のデータを取得
local floor = math.floor
+ local nullfunc = function(n) return n end
function set_np_xspc_alchar(Nx, c,x, lig)
if c~=-1 then
local f = (lig ==1) and nullfunc or node_tail
@@ -648,7 +648,7 @@ end
-------------------- 最下層の処理
-luatexbase.create_callback('luatexja.adjust_jfmglue', 'simple', nullfunc)
+luatexbase.create_callback('luatexja.adjust_jfmglue', 'simple', function(n) return n end)
-- change penalties (or create a new penalty, if needed)
local function handle_penalty_normal(post, pre, g)
@@ -749,11 +749,11 @@ do
local bk_ak = 2*id_kern - id_kern
local function blend_diffmet(b, a, rb, ra)
- return round(diffmet_rule((1-rb)*b+rb*a, (1-ra)*b+ra*a))
+ return round(luatexja.jfmglue.diffmet_rule((1-rb)*b+rb*a, (1-ra)*b+ra*a))
end
calc_ja_ja_aux = function (gb, ga, db, da)
- if diffmet_rule ~= math.two_pleft and diffmet_rule ~= math.two_pright
- and diffmet_rule ~= math.two_paverage then
+ if luatexja.jfmglue.diffmet_rule ~= math.two_pleft and diffmet_rule ~= math.two_pright
+ and luatexja.jfmglue.diffmet_rule ~= math.two_paverage then
db, da = 0, 1
end
if not gb then
@@ -808,6 +808,7 @@ end
local null_skip_table = {0, 0, 0}
-- get kanjiskip
local get_kanjiskip, kanjiskip_jfm_flag
+local get_kanjiskip_low
local calc_ja_ja_glue
do
local KANJI_SKIP = luatexja.icflag_table.KANJI_SKIP
@@ -891,6 +892,7 @@ end
-- get xkanjiskip
local get_xkanjiskip, xkanjiskip_jfm_flag
local get_xkanjiskip_normal, get_xkanjiskip_jfm
+local get_xkanjiskip_low
do
local XKANJI_SKIP = luatexja.icflag_table.XKANJI_SKIP
local XKANJI_SKIP_JFM = luatexja.icflag_table.XKANJI_SKIP_JFM
@@ -1063,6 +1065,7 @@ end
-- Nq が前側のクラスタとなることによる修正
+local adjust_nq
do
local adjust_nq_aux = {
[id_glyph] = function() after_alchar(Nq) end, -- after_alchar(Nq)
@@ -1075,7 +1078,7 @@ do
end,
}
- function adjust_nq()
+ adjust_nq=function()
local x = adjust_nq_aux[Nq.id]
if x then x() end
end
@@ -1213,7 +1216,7 @@ end
-------------------- 外部から呼ばれる関数
-- main interface
-function main(ahead, mode, dir)
+function luatexja.jfmglue.main(ahead, mode, dir)
if not ahead then return ahead end
--luatexja.ext_show_node_list(to_node(ahead ), '>B ', print)
--print()
@@ -1254,7 +1257,7 @@ do
local node_write = node.direct.write
-- \inhibitglue
- function create_inhibitglue_node()
+ function luatexja.jfmglue.create_inhibitglue_node()
local tn = node_new(id_whatsit, sid_user)
setfield(tn, 'user_id', IHB)
setfield(tn, 'type', 100)
@@ -1264,7 +1267,7 @@ do
-- Node for indicating beginning of a paragraph
-- (for ltjsclasses)
- function create_beginpar_node()
+ function luatexja.jfmglue.create_beginpar_node()
local tn = node_new(id_whatsit, sid_user)
setfield(tn, 'user_id', BPAR)
setfield(tn, 'type', 100)
@@ -1273,7 +1276,7 @@ do
end
-- Node for indicating a head/end of a box
- function create_boxbdd_node()
+ function luatexja.jfmglue.create_boxbdd_node()
local tn = node_new(id_whatsit, sid_user)
setfield(tn, 'user_id', BOXB)
setfield(tn, 'type', 100)
@@ -1336,3 +1339,6 @@ do
"luatexja.beginpar.np_info_after", 1)
end
+
+luatexja.jfmglue.after_hlist = after_hlist
+luatexja.jfmglue.check_box_high = check_box_high \ No newline at end of file