1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
--
-- ltj-inputbuf.lua
--
luatexja.load_module 'base'; local ltjb = luatexja.base
luatexja.load_module 'charrange'; local ltjc = luatexja.charrange
local utflen = utf.len
local utfbyte = utf.byte
local utfchar = utf.char
local node_new = node.new
local node_free = node.free
local id_glyph = node.id 'glyph'
local getcatcode, getcount = tex.getcatcode, tex.getcount
local ltjc_is_japanese_char_curlist = ltjc.is_japanese_char_curlist
local substituter
do
local uchar = utf.char
local cd, cp = uchar(0x3099), uchar(0x309A)
substituter = (utf.substituter or utf.subtituter) -- typo in lualibs?
{
['ウ'..cd] = 'ヴ', ['う'..cd] = uchar(0x30F4),
['か'..cd] = 'が', ['カ'..cd] = 'ガ',
['き'..cd] = 'ぎ', ['キ'..cd] = 'ギ',
['く'..cd] = 'ぐ', ['ク'..cd] = 'グ',
['け'..cd] = 'げ', ['ケ'..cd] = 'ゲ',
['こ'..cd] = 'ご', ['コ'..cd] = 'ゴ',
--
['さ'..cd] = 'ざ', ['サ'..cd] = 'ザ',
['し'..cd] = 'じ', ['シ'..cd] = 'ジ',
['す'..cd] = 'ず', ['ス'..cd] = 'ズ',
['せ'..cd] = 'ぜ', ['セ'..cd] = 'ゼ',
['そ'..cd] = 'ぞ', ['ソ'..cd] = 'ゾ',
--
['た'..cd] = 'だ', ['タ'..cd] = 'ダ',
['ち'..cd] = 'ぢ', ['チ'..cd] = 'ヂ',
['つ'..cd] = 'づ', ['ツ'..cd] = 'ヅ',
['て'..cd] = 'で', ['テ'..cd] = 'デ',
['と'..cd] = 'ど', ['ト'..cd] = 'ド',
--
['は'..cd] = 'ば', ['ハ'..cd] = 'バ', ['は'..cp] = 'ぱ', ['ハ'..cp] = 'パ',
['ひ'..cd] = 'び', ['ヒ'..cd] = 'ビ', ['ひ'..cp] = 'ぴ', ['ヒ'..cp] = 'ピ',
['ふ'..cd] = 'ぶ', ['フ'..cd] = 'ブ', ['ふ'..cp] = 'ぷ', ['フ'..cp] = 'プ',
['へ'..cd] = 'べ', ['ヘ'..cd] = 'ベ', ['へ'..cp] = 'ぺ', ['ヘ'..cp] = 'ペ',
['ほ'..cd] = 'ぼ', ['ホ'..cd] = 'ボ', ['ほ'..cp] = 'ぽ', ['ホ'..cp] = 'ポ',
--
['ゝ'..cd] = 'ゞ', ['ヽ'..cd] = 'ヾ',
['ワ'..cd] = uchar(0x30F7), ['ヰ'..cd] = uchar(0x30F8),
['ヱ'..cd] = uchar(0x30F9), ['ヲ'..cd] = uchar(0x30FA),
}
end
--- the following function is modified from jafontspec.lua (by K. Maeda).
--- Instead of "%", we use U+FFFFF for suppressing spaces.
--DEBUG require"socket"
local time_line = 0
local start_time_measure, stop_time_measure
= ltjb.start_time_measure, ltjb.stop_time_measure
local function add_comment(buffer)
start_time_measure 'inputbuf'; buffer = substituter(buffer)
local i = utflen(buffer)
local c = utfbyte(buffer, i)
while (i>0) and (getcatcode(c)==1 or getcatcode(c)==2) do
i=i-1; if (i>0) then c = utfbyte(buffer, i) end;
end
if i>0 then
if c>=0x80 then
local te = tex.endlinechar
-- Is the catcode of endline character is 5 (end-of-line)?
if (te ~= -1) and (getcatcode(te)==5) then
local ct = getcatcode(c)
if (ct==11) or (ct==12) then
local lec = getcount 'ltjlineendcomment'
-- Is the catcode of \ltjlineendcomment (new comment char) is 14 (comment)?
if ltjc_is_japanese_char_curlist(c) and (getcatcode(lec)==14) then
stop_time_measure 'inputbuf'; return buffer .. utfchar(lec)
end
end
end
end
end
stop_time_measure 'inputbuf'
return buffer
end
luatexbase.add_to_callback('process_input_buffer',
add_comment,'ltj.process_input_buffer')
--EOF
|