Tener problemas para habilitar ligaduras con la fuente Mercury Text OpenType de HF&J

Tener problemas para habilitar ligaduras con la fuente Mercury Text OpenType de HF&J

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}

mwe

La lista de ligaduras en el sitio de HF&J enumera fi:

lista de ligaduras

Y charmap en Windows muestra ese carácter en esa fuente:

mapa de caracteres

Actualizar:

Salida de otfinfo:

otfininfo

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:

ingrese la descripción de la imagen aquí

Respuesta1

Con la amable ayuda de @cfr, has establecido que:

  • La fuente contiene glifos de ligadura.

  • fontspecNo 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 ligausando FontForge

Nota:Consulte primero los términos de licencia de su fuente, etc.

  1. Abra el archivo de fuente en fontforge.
  2. Abra el Element->Font Infocuadro de diálogo del menú: Cuadro de diálogo de información de fuente Las entradas enumeradas corresponden a varias "características" de OpenType, la que desea se denomina "ligaduras estándar" en la lista y se denomina liga característica en la especificación y la salida otfinfoy ya sabe que falta en su fuente, por lo que necesitamos crear primero la tabla y luego rellénela con los datos que faltan.
  3. Presione el botón "Agregar búsqueda" y seleccione el tipo como "ligaduras estándar".
  4. 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.
  5. Ahora deberías ver el diálogo de edición donde configuras las asignaciones entre secuencias de caracteres y glifos de ligadura: Editor de subtablas de ligaduras 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.
  6. Cuando termine, presione Okdos veces para volver a la ventana principal.
  7. Guarde el archivo de fuente actualizado con File->Generate Fonts, asegurándose de que el tipo dropbox esté configurado en OpenType(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 con fontspec.
  8. Ya terminaste.

Agregar tablas Opentype ligausando un archivo de funciones OpenType (solo LuaTeX)

El fontspecmanual 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 FeatureFileopción para indicarle fontspecque 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 fontspecno termina con un error si hay problemas con la FeatureFileopción. Escribir mal una ruta, errores de sintaxis en el archivo o usar un motor distinto LuaTeXhará que ignore silenciosamente el archivo de características.

información relacionada