如何在 LuaTex-Ja 中使用 Noto Sans mono CJK?(新手)

如何在 LuaTex-Ja 中使用 Noto Sans mono CJK?(新手)

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}    

但改成之后haranoajinoto编译失败。

完整的日志有 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。VV

答案 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 字体等排版语言变得非常复杂。
  • fontenctextcompnimbussans支持NFSS。
  • fontspec支持 opentype。

实际情况比这要复杂一些。特别是,我故意避免提及 truetype。但是,对于我们的目的而言,从理论上讲,选择很简单。

luatexja支持这两种字体,但正如你所说,opentype 字体更直接。无论如何,如果你想使用 NotoSansCJK,我认为你别无选择。fontspec在这种情况下,你必须使用。

因此请确保您没有加载任何有冲突的包。不要在未检查字体包的作用的情况下添加它们。

在下面的代码中,我删除了nimbussansfontenctextcomp我还明确了一些默认选项并启用了一些非默认选项。

\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,所以虽然我不推荐这样做,但它可能是一个有用的起点。

NotoSansCJK 和 NotoSans 采用标准数学

我建议阅读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}  

相关内容