![多種 xeCJK 字體](https://rvso.com/image/392334/%E5%A4%9A%E7%A8%AE%20xeCJK%20%E5%AD%97%E9%AB%94.png)
我已將 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}
這需要 XeLaTeX 和babel
3.27 或更高版本。 (在babel
3.22 中,您必須手動設定Script=CJK
並Script=Kana
解決錯誤。)我替換為Noto CJK 字體。
Babel 的一個更簡單的選項\otherlanguage
是ucharclasses
.您也可以聲明 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}
在這裡,我將每種語言設定為不同的顏色,以使語言切換更加明顯。