サロゲートペアで構成される文字をPDFで表示したい

サロゲートペアで構成される文字をPDFで表示したい

- bleis-tift の投稿
返信数: 6

初めまして。

Windows Vista で TeX インストーラ 3 を使用して導入した LaTeX 環境で、utf パッケージを使用してサロゲートペアで構成される文字を PDF で表示したいのですが、うまくいかないので投稿しました。

以下のソースで問題が発生します。

\documentclass[slide,papersize]{jsarticle}
\usepackage{utf}
\begin{document}
叱る \\
\CID{13803}る
\end{document}

これを test.tex という名前で保存し、 platex test && dvipdfmx test を実行すると、

  • test.pdf を Adobe Reader 9 で開くと、GothicBBB-Medium の実際のフォントに KozGoPr6N-Medium が割り当てられ、「 𠮟る」が表示される
  • test.pdf を PDF-XChange Viewer で開くと、GothicBBB-Medium の Actual Font に MS-PGothic が割り当てられ、表示されない

と、環境によっては表示されません。
PDF-XChange Viewer が使用したいので、フォントを埋め込むことにしました。

IPA フォントをインストールし、添付したファイルを test.tex と同じ場所におき、platex test && dvipdfmx -f ipa.map test を実行しました。

すると、Adobe Reader 9 でも PDF-XChange Viewer でもオングストロームを横に倒した文字が表示されるようになってしまいました。
dvipdfmx は以下のような警告を出力しています。

** WARNING ** UCS-4 TrueType cmap table...
** WARNING ** Format 12 cmap table ... untested
** WARNING ** No Unicode mapping available: GID=13803
** WARNING ** Failed to load ToUnicode CMap for font "IPAGothic"
** WARNING ** UCS-4 TrueType cmap table...

解決策、代替策、気付いたこと等なんでも構いませんので、教えてもらえないでしょうか?
よろしくお願いします。

補足:はじめ「叱る」の部分を本来欲しい文字(134047)にしていたのですが、それ以降が消えてしまったので数値参照を使いました。

bleis-tift への返信

Re: サロゲートペアで構成される文字をPDFで表示したい

- 匿 名 の投稿
dvipdfmx は IPA フォントを OpenType フォントと
しては、探してくれないようです。(皆様、確認して
ください)。TrueType フォント用のディレクトリに
入れておくと見つけてくれました。従ってマップ
ファイルも TrueType 式に

unijmin-h UniJIS-UTF16-H ipam.otf
unijmin-v UniJIS-UTF16-V ipam.otf
unijgoth-h UniJIS-UTF16-H ipag.otf
unijgoth-v UniJIS-UTF16-V ipag.otf

cidmin-h Identity-H ipam.otf/AJ16
cidmin-v Identity-V ipam.otf/AJ16
cidgoth-h Identity-H ipag.otf/AJ16
cidgoth-v Identity-V ipag.otf/AJ16

hmr H ipam.otf
hmrv V ipam.otf
hkb H ipag.otf
hkbv V ipag.otf

rml H ipam.otf
rmlv V ipam.otf
gbm H ipag.otf
gbmv V ipag.otf

としておくと、タイプセットは正常になります。

dvipdfmx は新しい ipag.otf などを前の ipag.ttf
などと同じで、 TrueType フォントと見なすようです。
匿 名 への返信

Re: サロゲートペアで構成される文字をPDFで表示したい

- 匿 名 の投稿
> dvipdfmx は新しい ipag.otf などを前の ipag.ttf
> などと同じで、 TrueType フォントと見なすようです。

Windows も OpenType ではなくて、
TrueType として認識します。

通常の OpenType フォントではないようで、
いままでの TrueType フォントとして扱うと
問題ないようです。

PostScript flavor ではなくて、true type flavor
の opentype fonts ということでしょうか?
bleis-tift への返信

Re: サロゲートペアで構成される文字をPDFで表示したい

- Z. R. の投稿

「TrueType」と「OpenType」の語の使い分け、および拡張子 .ttf と .otf の使い分けについては未だにきちんと解っていないのですが…。

恐らく、dvipdfmx は次のように動作していると推測されます:拡張子が .ttf か .otf に関わらずに、マップファイルで指定されたファイルについて

  • $TTFONTS で該当ファイルを探して、見つかればそれを「TrueType グリフの OpenType」として扱う。
  • $OPENTYPEFONTS で該当ファイルを探して、見つかればそれを「Postscript グリフの OpenType」として扱う。

W32TeX の既定では Windows のフォントフォルダ(C:/windows/fonts)は $TTFONTS の方にあるので、ipag.otf を OS にインストールしたのであれば、それは「TrueType グリフの OpenType」として扱われているはずです。

さて、グリフの種別に関わらず、IPA フォントは CID アクセスをもつフォントではないので、CID を Adobe-Japan1-UCS2 で変換して Unicode でアクセスする必要があります。従って、マップファイルの設定は

cidgoth-h Identity-H ipag.otf/AJ16

のように CID 文字集合の明示指定が必要になります。

……そして、私の場合、ここからがうまくいきません。

少し古い Adobe-Japan1-UCS2 では、CID 13803 (= 0x35EB) に対するマップは

<35EB> <53F1>

となっていて、これでは普通の〈叱〉(= U+53F1) が出るだけで嬉しくありません。そこで新しい Adobe-Japan1-UCS2(5.001 版)を見ると

<35EB> <D842DF9F>

となっています。この「D842DF9F」は〈口+七〉(= U+20B9F) の UTF-16 なので、これで上手くいくはずです。ところが実際にこのマップを使うと、dvipdfmx は 0xD842DF9F という符号位置の文字を出そうとして失敗しているように見えます。試しに、この D842DF9F を本来間違いの 00020B9F に書き換えると今度は〈口+七〉が表示されます。

もしかしたら、dvipdfmx において、SMP の文字(「サロゲートが必要な文字」)への ToUnicode の処理は今までずっと失敗していたのでしょうか?

Z. R. への返信

Re: サロゲートペアで構成される文字をPDFで表示したい

- 奥村 晴彦 の投稿
美文書第5版を用意する過程でこの問題に再遭遇しました。
角藤先生・ChoFさんのおかげで,CVS版dvipdfmxで修正されることになりました。
Z.R.さん,どうもありがとうございます。
奥村 晴彦 への返信

Re: サロゲートペアで構成される文字をPDFで表示したい

- 奥村 晴彦 の投稿
土村さんに教えていただきましたが,最新の(再配布可能な)Adobe-Japan1-UCS2は次からダウンロードできます:
http://opensource.adobe.com/wiki/display/pdfmapping/Downloads
からリンクされている
http://download.macromedia.com/pub/opensource/pdfmapping/mappingresources4pdf_2unicode.tar.Z
bleis-tift への返信

Re: サロゲートペアで構成される文字をPDFで表示したい

- bleis-tift の投稿

匿名さん、Z. R. さん、ありがとうございます。

匿名さんのマップファイルと、Z. R. さんの Adobe-Japan1-UCS2 を修正する方法で望みの文字を出すことが出来ました。