¿Cómo configurar manualmente la configuración de codificación de una fuente?

¿Cómo configurar manualmente la configuración de codificación de una fuente?

Tengo una fuente con una tabla de fuentes que contiene ligaduras, pero también radicales matemáticos, operadores y, por ejemplo, un signo integral. (Es una fuente diferente a la que muestro en esta pregunta, que no contiene el signo integral).

En mi caso, algunas combinaciones de caracteres no activan el reemplazo de glifos, por ejemplo, las ligaduras "ffi". Esto sucede tanto para pdflatex(think otftotfm) como para xelatex( fontspec) soluciones para la implementación de fuentes.

Se muestra un resultado compilado que contiene la fuente comercial que pretendo utilizar (tanto para fontspeclas soluciones como para otftotfm)

http://i.imgur.com/I4XfJbM.png?1

XeLaTeX ( fontspec)

Después de ejecutar la solución descrita enLas ligaduras para fi, fl, ffl no funcionan para Times New Roman (XeLaTeX), intentar activar las ligaduras todavía no funciona. Egreg mencionado encharlarque la solución generalmente produce el resultado correcto para XeTeXlos documentos, siempre que los glifos estén en la posición correcta para la tabla de fuentes. Resulta que están en la tabla de fuentes (captura de pantalla tomada de Adobe Illustrator)

ingrese la descripción de la imagen aquí

Esto sugiere que no están en la posición correcta. Por lo tanto, sería deseable tener una opción para establecer manualmente el vínculo entre escribir, por ejemplo, "ffi" y vincularlo a la ligadura correcta en la fuente.

PdfLaTeX ( otftotfm)

Sólo para estar seguro, utilicé otftotfmel siguiente comando:

otftotfm -a -e ec  -fkern -fliga --verbose --vendor <mapfilename> <somefont>.otf T1--<fontname>--<fontweight>

El comando produce errores con respecto a las ligaduras:

otftotfm: warning: 'liga' feature ignored, not supported by font

Esto también se confirma después de construir el .plarchivo:

tftopl T1--<fontname>--<fontweight>.tfm > T1--<fontname>--<fontweight>.pl

De hecho, la ligadura no estaba allí. Del T1--<fontname>--<fontweight>.plexpediente se extrae lo siguiente:

(LABEL C f)
   (KRN O 41 R 0.08)
   (KRN O 47 R 0.1)
   (KRN O 51 R 0.07)
   (KRN O 52 R 0.08)
   (KRN O 54 R -0.05)
   (KRN O 56 R -0.05)
   (KRN O 77 R 0.12)
   (KRN O 135 R 0.07)
   (KRN C a R -0.01)
   (KRN C b R 0.1)
   (KRN C c R -0.01)
   (KRN C e R -0.01)
   (KRN C g R -0.01)
   (KRN C h R 0.1)
   (KRN C i R 0.03)
   (KRN C j R 0.03)
   (KRN C k R 0.1)
   (KRN C l R 0.1)
   (KRN C o R -0.01)
   (KRN C t R 0.01)
   (KRN C v R 0.01)
   (KRN C w R 0.01)
   (KRN C y R 0.01)
   (KRN O 175 R 0.07)
   (KRN O 15 R -0.05)
   (KRN O 22 R -0.05)
   (KRN O 21 R 0.1)
   (KRN O 346 R -0.01)
   (KRN O 370 R -0.01)
   (KRN O 367 R -0.01)
   (KRN O 344 R -0.01)
   (KRN O 345 R -0.01)
   (KRN O 351 R -0.01)
   (KRN O 352 R -0.01)
   (KRN O 364 R -0.01)
   (KRN O 366 R -0.01)
   (STOP)

Lo único que se me ocurre es alterar el .plarchivo legible por humanos (del cual lo anterior es un extracto) y construir todo manualmente. Pero quizás (¡¿con suerte?!) LaTeX tenga instalaciones para lidiar con este tipo de cosas.

De todos modos, sería bueno asignararbitrario(pero específicos) glifos de la tabla de fuentes para comandos específicos, de forma muy general. Piense \intcuál activaría el signo integral de, por ejemplo, (números inventados), octal 501 o unicode +00a6, o combinaciones de letras, de modo que "ffi" se convierta en (enlaces a) -->"ligadura ffi". Ni siquiera me importaría la necesidad de declarar las 256 ranuras para un comando o combinación de letras en particular en la fuente, siempre que sepacómopara hacerlo.

Considere el siguiente ejemplo con otra fuente (no comercial), que también contiene ligaduras:http://exljbris.com/tallys.html. Para los usuarios de Windows entre nosotros, pueden copiar y pegar esto en un archivo por lotes si lo desean. He desactivado intencionalmente las funciones -fkerny -fliga, ya que esa es exactamente la parte relevante: mi fuente no asigna los glifos correctamente.

otftotfm -a -e ec  --verbose --vendor tallys Tallys_15.otf T1--Tallys15--Regular
pause

Aquí también está el t1tallys.fdarchivo:

\ProvidesFile{t1tallys.fd}
   [2015/04/30 scalable font definitions for T1/Tallys.]

\DeclareFontFamily{T1}{Tallys}{}
\DeclareFontShape{T1}{Tallys}{m}{n}{<-> T1--Tallys15--Regular}{}
\DeclareFontShape{T1}{Tallys}{m}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{m}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{m}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{b}{n}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{l}{n}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{bx}{n}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{it}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{sc}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{sl}{ssub * Tallys/m/n}{}

\endinput

y un MWE ( XeLaTeXaún producirá el resultado correcto en este caso, con las ligaduras... Si desea adoptar el XeLaTeXenfoque, simplemente asigne cualquier otro personaje. Aún así, me gustaría saber cómo hacer esto en XeLaTeX).

\documentclass{article}

\usepackage{ifxetex}
\ifxetex
    \usepackage{fontspec}
    \defaultfontfeatures{Ligatures=TeX}
    \setmainfont{Tallys}
    \usepackage{microtype}
\else
    \RequirePackage[T1]{fontenc}
    \pdfmapfile{tallys.map}
    \RequirePackage{microtype}
    \renewcommand\rmdefault{Tallys}
    \renewcommand\sfdefault{Tallys}
\fi

\begin{document}
\fontsize{100pt}{0pt}\selectfont ffi fi fl ffl
\end{document}

La idea es aún poder asignar la combinación de caracteres ffia la ligadura. También sería bueno establecer de alguna manera los caracteres correctos para los comandos matemáticos correctos (entiendo que esto es más complicado, pero comprendan, realmente estoy buscando una solución general que me permita mapear completamente la fuente y permitir que TeX entender cuándo usar qué personaje). La solución ideal describiría el proceso completo requerido para hacerlo. También permitiría la posibilidad de mezclar diferentes fuentes (lo que no sería demasiado complicado en comparación con la solución de fuente única; es solo para generalizar la respuesta).

información relacionada