texlive[57218] Master: chinese-jfm (24dec20)
commits+karl at tug.org
commits+karl at tug.org
Thu Dec 24 23:30:14 CET 2020
Revision: 57218
http://tug.org/svn/texlive?view=revision&revision=57218
Author: karl
Date: 2020-12-24 23:30:14 +0100 (Thu, 24 Dec 2020)
Log Message:
-----------
chinese-jfm (24dec20)
Modified Paths:
--------------
trunk/Master/tlpkg/bin/tlpkg-ctan-check
trunk/Master/tlpkg/libexec/ctan2tds
trunk/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/luatex/chinese-jfm/
trunk/Master/texmf-dist/doc/luatex/chinese-jfm/LICENSE
trunk/Master/texmf-dist/doc/luatex/chinese-jfm/README.md
trunk/Master/texmf-dist/tex/luatex/chinese-jfm/
trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-ja_JP.lua
trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_CN.lua
trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_TW.lua
trunk/Master/tlpkg/tlpsrc/chinese-jfm.tlpsrc
Added: trunk/Master/texmf-dist/doc/luatex/chinese-jfm/LICENSE
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/chinese-jfm/LICENSE (rev 0)
+++ trunk/Master/texmf-dist/doc/luatex/chinese-jfm/LICENSE 2020-12-24 22:30:14 UTC (rev 57218)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 ListLee
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Added: trunk/Master/texmf-dist/doc/luatex/chinese-jfm/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/chinese-jfm/README.md (rev 0)
+++ trunk/Master/texmf-dist/doc/luatex/chinese-jfm/README.md 2020-12-24 22:30:14 UTC (rev 57218)
@@ -0,0 +1,57 @@
+# 中文使用的 luatexja JFM 文件
+
+为中文编写的 luatexja JFM 文件,提供全角、半角、开明三种风格,适用于简繁中文及日文字体的横直排。
+
+## 使用方法
+
+luatexja 可以使用 `/` 来调用 JFM 特性,语法为 `JFM=<JFM name>/{<JFM features>}` 。受北川宏典先生的 [fork 版本](https://github.com/h-kitagawa/ChineseJFM/tree/combine)的影响,所有风格的 JFM 被整合进一个文件内,使用 JFM 特性调用。
+
+### 特性一览
+
+* `quanjiao`、`banjiao`、`kaiming`
+
+ 最基础的三种特性,即「全角」「半角」与「开明」。此三特性**必须**选择其中一种。
+
+* `vert`
+
+ 直排特性,在直排时必须使用。
+
+* `hwcl`
+
+ 半宽冒号特性,仅 zh_CN 拥有,必须在直排下使用。适用于部分竖排时冒号只占半宽的字体。
+
+* `prop`
+
+ 比例宽度特性,仅 ja_JP 拥有。适用于日文的比例假名字体。
+
+## 挤压顺序
+
+JFM 文件中同时增加了 `priority` 的设置,配合 luatexja-adjust 包,可以进行有优先顺序的标点挤压。挤压顺序如下:
+
+* 最优先挤压引号、括号前后与间隔号两边的空格;
+
+* 其次挤压顿号、逗号、冒号、分号后的空格;
+
+* 最后挤压句号、问号、叹号后的空格。
+
+* 如果进行上述挤压后,仍无法达到行长要求,最后才会进行字间字距调整。
+
+\**注:以上对标点空白的描述是针对于简体中文的。对于标点置中的繁体中文,以上调整顺序仍然适用。但此时除括号外,可调整的空白变为标点两边的空白。全宽标点无空白可调整的,不作调整。*
+
+以上挤压规则是针对于全角风格的标点调整。对于半角与开明这种标点风格,若以「挤压」理解,顺序仍相同,但直观性就有所欠缺。事实上,JFM 文件中的标点是沿袭铅字与 InDesign 的习惯,认为标点只占半宽,全宽标点是半宽标点加上半宽空格的结果。因此上述规则在半宽标点的前提下应描述为:
+
+* 最先给句号、问号、叹号插空;
+
+* 其次添加顿号、逗号、冒号、分号后空格;
+
+* 最后调整引号、括号前后与间隔号两边的空格;
+
+* 如果进行上述调整后,仍无法达到行长要求,最后才会进行字间字距调整。
+
+「加法式」的标点调整,更加直观,也更容易理解。
+
+## 修改说明
+
+* v1.0.0
+
+ 初次发布至 CTAN。
Property changes on: trunk/Master/texmf-dist/doc/luatex/chinese-jfm/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-ja_JP.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-ja_JP.lua (rev 0)
+++ trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-ja_JP.lua 2020-12-24 22:30:14 UTC (rev 57218)
@@ -0,0 +1,297 @@
+-- Chinese JFM for Japanese fonts (ja_JP)
+-- v1.0.0
+
+local is_vt, is_qj, is_bj, is_km, is_prop
+
+if luatexja.jfont.jfm_feature then
+ is_vt = luatexja.jfont.jfm_feature.vert
+ is_qj = luatexja.jfont.jfm_feature.quanjiao
+ is_bj = luatexja.jfont.jfm_feature.banjiao
+ is_km = luatexja.jfont.jfm_feature.kaiming
+ is_prop = luatexja.jfont.jfm_feature.prop
+end
+
+if
+ not ((is_qj and not (is_bj or is_km)) or (is_bj and not (is_qj or is_km)) or
+ (is_km and not (is_qj or is_bj)))
+ then
+ tex.error(
+ 'You must specify ONLY ONE feature among "quanjiao", "banjiao" and ' ..
+ '"kaiming"'
+ )
+end
+
+local function aki(wd, pr, km)
+ -- 插入空白量
+ local p = pr or 0
+ return km and
+ (is_bj and {0, wd, 0, priority = {p, -p}} or
+ {wd, 0, wd, priority = {p, -p}}) or
+ (is_qj and {wd, 0, wd, priority = {p, -p}} or
+ {0, wd, 0, priority = {p, -p}})
+end
+
+luatexja.jfont.define_jfm {
+ version = 3,
+ dir = is_vt and 'tate' or 'yoko',
+ zw = 1,
+ zh = 1,
+ kanjiskip = {0.0, 0.25, 0},
+ xkanjiskip = {0.25, 0.25, 0.125},
+ [0] = {
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = is_prop and 'prop' or 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [22] = aki(0.25),
+ [3] = aki(0.25, -1)
+ },
+ round_threshold = 0.01
+ },
+ [1] = {
+ -- 开括号
+ chars = {
+ '‘',
+ '“',
+ '〈',
+ '《',
+ '「',
+ '『',
+ '【',
+ '〔',
+ '〖',
+ '〘',
+ '〝',
+ '(',
+ '[',
+ '{',
+ '⦅'
+ },
+ align = 'right',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [22] = aki(0.25),
+ [3] = aki(0.25, -1)
+ }
+ },
+ [2] = {
+ -- 闭括号
+ chars = {
+ '’',
+ '”',
+ '〉',
+ '》',
+ '」',
+ '』',
+ '】',
+ '〕',
+ '〗',
+ '〙',
+ '〞',
+ '〟',
+ ')',
+ ']',
+ '}',
+ '⦆'
+ },
+ align = 'left',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.5, -1),
+ [1] = aki(0.5, -1),
+ [22] = aki(0.5, -1),
+ [3] = aki(0.5, -1),
+ [5] = aki(0.5, -1),
+ [51] = aki(0.5, -1),
+ [52] = aki(0.5, -1)
+ }
+ },
+ [21] = {
+ -- 逗号、顿号
+ chars = {'、', ','},
+ align = 'left',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.5),
+ [1] = aki(0.5),
+ [22] = aki(0.5),
+ [3] = aki(0.5),
+ [5] = aki(0.5),
+ [51] = aki(0.5),
+ [52] = aki(0.5)
+ }
+ },
+ [22] = {
+ -- 冒号、分号
+ chars = {':', ';'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.25),
+ [1] = aki(0.5),
+ [2] = aki(0.25),
+ [21] = aki(0.25),
+ [22] = aki(0.5),
+ [3] = aki(0.5, -1),
+ [4] = aki(0.25),
+ [41] = aki(0.25),
+ [5] = aki(0.25)
+ }
+ },
+ [3] = {
+ -- 间隔号
+ chars = {'・', '·'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.25, -1),
+ [1] = aki(0.5, -1),
+ [2] = aki(0.25, -1),
+ [21] = aki(0.25, -1),
+ [22] = aki(0.5, -1),
+ [3] = aki(0.5, -1),
+ [4] = aki(0.25, -1),
+ [41] = aki(0.25, -1),
+ [5] = aki(0.25, -1)
+ }
+ },
+ [4] = {
+ -- 句号
+ chars = {'。', '.'},
+ align = 'left',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.5, 1, true),
+ [1] = aki(0.5, 1, true),
+ [22] = aki(0.5, 1, true),
+ [3] = aki(0.5, 1, true),
+ [5] = aki(0.5, 1, true),
+ [51] = aki(0.5, 1, true),
+ [52] = aki(0.5, 1, true)
+ }
+ },
+ [41] = {
+ -- 叹号、问号
+ chars = {'!', '?', '‼', '⁇', '⁈', '⁉'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [22] = aki(0.25),
+ [3] = aki(0.25, -1)
+ }
+ },
+ [5] = {
+ -- 一字线、省略号、波浪线
+ chars = {
+ '—', -- U+2014
+ '―', -- U+2015
+ '‥',
+ '…',
+ '〜', -- U+301C
+ '~' -- U+FF5E
+ },
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [22] = aki(0.25),
+ [3] = aki(0.25, -1)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [51] = {
+ -- U+2E3A TWO-EM DASH
+ chars = {'⸺'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 2,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [22] = aki(0.25),
+ [3] = aki(0.25, -1)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [52] = {
+ -- U+2E3B THREE-EM DASH
+ chars = {'⸻'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 3,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [22] = aki(0.25),
+ [3] = aki(0.25, -1)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [6] = {
+ -- box end
+ chars = {'boxbdd', 'parbdd', 'glue'}
+ }
+}
Property changes on: trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-ja_JP.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_CN.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_CN.lua (rev 0)
+++ trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_CN.lua 2020-12-24 22:30:14 UTC (rev 57218)
@@ -0,0 +1,311 @@
+-- Chinese JFM for Simplified Chinese fonts (zh_CN)
+-- v1.0.0
+
+local is_vt, is_qj, is_bj, is_km, is_hwcl
+
+if luatexja.jfont.jfm_feature then
+ is_vt = luatexja.jfont.jfm_feature.vert
+ is_qj = luatexja.jfont.jfm_feature.quanjiao
+ is_bj = luatexja.jfont.jfm_feature.banjiao
+ is_km = luatexja.jfont.jfm_feature.kaiming
+ is_hwcl = luatexja.jfont.jfm_feature.hwcl
+end
+
+if is_hwcl then
+ if not is_vt then
+ tex.error('JFM feature "hwcl" can only be used in vertical mode')
+ end
+end
+
+if
+ not ((is_qj and not (is_bj or is_km)) or (is_bj and not (is_qj or is_km)) or
+ (is_km and not (is_qj or is_bj)))
+ then
+ tex.error(
+ 'You must specify ONLY ONE feature among "quanjiao", "banjiao" and ' ..
+ '"kaiming"'
+ )
+end
+
+local function aki(wd, pr, km)
+ -- 插入空白量
+ local p = pr or 0
+ return km and
+ (is_bj and {0, wd, 0, priority = {p, -p}} or
+ {wd, 0, wd, priority = {p, -p}}) or
+ (is_qj and {wd, 0, wd, priority = {p, -p}} or
+ {0, wd, 0, priority = {p, -p}})
+end
+
+luatexja.jfont.define_jfm {
+ version = 3,
+ dir = is_vt and 'tate' or 'yoko',
+ zw = 1,
+ zh = 1,
+ kanjiskip = {0.0, 0.25, 0},
+ xkanjiskip = {0.25, 0.25, 0.125},
+ [0] = {
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [3] = aki(0.25, -1)
+ },
+ round_threshold = 0.01
+ },
+ [1] = {
+ -- 开括号
+ chars = {
+ '‘',
+ '“',
+ '〈',
+ '《',
+ '「',
+ '『',
+ '【',
+ '〔',
+ '〖',
+ '〘',
+ '〝',
+ '(',
+ '[',
+ '{',
+ '⦅'
+ },
+ align = 'right',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [3] = aki(0.25, -1)
+ }
+ },
+ [2] = {
+ -- 闭括号
+ chars = {
+ '’',
+ '”',
+ '〉',
+ '》',
+ '」',
+ '』',
+ '】',
+ '〕',
+ '〗',
+ '〙',
+ '〞',
+ '〟',
+ ')',
+ ']',
+ '}',
+ '⦆'
+ },
+ align = 'left',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.5, -1),
+ [1] = aki(0.5, -1),
+ [3] = aki(0.5, -1),
+ [5] = aki(0.5, -1),
+ [51] = aki(0.5, -1),
+ [52] = aki(0.5, -1)
+ }
+ },
+ [21] = {
+ -- 逗号、顿号
+ chars = {'、', ','},
+ align = 'left',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.5),
+ [1] = aki(0.5),
+ [3] = aki(0.5),
+ [5] = aki(0.5),
+ [51] = aki(0.5),
+ [52] = aki(0.5)
+ }
+ },
+ [22] = {
+ -- 冒号、分号
+ chars = {':', ';'},
+ align = 'left',
+ left = 0,
+ down = 0,
+ width = is_vt and (is_hwcl and 0.5 or 1) or 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = is_vt and (is_hwcl and aki(0.5) or {}) or aki(0.5),
+ [1] = is_vt and (is_hwcl and aki(0.5) or {}) or aki(0.5),
+ [3] = is_vt and (is_hwcl and aki(0.5) or aki(0.25, 1)) or aki(0.5),
+ [5] = is_vt and (is_hwcl and aki(0.5) or {}) or aki(0.5),
+ [51] = is_vt and (is_hwcl and aki(0.5) or {}) or aki(0.5),
+ [52] = is_vt and (is_hwcl and aki(0.5) or {}) or aki(0.5)
+ }
+ },
+ [3] = {
+ -- 间隔号
+ chars = {'・', '·'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.25, -1),
+ [1] = aki(0.5, -1),
+ [2] = aki(0.25, -1),
+ [21] = aki(0.25, -1),
+ [22] = aki(0.25, -1),
+ [3] = aki(0.5, -1),
+ [4] = aki(0.25, -1),
+ [41] = aki(0.25, -1),
+ [42] = aki(0.25, -1),
+ [5] = aki(0.25, -1)
+ }
+ },
+ [4] = {
+ -- 句号
+ chars = {'。', '.'},
+ align = 'left',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.5, 1, true),
+ [1] = aki(0.5, 1, true),
+ [3] = aki(0.5, 1, true),
+ [5] = aki(0.5, 1, true),
+ [51] = aki(0.5, 1, true),
+ [52] = aki(0.5, 1, true)
+ }
+ },
+ [41] = {
+ -- 叹号、问号
+ chars = {'!', '?'},
+ align = is_vt and 'middle' or 'left',
+ left = 0,
+ down = 0,
+ width = is_vt and 1 or 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = is_vt and {} or aki(0.5, 1, true),
+ [1] = is_vt and {} or aki(0.5, 1, true),
+ [3] = is_vt and aki(0.25, -1) or aki(0.5, 1, true),
+ [5] = is_vt and {} or aki(0.5, 1, true),
+ [51] = is_vt and {} or aki(0.5, 1, true),
+ [52] = is_vt and {} or aki(0.5, 1, true)
+ }
+ },
+ [42] = {
+ -- 复合/连用叹号问号
+ chars = {'‼', '⁇', '⁈', '⁉'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [3] = aki(0.25, -1)
+ }
+ },
+ [5] = {
+ -- 一字线、省略号、波浪线
+ chars = {
+ '—', -- U+2014
+ '―', -- U+2015
+ '‥',
+ '…',
+ '〜', -- U+301C
+ '~' -- U+FF5E
+ },
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [3] = aki(0.25, -1)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [51] = {
+ -- U+2E3A TWO-EM DASH
+ chars = {'⸺'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 2,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [3] = aki(0.25, -1)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [52] = {
+ -- U+2E3B THREE-EM DASH
+ chars = {'⸻'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 3,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [3] = aki(0.25, -1)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [6] = {
+ -- box end
+ chars = {'boxbdd', 'parbdd', 'glue'}
+ }
+}
Property changes on: trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_CN.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_TW.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_TW.lua (rev 0)
+++ trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_TW.lua 2020-12-24 22:30:14 UTC (rev 57218)
@@ -0,0 +1,333 @@
+-- Chinese JFM for Traditional Chinese fonts (zh_TW)
+-- v1.0.0
+
+local is_vt, is_qj, is_bj, is_km
+
+if luatexja.jfont.jfm_feature then
+ is_vt = luatexja.jfont.jfm_feature.vert
+ is_qj = luatexja.jfont.jfm_feature.quanjiao
+ is_bj = luatexja.jfont.jfm_feature.banjiao
+ is_km = luatexja.jfont.jfm_feature.kaiming
+end
+
+if
+ not ((is_qj and not (is_bj or is_km)) or (is_bj and not (is_qj or is_km)) or
+ (is_km and not (is_qj or is_bj)))
+ then
+ tex.error(
+ 'You must specify ONLY ONE feature among "quanjiao", "banjiao" and ' ..
+ '"kaiming"'
+ )
+end
+
+local function aki(wd, pr, km)
+ -- 插入空白量
+ local p = pr or 0
+ return km and
+ (is_bj and {0, wd, 0, priority = {p, -p}} or
+ {wd, 0, wd, priority = {p, -p}}) or
+ (is_qj and {wd, 0, wd, priority = {p, -p}} or
+ {0, wd, 0, priority = {p, -p}})
+end
+
+luatexja.jfont.define_jfm {
+ version = 3,
+ dir = is_vt and 'tate' or 'yoko',
+ zw = 1,
+ zh = 1,
+ kanjiskip = {0.0, 0.25, 0},
+ xkanjiskip = {0.25, 0.25, .125},
+ [0] = {
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [21] = aki(0.25),
+ [22] = is_vt and {} or aki(0.25),
+ [3] = aki(0.25, -1),
+ [4] = aki(0.25, 1, true)
+ },
+ round_threshold = 0.01
+ },
+ [1] = {
+ -- 开括号
+ chars = {
+ '‘',
+ '“',
+ '〈',
+ '《',
+ '「',
+ '『',
+ '【',
+ '〔',
+ '〖',
+ '〘',
+ '〝',
+ '(',
+ '[',
+ '{',
+ '⦅'
+ },
+ align = 'right',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [21] = aki(0.25),
+ [22] = is_vt and {} or aki(0.25),
+ [3] = aki(0.25, -1),
+ [4] = aki(0.25, 1, true)
+ }
+ },
+ [2] = {
+ -- 闭括号
+ chars = {
+ '’',
+ '”',
+ '〉',
+ '》',
+ '」',
+ '』',
+ '】',
+ '〕',
+ '〗',
+ '〙',
+ '〞',
+ '〟',
+ ')',
+ ']',
+ '}',
+ '⦆'
+ },
+ align = 'left',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.5, -1),
+ [1] = aki(0.5, -1),
+ [21] = aki(0.25),
+ [22] = is_vt and {} or aki(0.25),
+ [3] = aki(0.25, -1),
+ [4] = aki(0.25, 1, true),
+ [5] = aki(0.25, -1),
+ [51] = aki(0.25, -1),
+ [52] = aki(0.25, -1)
+ }
+ },
+ [21] = {
+ -- 逗号、顿号
+ chars = {'、', ','},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.25),
+ [1] = aki(0.25),
+ [2] = aki(0.25),
+ [21] = aki(0.5),
+ [22] = is_vt and aki(0.5) or aki(0.25),
+ [3] = aki(0.5, -1),
+ [4] = is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
+ (is_bj and {0, 0.5, 0, priority = {1, -1}} or
+ {0.25, 0.25, 0.25, priority = {1, -1}}),
+ [41] = aki(0.25),
+ [5] = aki(0.25),
+ [51] = aki(0.25),
+ [52] = aki(0.25)
+ }
+ },
+ [22] = {
+ -- 冒号、分号
+ chars = {':', ';'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = is_vt and 1 or 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = is_vt and {} or aki(0.25),
+ [1] = is_vt and {} or aki(0.25),
+ [2] = is_vt and {} or aki(0.25),
+ [21] = is_vt and aki(0.25) or aki(0.5),
+ [22] = is_vt and {} or aki(0.5),
+ [3] = is_vt and aki(0.25, -1) or aki(0.5, -1),
+ [4] = is_vt and aki(0.25, 1, true) or
+ (is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
+ (is_bj and {0, 0.5, 0, priority = {1, -1}} or
+ {0.25, 0.25, 0.25, priority = {1, -1}})),
+ [41] = is_vt and {} or aki(0.25),
+ [5] = is_vt and {} or aki(0.25),
+ [51] = is_vt and {} or aki(0.25),
+ [52] = is_vt and {} or aki(0.25)
+ }
+ },
+ [3] = {
+ -- 间隔号
+ chars = {'・', '·'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.25, -1),
+ [1] = aki(0.25, -1),
+ [2] = aki(0.25, -1),
+ [21] = aki(0.5, -1),
+ [22] = is_vt and aki(0.25, -1) or aki(0.5, -1),
+ [3] = aki(0.5, 1),
+ [4] = is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
+ (is_bj and {0, 0.5, 0, priority = {1, -1}} or
+ {0.25, 0.25, 0.25, priority = {1, -1}}),
+ [41] = aki(0.25, -1),
+ [5] = aki(0.25, -1),
+ [51] = aki(0.25, -1),
+ [52] = aki(0.25, -1)
+ }
+ },
+ [4] = {
+ -- 句号
+ chars = {'。', '.'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 0.5,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [0] = aki(0.25, 1, true),
+ [1] = aki(0.25, 1, true),
+ [2] = aki(0.25, 1, true),
+ [21] = aki(0.5, 1, true),
+ [22] = is_vt and aki(0.25, 1, true) or aki(0.5, 1, true),
+ [3] = is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
+ (is_bj and {0, 0.5, 0, priority = {1, -1}} or
+ {0.25, 0.25, 0.25, priority = {1, -1}}),
+ [4] = is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
+ (is_bj and {0, 0.5, 0, priority = {1, -1}} or
+ {0.25, 0.25, 0.25, priority = {1, -1}}),
+ [41] = aki(0.25, 1, true),
+ [5] = aki(0.25, 1, true),
+ [51] = aki(0.25, 1, true),
+ [52] = aki(0.25, 1, true)
+ }
+ },
+ [41] = {
+ -- 问号、感叹号
+ chars = {'?', '!', '‼', '⁇', '⁈', '⁉'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [21] = aki(0.25),
+ [22] = is_vt and {} or aki(0.25),
+ [3] = aki(0.25, -1),
+ [4] = aki(0.25, 1, true)
+ }
+ },
+ [5] = {
+ -- 一字线、省略号、波浪线
+ chars = {
+ '—', -- U+2014
+ '―', -- U+2015
+ '‥',
+ '…',
+ '〜', -- U+301C
+ '~' -- U+FF5E
+ },
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 1,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [21] = aki(0.25),
+ [22] = is_vt and {} or aki(0.25),
+ [3] = aki(0.25, -1),
+ [4] = aki(0.25, -1, true)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [51] = {
+ -- U+2E3A TWO-EM DASH
+ chars = {'⸺'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 2,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [21] = aki(0.25),
+ [22] = is_vt and {} or aki(0.25),
+ [3] = aki(0.25, -1),
+ [4] = aki(0.25, -1, true)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [52] = {
+ -- U+2E3B THREE-EM DASH
+ chars = {'⸻'},
+ align = 'middle',
+ left = 0,
+ down = 0,
+ width = 3,
+ height = is_vt and 0.5 or 0.88,
+ depth = is_vt and 0.5 or 0.12,
+ italic = 0,
+ glue = {
+ [1] = aki(0.5, -1),
+ [21] = aki(0.25),
+ [22] = is_vt and {} or aki(0.25),
+ [3] = aki(0.25, -1),
+ [4] = aki(0.25, -1, true)
+ },
+ kern = {
+ [5] = 0,
+ [51] = 0,
+ [52] = 0
+ }
+ },
+ [6] = {
+ -- box end
+ chars = {'boxbdd', 'parbdd', 'glue'}
+ }
+}
Property changes on: trunk/Master/texmf-dist/tex/luatex/chinese-jfm/jfm-zh_TW.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check 2020-12-24 22:28:40 UTC (rev 57217)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check 2020-12-24 22:30:14 UTC (rev 57218)
@@ -168,7 +168,8 @@
chemfig chemformula chemgreek chemmacros
chemnum chemplants chemschemex chemsec chemstyle cherokee
chess chess-problem-diagrams chessboard chessfss chet chextras
- chhaya chicago chicagoa chicago-annote chickenize childdoc chivo
+ chhaya chicago chicagoa chicago-annote chickenize
+ childdoc chinese-jfm chivo
chkfloat chklref chletter chngcntr chordbars chordbox chronology
chronosys chs-physics-report chscite churchslavonic
cinzel circ circledsteps circuit-macros circuitikz
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds 2020-12-24 22:28:40 UTC (rev 57217)
+++ trunk/Master/tlpkg/libexec/ctan2tds 2020-12-24 22:30:14 UTC (rev 57218)
@@ -1839,6 +1839,7 @@
'chemstyle', '\.jdf|' . $standardtex,
'chhaya', 'sankshep.tex|' . $standardtex,
'chickenize', 'chickenize\.tex|\.lua|' . $standardtex,
+ 'chinese-jfm', '\.lua',
'chronosys', '^(x-)?chronosys',
'cirth', 'num\.tex',
'cjw', '\.tex|' . $standardtex,
Added: trunk/Master/tlpkg/tlpsrc/chinese-jfm.tlpsrc
===================================================================
Modified: trunk/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc 2020-12-24 22:28:40 UTC (rev 57217)
+++ trunk/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc 2020-12-24 22:30:14 UTC (rev 57218)
@@ -11,6 +11,7 @@
depend bezierplot
depend checkcites
depend chickenize
+depend chinese-jfm
depend cloze
depend combofont
depend cstypo
More information about the tex-live-commits
mailing list.