X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fjfm-ujisv.lua;h=ccae212f886e61b550fab6db664c3604b9bce722;hb=f078ac2f7998a102c7ec765e725f2269eed9f872;hp=1a73013fef2bd7d5d398fd5bc7d1ae76ca48a235;hpb=0211bf6b5b8902e996c4406311baecca323d24e0;p=luatex-ja%2Fluatexja.git diff --git a/src/jfm-ujisv.lua b/src/jfm-ujisv.lua index 1a73013..ccae212 100644 --- a/src/jfm-ujisv.lua +++ b/src/jfm-ujisv.lua @@ -1,5 +1,5 @@ -- -*- coding: utf-8 -*- --- jfm-ujis.lua: LuaTeX-ja 標準 JFM +-- jfm-ujisv.lua: LuaTeX-ja 標準 JFM(縦組み用) -- based on upnmlminr-h.tfm (a metric in UTF/OTF package used by upTeX). -- JIS X 4051:2004 では,行末の句読点や中点はベタなのでそれに従う @@ -7,88 +7,96 @@ -- xkanjiskip: .25zw plus .25zw (or .0833zw) minus .125zw -luatexja.jfont.define_jfm { +local t = { + version = 3, dir = 'tate', zw = 1.0, zh = 1.0, - kanjiskip = {0.0, 0.25, 0}, - xkanjiskip = {0.25, 0.25, .125}, + kanjiskip = { 0.0, 0.25, 0 }, + xkanjiskip = { 0.25, 0.25, .125 }, [0] = { - align = 'middle', left = 0.0, down = 0.0, + align = 'middle', left = 0.00, down = 0.00, width = 1.0, height = 0.50, depth = 0.50, italic=0.0, glue = { - -- [index] = { width, stretch, shrink, [priority, [ratio]] } - [1] = { 0.5 , 0.0, 0.5, 0, 1 }, - [2] = {0, 0, 0}, - [3] = { 0.25, 0.0, 0.25, 1, 1 }, - [4] = {0, 0, 0}, - [6] = {0, 0, 0}, - [7] = {0, 0, 0}, - [8] = {0, 0, 0}, - [9] = {0, 0, 0}, - } + [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 }, + [7] = { 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 }, + }, + kern = { [307] = 0 }, }, [1] = { -- 開き括弧類 chars = { - '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖', + '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖', '〘', '〝', '(', '[', '{', '⦅' }, align = 'right', left = 0.0, down = 0.0, width = 0.5, height = 0.50, depth = 0.50, italic=0.0, glue = { -- 3 のみ四分,あとは0 - [0] = {0, 0, 0}, - [1] = {0, 0, 0}, - [2] = {0, 0, 0}, - [3] = { 0.25, 0.0, 0.25, 1 }, - [4] = {0, 0, 0}, - [5] = {0, 0, 0}, - [6] = {0, 0, 0}, - [7] = {0, 0, 0}, - [8] = {0, 0, 0}, - [9] = {0, 0, 0}, + [0] = { 0, 0, 0, kanjiskip_shrink=1 }, + [1] = { 0, 0, 0, kanjiskip_shrink=1 }, + [2] = { 0, 0, 0, kanjiskip_stretch=1, kanjiskip_shrink=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 }, + [7] = { 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 = { - '’', '”', '〉', '》', '」', '』', '】', '〕', - '〗', '〙', '〟', ')', ']', '}', '⦆', '、*', ',*' + '’', '”', '〉', '》', '」', '』', '】', '〕', + '〗', '〙', '〟', ')', ']', '}', '⦆', '、', ',' }, align = 'left', left = 0.0, down = 0.0, width = 0.5, height = 0.50, depth = 0.50, italic=0.0, glue = { -- 3 は四分, 2, 4, 9 は0, あとは0.5 - [0] = { 0.5 , 0.0, 0.5, 0, -1 }, - [1] = { 0.5 , 0.0, 0.5, 0, -1 }, - [2] = {0, 0, 0}, - [3] = { 0.25, 0.0, 0.25, 1, 1 }, - [4] = {0, 0, 0}, - [5] = { 0.5 , 0.0, 0.5, 0, -1 }, - [6] = { 0.5 , 0.0, 0.5, 0, -1 }, - [7] = { 0.5 , 0.0, 0.5, 0, -1 }, - [8] = { 0.5 , 0.0, 0.5, 0, -1 }, - [9] = {0, 0, 0}, + [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 }, + [7] = { 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 = {'・', ':', ';'}, + chars = {'・', ':', ';', '·'}, align = 'middle', left = 0.0, down = 0.0, width = 0.5, height = 0.50, depth = 0.50, italic=0.0, --end_stretch = 0.25, glue = { -- 3 のみ 0.5,あとは0.25 - [0] = { 0.25, 0.0, 0.25, 1, 1 }, - [1] = { 0.25, 0.0, 0.25, 1, 1 }, - [2] = { 0.25, 0.0, 0.25, 1, 1 }, - [3] = { 0.5 , 0.0, 0.5 , 1, 0 }, - [4] = { 0.25, 0.0, 0.25, 1, 1 }, - [5] = { 0.25, 0.0, 0.25, 1, 1 }, - [6] = { 0.25, 0.0, 0.25, 1, 1 }, - [7] = { 0.25, 0.0, 0.25, 1, 1 }, - [8] = { 0.25, 0.0, 0.25, 1, 1 }, - [9] = { 0.25, 0.0, 0.25, 1, 1 }, + [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.25, 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 }, + [7] = { 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 }, } }, @@ -98,31 +106,50 @@ luatexja.jfont.define_jfm { width = 0.5, height = 0.50, depth = 0.50, italic=0.0, glue = { -- 3 は.75, 2, 4 は0, あとは0.5 - [0] = { 0.5 , 0.0, 0.5, 0, -1 }, - [1] = { 0.5 , 0.0, 0.5, 0, -1 }, - [3] = { 0.75, 0.0, 0.25, 1, -1/3 }, - [5] = { 0.5 , 0.0, 0.5, 0, -1 }, - [6] = { 0.5 , 0.0, 0.5, 0, -1 }, - [7] = { 0.5 , 0.0, 0.5, 0, -1 }, - [8] = { 0.5 , 0.0, 0.5, 0, -1 }, - [9] = { 0.5 , 0.0, 0.5, 0, -1 }, + [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 }, + [7] = { 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] = { -- ダッシュ + [5] = { -- 分離禁止文字 chars = { '—', '―', '‥', '…', '〳', '〴', '〵', }, align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.50, depth = 0.50, italic=0.0, glue = { - [1] = { 0.5 , 0.0, 0.5, 0, 1 }, - [2] = {0, 0, 0}, - [3] = { 0.25, 0.0, 0.25, 1, 1 }, - [4] = {0, 0, 0}, - [6] = {0, 0, 0}, - [9] = {0, 0, 0}, + [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, + } + }, + + [5] = { -- -- 二分(二重)ダッシュ + chars = { '゠', '–' }, + align = 'middle', left = 0.0, down = 0.0, + width = 0.50, height = 0.50, depth = 0.50, 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 } }, @@ -131,54 +158,85 @@ luatexja.jfont.define_jfm { align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.50, depth = 0.50, italic=0.0, glue = { - [0] = { 0.5 , 0.0, 0.5, 0, 1 }, - [1] = { 0.5 , 0.0, 0.5, 0, 1 }, - [2] = {0, 0, 0}, - [3] = { 0.75, 0.0, 0.25, 1, 1 }, - [4] = {0, 0, 0}, - [6] = {0, 0, 0}, - [7] = { 0.5 , 0.0, 0.5, 0, 1 }, - [8] = {0, 0, 0}, - [9] = {0, 0, 0}, + [0] = { 1.0 , 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 }, + [7] = { 1.0 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [107] = { 1.0 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [207] = { 1.0 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [8] = { 0, 0, 0, kanjiskip_shrink=1 }, }, kern = { - [5] = 0.0 + [5] = 0.0, + [105] = 0.0, } }, - [7] = { -- 半角カナ + [7] = { -- 半角カナ,その他半角CID chars = { - '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ', - 'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ', - 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', - 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', - 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', - 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', + '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ', + 'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ', + 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', + 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', + 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', + 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン', '゙', '゚', - "AJ1-516", "AJ1-517", "AJ1-518", "AJ1-519", "AJ1-520", "AJ1-521", "AJ1-522", - "AJ1-523", "AJ1-524", "AJ1-525", "AJ1-526", "AJ1-527", "AJ1-528", "AJ1-529", - "AJ1-530", "AJ1-531", "AJ1-532", "AJ1-533", "AJ1-534", "AJ1-535", "AJ1-536", - "AJ1-537", "AJ1-538", "AJ1-539", "AJ1-540", "AJ1-541", "AJ1-542", "AJ1-543", - "AJ1-544", "AJ1-545", "AJ1-546", "AJ1-547", "AJ1-548", "AJ1-549", "AJ1-550", - "AJ1-551", "AJ1-552", "AJ1-553", "AJ1-554", "AJ1-555", "AJ1-556", "AJ1-557", - "AJ1-558", "AJ1-559", "AJ1-560", "AJ1-561", "AJ1-562", "AJ1-563", "AJ1-564", - "AJ1-565", "AJ1-566", "AJ1-567", "AJ1-568", "AJ1-569", "AJ1-570", "AJ1-571", - "AJ1-572", "AJ1-573", "AJ1-574", "AJ1-575", "AJ1-576", "AJ1-577", "AJ1-578", - "AJ1-579", "AJ1-580", "AJ1-581", "AJ1-582", "AJ1-583", "AJ1-584", "AJ1-585", - "AJ1-586", "AJ1-587", "AJ1-588", "AJ1-589", "AJ1-590", "AJ1-591", "AJ1-592", - "AJ1-593", "AJ1-594", "AJ1-595", "AJ1-596", "AJ1-597", "AJ1-598", }, align = 'left', left = 0.0, down = 0.0, - width = 0.5, height = 0.50, depth = 0.50, italic=0.0, + width = 0.5, height = 0.5, depth = 0.5, 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 }, + [7] = { 0, 0, 0, kanjiskip_shrink=1 }, + [8] = { 0, 0, 0, kanjiskip_shrink=1 }, + } + }, + + [107] = { -- 1/3 角 + chars = {}, + align = 'left', left = 0.0, down = 0.0, + width = 1/3, height = 0.5, depth = 0.5, 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 }, + } + }, + [207] = { -- 1/4 角 + chars = {}, + align = 'left', left = 0.0, down = 0.0, + width = 1/4, height = 0.5, depth = 0.5, 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 }, + } + }, + [307] = { -- 合成用濁点・半濁点 + chars = { 0x3099, 0x309A }, + align = 'right', left = 0.0, down = 0.0, + width = 0, height = 0.5, depth = 0.5, italic=0.0, glue = { - [1] = { 0.5 , 0.0, 0.5, 0, 1 }, - [2] = {0, 0, 0}, - [3] = { 0.25, 0.0, 0.25, 1, 1 }, - [4] = {0, 0, 0}, - [6] = {0, 0, 0}, - [7] = {0, 0, 0}, - [8] = {0, 0, 0}, - [9] = {0, 0, 0}, + [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 }, } }, @@ -192,7 +250,7 @@ luatexja.jfont.define_jfm { '┨', '┩', '┪', '┫', '┬', '┭', '┮', '┯', '┰', '┱', '┲', '┳', '┴', '┵', '┶', '┷', '┸', '┹', '┺', '┻', '┼', '┽', '┾', '┿', - '╀', '╁', '╂', '╃', '╄', '╅', '╆', '╇', + '╀', '╁', '╂', '╃', '╄', '╅', '╆', '╇', '╈', '╉', '╊', '╋', '╌', '╍', '╎', '╏', '═', '║', '╒', '╓', '╔', '╕', '╖', '╗', '╘', '╙', '╚', '╛', '╜', '╝', '╞', '╟', @@ -204,44 +262,46 @@ luatexja.jfont.define_jfm { align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.50, depth = 0.50, italic=0.0, glue = { - [1] = { 0.5 , 0.0, 0.5, 0, 1 }, - [2] = {0, 0, 0}, - [3] = { 0.25, 0.0, 0.25, 1, 1 }, - [4] = {0, 0, 0}, - [6] = {0, 0, 0}, - [9] = {0, 0, 0}, + [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 } }, - [9] = { -- 和字間隔 - chars = { - ' ' - }, - align = 'left', left = 0.0, down = 0.0, - width = 1.0, height = 0.50, depth = 0.50, italic=0.0, - glue = { - [0] = {0, 0, 0}, - [1] = {0, 0, 0}, - [2] = {0, 0, 0}, - [3] = { 0.25, 0.0, 0.25, 1 }, - [4] = {0, 0, 0}, - [5] = {0, 0, 0}, - [6] = {0, 0, 0}, - [7] = {0, 0, 0}, - [8] = {0, 0, 0}, - [9] = {0, 0, 0}, - }, - }, - - [99] = { -- box末尾 - chars = {'boxbdd', 'parbdd'}, - glue = { - [3] = { 0.25, 0.0, 0.25, 1 }, - } + chars = {'boxbdd', 'parbdd', 'glue'}, }, } +local ht = t[007].chars +for i=8950,9353 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +for i=10185,10195 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +local ht = t[107].chars +for i=13274,13294 do ht[#ht+1] = 'AJ1-' .. tostring(i) end +local ht = t[207].chars +for i=13254,13273 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 +t[200]=table.fastcopy(t[0]) +t[200].chars={'〱', '〲'} +t[200].width = 2.0 +for i,v in pairs(t) do + if type(v)=='table' then + if v.glue and v.glue[0] then v.glue[200] = v.glue[0] end + if v.kern and v.kern[0] then v.kern[200] = v.kern[0] end + end +end + +luatexja.jfont.define_jfm(t)