我已将 xeCJK 的主字体设置为 HanWangMingMedium,这样我就可以访问旧式字符。但结果是,我不再能访问日语假名:在 MWE 中,片假名显示为空格:
默认的 xeCJK 字体不会造成此问题,但不会提供我需要的某些字符(例如 се)。如何在文档正文中更改 xeCJK 字体,默认的 xeCJK 字体叫什么?
可能与答案相关:我正在写有关书写系统的文章。因此,我只需要单独的字符。我没有长篇中文文本。
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{fontspec}
\usepackage{xeCJK}
\setCJKmainfont{HanWangMingMedium}
\begin{document}
東風フォント
\end{document}
更新。这里有一个技巧:假装替代字体是无衬线变体。但我仍然想要一个合适的解决方案。
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{fontspec}
\usepackage{xeCJK}
\setCJKmainfont{HanWangMingMedium}
\setCJKsansfont{AozoraMinchoRegular}
\begin{document}
東風\sf フォント.
\end{document}
答案1
在 中babel
,您可以在不同的表意字母之间切换,包括日语和繁体中文:
\documentclass{standalone} % Replace with the real class.
\usepackage[english]{babel}
\usepackage{fontspec}
% A bug in Babel 3.22 requires setting the script= option to CJK and Kana,
% respectively.
\babelprovide{chinese-traditional}
\babelprovide{japanese}
\defaultfontfeatures{Scale = MatchUppercase}
\babelfont{rm}[Scale = 1.0,
Ligatures = {Common, TeX},
Language = Default
]{Latin Modern Roman}
\babelfont{sf}[Ligatures = {Common, TeX},
Language = Default]{Latin Modern Sans}
\babelfont[chinese-traditional]{rm}{NotoSerifCJKtc-Regular}
\babelfont[chinese-traditional]{sf}{NotoSansCJKtc-Regular}
\babelfont[japanese]{rm}{NotoSerifCJKjp-Regular}
\babelfont[japanese]{sf}{NotoSansCJKjp-Regular}
\begin{document}
\otherlanguage{chinese-traditional}{東風}
\otherlanguage{japanese}{フォント}
\end{document}
这需要 XeLaTeX 和babel
3.27 或更高版本。(对于babel
3.22,您必须手动设置Script=CJK
和Script=Kana
解决错误。)我替换了Noto CJK 字体。
Babel 的一个更简单的选项是 ,它不需要你\otherlanguage
到处写东西ucharclasses
。你也可以声明一个\newfontfamily
,给它[Script = Kana, Language = Japanese]
选项,然后选择它。
更新
自 2021 年起,LuaLaTeX 1.12 或更高版本中可以使用多种表意文字。理论上,您可以将文档设置为在不添加标记的情况下在语言之间切换。实际上,这对中文和日文并不可靠,因为 Unicode 联盟选择对汉字和中文使用相同的代码点。(Unicode 的原罪是认为他们可以将所有内容都放入 16 位。)
在这个具体的例子中,如果我们需要的日语只有平假名和片假名,而所有表意字符都是中文,那么我们就可以babel
正确检测日语、中文和英文:
\documentclass{standalone} % Replace with the real class.
\usepackage[english]{babel}
\usepackage[svgnames, HTML]{xcolor}
\usepackage{fontspec}
% A bug in Babel 3.22 requires setting the script= option to CJK and Kana,
% respectively.
\babelprovide[import, onchar=ids fonts]{japanese}
\babelprovide[import, onchar=ids fonts]{chinese-traditional}
\defaultfontfeatures{ Scale = MatchUppercase,
Ligatures=TeX }
\babelfont{rm}
[Scale = 1.0,
Ligatures = Common,
Language = Default
]{Latin Modern Roman}
\babelfont{sf}
[Ligatures = Common,
Language = Default
]{Latin Modern Sans}
\babelfont[chinese-traditional]{rm}
[Renderer=HarfBuzz, Color=DarkGreen]{NotoSerifCJKtc-Regular}
\babelfont[chinese-traditional]{sf}
[Renderer=HarfBuzz, Color=DarkGreen]{NotoSansCJKtc-Regular}
\babelfont[japanese]{rm}
[Renderer=HarfBuzz, Color=NavyBlue]{NotoSerifCJKjp-Regular}
\babelfont[japanese]{sf}
[Renderer=HarfBuzz, Color=NavyBlue]{NotoSansCJKjp-Regular}
\begin{document}
東風
\textsf{フォント}
\end{document}
在这里,我将每种语言设置为不同的颜色,以使语言切换更加明显。