多種 xeCJK 字體

多種 xeCJK 字體

我已將 xeCJK 的主要字體設定為 HanWangMingMedium,以便我可以存取舊式字元。但是,結果,我無法再使用日文假名:在 MWE 中,片假名顯示為空白:

在此輸入影像描述

預設的 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 的一個更簡單的選項\otherlanguageucharclasses.您也可以聲明 a \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}

能登 CJK 樣本

在這裡,我將每種語言設定為不同的顏色,以使語言切換更加明顯。

相關內容