ctex-kit icon indicating copy to clipboard operation
ctex-kit copied to clipboard

fontset=macold下粗体字体出现基线抬升的现象

Open Explorer-cc opened this issue 10 months ago • 9 comments

由于本人没有macOS,因此只能提供在TeXPage平台下的测试结果。

TeXPage平台基于ubuntu系统编译,但我似乎没有找到官方文档提供的字体列表(font lists)

对于下面的MWE,在使用fontset=macold时,会出现下面的加粗字体出现基线抬升的情况:

Image

【上图中 粗体字体的基线 似乎 相比于正体 出现了抬升,可与下方其他字体设置结果做比较】

查阅ctex进行字体配置的源代码可知:

Image

此处判断会进入fandol的默认配置,但在指定fontset=macold之后(由于我不太清楚TeXPage上的字体以及ctex的FallBack方式),但按照下面的代码,我推测在上例的情况中,fontset=macold意味着这将会调用华文字体中的(STSong以及STHeiti):

Image

这种基线抬升的情况是由于华文宋体STSong和华文黑体STHeiti并不是那么匹配吗?那么为何在macold的设置中会选择这一对字体作为rmbf字体,这种情况是否可以改进。

另附在TeXPage平台下其他字体配置的编译结果:

fontset=ubuntu调用思源字体 没有出现该问题】 Image

fontset=windows调用SimSunSimHei字体 没有出现该问题】 Image

【不显式指定,调用fandol字库表现正常】 Image

Explorer-cc avatar Feb 24 '25 01:02 Explorer-cc

在Overleaf下,无法使用fontset=macold配置指定字体,这可能与其支持的字体中没有华文字库有关.

Explorer-cc avatar Feb 24 '25 01:02 Explorer-cc

这种基线抬升的情况是由于华文宋体STSong和华文黑体STHeiti并不是那么匹配吗?

是。字体设计如此。目前 XeLaTeX 编译方式没有按字体调整基线的办法,LuaLaTeX 我不熟。(你好像没说,用什么方式编译的?)

那么为何在macold的设置中会选择这一对字体作为rmbf字体,这种情况是否可以改进。

不知道。猜测,是尽量使用系统自带字体凑出来的字体设置,因为相对而言它们设计质量高、包含字符多。你刚好遇到了它们的短板。macold 对应 OS X 10.10 及之前的老系统,猜测主要作为向前兼容而保留,我想这个字体配置不会变了。

为什么想/需要使用 fontset=macold

建议不要只贴 latex 例子的截图,也提供例子的文本形式,省得每一个想复现的人都手打一遍例子。

% !TeX program = xelatex
\documentclass[fontset=macold]{ctexart}

\begin{document}
你好\textbf{你好世界}世界
\end{document}

muzimuzhi avatar Feb 24 '25 09:02 muzimuzhi

@muzimuzhi 感谢您的回复😊,我的编译方式是xelatex(TeXpage上使用lualatex提示免费版超时了(应该是在同步字体耗时较长),我无法测试lualatex的情况)。

您对于我两个疑惑的解释完全解决了我的问题,另外没有贴文本形式的MWE只是因为它太短了(我先验地觉得贴上去会有一miumiu多余)

Explorer-cc avatar Feb 24 '25 10:02 Explorer-cc

(TeXpage上使用lualatex提示免费版超时了(应该是在同步字体耗时较长),我无法测试lualatex的情况)

像是在初次创建字体缓存。应该有办法提前生成常用中文字体的缓存,打进镜像。比如用 LuaLaTeX 编译一次用到这些字体的文档?

muzimuzhi avatar Feb 24 '25 10:02 muzimuzhi

嗯嗯,我本地的lualatex在初次创建字体缓存的时候使用luaotfload的时候就卡住了,在这个链接的外国网友帮助下blacklist了一个很大的.ttc字体文件才搞定,但是这应该是向TeXPage反馈的问题,在此处有点off-topic了,再次感谢您的帮助。

Image

而且据我与TeXPage联系的结果看,TeXpage平台为了适配ctexfontset在ubuntu24.04上预装了不少中文字体,截至20250224的fc-list结果为这个文件fc-list.txt

(与本issues也有些许关系,顺便贴上来)

Explorer-cc avatar Feb 24 '25 10:02 Explorer-cc

为什么想/需要使用 fontset=macold?

忽然发现忽略了这一问题,该问题源于在QQ交流群看到使用macOS的群友在未做任何字体配置的情况下出现该基线抬升的问题。 由于我没有macOS设备,我只能尽可能转述(因此不一定完全准确):

Image

在下图所示的macOS Sequoia Version 15.4 Beta版本中,由于苹方字体不以PingFang.ttc存在(可见ctex源代码的4784行,同时在这个网页下搜索“PingFang”,发现字体似乎不再以.ttc的形式存在):

4783 〈*mac〉
4784 \file_if_exist:nTF { /System/Library/Fonts/PingFang.ttc }
4785 { \ctex_file_input:n { ctex-fontset-macnew.def } }
4786 { \ctex_file_input:n { ctex-fontset-macold.def } }
4787 〈/mac〉

而是language-specific地以如下图形式存在,因此在不指定fontset即如下的mwe时,将会自动被分类为fontset=macold,进而出现基线抬升的问题:

Image

% !TeX program = xelatex on macOS 15.4beta
\documentclass{ctexart}

\begin{document}
你好\textbf{你好世界}世界
\end{document}

以上.....是该提问的background....也许对于新版本的macos,上面的判断标准\file_if_exist:nTF { /System/Library/Fonts/PingFang.ttc }可能需要更新,但我没办法提供更准确的测试(因为没有macOS),如果有必要,也应该另开一个issues。

Explorer-cc avatar Feb 24 '25 13:02 Explorer-cc

在下图所示的macOS Sequoia Version 15.4 Beta版本中,由于苹方字体不以PingFang.ttc存在

和 #722 是同一个问题。

muzimuzhi avatar Feb 24 '25 16:02 muzimuzhi

@muzimuzhi 感谢您告知,这个issues太长了,而且我没有macOS设备,因此没细看.....

Explorer-cc avatar Feb 26 '25 14:02 Explorer-cc

(TeXpage上使用lualatex提示免费版超时了(应该是在同步字体耗时较长),我无法测试lualatex的情况)

像是在初次创建字体缓存。应该有办法提前生成常用中文字体的缓存,打进镜像。比如用 LuaLaTeX 编译一次用到这些字体的文档?

(off-topic): update20250305_经过与texpage平台的反馈,lualatex在免费版策略下也已经可以自动预生成luaotfload字体缓存😊

Explorer-cc avatar Mar 05 '25 06:03 Explorer-cc