OSDN Git Service

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