2 周前,我询问如何用 Noto Sans mono CJK 替换 LaTex 当前的默认日文字体(如何更改要使用的日文字体)。使用命令 sudo dnf install google-noto-sans-mono-fonts 将此字体安装在我的 Fedora PC 上,我默认将此字体用于我的日文文本。(顺便说一句,我不知道 Latex 现在使用哪种字体,也不知道它在 Latex 中是如何设置的)。在回答这个问题时,我被告知最好的选择是切换到 Luatex,因为 LuaTex 将支持所有 Open Type 字体。但是,我没有找到如何在 Luatex 中设置它的地方。
后来我发现 LuaTex-Ja 可能更适合我的需求。然而,即使有了这个包的帮助,我还是无法使用 noto 字体。
通过此前言,LuaTex-Ja 返回预期结果:
\documentclass{article}
\usepackage{amssymb}
\usepackage[haranoaji]{luatexja-preset}
\usepackage{luatexja-fontspec}
\usepackage{mathtools,array,booktabs}
\usepackage{cancel}
\usepackage{nimbussans}
\renewcommand*\familydefault{\sfdefault}
\usepackage{fontenc}
\usepackage[sf]{noto}
\begin{document}
\[
\setlength\arraycolsep{0pt}
\renewcommand\arraystretch{1}
\left.
\begin{array}{rr}
\left.\begin{array}{l}
\text{V} \\ \text{い-adj}
\end{array}\right\} &
\multicolumn{1}{l}{\text{Jisho}} \\
\addlinespace
\left.\begin{array}{l}
\text{な-adj} \\ \text{N}\textsubscript{1}
\end{array}\right\} &
\begin{array}{l}
\text{Jisho} \\ \text{$\sim$\cancel{だ}}\to\text{$\sim$な}
\end{array}
\end{array}
\right\}
\text{のは N}\textsubscript{2}\text{です}
\]
\end{document}
但改成之后haranoaji
,noto
编译失败。
完整的日志有 1247 行。日志文件的哪些部分最有指导意义,应该添加?
如果有人能告诉我如何使用 Noto Sans mono 字体就太好了。
@cfr,
您给出的答案正是我想要的!这意味着我不必处理代码本身 ;-)。唉,在我的笔记本电脑上它仍然会出现编译错误。但您给了我很多线索,我可以用它们继续我的搜索。
谢谢!
评论 1
这是日志中的第一个错误:
Package luatexja-preset Warning: Japanese fonts will be scaled by (luatexja-preset) 0.96221923828125. Package luatexja-fontspec Warning: \addjfontfeature(s) ignored; (luatexja-fontspec) it cannot be used with a font that (luatexja-fontspec) wasn't selected by luatexja-fontspec. luaotfload | cache : Lookup cache loaded from /home/bengbers/.texlive2022/texmf- var/luatex-cache/generic/names/luaotfload-lookup-cache.luc. luaotfload | db : Reload initiated (formats: otf,ttf,ttc); reason: Font "NotoSer ifCJKJPRegular" not found. luaotfload | resolve : sequence of 3 lookups yielded nothing appropriate. ! Package fontspec Error: The font "NotoSerifCJKJPRegular" cannot be found. For immediate help type H <return>. ... l.731 \ltjapplypreset {} A font might not be found for many reasons. Check the spelling, where the font is installed etc. etc. When in doubt, ask someone for help! luaotfload | resolve : sequence of 3 lookups yielded nothing appropriate. luaotfload | aux : no font with id 0 Package fontspec Warning: Font "NotoSerifCJKJPRegular" does not contain (fontspec) requested Script "CJK".
评论 3
- 在包含行的早期测试文件中
\usepackage{nimbussans}
,在 Nimbus Sans 中\text{V}
生成了。A导致默认乳胶字体中出现 V。V
V
答案 1
感谢您指出字体类型之间的差异。
fontenc
是从我在某处找到的示例中复制后包含的。您提到了 的用法
NotoSansCJK-Regular.ttc
。我搜索了我的文件系统,但该文件不存在。我只找到了/usr/share/fonts/google-noto-sans-mono-cjk-vf-fonts/NotoSansMonoCJK-VF.ttc
。这可能是导致我的问题的原因吗?。我找到了这个页面Luatex 中的字体在互联网上。我认为大多数建议的测试都没有错误地执行。显然,我应该更好地查看测试结果。我读了 Luatex-Ja 文档。据我所知,文档主要提供了如何显示字体的信息。据我所知,如何选择字体的问题没有得到解答。
答案1
这当然是不对的。我唯一的主张是,我思考它比你原来的 MWE 更接近正确。话虽如此,我无法重现你报告的编译失败。你的代码对我来说编译没有错误,但输出肯定不是你想要的。
- 您需要确定是否正在使用传统的 NFSS 字体(“新字体选择方案”),这些字体通常为 1 型,并且使日语或 opentype 字体等排版语言变得非常复杂。
fontenc
,textcomp
并nimbussans
支持NFSS。fontspec
支持 opentype。
实际情况比这要复杂一些。特别是,我故意避免提及 truetype。但是,对于我们的目的而言,从理论上讲,选择很简单。
luatexja
支持这两种字体,但正如你所说,opentype 字体更直接。无论如何,如果你想使用 NotoSansCJK,我认为你别无选择。fontspec
在这种情况下,你必须使用。
因此请确保您没有加载任何有冲突的包。不要在未检查字体包的作用的情况下添加它们。
在下面的代码中,我删除了nimbussans
和fontenc
。textcomp
我还明确了一些默认选项并启用了一些非默认选项。
\usepackage[noto-otf,fontspec,match]{luatexja-preset}
这指定了fontspec
,尽管这是默认值。match
表示诸如 之类的命令\sffamily
也将切换日文字体。noto-otf
指定noto-otf
预设。最初,我尝试了 ,noto-otc
因为这应该支持 的使用NotoSansCJK-Regular.ttc
。但是,我无法让它工作。但是,当我使用 时noto-otf
,.ttc
可以找到字体。您应该检查 Fedora 安装了什么,因为我使用的是 Arch。您可能会发现需要使用其他noto...
预设之一。
尽管match
意味着\sffamily
切换到 NotoSansCJK,但将默认系列设置为\sfdefault
不会使 NotoSansCJK 成为默认系列。相反,您仍然会得到 NotoSerifCJK。\sffamily
在文档开头发布是一种有效的解决方法。
我不知道结果应该是什么样子。这对我来说看起来不太好,但我对日语一无所知。我只是观察到 NotoSansCJK-Regular 和 NotoSans for English 的粗细与数学符号的粗细不太匹配。
然而,它做使用 NotoSansCJK-Regular,所以虽然我不推荐这样做,但它可能是一个有用的起点。
我建议阅读luatexja
的文档。毫无疑问,它对你的意义比对我更大。此外,该软件包的某些部分没有英文文档,因此日语版本无疑是最好的信息来源。
\documentclass{article}
\usepackage{amssymb}
\usepackage{mathtools,array,booktabs}
\usepackage[noto-otf,fontspec,match]{luatexja-preset}
\usepackage{cancel}
\usepackage[sfdefault]{noto}
\renewcommand*\familydefault{\sfdefault}
\begin{document}
\sffamily
のは
\[
\setlength\arraycolsep{0pt}
\renewcommand\arraystretch{1}
\left.
\begin{array}{rr}
\left.\begin{array}{l}
\text{V} \\
\text{い-adj}
\end{array}\right\} &
\multicolumn{1}{l}{\text{Jisho}} \\
\addlinespace
\left.\begin{array}{l}
\text{な-adj} \\
\text{N}\textsubscript{1}
\end{array}\right\} &
\begin{array}{l}
\text{Jisho} \\
\sim\cancel{\text{だ}}\to\sim\text{な}
\end{array}
\end{array}
\right\}
\text{のは N}\textsubscript{2}\text{です}
\]
\end{document}