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

[Bug]: Font shape 'TU/TimesNewRoman(0)/m/sc' undefined #169

Closed
4 tasks done
connglli opened this issue Nov 29, 2022 · 11 comments
Closed
4 tasks done

[Bug]: Font shape 'TU/TimesNewRoman(0)/m/sc' undefined #169

connglli opened this issue Nov 29, 2022 · 11 comments
Labels
bug Something isn't working font Related to font configuration

Comments

@connglli
Copy link

先决条件

期望的现象

能够找到smallcaps的字体

发生了什么

找不到smallcaps的字体,导致

  1. 编译器报warning,并用Times New Roman Regular替代
  2. 博士英文封面Doctor of Philosophy显示异常
  3. \textsc{}命令无法显示smallcaps字体
LaTeX Font Warning: Font shape `TU/TimesNewRoman(0)/m/sc' undefined
(Font)              using `TU/TimesNewRoman(0)/m/n' instead on input line 7.

Screenshot 2022-11-29 at 13 30 37

最小工作示例

\documentclass[
    type = doctor
]{njuthesis}

\begin{document}

\maketitle

\begin{abstract}
    中文摘要
\end{abstract}

\begin{abstract*}
    English abstract
\end{abstract*}

\tableofcontents

\mainmatter

\chapter{引言}

\begin{acknowledgement}
    感谢 \href{https://git.nju.edu.cn/nju-lug/lug-introduction}{LUG@NJU}。
\end{acknowledgement}

\end{document}

njuthesis 模板版本

master branch; dev branch; v1.1.0

模板获取途径

从 Git 仓库下载

操作系统

macOS

TeX 发行版

TeX Live 2022

编译程序

XeLaTeX

额外信息

使用下面的代码可部分该解决问题,但这个问题不应该由用户解决,而应该由模板解决

\setmainfont{Times New Roman}[
  SmallCapsFont={TeX Gyre Termes},
  SmallCapsFeatures={Letters=SmallCaps},
}
@connglli connglli added the bug Something isn't working label Nov 29, 2022
@AlphaZTX
Copy link

AlphaZTX commented Nov 29, 2022

提供一个解决方案:

\setmainfont{Times New Roman}[SmallCapsFont=TeX Gyre Termes:+smcp]

这样你在正文中输入的 \textsc{Aa} 就会是“正确”的样子了。

注:这里的 +smcp 是直接调用 OpenType features 中的 smcp,这一特性会将小写字母的 glyph 做出替换。

@AlphaZTX
Copy link

解析了一下 macOS 中的 Times New Roman,发现 macOS 中的 Times New Roman 并没有 smcp 这一特性,所以小型大写字母无法正确获得。另外,macOS 中的 Times 字体也没有 smcp。所以解决办法是使用 Windows 中的 Times New Roman(TimesNewRomanPSMT)或者使用 TeX Live 中的 TeX Gyre Termes 字体,这两个字体都具备 smcp 特性。

@atxy-blip atxy-blip added the font Related to font configuration label Nov 29, 2022
@connglli
Copy link
Author

@AlphaZTX 我在额外信息里就是用TeX Gyre Termes的smallcap来替代TimesNewRoman的smallcap,但这不应该由用户来处理吧,模板里就应该处理好。至少需要写在manual里告诉用户这个问题的存在以及如何解决。

@connglli
Copy link
Author

这个问题只有macOS存在,所以上面的代码还应该check一下操作系统

@AlphaZTX
Copy link

AlphaZTX commented Nov 29, 2022

@AlphaZTX 我在额外信息里就是用TeX Gyre Termes的smallcap来替代TimesNewRoman的smallcap,但这不应该由用户来处理吧,模板里就应该处理好。至少需要写在manual里告诉用户这个问题的存在以及如何解决。

这个是 macOS 系统下字体的问题(问题在字体文件本身,而非操作系统,毕竟你手动拷贝一个 Windows 下的 Times New Roman 就可以解决这个问题),但可以让文档作者说明一下。

其实这个思路很简单,写起来也不难,只需要检测系统字体册下是否存在这个字体就好,如果存在,那就开启一个 fallback,如果不存在,那就用另一个设置。

但是我没有参与任何贵校模板的开发工作。这方面的建议可以跟 @atxy-blip 提一下。

@atxy-blip
Copy link
Member

我借了一台 mac 还在做测试,本来打算等都解决了再回复的。

解析了一下 macOS 中的 Times New Roman

这个明明是我发给 @AlphaZTX 的 QAQ

@AlphaZTX
Copy link

这个是 macOS 系统下字体的问题(问题在字体文件本身,而非操作系统,毕竟你手动拷贝一个 Windows 下的 Times New Roman 就可以解决这个问题),但可以让文档作者说明一下。

对于这一段,我再做一点说明:Times New Roman(或 TimesNewRomanPSMT)在 Windows 和 macOS 下的区别在于版本。Windows 10 中的 Times New Roman 的版本为 7.00,而 macOS 下的 Times New Roman 的版本为 5.01.3x(以 @atxy-blip
提供给我的为例),这个问题似乎要跟 Apple 的人说。

@atxy-blip
Copy link
Member

增加了对 smcp 特性的检测,如果缺失就会抛出警告信息并替换成 TG Termes。可以试一试有没有解决问题。

@connglli
Copy link
Author

connglli commented Dec 3, 2022

Fixed

@connglli connglli closed this as completed Dec 3, 2022
@Tedxz
Copy link

Tedxz commented Jun 13, 2023

关于该问题,MacOS配置下非衬线字体(例如章、节标题)也不支持smcp特性。我目前是通过拷贝windows版本的Arial字体解决的,应该也可以通过类似的方法在模板中自动fallback。

@atxy-blip
Copy link
Member

苹果好烦。改天再整(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working font Related to font configuration
Projects
None yet
Development

No branches or pull requests

4 participants