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).
5 -- JIS X 4051:2004 では,行末の句読点や中点はベタなのでそれに従う
6 -- kanjiskip: 0pt plus .25zw minus 0pt
7 -- xkanjiskip: .25zw plus .25zw (or .0833zw) minus .125zw
14 kanjiskip = { 0.0, 0.25, 0 },
15 xkanjiskip = { 0.25, 0.25, .125 },
17 align = 'left', left = 0.0, down = 0.0,
18 width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
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 },
31 round_threshold = 0.01,
36 '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖',
37 '〘', '〝', '(', '[', '{', '⦅'
39 align = 'right', left = 0.0, down = 0.0,
40 width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
43 [0] = { 0, 0, 0, kanjiskip_shrink=1 },
44 [1] = { 0, 0, 0, kanjiskip_shrink=1 },
45 [2] = { 0, 0, 0, kanjiskip_shrink=1, kanjiskip_stretch=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 [007] = { 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 },
60 '’', '”', '〉', '》', '」', '』', '】', '〕',
61 '〗', '〙', '〟', ')', ']', '}', '⦆', '、', ',*'
63 align = 'left', left = 0.0, down = 0.0,
64 width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
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 [007] = { 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 },
83 chars = {'・', ':', ';', '·'},
84 align = 'middle', left = 0.0, down = 0.0,
85 width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
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.5 , 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 [007] = { 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 },
106 align = 'left', left = 0.0, down = 0.0,
107 width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
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 [007] = { 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 },
124 chars = { '—', '―', '‥', '…', '〳', '〴', '〵', },
125 align = 'left', left = 0.0, down = 0.0,
126 width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
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 },
140 [105] = { -- 二分(二重)ダッシュ
141 chars = { '゠', '–' },
142 align = 'middle', left = 0.0, down = 0.0,
143 width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
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 },
158 chars = { '?', '!', '‼', '⁇', '⁈', '⁉', },
159 align = 'left', left = 0.0, down = 0.0,
160 width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
162 [0] = { 0.5 , 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 [007] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
169 [107] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
170 [207] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
171 [8] = { 0, 0, 0, kanjiskip_shrink=1 },
179 [007] = { -- 半角カナ,その他半角CID
181 '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ',
182 'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ',
183 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ',
184 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト',
185 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ',
186 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ',
187 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン', '゙', '゚',
189 align = 'left', left = 0.0, down = 0.0,
190 width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
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 [8] = { 0, 0, 0, kanjiskip_shrink=1 },
199 kern = { [307] = 0 },
204 align = 'left', left = 0.0, down = 0.0,
205 width = 1/3, height = 0.88, depth = 0.12, italic=0.0,
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 },
219 align = 'left', left = 0.0, down = 0.0,
220 width = 0.25, height = 0.88, depth = 0.12, italic=0.0,
222 [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
223 [2] = { 0, 0, 0, kanjiskip_shrink=1 },
224 [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
225 [4] = { 0, 0, 0, kanjiskip_shrink=1 },
226 [6] = { 0, 0, 0, kanjiskip_shrink=1 },
227 [207] = { 0, 0, 0, kanjiskip_shrink=1 },
228 [8] = { 0, 0, 0, kanjiskip_shrink=1 },
232 [307] = { -- 合成用(半)濁点
233 chars = { 0x3099, 0x309A },
234 align = 'right', left = 0.0, down = 0.0,
235 width = 0, height = 0.88, depth = 0.12, italic=0.0,
237 [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
238 [2] = { 0, 0, 0, kanjiskip_shrink=1 },
239 [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
240 [4] = { 0, 0, 0, kanjiskip_shrink=1 },
241 [6] = { 0, 0, 0, kanjiskip_shrink=1 },
242 [207] = { 0, 0, 0, kanjiskip_shrink=1 },
243 [8] = { 0, 0, 0, kanjiskip_shrink=1 },
249 '─', '━', '│', '┃', '┄', '┅', '┆', '┇',
250 '┈', '┉', '┊', '┋', '┌', '┍', '┎', '┏',
251 '┐', '┑', '┒', '┓', '└', '┕', '┖', '┗',
252 '┘', '┙', '┚', '┛', '├', '┝', '┞', '┟',
253 '┠', '┡', '┢', '┣', '┤', '┥', '┦', '┧',
254 '┨', '┩', '┪', '┫', '┬', '┭', '┮', '┯',
255 '┰', '┱', '┲', '┳', '┴', '┵', '┶', '┷',
256 '┸', '┹', '┺', '┻', '┼', '┽', '┾', '┿',
257 '╀', '╁', '╂', '╃', '╄', '╅', '╆', '╇',
258 '╈', '╉', '╊', '╋', '╌', '╍', '╎', '╏',
259 '═', '║', '╒', '╓', '╔', '╕', '╖', '╗',
260 '╘', '╙', '╚', '╛', '╜', '╝', '╞', '╟',
261 '╠', '╡', '╢', '╣', '╤', '╥', '╦', '╧',
262 '╨', '╩', '╪', '╫', '╬', '╭', '╮', '╯',
263 '╰', '╱', '╲', '╳', '╴', '╵', '╶', '╷',
264 '╸', '╹', '╺', '╻', '╼', '╽', '╾', '╿',
266 align = 'left', left = 0.0, down = 0.0,
267 width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
269 [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 },
270 [2] = { 0, 0, 0, kanjiskip_shrink=1 },
271 [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 },
272 [4] = { 0, 0, 0, kanjiskip_shrink=1 },
273 [6] = { 0, 0, 0, kanjiskip_shrink=1 },
282 chars = {'boxbdd', 'parbdd', 'glue'},
287 local ht = t[007].chars
288 for i=231,632 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
289 for i=8718,8719 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
290 for i=12063,12087 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
291 local ht = t[107].chars
292 for i=9758,9778 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
293 local ht = t[207].chars
294 for i=9738,9757 do ht[#ht+1] = 'AJ1-' .. tostring(i) end
296 t[100]=table.fastcopy(t[0])
297 t[100].chars={'nox_alchar'}
298 for i,v in pairs(t) do
299 if i~=6 and type(i)=='number' and type(v)=='table' then -- 感嘆符以外
300 if v.glue and v.glue[0] then v.glue[100] = v.glue[0] end
301 if v.kern and v.kern[0] then v.kern[100] = v.kern[0] end
305 luatexja.jfont.define_jfm(t)