チケット #28355

luatexja-fontspec で望みどおりの欧文フォントが出せないことがある

登録: 2012-05-11 14:32 最終更新: 2012-05-14 12:10

報告者:
(del#73928)
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし
ファイル:
なし

詳細

#27759 を発行してから時間がたってしまいました。

LuaTeX-ja のバグというほどのことはなかったのですが、この場を借りて報告・相談します。

1. LaTeX Error: Option clash for package color.

\usepackage{luatexja-fontspec} より先に \usepackage[...]{color} して解決しました。

2. LaTeX Error: Command \super already defined.

私達の文書では \super という Smalltalk の予約語をマクロ化して使っており、これが xunicode 中の定義と衝突しました。 \usepackage{luatexja-fontspec} の直後に \let\super\relax して(強引に)解決しました。

3. LaTeX Error: Command \copyright unavailable in encoding T1.

\copyright → \textcopyright にして解決しました。

4. LaTeX Error: Command \nobreakspace unavailable in encoding T1.

\usepackage[T1]{fontenc} を落として解決しました。 実際、"OT1, T1 and other font encodings may have small problems with xunicode" ということなので、たぶんこれしか解は無いと思われます。この対策を入れると 3 の対策は不要になります。

5. しかし

\usepackage[T1]{fontenc} を落とすと、欧文フォントが汚くなります。

現象を再現するためのプログラム 0.py、0.py を走らせた結果で、 望みどおりのフォントが出るもののエラーになった a.fontspec-palatino-t1.{log,pdf}、 エラーにはならないものの望みどおりのフォントが出ない e.t1-fontspec-palatino.{log,pdf} を gist に置きました。

https://gist.github.com/2657622

解決のヒントを与えていただけると幸いです。

チケットの履歴 (8 件中 3 件表示)

2012-05-11 14:32 更新者: (del#73928)
  • 新しいチケット "luatexja-fontspec で望みどおりの欧文フォントが出せないことがある" が作成されました
2012-05-11 14:39 更新者: (del#73928)
  • 詳細が更新されました
コメント

誤: a.fontspec-palatino-t1.{log,tex}、 e.t1-fontspec-palatino.{log,tex} 正: a.fontspec-palatino-t1.{log,pdf}、 e.t1-fontspec-palatino.{log,pdf}

2012-05-11 19:21 更新者: h7k
コメント

(私自身 fontspec は使わないので間違っているかもしれませんが)fontspec を使う場合には旧来の fontenc, palatino は不要です.

\documentclass{book}
\usepackage[papersize={6.13in,9.21in}]{geometry}
\usepackage{luatexja-fontspec}
\setmainfont{TeX Gyre Pagella} % Palatino 類似
\setsansfont{TeX Gyre Heros}   % Helvetica 類似
\setmonofont{TeX Gyre Cursor}  % Courier 類似
\begin{document}
...
\copyright hogehoge
\textsf{sans-serif}, \texttt{typewriter}
\end{document}

では如何でしょうか?

2012-05-12 06:57 更新者: kmaeda
コメント

私も理解が少し怪しいですが,fontspec を読み込んだ時点で OpenType フォントを使うものとして EU2 エンコーディング (デフォルトフォントは LatinModern)で設定されますので,北川さんの書かれたように OpenType フォントを使うよう設定するのが 解決策としては早いと思います. (「欧文フォントが汚くなる」と書かれていますが,PDF のプロパティを見るとわかるように LatinModern が使われています.) TeX Gyre フォントは URW++ のフォントを基にして作られた OpenType フォントです.

どうしても従来の Type 1 フォントを使いたい場合は,日本語の埋め込みフォントについては NFSS2 のインターフェースを 用いて設定されるとよいのではないでしょうか.

2012-05-12 08:33 更新者: zrbabbler
コメント

既に他の方が答えていますが、 以下のような理由があって、 結局 Unicode フォントを使うのが無難ということになります。

  • そもそも Unicode 対応のエンジンである LuaTeX を使うなら Unicode フォントを使うのが当然、 という考えがある。
  • それに与しないとしても、 fontspec を読み込むということは Unicode フォントを使うということであるので、 そこで従来の OT1 や T1 といったエンコーディング (文字コード)のフォントを使うのは難がある。
    • 異なるエンコーディングを混ぜて使おうとするなら、 当然、 LaTeX のフォントエンコーディングの扱いに関する知識を要する。 もし現状でそれに自信がないなら、 「全部 Unicode フォントに統一する」 という策を採る方が簡単である。
    • そもそもそういう使用はあまり深く検討されていないので 不具合が起こる可能性が高い。 報告の件の a の指定は、恐らく原理的には正しいが、 xunicode の不具合のためにエラーになっているようだ。

そして、(OT1 や T1 エンコーディングでなく)Unicode のフォントを使うと決めたなら、(fontenc はもちろん) palatino パッケージも使えません。 何故なら、これは Type1 版の Palatino フォントを使うためのものであり、 一般に Type1 フォントは Unicode ではないからです。 (OpenType/TrueType フォントはその大部分が Unicode である。) 代わりに、「Palatino 系の OpenType/TrueType フォント」 を用意して、それを fontspec の機能を用いて指定することになります。 (具体的な記述は北川さん(h7k)のコメントにある通りです。)

2012-05-12 08:41 更新者: zrbabbler
コメント

ちなみに、 同じ現象が起こる最小動作例。 lualatex でも xelatex でもエラーとなります。 少なくとも LuaTeX-ja は無関係です。

\documentclass[a4paper]{article}
\usepackage{fontspec}
\begin{document}
\usefont{T1}{ptm}{m}{n}Mr.~X
\end{document}

2012-05-12 15:29 更新者: None
コメント

皆さん、アドバイスありがとうございました。

相談する場所を間違えていました。フォーラムに移動します。

2012-05-14 12:10 更新者: kmaeda
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2012-05-14 12:10 に更新されました
コメント

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする