Acabei de instalar a versão completa do MacTex 2014 no meu MacBookpro rodando OSX 10.8.5 e estou surpreso com o resultado deste documento mínimo compilado com 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}
Parece-me que o espaçamento está errado (o "l" e a palavra seguinte estão muito próximos), ou é como deveria ser no Minion Pro? Existe uma opção que esqueci?
Responder1
Esse problema afeta a maioria das fontes da Adobe (Adobe, você está ouvindo?). Eu não uso xetex
o suficiente para saber o que pode ser feito sobre isso xetex
, mas luatex
você pode escrever um arquivo de recurso para ajustar o kerning sem editar a fonte em si. É muito mais fácil do que parece. Por exemplo,
\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}
Você apenas precisa continuar adicionando linhas pos \quoteright \e 10;
até listar qualquer coisa que possa vir depois do apóstrofo. Você pode brincar com o valor até tê-lo tão tight ou loose quanto desejar: 1, 10, 20…
Se você estiver escrevendo um documento bilíngue e o outro idioma exigir um kerning mais rígido (de improviso, não conheço nenhum), você poderá especificar a qual idioma os recursos definidos devem ser aplicados. Isso dá mais trabalho, mas a técnica é explicada emtex.stackexchange.com/a/142664/7883.
ATUALIZAÇÃO: Desde a versão 2.7 do luaotfload
, os arquivos de recursos não são mais suportados. Vertex.stackexchange.com/a/312160/7883para uma nova maneira de resolver este problema.
Responder2
Atualmente estou desabilitando o kerning entre um apóstrofo e uma letra seguinte usando o mecanismo interchartoken do XeTeX:
\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@}
Estou inserindo cola em vez de kern, para evitar desabilitar a hifenização. A penalidade existe para inibir uma quebra de linha na posição da cola.