在 CJK 中使用 Meiryo 字体时汉字会替换平假名

在 CJK 中使用 Meiryo 字体时汉字会替换平假名

我已经尝试让 Meiryo 字体与 LaTeX CJK 兼容好一阵子了,但不知出于什么原因,它总是无法工作。今天我又试了一次,确实得到了一些输出,但结果并不如我所料。

由于某种原因,处理平假名会导致 PDF 中出现我从未见过的字符。我写的一些汉字没有受到影响,但很多都被意想不到的字符所取代。

我已经成功使用了http://www-alg.ist.hokudai.ac.jp/~jan/japfonts.html允许 CJK 使用 IPA 字体,但按照 Meiryo 的相同教程操作后,却无法得到任何可用的结果。我怀疑 Unicode 字形的位置不对,或者类似情况。

我获得了在 /usr/share/texmf-texlive/fonts/tfm/meiryo 中的 meiryo.ttc 上运行 ttf2tfm 生成的 .tfm 文件,以及在 /usr/share/texmf-texlive/tex/latex/CJK fonts 中的 .td 文件。

相关.td和.map文件内容如下:

c70meiryo.td:

\DeclareFontFamily{C70}{meiryo}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{meiryo}{m}{n}{<-> CJK * meiryo}{}
\DeclareFontShape{C70}{meiryo}{bx}{n}{<-> CJKb * meiryo}{\CJKbold}

ttfonts.map(仅相关位)

ipam@UJIS@ ipam.ttf
ipam-uni@Unicode@ ipam.ttf
meiryo@Unicode@ meiryo.ttc
msjh@Unicode@ unicode msjh.ttf

另外,这是我尝试使用此字体制作的文档的一部分 - 我正在使用 flashcards 包,但我觉得这不太可能对字体问题产生太大影响。我为卡片使用了 a4 纸张大小,并且没有默认的 .cfg 文件,因此如果需要,您可以在 documentclass 中将纸张类​​型更改为 avery5371,或者在您的 flashcards 目录中创建一个文件 a4paper.cfg(我的是 /usr/share/texmf-texlive/tex/latex/flashcards),并输入以下内容:

\NeedsTeXFormat{LaTeX2e}[1996/12/01]
\ProvidesFile{a4paper.cfg}
\newcommand{\cardpapermode}{portrait}
\newcommand{\cardpaper}{a4paper}
\newcommand{\cardrows}{5}
\newcommand{\cardcolumns}{2}
\setlength{\cardheight}{2.126in}
\setlength{\cardwidth}{3.346in}
\setlength{\topoffset}{0.5in}
\setlength{\oddoffset}{1.0in}
\setlength{\evenoffset}{1.0in}

\endinput

如果需要,可以使用 LaTeX 文档进行任何测试(它会引发一些我尚未解决的其他错误)。目前使用 meiryo 编码。我认为 CJK 的默认值是 min:

\documentclass[a4paper,grid]{flashcards}
\usepackage{verbatim}
\usepackage{CJK}
\usepackage{ruby}

\renewcommand{\rubysize}{0.4}
\renewcommand{\rubysep}{-0.8}

\cardfrontstyle[\fontsize{90pt}{0.2cm}\slshape]{headings}
\cardbackstyle{plain}

\newcommand{\df}[3]{#1 -- #2 -- #3}
\newcommand{\rdf}[3]{\ruby{#1}{#2} -- #3}
\newcommand{\md}{\fontsize{18pt} \selectfont}

\begin{document}

\begin{CJK}{UTF8}{meiryo}
  \begin{flashcard}{映}
    \begin{tabular}{cc}
      \begin{minipage}[b]{0.5\linewidth}\centering
        \begin{tabular}{c}
          \textbf{Reflect}\\
        \end{tabular}
      \end{minipage}
      \hspace{-1cm}
      &\begin{minipage}[b]{0.5\linewidth}\centering
        \md
        \begin{tabular}{c}
          うつ--る\\
          うつ--す\\
          えい
        \end{tabular}
      \end{minipage}
      \vspace*{0.1cm}
    \end{table}
    \fontsize{12pt} \selectfont
    \begin{tabular}{l}
      \rdf{映画}{えいが}{Movie}\\
      \rdf{上映}{じょうえい}{Show a movie}\\
      \rdf{放映}{ほうえい}{Televising}
    \end{tabular}
  \end{flashcard}

\end{document}

以下是我正在谈论的一些图片:

使用 meiryo 作为字体编译上述内容:

使用 ipam 作为字体:

关于问题可能是什么,以及我应该如何解决它,您有什么想法吗?

答案1

我认为您不应该考虑使用 XeTeX 或 LuaTeX 来编译您的文档吗?例如,这是您的最小示例的修改版本(由于某种原因,其中似乎有很多错误):

\documentclass[a4paper]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Hiragino Mincho Pro}
\usepackage{ruby}
\renewcommand{\rubysize}{0.7}
\renewcommand{\rubysep}{-0.8pt}
\newcommand{\rdf}[3]{\ruby{#1}{#2} -- #3}
\begin{document}
    \begin{tabular}{l}
      \rdf{映画}{えいが}{Movie}\\
      \rdf{上映}{じょうえい}{Show a movie}\\
      \rdf{放映}{ほうえい}{Televising}
    \end{tabular}
\end{document}

相关内容