Creando formularios finales con FontForge

Estoy trabajando en una fuente cursiva manuscrita (conjunto de caracteres latinos) usando FontForge, y deseo tener variantes de glifos para algunos caracteres ( s, p, ...) al final de una palabra, para que no haya una línea de unión falsa. para el siguiente personaje en esta situación.

Soy muy nuevo en esto, y debo decir que estoy atónito por la aparente complejidad de hacer lo que quiero. He encontrado algunos tutoriales que parecen proporcionar algunas sugerencias ( ejemplo ), pero no parece tan sencillo, y principalmente indica cómo realizar la sustitución según los caracteres anteriores/siguientes, pero no según la posición del carácter dentro de la palabra. .

Así que tengo algunas preguntas:

  1. Parece que las características que necesito requieren generar una fuente OpenType, no TrueType. ¿Tengo razón?

  2. Parece que esto puede no ser compatible con todas las aplicaciones, en realidad. O tal vez lo sea, pero para árabe y no para latín, no está del todo claro. ¿Puedo suponer que las aplicaciones más comunes (navegadores web en la mayoría de las plataformas, la mayoría de las aplicaciones de diseño gráfico, procesadores de texto básicos, etc.) realmente usarán mis variantes de glifos de manera adecuada, y no solo el software avanzado de autoedición como InDesign?

  3. ¿Cómo se hace eso con FontForge? Ya creé mis variantes de glifos como glifos sin mapear (con valor Unicode −1) y los nombré algo como s.fina, p.fina, etc... ¿Qué debo hacer a continuación para indicar que deben usarse al final de una palabra, en lugar de los glifos normales?

Estar al final de una palabra es no estar seguido de una letra

Respuestas (1)

Parece que las características que necesito requieren generar una fuente OpenType, no TrueType. ¿Tengo razón?

Si y no. La principal diferencia entre las extensiones de archivo otfy ttf(como se usa normalmente) no es la compatibilidad con OpenType, sino cosas como el grado de las curvas de Bézier, la información indirecta, etc. Ambos formatos pueden admitir OpenType.

Parece que esto puede no ser compatible con todas las aplicaciones, en realidad. O tal vez lo sea, pero para árabe y no para latín, no está del todo claro. ¿Puedo suponer que las aplicaciones más comunes (navegadores web en la mayoría de las plataformas, la mayoría de las aplicaciones de diseño gráfico, procesadores de texto básicos, etc.) realmente usarán mis variantes de glifos de manera adecuada, y no solo el software avanzado de autoedición como InDesign?

Si usa una función que está activada de forma predeterminada (como calt), debería funcionar en la mayoría de las aplicaciones en las que razonablemente usaría una fuente cursiva (es decir, software para diseño, composición tipográfica y similares, así como navegadores).

¿Cómo se hace eso con FontForge? Ya creé mis variantes de glifos como glifos sin mapear (con valor Unicode −1) y los nombré algo como s.fina, p.fina, etc... ¿Qué debo hacer a continuación para indicar que deben usarse al final de una palabra, en lugar de los glifos normales?

Solo te mostraré la forma más fácil de hacer esto con capturas de pantalla de la interfaz. En este caso, tengo dos formas de la letra  s, una con swash ( s) y otra sin ( s.noswash). El primero se utilizará al final de las palabras, el segundo en cualquier otro lugar. Para lograr esto, utilizo la forma swashed como predeterminada y uso sustituciones contextuales (como en el tutorial vinculado) para reemplazarlo con la forma sin swash cada vez que sigue una letra.

Mis búsquedas se ven así:

captura de pantalla de búsquedas


La primera búsqueda es la función de encadenamiento contextual que detecta cuándo hacer algo (que luego sucede al aplicar la segunda función). Sus metadatos se ven de la siguiente manera. Le dice a OpenType a qué tipo de función está asociado ( calt- Alternativas contextuales), así como el tipo (Sustitución de encadenamiento contextual):

metadatos de la búsqueda "swashless"

La búsqueda real se ve así:

búsqueda "swashless"

Esto indica a la fuente que si un carácter de clase  s(que solo contiene la letra  s, pero puede contener todas las letras para ser deswashed en un escenario diferente) es seguido por un carácter de la clase letter(que contiene todas las letras, ver más abajo), el s to s.noswashse le aplicará la sustitución .

la clase de letras


Finalmente, los metadatos de la segunda búsqueda se muestran a continuación. Tenga en cuenta que es una sustitución única y no está asociada con ninguna característica, ya que solo existe para ser llamada por otra búsqueda:

metadatos de la búsqueda "s to s.noswash"

Finalmente, la búsqueda real se muestra a continuación. Simplemente reemplaza el carácter  scon el carácter s.noswash. Si quisiera lavar más letras, podría agregar sustituciones adicionales aquí.

búsqueda “s a s.noswash”


Tenga en cuenta que este enfoque tiene una desventaja: si una aplicación no es compatible con OpenType, la variante swashed se muestra de forma predeterminada. Si quisiera evitar esto, tendría que hacer que la versión no modificada sea la predeterminada y agregar otra búsqueda que la reemplace incondicionalmente con la versión modificada (que luego se puede eliminar condicionalmente).

Mi salvador... Muchas gracias, esto es exactamente lo que estaba tratando de hacer. Sigo pensando que no es sencillo, pero al menos [casi] entendí el proceso y puedo hacerlo. Para información, tuve algunos problemas con la definición de "clases por delante", debido a este error . Con suerte, Google me ayudó. Gracias de nuevo.