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

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

Open
Explorer-cc opened this issue Feb 24, 2025 · 9 comments
Open

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

Explorer-cc opened this issue Feb 24, 2025 · 9 comments

Comments

@Explorer-cc
Copy link

由于本人没有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
Copy link
Author

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

@muzimuzhi
Copy link
Contributor

muzimuzhi commented Feb 24, 2025

这种基线抬升的情况是由于华文宋体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}

@Explorer-cc
Copy link
Author

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

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

@muzimuzhi
Copy link
Contributor

muzimuzhi commented Feb 24, 2025

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

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

@Explorer-cc
Copy link
Author

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

Image

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

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

@Explorer-cc
Copy link
Author

为什么想/需要使用 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。

@muzimuzhi
Copy link
Contributor

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

#722 是同一个问题。

@Explorer-cc
Copy link
Author

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

@Explorer-cc
Copy link
Author

Explorer-cc commented Mar 5, 2025

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

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

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

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

No branches or pull requests

2 participants