OSDN Git Service

Added lltjp-everyshi.sty
[luatex-ja/luatexja.git] / src / jfm-ujisv.lua
1 -- -*- coding: utf-8 -*-
2 -- jfm-ujisv.lua: LuaTeX-ja 標準 JFM(縦組み用)
3 -- based on upnmlminr-h.tfm (a metric in UTF/OTF package used by upTeX).
4
5 -- JIS X 4051:2004 では,行末の句読点や中点はベタなのでそれに従う
6 -- kanjiskip:    0pt plus .25zw minus 0pt
7 -- xkanjiskip: .25zw plus .25zw (or .0833zw) minus .125zw
8
9
10 local t = {
11    version = 3,
12    dir = 'tate',
13    zw = 1.0, zh = 1.0,
14    kanjiskip =  { 0.0, 0.25, 0 },
15    xkanjiskip = { 0.25, 0.25, .125 },
16    [0] = {
17       align = 'middle', left = 0.00, down = 0.00,
18       width = 1.0, height = 0.50, depth = 0.50, italic=0.0,
19       glue = {
20          [1] = { 0.5 , 0.0, 0.5,  ratio=1, kanjiskip_stretch=1 },
21          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
22          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
23          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
24          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
25          [7] = { 0, 0, 0, kanjiskip_shrink=1 },
26          [107] = { 0, 0, 0, kanjiskip_shrink=1 },
27          [207] = { 0, 0, 0, kanjiskip_shrink=1 },
28          [8] = { 0, 0, 0, kanjiskip_shrink=1 },
29       },
30       kern = { [307] = 0 },      
31       round_threshold = 0.01,
32    },
33
34    [1] = { -- 開き括弧類
35       chars = {
36          '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖',
37          '〘', '〝', '(', '[', '{', '⦅'
38       },
39       align = 'right', left = 0.0, down = 0.0,
40       width = 0.5, height = 0.50, depth = 0.50, italic=0.0,
41       glue = {
42 -- 3 のみ四分,あとは0
43          [0] = { 0, 0, 0, kanjiskip_shrink=1 },
44          [1] = { 0, 0, 0, kanjiskip_shrink=1 },
45          [2] = { 0, 0, 0, kanjiskip_stretch=1, kanjiskip_shrink=1 },
46          [3] = { 0.25, 0.0, 0.25, priority=1 },
47          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
48          [5] = { 0, 0, 0, kanjiskip_shrink=1 },
49          [105] = { 0, 0, 0, kanjiskip_shrink=1 },
50          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
51          [7] = { 0, 0, 0, kanjiskip_shrink=1 },
52          [107] = { 0, 0, 0, kanjiskip_shrink=1 },
53          [207] = { 0, 0, 0, kanjiskip_shrink=1 },
54          [8] = { 0, 0, 0, kanjiskip_shrink=1 },
55       }
56    },
57
58    [2] = { -- 閉じ括弧類
59       chars = {
60          '’', '”', '〉', '》', '」', '』', '】', '〕',
61          '〗', '〙', '〟', ')', ']', '}', '⦆', '、', ','
62       },
63       align = 'left', left = 0.0, down = 0.0,
64       width = 0.5, height = 0.50, depth = 0.50, italic=0.0,
65       glue = {
66 -- 3 は四分, 2, 4, 9 は0, あとは0.5
67          [0] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
68          [1] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
69          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
70          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
71          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
72          [5] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
73          [105] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
74          [6] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
75          [7] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
76          [107] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
77          [207] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
78          [8] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
79       }
80    },
81
82    [3] = { -- 中点類
83       chars = {'・', ':', ';', '·'},
84       align = 'middle', left = 0.0, down = 0.0,
85       width = 0.5, height = 0.50, depth = 0.50, italic=0.0,
86       --end_stretch = 0.25,
87       glue = {
88 -- 3 のみ 0.5,あとは0.25
89          [0] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
90          [1] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
91          [2] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
92          [3] = { 0.5 , 0.0, 0.25, priority=1 },
93          [4] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
94          [5] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
95          [105] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
96          [6] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
97          [7] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
98          [107] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
99          [207] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
100          [8] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
101       }
102    },
103
104    [4] = { -- 句点類
105       chars = {'。', '.'},
106       align = 'left', left = 0.0, down = 0.0,
107       width = 0.5, height = 0.50, depth = 0.50, italic=0.0,
108       glue = {
109 -- 3 は.75, 2, 4 は0, あとは0.5
110          [0] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
111          [1] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
112          [3] = { 0.75, 0.0, 0.25, priority=1, ratio=1./3, kanjiskip_stretch=1 },
113          [5] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
114          [105] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
115          [6] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
116          [7] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
117          [107] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
118          [207] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
119          [8] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 },
120       }
121    },
122
123    [5] = { -- 分離禁止文字
124       chars = { '—', '―', '‥', '…', '〳', '〴', '〵', },
125       align = 'left', left = 0.0, down = 0.0,
126       width = 1.0, height = 0.50, depth = 0.50, italic=0.0,
127       glue = {
128          [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
129          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
130          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
131          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
132          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
133       },
134       kern = {
135          [5] = 0.0,
136          [105] = 0.0,
137       }
138    },
139
140    [5] = { -- -- 二分(二重)ダッシュ
141       chars = { '゠', '–' },
142       align = 'middle', left = 0.0, down = 0.0,
143       width = 0.50, height = 0.50, depth = 0.50, italic=0.0,
144       glue = {
145          [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
146          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
147          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
148          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
149          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
150       },
151       kern = {
152          [5] = 0.0,
153          [105] = 0.0
154       }
155    },
156
157    [6] = { -- 感嘆符・疑問符
158       chars = { '?', '!', '‼', '⁇', '⁈', '⁉', },
159       align = 'left', left = 0.0, down = 0.0,
160       width = 1.0, height = 0.50, depth = 0.50, italic=0.0,
161       glue = {
162          [0] = { 1.0 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
163          [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
164          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
165          [3] = { 0.75, 0.0, 0.25, priority=1, ratio=1 },
166          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
167          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
168          [7] = { 1.0 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
169          [107] = { 1.0 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
170          [207] = { 1.0 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
171          [8] = { 0, 0, 0, kanjiskip_shrink=1 },
172       },
173       kern = {
174          [5] = 0.0,
175          [105] = 0.0,
176       }
177    },
178
179    [7] = { -- 半角カナ,その他半角CID
180       chars = {
181          '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ',
182          'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ',
183          'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ',
184          'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト',
185          'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ',
186          'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ',
187          'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン', '゙', '゚',
188       },
189       align = 'left', left = 0.0, down = 0.0,
190       width = 0.5, height = 0.5, depth = 0.5, italic=0.0,
191       glue = {
192          [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
193          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
194          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
195          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
196          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
197          [7] = { 0, 0, 0, kanjiskip_shrink=1 },
198          [8] = { 0, 0, 0, kanjiskip_shrink=1 },
199       }
200    },
201
202    [107] = { -- 1/3 角
203       chars = {},
204       align = 'left', left = 0.0, down = 0.0,
205       width = 1/3, height = 0.5, depth = 0.5, italic=0.0,
206       glue = {
207          [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
208          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
209          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
210          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
211          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
212          [107] = { 0, 0, 0, kanjiskip_shrink=1 },
213          [8] = { 0, 0, 0, kanjiskip_shrink=1 },
214       }
215    },
216    [207] = { -- 1/4 角
217       chars = {},
218       align = 'left', left = 0.0, down = 0.0,
219       width = 1/4, height = 0.5, depth = 0.5, italic=0.0,
220       glue = {
221          [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
222          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
223          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
224          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
225          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
226          [207] = { 0, 0, 0, kanjiskip_shrink=1 },
227          [8] = { 0, 0, 0, kanjiskip_shrink=1 },
228       }
229    },
230    [307] = { -- 合成用濁点・半濁点
231       chars = { 0x3099, 0x309A },
232       align = 'right', left = 0.0, down = 0.0,
233       width = 0, height = 0.5, depth = 0.5, italic=0.0,
234       glue = {
235          [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
236          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
237          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
238          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
239          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
240     [8] = { 0, 0, 0, kanjiskip_shrink=1 },
241       }
242    },
243
244    [8] = { -- 罫線類.
245       chars = {
246          '─', '━', '│', '┃', '┄', '┅', '┆', '┇',
247          '┈', '┉', '┊', '┋', '┌', '┍', '┎', '┏',
248          '┐', '┑', '┒', '┓', '└', '┕', '┖', '┗',
249          '┘', '┙', '┚', '┛', '├', '┝', '┞', '┟',
250          '┠', '┡', '┢', '┣', '┤', '┥', '┦', '┧',
251          '┨', '┩', '┪', '┫', '┬', '┭', '┮', '┯',
252          '┰', '┱', '┲', '┳', '┴', '┵', '┶', '┷',
253          '┸', '┹', '┺', '┻', '┼', '┽', '┾', '┿',
254          '╀', '╁', '╂', '╃', '╄', '╅', '╆', '╇',
255          '╈', '╉', '╊', '╋', '╌', '╍', '╎', '╏',
256          '═', '║', '╒', '╓', '╔', '╕', '╖', '╗',
257          '╘', '╙', '╚', '╛', '╜', '╝', '╞', '╟',
258          '╠', '╡', '╢', '╣', '╤', '╥', '╦', '╧',
259          '╨', '╩', '╪', '╫', '╬', '╭', '╮', '╯',
260          '╰', '╱', '╲', '╳', '╴', '╵', '╶', '╷',
261          '╸', '╹', '╺', '╻', '╼', '╽', '╾', '╿',
262       },
263       align = 'left', left = 0.0, down = 0.0,
264       width = 1.0, height = 0.50, depth = 0.50, italic=0.0,
265       glue = {
266          [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
267          [2] = { 0, 0, 0, kanjiskip_shrink=1 },
268          [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
269          [4] = { 0, 0, 0, kanjiskip_shrink=1 },
270          [6] = { 0, 0, 0, kanjiskip_shrink=1 },
271       },
272       kern = {
273          [8] = 0.0
274       }
275    },
276
277    [99] = { -- box末尾
278       chars = {'boxbdd', 'parbdd', 'glue'},
279    },
280
281 }
282 local ht = t[007].chars
283 for i=8950,9353 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
284 for i=10185,10195 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
285 local ht = t[107].chars
286 for i=13274,13294 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
287 local ht = t[207].chars
288 for i=13254,13273 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
289
290 t[100]=table.fastcopy(t[0])
291 t[100].chars={'nox_alchar'}
292 for i,v in pairs(t) do
293   if i~=6 and type(i)=='number' and type(v)=='table' then -- 感嘆符以外
294     if v.glue and v.glue[0] then v.glue[100] = v.glue[0] end
295     if v.kern and v.kern[0] then v.kern[100] = v.kern[0] end
296   end
297 end
298 t[200]=table.fastcopy(t[0])
299 t[200].chars={'〱', '〲'}
300 t[200].width = 2.0
301 for i,v in pairs(t) do
302   if type(v)=='table' then
303     if v.glue and v.glue[0] then v.glue[200] = v.glue[0] end
304     if v.kern and v.kern[0] then v.kern[200] = v.kern[0] end
305   end
306 end
307
308 luatexja.jfont.define_jfm(t)