使用 xeCJK 合并中文、日文和韩文文本

使用 xeCJK 合并中文、日文和韩文文本

当在一个文档中组合中文、日文和韩文文本时,是否有办法为各个字符定义单独的字体?特别是对于韩文,因为很少有字体同时支持 Cn/Jp 和韩文。现在我使用了一个小解决方法,将所有韩文文本包装在 \texttt{} 中,并使用 \setCJKmonofont 设置字体。

\usepackage{xeCJK}
\setCJKmainfont{Hiragino Mincho Pro} % for Cn & Jp
\setCJKmonofont{AppleMyungjo} % for Kr

\newcommand\cn[1]{\textnormal{#1}}
\newcommand\jp[1]{\textnormal{#1}}
\newcommand\kr[1]{\texttt{#1}}

答案1

嗯,您可以自由地使用\setCJKfamilyfont它来定义您需要的字体。并且您可以使用\CJKfamily它来更改字体。这与您使用的方式非常相似。

另一方面,目前xeCJK还没有能力为中文、日文和韩文分别定义不同的字体。事实上,这三种语言有很多共同的字符,无法自动区分是哪种语言。

另一种解决方案是使用fallback选项xeCJK定义主字体(用于中文和日文)及其后备字体(用于韩文)。例如,

\documentclass{article}
\usepackage[fallback]{xeCJK}[2011/05/01 v2.3.19]
% Fonts available on windows
\setCJKmainfont{SimSun}
\setCJKfallbackfamilyfont{\CJKrmdefault}{Batang}

\begin{document}
你好

こんにちは

여보세요
\end{document}

但是,对于严肃的排版,使用字体选项的结果fallback值得怀疑。这三个国家/地区的一些字形看起来非常不同。中文字体中的字形在韩文或日文中可能是错误的,反之亦然。因此,正确的方法仍然是手动更改字体:

\documentclass{article}
\usepackage{xeCJK}[2011/05/20 v2.4.1]
\setCJKfamilyfont{zhrm}{SimSun}
\setCJKfamilyfont{jarm}{MS Mincho}
\setCJKfamilyfont{korm}{Batang}

\newcommand\Chinese{\CJKfamily{zhrm}\CJKnospace}
\newcommand\Japanese{\CJKfamily{jarm}\CJKnospace}
\newcommand\Korean{\CJKfamily{korm}\CJKspace}

\begin{document}
{\Chinese 你好}

{\Japanese こんにちは}

{\Korean 여보세요}
\end{document}

更新

对于较新的版本xeCJK(ver 3.x),您可以为不同的子 CJK 块设置不同的字体:

\documentclass{article}
\usepackage{xeCJK}[2012/04/08 v3.0.0]

\xeCJKDeclareSubCJKBlock{Kana}{"3040 -> "309F, "30A0 -> "30FF, "31F0 -> "31FF, "1B000 -> "1B0FF}
\xeCJKDeclareSubCJKBlock{Hangul}{"1100 -> "11FF, "3130 -> "318F, "A960 -> "A97F, "AC00 -> "D7AF, "D7B0 -> "D7FF}

\setCJKmainfont{SimSun}
\setCJKmainfont[Kana]{MS Mincho}
\setCJKmainfont[Hangul]{Batang}

\begin{document}
你好

こんにちは

여보세요
\end{document}

答案2

\babelfont您可以使用中的命令执行此操作babel。我从另一个用户那里复制了此示例文本,对于任何语言中的任何错误,我们深表歉意。

此 MWE 使用Google 的 Noto CJK 字体,但您可以替换您选择的任何其他字体,例如,hironoaji包中的免费日文 Hirono Aji Mincho 字体。

\documentclass{article}
\tracinglostchars=3 % Make it an error if characters are missing.
\usepackage[english]{babel}
\usepackage{parskip}

\babelprovide[import]{japanese}
\babelprovide[import]{korean}
\babelprovide[import=zh-hant]{chinese} % Or zh-hans for Simplified Chinese

\babelfont{rm}
          {Noto Serif}
\babelfont[chinese]{rm}
          [Renderer=HarfBuzz]{Noto Serif CJK tc}
\babelfont[japanese]{rm}
          [Renderer=HarfBuzz]{Noto Serif CJK jp}
\babelfont[korean]{rm}
          [Renderer=HarfBuzz]{Noto Serif CJK kr}

\begin{document}
Japanese: \foreignlanguage{japanese}{フォントはまた、数学的な形態および他の環境で使用することができるフォントはまた、数学的な形態および他の環境で使用することができる}

Chinese: \foreignlanguage{chinese}{关于数学部分}

Korean: \foreignlanguage{korean}{전체 문서에 대한 기본 정보를 소개 단락.}
\end{document}

Noto 字体示例

相关内容