私は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
この問題は、ほとんどの Adobe フォントに影響します (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@}
ハイフネーションが無効にならないように、カーニングではなくグルーを挿入しています。ペナルティは、グルーの位置で改行しないようにするためのものです。