Estoy seguro de queesta fuenteAdmite ligaduras, pero no consigo que aparezcan.
Ejemplo con Roboto para comparar:
\documentclass[
11pt,
a4paper
]{scrartcl}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\begin{document}
\setmainfont[
ExternalLocation,
Extension=.ttf,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
Ligatures=Common
]{Roboto}
roboto fight flight has ligatures
\setmainfont[
ExternalLocation,
Extension=.otf,
Ligatures=Common
]{Mercury-TextG4Roman}
mercury fight flight no ligatures
\end{document}
La lista de ligaduras en el sitio de HF&J enumera fi
:
Y charmap en Windows muestra ese carácter en esa fuente:
Actualizar:
Salida de otfinfo
:
Actualización 2:
Cambiado a LuaLatex, agregado un archivo de características:
\documentclass[
11pt,
a4paper
]{scrartcl}
\usepackage{filecontents}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={Common,Rare,Historic}}
\begin{filecontents*}{mercury.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
# Ligatures
feature liga {
sub \f \i by \fi;
sub \f \l by \fl;
} liga;
\end{filecontents*}
\begin{document}
\setmainfont[
ExternalLocation,
Extension=.ttf,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
Ligatures=Common
]{Roboto}
roboto fight flight has ligatures
\setmainfont[
FeatureFile=mercury.fea,
ExternalLocation,
Extension=.otf,
Ligatures=Common
]{Mercury-TextG4Roman}
mercury fight flight no ligatures
\end{document}
Y las ligaduras muestran:
Respuesta1
Con la amable ayuda de @cfr, has establecido que:
La fuente contiene glifos de ligadura.
fontspec
No puedo hacer uso de la información de ligadura de AAT incluso si está disponible.La fuente omite los datos de funciones OpenType necesarios para la compatibilidad con ligaduras automáticas.
¿Entonces que puedes hacer? Puede agregar los datos de mapeo que faltan a la fuente o crear un archivo de características OpenType externo (compatible solo con LuaTeX) y decirle a fontspec que lo use. Ninguno de los dos es difícil.
Agregar tablas Opentype liga
usando FontForge
Nota:Consulte primero los términos de licencia de su fuente, etc.
- Abra el archivo de fuente en fontforge.
- Abra el
Element->Font Info
cuadro de diálogo del menú: Las entradas enumeradas corresponden a varias "características" de OpenType, la que desea se denomina "ligaduras estándar" en la lista y se denominaliga
característica en la especificación y la salidaotfinfo
y ya sabe que falta en su fuente, por lo que necesitamos crear primero la tabla y luego rellénela con los datos que faltan. - Presione el botón "Agregar búsqueda" y seleccione el tipo como "ligaduras estándar".
- Presione el botón "Agregar subtabla" para crear la tabla de mapeo real. haga doble clic en la nueva entrada de la subtabla para abrir su vista de editor.
- Ahora deberías ver el diálogo de edición donde configuras las asignaciones entre secuencias de caracteres y glifos de ligadura: Utilice el botón "rellenar" para que FontForge deduzca las ligaduras admitidas por la fuente y cree entradas automáticamente. Dependiendo de la fuente, es posible que también necesites editar/agregar entradas manualmente. La columna de la izquierda contiene el nombre del glifo de la ligadura, mientras que la columna de la derecha contiene los caracteres individuales, separados por espacios.
- Cuando termine, presione
Ok
dos veces para volver a la ventana principal. - Guarde el archivo de fuente actualizado con
File->Generate Fonts
, asegurándose de que el tipo dropbox esté configurado enOpenType(CFF)
. Tenga en cuenta que la fuente generada lleva el mismo nombre de fuente interno que la original (aunque es fácil de cambiar), por lo que debe sobrescribir el original (recuerde hacer una copia de seguridad) para evitar cargar la versión anterior, o debe especificar la ruta del archivo de fuente. explícitamente al cargarlo confontspec
. - Ya terminaste.
Agregar tablas Opentype liga
usando un archivo de funciones OpenType (solo LuaTeX)
El fontspec
manual tiene unsecciónen archivos de características (con un enlace alespecificación) e incluye un ejemplo que muestra precisamente lo que busca, por ejemplo, cómo definir asignaciones de ligaduras. Por lo tanto, solo necesita crear el archivo de características y luego utilizar la FeatureFile
opción para indicarle fontspec
que lo cargue:
Archivo:otra_liga.tex
\documentclass{article}
\usepackage{filecontents}
\usepackage{fontspec}
% Alternatively, place this in a `mercury.fea` file in the same directory
\begin{filecontents*}{mercury.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
# Ligatures
feature liga {
sub \f \i by \fi;
sub \f \l by \fl;
} liga;
\end{filecontents*}
\setmainfont[
FeatureFile=mercury.fea,
%Ligatures={Common} % on by default
]{Mercury-TextG4Roman}
\begin{document}
fi \symbol{"FB01}
fl \symbol{"FB02}
\end{document}
Este ejemplo supone que los glifos de ligadura existen en su ubicación estándar Unicode y los incluye directamente por número de glifo para fines de comparación. YMMV.
Editar:Tenga en cuenta que esto fontspec
no termina con un error si hay problemas con la FeatureFile
opción. Escribir mal una ruta, errores de sintaxis en el archivo o usar un motor distinto LuaTeX
hará que ignore silenciosamente el archivo de características.