summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-02-13 20:56:22 +0000
committerKarl Berry <karl@freefriends.org>2023-02-13 20:56:22 +0000
commit01fbb21187a4477badb461174d2718d8ac04303a (patch)
tree173b58701ca6adca4ac37ca7b1c936584db9aeb7 /Master/texmf-dist/tex/luatex
parent02faaa93e729ccb5f614869f1c46d15d2b5502d3 (diff)
evangelion-jfm (13feb23)
git-svn-id: svn://tug.org/texlive/trunk@65824 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex')
-rw-r--r--Master/texmf-dist/tex/luatex/evangelion-jfm/jfm-eva.lua367
1 files changed, 367 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/luatex/evangelion-jfm/jfm-eva.lua b/Master/texmf-dist/tex/luatex/evangelion-jfm/jfm-eva.lua
new file mode 100644
index 00000000000..970cbc851ca
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/evangelion-jfm/jfm-eva.lua
@@ -0,0 +1,367 @@
+---- Evangelion Japanese Font Metric for LuaTeX
+---- Current Version: 1.0.0 (b)
+---- Dev URL: https://github.com/RadioNoiseE/Evangelion-JFM
+---- © Copyright 2023, RadioNoiseE
+
+
+-- 初始化
+local lang_jp, lang_tc, lang_sc, dir_vt, font_extd, punc_lg, punc_hg, std_nil
+
+if luatexja.jfont.jfm_feature then
+ lang_jp = luatexja.jfont.jfm_feature.jp
+ lang_tc = luatexja.jfont.jfm_feature.trad
+ lang_sc = luatexja.jfont.jfm_feature.smpl
+ dir_vt = luatexja.jfont.jfm_feature.vert
+ font_extd = luatexja.jfont.jfm_feature.extd
+ punc_lg = luatexja.jfont.jfm_feature.lgp
+ punc_hg = luatexja.jfont.jfm_feature.hgp
+ std_nil = luatexja.jfont.jfm_feature.nstd
+end
+
+-- 預處理及容錯
+if font_extd == true and dir_vt == false then
+ tex.error('JFM feature "extd" only works with feature "vert".\n' ..
+ 'For now I\'ll ignore it.')
+end
+
+if punc_lg == true and dir_vt == false then
+ tex.error('JFM feature "lgp" only works with feature "vert".\n' ..
+ 'For now I\'ll ignore it.')
+end
+
+if not ((lang_jp and not (lang_tc or lang_sc)) or
+ (lang_tc and not (lang_jp or lang_sc)) or
+ (lang_sc and not (lang_jp or lang_tc))) then
+ tex.error('Specify one and only one feature from three language specific features\n' ..
+ '"jp", "trad" or "smpl"\n' ..
+ 'is required.\n' ..
+ 'For now I\'ll use "lang_jp" for japanese by default.')
+end
+
+-- 定義函數宏
+local function logic_anif(f1, f2, r1, r2)
+ local rta = f1 and (f2 and r1) or r2
+ return rta
+end
+
+local function logic_if(f1, r1, r2)
+ local rti = f1 and r1 or r2
+ return rti
+end
+
+local function context_height()
+ local rth = dir_vt and (font_extd and 0.625 or 0.5) or 0.88
+ return rth
+end
+
+local function context_depth()
+ local rtd = dir_vt and (font_extd and 0.625 or 0.5) or 0.12
+ return rtd
+end
+
+-- 主體
+local eva = {
+ version = 3,
+ dir = logic_if(dir_vt, 'tate', 'yoko'),
+ zw = 1,
+ zh = logic_anif(dir_vt, font_extd, 1.25, 1),
+ kanjiskip = {0, 0.25, 0},
+ xkanjiskip = {0.25, 0.25, 0.125},
+
+ [0] = { -- 缺省類
+ width = 1,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = 'middle',
+ glue = {
+ [1] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = logic_if(std_nil, {-1, 0}, {-1, -2})}, {}),
+ [2] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = logic_if(std_nil, {-1, -2}, {-1, 0})}, {}),
+ [3] = logic_if(dir_vt, {}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = {-1, -1}}, {priority = {0, -1}})),
+ [7] = {0.5, 0, 0.25, ratio = 1, priority = {-1, -2}},
+ [9] = {0.25, 0, 0.125, ratio = 1, priority = {-1, -1}}
+ },
+ round_threshold = 0.01
+ },
+
+ [1] = { -- 読点類
+ chars = logic_anif(dir_vt, punc_lg, {}, {'、', ','}),
+ width = 0.5,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = logic_if(lang_tc, 'middle', 'left'),
+ glue = {
+ [0] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {-1, 0}, {-1, -2})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {-1, 0}, {-1, -2})}),
+ [1] = logic_if(lang_tc, {0.5, 0, 0.25}, {0.5, 0, 0.25}),
+ [2] = logic_if(lang_tc, {0.5, 0, 0.5}, {0.5, 0, 0.25}),
+ [3] = logic_if(dir_vt, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = {0, -1}}, {0.5, 0, 0.25, priority = {0, -1}}), logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {0, -1}})),
+ [4] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {0, 0}, {0, -2})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {0, 0}, {0, -2})}),
+ [5] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {0, 0}, {0, -2})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {0, 0}, {0, -2})}),
+ [6] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {-1, 0}, {-1, -2})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {-1, 0}, {-1, -2})}),
+ [7] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {-1, 0}, {-1, -2})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {-1, 0}, {-1, -2})}),
+ [8] = logic_if(lang_tc, {0.25, 0, 0.125}, {}),
+ [9] = logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.75, 0, 0.25, ratio = 1/3, priority = {0, -1}})
+ },
+ end_adjust = logic_if(lang_tc, {0.25, 0}, logic_if(punc_hg, {-0.5, 0}, {0, 0}))
+ },
+
+ [101] = { -- 読点類(行間a)
+ chars = logic_anif(dir_vt, punc_lg, {'、'}, {}),
+ width = 0,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0.38,
+ down = -0.34,
+ align = 'left'
+ },
+
+ [102] = { -- 読点類(行間b)
+ chars = logic_anif(dir_vt, punc_lg, {','}, {}),
+ width = 0,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = logic_if(lang_tc, 0.62, 0.40),
+ down = logic_if(lang_tc, -0.58, -0.26),
+ align = 'left'
+ },
+
+ [2] = { -- 句點類
+ chars = logic_anif(dir_vt, punc_lg, {}, {'.', '。'}),
+ width = 0.5,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = logic_if(lang_tc, 'middle', 'left'),
+ glue = {
+ [0] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {-1, -2}, {-1, 0})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {-1, -2}, {-1, 0})}),
+ [1] = logic_if(lang_tc, {0.5, 0, 0.25}, {0.5, 0, 0.25, ratio = 0}),
+ [2] = logic_if(lang_tc, {0.5, 0, 0.25}, {0.5, 0, 0.25, ratio = 0}),
+ [3] = logic_if(dir_vt, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = {0, -1}}, {0.5, 0, 0.25, priority = {0, -1}}), logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {0, -1}})),
+ [4] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {0, -2}, {0, 0})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {0, -2}, {0, 0})}),
+ [5] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {0, -2}, {0, 0})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {0, -2}, {0, 0})}),
+ [6] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {-1, -2}, {-1, 0})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {-1, -2}, {-1, 0})}),
+ [7] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = logic_if(std_nil, {-1, -2}, {-1, 0})}, {0.5, 0, 0.25, ratio = 0, priority = logic_if(std_nil, {-1, -2}, {-1, 0})}),
+ [8] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0}, {}),
+ [9] = logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.75, 0, 0.25, ratio = 1/3, priority = {0, -1}})
+ },
+ end_adjust = logic_if(lang_tc, {0.25, 0}, logic_if(punc_hg, {-0.5, 0}, {0, 0}))
+ },
+
+ [201] = { -- 句點類(行間a)
+ chars = logic_anif(dir_vt, punc_lg, {'.'}, {}),
+ width = 0,
+ height = context_height(),
+ depth = context_height(),
+ italic = 0,
+ left = logic_if(lang_tc, 0.68, 0.34),
+ down = logic_if(lang_tc, -0.58, -0.28),
+ align = 'left'
+ },
+
+ [202] = { -- 句點類(行間b)
+ chars = logic_anif(dir_vt, punc_lg, {'。'}, {}),
+ width = 0,
+ height = context_height(),
+ depth = context_height(),
+ italic = 0,
+ left = 0.42,
+ down = -0.35,
+ align = 'left'
+ },
+
+ [3] = { -- 兩點類
+ chars = logic_if(lang_jp, {}, (logic_anif(dir_vt, punc_lg, {}, {':', ';'}))),
+ width = logic_if(dir_vt, 1, 0.5),
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = logic_if(lang_tc, 'middle', 'left'),
+ glue = {
+ [0] = logic_if(dir_vt, {}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = {-1, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {-1, -1}})),
+ [1] = logic_if(dir_vt, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}, {priority = {0, -1}}), logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {0, -1}})),
+ [2] = logic_if(dir_vt, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}, {priority = {0, -1}}), logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {0, -1}})),
+ [3] = logic_if(dir_vt, {}, logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {0, -1}})),
+ [4] = logic_if(dir_vt, {}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = {0, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {0, -1}})),
+ [5] = logic_if(dir_vt, {}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = {0, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {0, -1}})),
+ [6] = logic_if(dir_vt, {}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = {-1, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {-1, -1}})),
+ [7] = logic_if(dir_vt, {}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = {-1, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {-1, -1}})),
+ [8] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 0, priority = {0, -1}}, {0.5, 0, 0.25, ratio = 0, priority = {0, -1}}),
+ [9] = logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.75, 0, 0.25, ratio = 1/3, priority = {0, -1}})
+ }
+ },
+
+ [301] = { -- 兩點類(行間a)
+ chars = logic_if(lang_jp, {}, logic_anif(dir_vt, punc_lg, {':'}, {})),
+ width = 0,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = logic_if(lang_tc, 0.94, 0.72),
+ down = logic_if(lang_tc, -0.58, -0.34),
+ align = 'left'
+ },
+
+ [302] = { -- 兩點類(行間b)
+ chars = logic_if(lang_jp, {}, logic_anif(dir_vt, punc_lg, {';'}, {})),
+ width = 0,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = logic_if(lang_tc, 0.96, 0.78),
+ down = logic_if(lang_tc, -0.58, -0.34),
+ align = 'left'
+ },
+
+ [4] = { -- 小書きの仮名類
+ chars = {
+ 'ぁ', 'ぃ', 'ぅ', 'ぇ', 'ぉ', 'っ', 'ゃ', 'ゅ', 'ょ', 'ゎ', 'ゕ',
+ 'ゖ', 'ゝ', 'ゞ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ',
+ 'ョ', 'ヮ', 'ヵ', 'ヶ', 'ヽ', 'ヾ', 'ㇰ', 'ㇱ', 'ㇲ', 'ㇳ', 'ㇴ',
+ 'ㇵ', 'ㇶ', 'ㇷ', 'ㇸ', 'ㇹ', 'ㇺ', 'ㇻ', 'ㇼ', 'ㇽ', 'ㇾ', 'ㇿ'
+ },
+ width = 1,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = 'middle',
+ glue = {
+ [1] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, {}),
+ [2] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, {}),
+ [3] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}, {priority = {0, -1}}),
+ [7] = {0.5, 0, 0.25, ratio = 1, priority = {-1, -2}},
+ [9] = {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}
+ }
+ },
+
+ [5] = { -- 疑問感嘆類
+ chars = {'!', '?', '‼︎', '⁉︎', '⁈', '⁇'},
+ width = logic_if(dir_vt, 1, logic_if(lang_sc, 0.5, 1)),
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = logic_if(dir_vt, 'middle', logic_if(lang_sc, 'left', 'middle')),
+ glue = {
+ [0] = logic_if(dir_vt, logic_if(lang_jp, {1, 0, 0.5, ratio = 0, priority = {-1, 0}}, {priority = {-1, 0}}), logic_if(lang_tc, {priority = {-1, 0}}, {0.5, 0, 0.25, ratio = 0, priority = {-1, 0}})),
+ [1] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, logic_anif(not dir_vt, lang_sc, {0.5, 0, 0.25, ratio = 0}, {})),
+ [2] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, logic_anif(not dir_vt, lang_sc, {0.5, 0, 0.25, ratio = 0}, {})),
+ [3] = logic_if(dir_vt, {priority = {-1, -1}}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = {-1, -1}}, {0.75, 0, 0.25, ratio = 1/3, priority = {-1, -1}})),
+ [4] = logic_if(dir_vt, logic_if(lang_jp, {1, 0, 0.5, ratio = 0}, {}), logic_if(lang_tc, {}, {0.5, 0, 0.25, ratio = 0})),
+ [7] = {0.5, 0, 0.25, ratio = 1, priority = {-1, -2}},
+ [8] = logic_anif(not dir_vt, lang_sc, {0.5, 0, 0.25, ratio = 0}, {}),
+ [9] = logic_anif(not dir_vt, lang_sc, {0.75, 0, 0.25, ratio = 1/3, priority = {-1, -1}}, {0.25, 0, 0.125, ratio = 1, priority = {-1, -1}})
+ }
+ },
+
+ [6] = { -- 分離禁止類
+ chars = {'—', '―', '‥', '…', '⋯', '〳', '〴', '〵'},
+ width = 1,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = 'middle',
+ kern = {
+ [6] = 0
+ },
+ glue = {
+ [1] = logic_if(lang_tc, {0.25, 0, 0,125, ratio = 1}, {}),
+ [2] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, {}),
+ [3] = logic_if(dir_vt, {priority = {0, -1}}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}, {priority = {0, -1}})),
+ [7] = {0.5, 0, 0.25, ratio = 1, priority = {-1, -2}},
+ [9] = {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}
+ }
+ },
+
+ [7] = { -- 開括號類
+ chars = {'(', '〔', '[', '{', '〈', '《', '「', '『', '【', '⦅', '〘', '〖', '〝', '‘', '“'},
+ width = 0.5,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = 'right',
+ glue = {
+ [1] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, {}),
+ [2] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, {}),
+ [3] = logic_if(dir_vt, {priority = {0, -1}}, logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}, {priority = {0, -1}})),
+ [7] = {0, 0, 0, priority = {0, 0}, kanjiskip_shrink = 1},
+ [9] = {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}
+ }
+ },
+
+ [8] = { -- 閉括號類
+ chars = {')', '〕', ']', '}', '〉', '》', '」', '』', '】', '⦆', '〙', '〗', '〟', '’', '”'},
+ width = 0.5,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = 'left',
+ glue = {
+ [0] = {0.5, 0, 0.25, ratio = 0, priority = {-1, -2}},
+ [1] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, {}),
+ [2] = logic_if(lang_tc, {0.25, 0, 0.125, ratio = 1}, {}),
+ [3] = logic_if(lang_sc, {}, {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}),
+ [4] = {0.5, 0, 0.25, ratio = 0, priority = {0, -2}},
+ [5] = {0.5, 0, 0.25, ratio = 0, priority = {0, -2}},
+ [6] = {0.5, 0, 0.25, ratio = 0, priroity = {-1, -2}},
+ [7] = {0.5, 0, 0.25, ratio = 0, priority = {-1, -2}, kanjiskip_stretch = 1},
+ [8] = {0, 0, 0, priority = {0, 0}, kanjiskip_shrink = 1},
+ [9] = {0.25, 0, 0.125, ratio = 1, priority = {0, -1}}
+ }
+ },
+
+ [9] = { -- 中點類
+ chars = logic_if(lang_jp, {'・', ':', ';'}, {'・', '·'}),
+ width = 0.5,
+ height = context_height(),
+ depth = context_depth(),
+ italic = 0,
+ left = 0,
+ down = 0,
+ align = 'middle',
+ glue = {
+ [0] = {0.25, 0, 0.125, ratio = 0, priority = {-1, -1}},
+ [1] = logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.25, 0, 0.125, ratio = 0, priority = {0, -1}}),
+ [2] = logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.25, 0, 0.125, ratio = 0, priority = {0, -1}}),
+ [3] = logic_if(dir_vt, {0.25, 0, 0.125, ratio = 0, priority = {0, -1}}, logic_if(lang_tc, {0.5, 0, 0.25, priority = {0, -1}}, {0.25, 0, 0.125, priority = {0, -1}})),
+ [4] = {0.25, 0, 0.125, ratio = 0, priority = {0, -1}},
+ [5] = {0.25, 0, 0.125, ratio = 0, priority = {0, -1}},
+ [6] = {0.25, 0, 0.125, ratio = 0, priority = {-1, -1}},
+ [7] = {0.25, 0, 0.125, ratio = 0, priority = {-1, -1}},
+ [8] = {0.25, 0, 0.125, ratio = 0, priority = {0, -1}},
+ [9] = {0.5, 0, 0.25, priority = {0, -1}}
+ }
+ },
+
+ [10] = { -- 行頭
+ chars = {'boxbdd', 'parbdd'},
+ glue = {
+ [7] = {0, 0, 0}
+ }
+ },
+
+ [11] = { -- 伸縮膠
+ chars = {'glue'}
+ }
+}
+
+luatexja.jfont.define_jfm(eva)