¿Cómo creo una fuente que use acentos automáticamente y elimine las letras duplicadas?

Estoy trabajando en una fuente especial que tiene que seguir algunas reglas:

  1. Se deben eliminar dos letras duplicadas consecutivas. Por ejemplo , kk se convertiría en k .
  2. Algunas letras son "acentos", por lo que, por ejemplo, cuando escribe ae (2 caracteres), automáticamente se convierte en æ (1 carácter).

No hay limitaciones reales sobre lo que puedo usar para hacer las fuentes. ¿Es posible crear simplemente un archivo TTF u OTF con estas reglas? Si es así, ¿cómo hago esto? Si no es posible, ¿hay alguna solución que pueda hacer con los archivos de fuentes?

Mantenga sus respuestas en un inglés simple ya que soy nuevo en este tipo de cosas.

Lo que estás describiendo son ligaduras . Suelen ser un elemento básico de las fuentes Open Type. Yo, personalmente, no sé qué tan bien las fuentes de tipo verdadero admiten ligaduras.
@Scott: no se preocupe, cualquier fuente moderna que tenga la extensión "TTF" es, de hecho, una fuente OpenType. El antiguo formato TrueType simple en sí admite ligaduras (lo más sencillo posible), pero el uso de la función OpenType adecuada no debería generar ningún problema en el software del siglo XXI. El OP debe consultar las especificaciones OTF de Adobe y Microsoft para conocer las posibilidades (Adobe describe la sintaxis) y en el editor de fuentes en uso para saber cómo agregarlo a la fuente.
Cuando el usuario preguntó específicamente sobre ".ttf y .otf", consideré que no se referían al formato Truetype dentro del contenedor OpenType, sino a una fuente real con formato .ttf. OpenType puede admitir el formato TrueType o Type1 internamente, sí. Pero en ambos casos, el sufijo es .otf, no .ttf.
@Scott: Lo que dijo usr2564301 se aplica a las fuentes reales con el archivo canónico que termina .ttf. Supongo que cualquiera que realmente quiera hablar sobre TrueType simple solo diría esto y no usaría una extensión de archivo.
Si vamos a la Especificación OpenType, podemos ver que una fuente OpenType con TrueType Outlines puede tener cualquiera de las dos extensiones. Al final, lo que realmente importa es la presencia de ciertas tablas para declarar una fuente OpenType.

Respuestas (1)

No sé qué software estás usando, pero te recomiendo que leas el manual de FontLab Studio 5 . Le daré una respuesta rápida sobre cómo hacer las dos tareas que menciona en FontLab Studio 5.

Para este ejemplo, dibujé 3 glifos simples (f, i, n) y una ligadura fi.

Ventana de fuente FLS5

Estos son los glifos en el panel de vista previa :

Glifos de demostración

Ahora, si hace clic en el botón Panel OpenType :

ingrese la descripción de la imagen aquí

aparece el siguiente panel, donde puede ingresar sus características de diseño OpenType :

ingrese la descripción de la imagen aquí

El lado izquierdo es la lista de características, la parte superior derecha es donde define las características y la parte inferior derecha es donde van los datos de definición global. En los globales, agreguemos las siguientes dos líneas:

languagesystem DFLT dflt;
languagesystem latn dflt;

Citando este sitio (¡que les recomiendo que visiten!):

[La primera línea] registrará todas las reglas para un sistema alternativo en caso de que un motor de diseño OpenType se confunda sobre a qué idioma o secuencia de comandos se aplican sus características. Además, antes de registrar un script con un idioma específico, debe registrarlo con el idioma predeterminado por la misma razón.

Ahora, al hacer clic en el botón [+] en la parte inferior izquierda del panel, agrega una función sin nombre:

Nueva característica en el Panel OT

Ignorando por el momento los idiomas, las secuencias de comandos y, en aras de la claridad, reescribamos la función de esta manera:

feature liga {
  sub f i by fi;
  sub n n by n;
} liga;

Ambas líneas se explican por sí mismas y le indican al motor de diseño OT que sustituya un par de glifos por el que sigue a by . Por supuesto, la eliminación de caracteres repetidos es una tontería, pero supongo que es para demostración y, por lo tanto, se incluye en la característica liga . Además, debe saber sobre búsquedas y puede usar clases . Si abre el panel Vista previa y activa la función de liga, obtiene:

Vista previa de la ligadura

Por cierto, toda esa escritura se puede ingresar como un archivo de características separado.

Eso es.

Descargo de responsabilidad: soy nuevo en esto, y espero que mis queridos amigos tipógrafos profesionales no me maten si omito algo o escribo algo mal. En cambio, los invito a contribuir. :)

Solo es curioso, ya que OP no nos dijo específicamente: reemplazar dos personajes con uno funciona, pero "fallará", en cierto sentido, para tres o más: nnnse convertirá en nn. ¿Es posible reemplazar cualquier número de ns con uno solo, sin recurrir a una larga lista de sub nnnnnn' with n?
Edité la pregunta para eliminar la ambigüedad de lo que quise decir y esta respuesta coincide con lo que necesito. ¡Gracias!
@ usr2564301 que yo sepa, no es posible; Creo que no hay soporte para ningún tipo de iteraciones o bucles arbitrarios.