如何为主要汉字选择一种字体并为它的汉字注音选择另一种字体?

如何为主要汉字选择一种字体并为它的汉字注音选择另一种字体?

目的是列出日语词汇表,其中包含主要角色的汉字笔画顺序、其注音假名(位于主要角色上方的小假名字符)及其含义(英语)。

KanjiStrokeOrders的机器上安装了字体。我从以下网站下载此网站(点击)

\documentclass[border=12pt,12pt,preview,varwidth]{standalone}

\usepackage{xcolor}
\usepackage{fontspec}
%\usepackage{xeCJK}
\usepackage{ruby}
\renewcommand\rubysep{.05ex}

\AtBeginDocument{\fontsize{20}{20}\selectfont}

\let\temp\ruby
\renewcommand\ruby[2]{\temp {\fontsize{60}{60}\fontspec{KanjiStrokeOrders}\selectfont#1}{#2}}

\def\mean#1{: \textcolor{red}{#1}}

\begin{document}
\begin{enumerate}
    \item \ruby{会}{かい}\ruby{社}{しゃ} \mean{company}
    \item \ruby{朝}{あさ} \mean{morning}
\end{enumerate}
\end{document}

没有xeCJK

xeCJK虽然主角没有出现,但他们的注音假名却消失了。

在此处输入图片描述

xeCJK

虽然xeCJK出现了假名,但主角不再使用KanjiStrokeOrder字体。

在此处输入图片描述

问题:

我应该如何选择字体来实现上述目标?

答案1

这是我第一次没有 的实验xeCJK

% run: xelatex mal-furigana.tex
\documentclass[border=12pt,12pt,preview,varwidth]{standalone}
\usepackage{xcolor}
\usepackage{fontspec}
\newfontfamily\kanji{KanjiStrokeOrders_v3.001.ttf}
\newfontfamily\furigana{FandolSong-Regular}
\usepackage{ruby}
\renewcommand\rubysep{.05ex}
\AtBeginDocument{\fontsize{20}{20}\selectfont}
\let\temp\ruby
\renewcommand\ruby[2]{\temp 
  {\fontsize{60}{60}\kanji#1}%
  {\furigana#2}
  }% end of \ruby...
\def\mean#1{: \textcolor{red}{#1}}
\begin{document}
\begin{enumerate}
    \item \ruby{会}{かい}\ruby{社}{しゃ} \mean{company}
    \item \ruby{朝}{あさ} \mean{morning}
\end{enumerate}
\end{document}

mwe,不使用 xeCJK 进行实验

更新 1:xeCJK这是使用新字体系列的实验。

% run: xelatex mal-furigana.tex
%\documentclass[border=12pt,12pt,preview,varwidth]{standalone}
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{xcolor}
\usepackage{fontspec}
\usepackage{xeCJK}
\usepackage{ruby}
\renewcommand\rubysep{.05ex}
\setCJKmainfont{KanjiStrokeOrders}
\newCJKfontfamily\furigana{FandolSong-Regular}
\AtBeginDocument{\fontsize{20}{20}\selectfont}
\let\temp\ruby
\renewcommand\ruby[2]{\temp 
  {\fontsize{60}{60}#1}%\selectfont\setmainfont{KanjiStrokeOrders}
  {\fontsize{20}{20}\furigana#2}
  }% end of \ruby...
\def\mean#1{: \textcolor{red}{#1}}
\begin{document}
\begin{enumerate}
    \item \ruby{会}{かい}\ruby{社}{しゃ} \mean{company}
    \item \ruby{朝}{あさ} \mean{morning}
\end{enumerate}
\end{document}

mwe 与 xeCJK

更新 2:这是承诺的版本,没有xeCJKruby。我正在通过tikz包放置假名。我们可以运行xelatexlualatex。可以为引擎设置 TTF/OTF 字体pdflatex(但每个字体文件限制为 256 个字形),但它现在已经过时了。我附上了代码及其预览。

% run: xelatex or lualatex mal-furi-general.tex
\documentclass[a4paper]{article}
\pagestyle{empty}
\parindent=0pt
\usepackage{xcolor}
\usepackage{fontspec}
\usepackage{tikz}
\newfontfamily\kanji{KanjiStrokeOrders_v3.001.ttf}
\newfontfamily\furigana{FandolSong-Regular}
\def\mkanji{\fontsize{60}{60}\kanji}
\def\mfurigana{\fontsize{15}{15}\furigana}
\def\mruby#1#2{%
  \begin{tikzpicture}[baseline=(temp.base)]
  \node(temp){\mkanji#1};
  \node[anchor=center,yshift=0.5ex]at(temp.north){\mfurigana#2};
  \end{tikzpicture}%
  }% End of \mruby...
\def\mean#1{ \textcolor{red}{#1}}
\newcount\malc \malc=0
\def\mterm{\par
  \advance\malc by 1\relax%
  \the\malc. %
  }% End of \mterm...
\begin{document}
\fontsize{20}{20}\selectfont
\mterm \mruby{会}{かい}\mruby{社}{しゃ}\mean{company}
\mterm \mruby{朝}{あさ}\mean{morning}
\end{document}

mwe:没有 xeCJK 和 ruby

答案2

如果您想知道如何为汉字选择字体,您应该知道您想为每个字符使用哪种字体,并且您需要知道xeCJK使用它的基本功能。

字体

在您的示例中,您应该对汉字 (kanji) 使用特殊的字体 KanjiStrokeOrders,对振り仮名 (furigana) 使用另一种日文字体(您的文档中未正确指定)。

如果您没有设置适当的字体,您根本无法排版任何 CJK 字符,因为默认的拉丁现代字体不包含 CJK 字形。

相反,如果你使用 v3.2.10 或更高版本xeCJK,中文字体 Fandol 加载时会出现警告:

*************************************************
* xeCJK warning: "fandol"
* 
* Fandol is being set as the default font for CJK text.
* Please make sure it has been properly installed.
*************************************************

这就是为什么xeCJK即使您没有指定日文字体,汉字注音也会出现在您的文档中。

使用xeCJK

v3.x的文档xeCJK仅有中文,很抱歉。

主要目的xeCJK

  • 自动为中日韩字符和拉丁字符选择不同的字体;
  • 为了获得正确的换行;
  • 进行标点符号字距调整。

基本功能是字体切换,语法与包相同fontspec

  • \setCJKmainfont\setmainfont
  • \setCJKsansfont\setsansfont
  • \setCJKmonofont\setmonofont
  • \newCJKfontfamily\newfontfamily
  • \CJKfontspec\fontspec

解决方案

% !TeX encoding = UTF-8
% !TeX program = XeLaTeX
\documentclass[border=12pt,12pt,preview,varwidth]{standalone}

\usepackage{xcolor}

\usepackage{xeCJK}
\setCJKmainfont{ipaexm.ttf} % For furigana and other Japanese characters
\newCJKfontfamily\strokefont{KanjiStrokeOrders_v3.001.ttf} % For stroke order

\usepackage{ruby}
\renewcommand\rubysep{.05ex}
\renewcommand\rubysize{0.2}
\let\oldruby\ruby
\renewcommand\ruby[2]{{\fontsize{60}{60}\selectfont\oldruby{\strokefont#1}{#2}}}

\def\mean#1{: \textcolor{red}{#1}}

\AtBeginDocument{\fontsize{20}{20}\selectfont}

\begin{document}
\begin{enumerate}
    \item \ruby{会}{かい}\ruby{社}{しゃ} \mean{company}
    \item \ruby{朝}{あさ} \mean{morning}
\end{enumerate}
\end{document}

在此处输入图片描述

相关内容