- 我想在一个文档中混合中文和英文。
- 对于每种语言,我都会使用段落(而不仅仅是短句)。
- 我想使用 Google 的 Noto 字体。
- 问题是,当我在中文环境中使用英语时拉丁字符看起来不同。
- 当我
\babelfont{rm}{Noto Serif}
用替换时\babelfont{english}{Noto Serif}
,结果不同,但仍然不行。 - 我的目标是在英语和中文环境中使用相同的拉丁字符(相同的字体)
\documentclass{article}
\usepackage[english]{babel}
% babelprovide for *english* (default language of the document)
\babelprovide[
main,
import,
language = Default]
{english}
% babelprovide for *chinese-simplified*
\babelprovide[
import,
language = Chinese Simplified]
{chinese-simplified}
%% Choose actual fonts for different font variants.
\babelfont{rm}{Noto Serif}
%\babelfont{english}{Noto Serif}
\babelfont[chinese-simplified]{rm}{Noto Serif CJK SC}
\begin{document}
\selectlanguage{english}ABCabc
\selectlanguage{chinese-simplified}ABCabc
\end{document}
%\babelfont{rm}{Noto Serif}
\babelfont{english}{Noto Serif}
答案1
最近babel
(见babel-3.38 中的新功能),您只需按照以下方式告诉它根据脚本切换语言(换行规则)和字体:
\documentclass{article}
\usepackage[english]{babel}
% Don't reload english, just modify it to switch the language and the
% font depending of the script:
\babelprovide[onchar=ids fonts]{english}
\babelprovide[
import,
language = Chinese Simplified]
{chinese-simplified}
%% Choose actual fonts for different font variants.
\babelfont{rm}{Noto Serif}
\babelfont[chinese-simplified]{rm}{Noto Serif CJK SC}
\begin{document}
\selectlanguage{english}ABCabc
\selectlanguage{chinese-simplified}ABCabc
\end{document}
答案2
您可以尝试(新的)多脚本选项。但是您会收到来自 fontspec 的一些警告:
\documentclass{article}
\usepackage[english]{babel}
% babelprovide for *english* (default language of the document)
\babelprovide[
main,
import,
language = Default]
{english}
% babelprovide for *chinese-simplified*
\babelprovide[
import,
language = Chinese Simplified]
{chinese-simplified}
\directlua{
luaotfload.add_multiscript
("latn-hani",
{
Hani = "Noto Serif CJK SC:mode=node;script=hani;",
}
)
}
\babelfont{rm}[RawFeature={multiscript=latn-hani}]{Noto Serif}
\begin{document}
\selectlanguage{english}ABCabc 你好
\selectlanguage{chinese-simplified}ABCabc 你好
\end{document}
答案3
确实,“Noto Serif CJK SC” 的拉丁字形明显比“Noto Serif”的相应粗细要轻。我不知道有任何文档解释这种设计选择。但是,值得注意的是,“Noto Serif” 的拉丁字形看起来像是中文文本范围内的(轻微)强调。你可以在 Ulrike 的回答中看到这一点。另一种方法是用一种语言明确标记拉丁字符:
ABCabc
{\selectlanguage{chinese-simplified} 简化字总表 ABCabc 简化字总表}
{\selectlanguage{chinese-simplified} 简化字总表 \foreignlanguage{english}{ABCabc} 简化字总表}
ABCabc
在第二行中,拉丁文字与中文文字融为一体,而在第三行中,拉丁文字则显得更为突出。
现在 Noto 有多种不同的字重。如果 CJK-Regular 比 Latin-Regular 更轻,我们可以尝试将 CJK-Regular 与 Latin-Light 结合起来:
\documentclass{article}
\usepackage[english]{babel}
% babelprovide for *english* (default language of the document)
\babelprovide[
main,
import,
language = Default]
{english}
% babelprovide for *chinese-simplified*
\babelprovide[
import,
language = Chinese Simplified]
{chinese-simplified}
%% Choose actual fonts for different font variants.
\babelfont{rm}[
UprightFont=*-Light,
BoldFont=*-Medium,
]{Noto Serif}
\babelfont[chinese-simplified]{rm}{Noto Serif CJK SC}
\begin{document}
ABCabc
{\selectlanguage{chinese-simplified} 简化字总表 ABCabc 简化字总表}
{\selectlanguage{chinese-simplified} 简化字总表 \foreignlanguage{english}{ABCabc} 简化字总表}
ABCabc
\end{document}
匹配并不完美,但非常接近。原则上也可以选择稍微暗一点的 CJK。不过我现在还没有安装这些。
答案4
扩展拉丁语和中文的主题:
两个部分:
第一部分是,它不会Babel
像包那样根据字形所在的 Unicode 块来更改字体ucharclasses
。附录:但看到关于最近的评论Babel
。
第二部分Noto Serif CJK SC
也包含一些非 CJK 字形。
Noto Serif
有拉丁文、西里尔文、希腊文和一些其他文字的字形。
Noto Serif CJK SC
包含拉丁文、西里尔文和希腊文的主要部分,以及平假名、片假名、韩文、注音符号,当然还有很大一部分中日韩文字。
uchar类:
平均能量损失
\documentclass[12pt]{article}
\usepackage{xcolor}
\pagecolor{red!3}
\usepackage{fontspec}
\newfontface\fcjk{Noto Serif CJK SC}
\newfontfamily\feng{Noto Serif}
\usepackage[CJK]{ucharclasses}
\setTransitionsForCJK{\fcjk}{\feng}
\begin{document}
\large
{\color{blue}Noto Serif}
\feng
\begin{tabular}{rl}
Latin & ABC abc \\
Currency symbols & ₣₤₥₦₧₨ \\
Cyrillic & ЄДФЦжцабвг \\
Greek & ΣΤΥΦζεδγβα \\
IPA \& Phonetic & ɐɠɰʁ ᴟᴞᴣᴇᴈᴗ \\
Letterlike Symbols & ℜℏ℈℃ℓℒ™ℵ⅀ \\
Modifier Tones & ꜀꜂꜈꜉꜊꜋꜌ꜗꜘꜙ \\
etc & ... \\
\end{tabular}
\bigskip
\rmfamily
{\color{blue}Noto Serif CJK SC}
\fcjk
\begin{tabular}{rl}
Bopomofo & ㄆㄇㄈㄉㄊ \\
Box Drawing & ┢┤┩╆ \\
CJK & 㑣㐦㐧㕔 \\
some Latin & ABC abc \\
some Cyrillic & ЄДФЦжцабвг \\
some Greek & ΣΤΥΦζεδγβα \\
Hangul & ᅣᅦᄄᆻ \\
Hiragana & あいいうえおかが \\
Katakana & アイウエオカガ \\
Letterlike Symbols & ℜℏ℈℃ℓℒ™ℵ⅀ \\
etc & ... \\
\end{tabular}
\bigskip
\feng
\textit{ucharclasses}: {\small Changing fonts without having to insert font-changing code} -- Latin text. Chinese text: 紫薇北斗星 Modern Greek: Διαμ πριμα εσθ ατ, κυο πχιλωσοπηια Ancient Greek: Μῆνιν ἄειδε, θεά, Πηληϊάδεω Ἀχιλῆος. And regular latin text.
\end{document}