Ticket #28355

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

Open Date: 2012-05-11 14:32 Last Update: 2012-05-14 12:10

Reporter:
(del#73928)
Owner:
(None)
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

#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

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

Ticket History (3/8 Histories)

2012-05-11 14:32 Updated by: (del#73928)
  • New Ticket "luatexja-fontspec で望みどおりの欧文フォントが出せないことがある" created
2012-05-11 14:39 Updated by: (del#73928)
  • Details Updated
Comment

誤: 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 Updated by: h7k
Comment

(私自身 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 Updated by: kmaeda
Comment

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

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

2012-05-12 08:33 Updated by: zrbabbler
Comment

既に他の方が答えていますが、 以下のような理由があって、 結局 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 Updated by: zrbabbler
Comment

ちなみに、 同じ現象が起こる最小動作例。 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 Updated by: None
Comment

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

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

2012-05-14 12:10 Updated by: kmaeda
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2012-05-14 12:10

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login