Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ctex: fontset 有关问题修复 #462

Merged
merged 20 commits into from
Jan 10, 2020
Merged

ctex: fontset 有关问题修复 #462

merged 20 commits into from
Jan 10, 2020

Conversation

stone-zeng
Copy link
Member

@stone-zeng stone-zeng commented Nov 3, 2019

准备处理下列问题:

@stone-zeng stone-zeng added this to the ctex 2.5 milestone Nov 7, 2019
@muzimuzhi
Copy link
Contributor

muzimuzhi commented Nov 7, 2019

不再允许在导言区设置 fontset

想到一种合理利用「在导言区设置 fontset」功能的需求,我自己也用过:「先 fontset=none,然后设置 default font features,再通过 fontset 载入字体配置」。例如

\documentclass[fontset=none]{ctexart}
\defaultCJKfontfeatures{Mapping=full-stop, AutoFakeBold=true}
\ctexset{fontset=xxx}

如果不再允许在导言区设置 fontset,上述需求就只能通过 \PassOptionsToPackage{xeCJK}{<options>} 来满足了。上述需求就难以满足了。

@zepinglee
Copy link
Member

changelog 分支移除了 checksum,并且在 ctex 和 xeCJK 中新增了 CHANGELOG.md

@stone-zeng
Copy link
Member Author

changelog 分支移除了 checksum,并且在 ctex 和 xeCJK 中新增了 CHANGELOG.md

辛苦啦 🎉

@stone-zeng stone-zeng marked this pull request as ready for review November 7, 2019 13:12
@zepinglee
Copy link
Member

@stone-zeng 话说 dtx 文件中的 \changes 还要不要保留?

@stone-zeng
Copy link
Member Author

macold 那就还是继续支持吧,不过我想在前面文档中只说明使用 mac 字库,而不再强调分 old 和 new。后面加一小节「技术说明」之类的稍微解释一下。

说起来,文档我在考虑可以分为教程、参考、代码几个部分(\part),有些用户表示目前的文档比较晦涩(?),可以多给一些示例,然后技术细节放到后面讨论。

- 有用户反馈仍在使用该语法,并且 @muzimuzhi 给出的例子也有道理
- This reverts commit c9d8675.
@stone-zeng
Copy link
Member Author

根据反馈(sjtug/SJTUThesis#468),没有安装 Office 的 Windows 系统并不包含隶书和幼圆,是否可以考虑移除(考虑到兼容性并不很合适),或者增加一些选择性调用的方法?

@muzimuzhi
Copy link
Contributor

增加一次判断?判断字体文件是否存在,

  • 若存在则正常定义,
  • 若不存在则不定义且输出警告(例如,找不到字体 xxx,字体命令 xxx 未定义。字体 xxx 由 MS Office 额外提供,不是 windows 预装字体)

@stone-zeng
Copy link
Member Author

fontspec 提供的判断函数 IfFontExistsTF / \fontspec_font_if_exist:nTF 实际上还是会先尝试调一下字体,所以找不到的话,会报这样的警告:

kpathsea:make_tex: Invalid filename `font name', contains ' '

有时会更吓人,还会生成 missfont.log

kpathsea: Running mktextfm fontname
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input fontname
This is METAFONT, Version 2.7182818 (TeX Live 2019) (preloaded base=mf)


kpathsea: Running mktexmf fontname
! I can't find file `fontname'.
<*> ...ljfour; mag:=1; nonstopmode; input fontname
                                                  
Please type another input file name
! Emergency stop.
<*> ...ljfour; mag:=1; nonstopmode; input fontname
                                                  
Transcript written on mfput.log.
grep: fontname.log: No such file or directory
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input fontname' failed to make fontname.tfm.
kpathsea: Appending font creation commands to missfont.log.

如果按照路径查找,又不确定是不是可靠。

@stone-zeng
Copy link
Member Author

上面的警告可以通过给 xetex / luatex 加选项 --no-mktex=tfm 来关闭。

@muzimuzhi
Copy link
Contributor

muzimuzhi commented Nov 25, 2019

fontspec 提供的判断函数 IfFontExistsTF / \fontspec_font_if_exist:nTF 实际上还是会先尝试调一下字体,所以找不到的话,会报这样的警告:

有时会更吓人,还会生成 missfont.log

是,我遇到过(使用选项 -recorder 也能提供相应信息)。

@zepinglee
Copy link
Member

zepinglee commented Dec 29, 2019

话说在 MS-Office 外使用隶书、幼圆这些 MS-Office 自带的字体会不会造成侵权?

如果不侵权的话还可以参考《在 LaTeX 中使用 OpenType 字体(二)》加个 fontset=macword,允许在 mac 下调用 /Applications/Microsoft Word.app/Contents/Resources/DFonts/ 的中易字体

@stone-zeng stone-zeng changed the base branch from master to ctex-2.5 January 10, 2020 11:49
@stone-zeng stone-zeng merged commit 546ff2c into ctex-2.5 Jan 10, 2020
@stone-zeng stone-zeng deleted the fontset branch January 10, 2020 12:02
@stone-zeng
Copy link
Member Author

Continued in #480...

@zepinglee
Copy link
Member

zepinglee commented Jan 13, 2020

根据 https://docs.microsoft.com/en-us/typography/fonts/windows_10_font_list ,lisu 和 youyuan 不是 Windows 系统自带的字体;这俩个字体也没有在 Windows 或 MS-Office 的官网找到,反而大部分是 TeX 社区的资料【捂脸】。

根据第三方资料 https://github.com/keqingrong/system-fonts/blob/master/docs/ms-office-fonts.md ,这俩字体是 MS-Office 带的,然而在 Mac 版 Office 2019 中并没有附带。

@zepinglee
Copy link
Member

zepinglee commented Jan 13, 2020

建议:

  1. 移除 Windows 字库配置中的 zhli, \lishu, zhyou, \youyuan,因为不能假定用户装了 MS-Office;
  2. Mac 字库配置的 zhyou 改为 zhyuan\youyuan 改为 \yuanti

@zepinglee
Copy link
Member

另外为何楷体的命令叫 \kaishu 而不是 \kaiti?名字跟宋体、黑体不统一

@stone-zeng
Copy link
Member Author

其实我觉得只要定义宋黑仿楷加一个UI 字体就够了。可以

  • 加一个 extrafont 之类的选项允许选择额外字体
  • 增加 xxx+ 字库,不带加号的使用基础字体
  • 直接移除有关字体定义

但考虑兼容性,我觉得至少这次更新不会处理。可以考虑学 LaTeX3 先标记成 deprecated,然后到某个时间点(比如 2021 年底?)再移除。

@stone-zeng
Copy link
Member Author

大概因为楷书和隶书都是从「书」法字体来的?

@zepinglee
Copy link
Member

其实我觉得只要定义宋黑仿楷加一个UI 字体就够了。可以

  • 加一个 extrafont 之类的选项允许选择额外字体
  • 增加 xxx+ 字库,不带加号的使用基础字体
  • 直接移除有关字体定义

但考虑兼容性,我觉得至少这次更新不会处理。可以考虑学 LaTeX3 先标记成 deprecated,然后到某个时间点(比如 2021 年底?)再移除。

对,但我觉得应该先让 windows 字库缺隶书字体时不会报错

@zepinglee
Copy link
Member

macOS:

字体名 文件名 命令
Songti SC Songti.ttc \songti
Heiti SC STheiti Light.ttc \heiti
Kaiti SC Kaiti.ttc \kaishu?

Windows:

字体名 文件名 命令
SimSun simsun.ttf \songti
SimHei simhei.ttf \heiti
KaiTi simkai.ttf \kaishu?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants