Acabo de instalar la versión completa de MacTex 2014 en mi MacBookpro con OSX 10.8.5 y estoy sorprendido por el resultado de este documento mínimo compilado con 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}
Me parece que el espaciado es incorrecto (la "l" y la siguiente palabra están demasiado cerca), ¿o es así como se supone que debe verse con Minion Pro? ¿Hay alguna opción que haya pasado por alto?
Respuesta1
Este problema afecta a la mayoría de las fuentes de Adobe (Adobe, ¿estás escuchando?). No uso xetex
lo suficiente para saber qué se puede hacer al respecto xetex
, pero luatex
puedes escribir un archivo de características para ajustar el interletraje sin editar la fuente en sí. Es mucho más fácil de lo que parece. P.ej,
\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}
Solo tienes que seguir agregando líneas pos \quoteright \e 10;
hasta que hayas enumerado todo lo que pueda venir después del apóstrofe. Puedes jugar con el valor hasta que lo tengas tan ajustado o tan suelto como quieras: 1, 10, 20…
Si está escribiendo un documento bilingüe y el otro idioma requiere un kerning más estricto (por cierto, no conozco ninguno), puede especificar a qué idioma se deben aplicar las características que defina. Eso es más trabajo, pero la técnica se explica entex.stackexchange.com/a/142664/7883.
ACTUALIZACIÓN: Desde la versión 2.7 de luaotfload
, los archivos de funciones ya no son compatibles. Vertex.stackexchange.com/a/312160/7883buscando una nueva forma de resolver este problema.
Respuesta2
Actualmente estoy deshabilitando el interletraje entre un apóstrofe y una letra siguiente mediante el mecanismo de interchartoken de 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@}
Estoy insertando pegamento en lugar de un kern, para evitar desactivar la separación de palabras. La penalización está ahí para inhibir un salto de línea en la posición del pegamento.