xelatex と Minion Pro を使用したフランス語の間隔

xelatex と Minion Pro を使用したフランス語の間隔

私はOSX 10.8.5を実行しているMacBookproにMacTex 2014のフルバージョンをインストールしたところ、xelatexでコンパイルされたこの最小限のドキュメントの出力に驚きました。

\documentclass[]{article}
\usepackage[frenchb]{babel}
\usepackage{fontspec}
\usepackage{xltxtra,xunicode}
\setmainfont{Minion Pro}
\setromanfont[Mapping=tex-text]{Minion Pro}
\setsansfont{Myriad Pro}
\setmonofont{Source Code Pro}
\frenchspacing
\begin{document}
l'étranger, l'équipe
\end{document}

ここに画像の説明を入力してください

スペースが間違っているように思えます (「l」とそれに続く単語が近すぎます)。それとも、これは Minion Pro で表示されるはずのスペースなのでしょうか? 見落としているオプションがあるのでしょうか?

答え1

この問題は、ほとんどの Adob​​e フォントに影響します (Adobe さん、聞いていますか?)。xetexでこの問題について何ができるのかは、 を十分に使用していないためわかりませんがxetex、 では、luatexフォント自体を編集せずにカーニングを調整する機能ファイルを作成できます。思ったよりずっと簡単です。例:

\documentclass[12pt]{article}
\usepackage[french]{babel}
\usepackage{filecontents,fontspec,microtype}
\begin{filecontents*}{minion.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;

feature kern {
  pos \quoteright \a 10;
  pos \quoteright \eacute 10;
  pos \quoteright \o 10;
} kern;
\end{filecontents*}
\setmainfont{Minion Pro}[
  FeatureFile={minion.fea}]
\frenchspacing
\begin{document}
l’étranger

d’accord

d’ores et déjà
\end{document}

サンプルコードの出力

アポストロフィの後に続くものをすべてリストするまで、行を追加し続ける必要がありますpos \quoteright \e 10;。 1、10、20 など、好きなだけタイトまたはルーズになるまで値を調整できます。

バイリンガル文書を書いていて、もう一方の言語でよりタイトなカーニングが必要な場合(すぐには思いつきませんが)、定義した機能をどの言語に適用するかを指定できます。これは手間がかかりますが、そのテクニックは以下で説明されています。tex.stackexchange.com/a/142664/7883

更新: のバージョン 2.7 以降luaotfload、機能ファイルはサポートされなくなりました。tex.stackexchange.com/a/312160/7883この問題を解決する新しい方法を探しています。

答え2

現在、XeTeX の interchartoken メカニズムを使用して、アポストロフィとそれに続く文字間のカーニングを無効にしています。

\XeTeXinterchartokenstate=1
\newXeTeXintercharclass\ApostropheClass
\XeTeXcharclass`'\ApostropheClass
\newXeTeXintercharclass\AfterApostropheClass
\XeTeXcharclass`a\AfterApostropheClass
\XeTeXcharclass`A\AfterApostropheClass
\XeTeXcharclass`à\AfterApostropheClass
\XeTeXcharclass`â\AfterApostropheClass
\XeTeXcharclass`e\AfterApostropheClass
\XeTeXcharclass`E\AfterApostropheClass
\XeTeXcharclass`é\AfterApostropheClass
\XeTeXcharclass`è\AfterApostropheClass
\XeTeXcharclass`ê\AfterApostropheClass
\XeTeXcharclass`i\AfterApostropheClass
\XeTeXcharclass`o\AfterApostropheClass
\XeTeXcharclass`ò\AfterApostropheClass
\XeTeXcharclass`U\AfterApostropheClass
\XeTeXcharclass`u\AfterApostropheClass
\XeTeXcharclass`ù\AfterApostropheClass
\XeTeXcharclass`y\AfterApostropheClass
\XeTeXinterchartoks\ApostropheClass\AfterApostropheClass={\penalty\@M\hskip\z@}

ハイフネーションが無効にならないように、カーニングではなくグルーを挿入しています。ペナルティは、グルーの位置で改行しないようにするためのものです。

関連情報