X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fjfm-ujis.lua;h=476f063db9b36b35971bfd56dfd06d8f050e6809;hb=ad8f4b2c121a74655e3260acbe57a5eacfcaf16b;hp=6b4324ec3e506dfa54d5cde990105c7c9cb35dc3;hpb=9efef5f7e935fe48ca1c2fc49ae4361395946514;p=luatex-ja%2Fluatexja.git diff --git a/src/jfm-ujis.lua b/src/jfm-ujis.lua index 6b4324e..476f063 100644 --- a/src/jfm-ujis.lua +++ b/src/jfm-ujis.lua @@ -1,104 +1,287 @@ -ltj.define_jfm { +-- -*- coding: utf-8 -*- +-- jfm-ujis.lua: LuaTeX-ja 標準 JFM +-- based on upnmlminr-h.tfm (a metric in UTF/OTF package used by upTeX). + +-- JIS X 4051:2004 では,行末の句読点や中点はベタなのでそれに従う +-- kanjiskip: 0pt plus .25zw minus 0pt +-- xkanjiskip: .25zw plus .25zw (or .0833zw) minus .125zw + + +local t = { + version = 3, dir = 'yoko', zw = 1.0, zh = 1.0, - + kanjiskip = { 0.0, 0.25, 0 }, + xkanjiskip = { 0.25, 0.25, .125 }, [0] = { align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25 } + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + [007] = { 0, 0, 0, kanjiskip_shrink=1 }, + [107] = { 0, 0, 0, kanjiskip_shrink=1 }, + [207] = { 0, 0, 0, kanjiskip_shrink=1 }, + [8] = { 0, 0, 0, kanjiskip_shrink=1 }, } }, [1] = { -- 開き括弧類 chars = { - 0x2018, 0x201C, 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, 0x3016, - 0x3018, 0x301D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F + '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖', + '〘', '〝', '(', '[', '{', '⦅' }, align = 'right', left = 0.0, down = 0.0, width = 0.5, height = 0.88, depth = 0.12, italic=0.0, glue = { - [3] = { 0.25, 0.0, 0.25 } +-- 3 のみ四分,あとは0 + [0] = { 0, 0, 0, kanjiskip_shrink=1 }, + [1] = { 0, 0, 0, kanjiskip_shrink=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1, kanjiskip_stretch=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [5] = { 0, 0, 0, kanjiskip_shrink=1 }, + [105] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + [007] = { 0, 0, 0, kanjiskip_shrink=1 }, + [107] = { 0, 0, 0, kanjiskip_shrink=1 }, + [207] = { 0, 0, 0, kanjiskip_shrink=1 }, + [8] = { 0, 0, 0, kanjiskip_shrink=1 }, } }, [2] = { -- 閉じ括弧類 chars = { - 0x2019, 0x201D, 0x3001, 0x3009, 0x300B, 0x300D, 0x300F, 0x3011, 0x3015, - 0x3017, 0x3019, 0x301F, 0xFF09, 0xFF0C, 0xFF3D, 0xFF5D, 0xFF60 + '’', '”', '〉', '》', '」', '』', '】', '〕', + '〗', '〙', '〟', ')', ']', '}', '⦆', '、', ',*' }, align = 'left', left = 0.0, down = 0.0, width = 0.5, height = 0.88, depth = 0.12, italic=0.0, glue = { - [0] = { 0.5 , 0.0, 0.5 }, - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25 }, - [5] = { 0.5 , 0.0, 0.5 }, - [7] = { 0.5 , 0.0, 0.5 } +-- 3 は四分, 2, 4, 9 は0, あとは0.5 + [0] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [1] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1}, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [5] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [105] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [6] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [007] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [107] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [207] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [8] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, } }, [3] = { -- 中点類 - chars = {0x30FB, 0xFF1A, 0xFF1B}, + chars = {'・', ':', ';'}, align = 'middle', left = 0.0, down = 0.0, width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + --end_stretch = 0.25, glue = { - [0] = { 0.25, 0.0, 0.25 }, - [1] = { 0.25, 0.0, 0.25 }, - [2] = { 0.25, 0.0, 0.25 }, - [3] = { 0.5 , 0.0, 0.5 }, - [4] = { 0.25, 0.0, 0.25 }, - [5] = { 0.25, 0.0, 0.25 }, - [7] = { 0.25, 0.0, 0.25 } +-- 3 のみ 0.5,あとは0.25 + [0] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [1] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [2] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [3] = { 0.5 , 0.0, 0.5 , priority=1 }, + [4] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [5] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [105] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [6] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [007] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [107] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [207] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [8] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, } }, [4] = { -- 句点類 - chars = {0x3002, 0xFF0E}, + chars = {'。', '.'}, align = 'left', left = 0.0, down = 0.0, width = 0.5, height = 0.88, depth = 0.12, italic=0.0, glue = { - [0] = { 0.5 , 0.0, 0.0 }, - [1] = { 0.5 , 0.0, 0.0 }, - [3] = { 0.75, 0.0, 0.25 }, - [5] = { 0.5 , 0.0, 0.0 }, - [7] = { 0.5 , 0.0, 0.0 } + -- 3 は.75, 2, 4 は0, あとは0.5 + [0] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [1] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [3] = { 0.75, 0.0, 0.25, priority=1, ratio=1./3, kanjiskip_stretch=1 }, + [5] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [105] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [6] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [007] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [107] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [207] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [8] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, } }, - [5] = { -- ダッシュ - chars = { 0x2015, 0x2025, 0x2026 }, + [5] = { -- 分離禁止文字 + chars = { '—', '―', '‥', '…', '〳', '〴', '〵', }, align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25 } + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + }, + kern = { + [5] = 0.0, + [105] = 0.0 + } + }, + + [105] = { -- 二分(二重)ダッシュ + chars = { '゠', '–' }, + align = 'middle', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, }, kern = { - [5] = 0.0 + [5] = 0.0, + [105] = 0.0 + } + }, + + [6] = { -- 感嘆符・疑問符 + chars = { '?', '!', '‼', '⁇', '⁈', '⁉', }, + align = 'left', left = 0.0, down = 0.0, + width = 1.0, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.75, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + [007] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [107] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [207] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [8] = { 0, 0, 0, kanjiskip_shrink=1 }, + }, + kern = { + [5] = 0.0, + [105] = 0.0 + } + }, + + [007] = { -- 半角カナ,その他半角CID + chars = { + '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ', + 'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ', + 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', + 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', + 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', + 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', + 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン', '゙', '゚', + }, + align = 'left', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + [8] = { 0, 0, 0, kanjiskip_shrink=1 }, } }, - [6] = { -- box末尾 - chars = {'boxbdd'}, + [107] = { -- 1/3 角 + chars = {}, + align = 'left', left = 0.0, down = 0.0, + width = 1/3, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + [107] = { 0, 0, 0, kanjiskip_shrink=1 }, + [8] = { 0, 0, 0, kanjiskip_shrink=1 }, + } }, - [7] = { -- 半角カナ + [207] = { -- 1/4 角 + chars = {}, + align = 'left', left = 0.0, down = 0.0, + width = 0.25, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + [207] = { 0, 0, 0, kanjiskip_shrink=1 }, + [8] = { 0, 0, 0, kanjiskip_shrink=1 }, + } + }, + + [8] = { -- 罫線類. chars = { - 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67, 0xFF68, 0xFF69, - 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, 0xFF70, 0xFF71, 0xFF72, - 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, - 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, - 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, - 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0xFF96, - 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F + '─', '━', '│', '┃', '┄', '┅', '┆', '┇', + '┈', '┉', '┊', '┋', '┌', '┍', '┎', '┏', + '┐', '┑', '┒', '┓', '└', '┕', '┖', '┗', + '┘', '┙', '┚', '┛', '├', '┝', '┞', '┟', + '┠', '┡', '┢', '┣', '┤', '┥', '┦', '┧', + '┨', '┩', '┪', '┫', '┬', '┭', '┮', '┯', + '┰', '┱', '┲', '┳', '┴', '┵', '┶', '┷', + '┸', '┹', '┺', '┻', '┼', '┽', '┾', '┿', + '╀', '╁', '╂', '╃', '╄', '╅', '╆', '╇', + '╈', '╉', '╊', '╋', '╌', '╍', '╎', '╏', + '═', '║', '╒', '╓', '╔', '╕', '╖', '╗', + '╘', '╙', '╚', '╛', '╜', '╝', '╞', '╟', + '╠', '╡', '╢', '╣', '╤', '╥', '╦', '╧', + '╨', '╩', '╪', '╫', '╬', '╭', '╮', '╯', + '╰', '╱', '╲', '╳', '╴', '╵', '╶', '╷', + '╸', '╹', '╺', '╻', '╼', '╽', '╾', '╿', }, align = 'left', left = 0.0, down = 0.0, - width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25 } + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + }, + kern = { + [8] = 0.0 } }, -} \ No newline at end of file + + + [99] = { -- box末尾 + chars = {'boxbdd', 'parbdd', 'glue'}, + }, + +} + +local ht = t[007].chars +for i=231,632 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +for i=8718,8719 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +for i=12063,12087 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +local ht = t[107].chars +for i=9758,9778 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +local ht = t[207].chars +for i=9738,9757 do ht[#ht+1] = 'AJ1-' .. tostring(i) end + +t[100]=table.fastcopy(t[0]) +t[100].chars={'nox_alchar'} +for i,v in pairs(t) do + if i~=6 and type(i)=='number' and type(v)=='table' then -- 感嘆符以外 + if v.glue and v.glue[0] then v.glue[100] = v.glue[0] end + if v.kern and v.kern[0] then v.kern[100] = v.kern[0] end + end +end + +luatexja.jfont.define_jfm(t)