多种 xeCJK 字体

多种 xeCJK 字体

我已将 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}

Noto 字体示例

这需要 XeLaTeX 和babel3.27 或更高版本。(对于babel3.22,您必须手动设置Script=CJKScript=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}

Noto CJK 示例

在这里,我将每种语言设置为不同的颜色,以使语言切换更加明显。

相关内容