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.