Cómo creé una fuente con mi letra manuscrita
(kokorobot.ca)- Como el texto manuscrito del cómic hakum variaba en tamaño y legibilidad de una página a otra, decidió crear su propia letra como una fuente TTF en lugar de usar una fuente existente
- El segundo intento, escaneando texto escrito en papel, se veía más natural y orgánico que la escritura digital hecha con una tableta gráfica
- El alcance se limitó a A-Z, a-z, números del 0 al 9 y signos de puntuación básicos; funciones ampliadas como negrita, cursiva y ligaduras quedaron fuera del objetivo
- El flujo consistió en limpiar las imágenes escaneadas en Gimp, separarlas como PNG y luego ajustar contornos de glifos, side bearings y kerning en FontForge
- En los procesos de Autotrace y exportación pueden aparecer problemas de validación como missing points at extrema y self intersecting, por lo que una fuente manuscrita requiere bastante posprocesamiento
Por qué convertí mi letra manuscrita en una fuente
- Antes, el texto del cómic hakum se escribía directamente en digital con una tableta gráfica
- El resultado estaba bien, pero incluso dentro de una misma página el tamaño de las letras a menudo aumentaba o disminuía, lo que a veces afectaba la legibilidad
- Como no quería usar una fuente existente, decidió crear una fuente basada en su propia letra manuscrita
- El objetivo era una fuente TTF para publicar en la web, incluyendo solo un conjunto limitado de caracteres
- No se crearon versiones en negrita ni cursiva
- Era la primera vez creando una fuente y usando FontForge, así que pueden existir métodos mejores
Dos intentos y terminología básica de tipografía
- La primera fuente se creó a partir de letra manuscrita digital hecha con una tableta gráfica
- La segunda fuente se creó con imágenes escaneadas de letras escritas en papel; como la escritura sobre papel era menos precisa, se veía más orgánica y natural
- Al crear la fuente, aprendió términos de la estructura tipográfica; conocer la función de cada elemento ayuda a tomar mejores decisiones de diseño y a crear una fuente más funcional
- Ascender: parte de una minúscula que sube por encima de la x-height
- Baseline: línea base sobre la que se apoyan la mayoría de las letras y por debajo de la cual bajan los descenders
- Cap Height: línea que indica la altura de la mayoría de las mayúsculas
- Descender: parte que baja por debajo de la baseline, como en p y q
- X-Height: distancia entre la baseline y la mean line en las minúsculas
Imagen escaneada y limpieza en Gimp
- El objetivo de producción incluía mayúsculas A-Z, minúsculas a-z, números 0-9 y signos de puntuación básicos como coma, signo de exclamación y signo de interrogación
- Al principio, dibujó en un cuaderno líneas guía para baseline, cap height, x-height y descender con lápiz, y luego escribió las letras
- Al dibujar las letras entre líneas guía quedaban demasiado rígidas, así que después escribió varias veces la frase
"The quick brown dog jumps over the lazy fox"en mayúsculas y minúsculas- Esta frase contiene todos los caracteres necesarios de a-z
- Al escribir en forma de oración, no se pensaba demasiado en cada letra y salían mejores formas
- Al dibujar sobre una cuadrícula, se terminaba prestando atención solo a las restricciones
- Eligió la frase mejor escrita para crear la fuente y también aprovechó algunas letras dibujadas sobre la cuadrícula
- Por este método, después tuvo que ajustar digitalmente el cap-height, x-height y descender de cada carácter
- A las imágenes escaneadas de las letras se les aplicó
Color > Thresholden Gimp para eliminar los grises - Por las características del lápiz y el papel, y por no haber usado cuadrícula, corrigió defectos de las letras con la herramienta de lápiz de Gimp
- En Tool Options, desactivó todas las dynamics para obtener líneas limpias
- Las letras ya limpias se copiaron y reunieron en un nuevo documento de Gimp, con un tamaño suficiente para alojar la letra más grande y ancha: la M mayúscula
- En esta etapa se verificó que el grosor de los trazos no variara demasiado
- Todas las letras se exportaron individualmente como PNG a la carpeta del proyecto
Crear glifos en FontForge
- Eligió FontForge porque funciona en Linux y personas cercanas lo recomendaban; la experiencia de uso fue buena
- Al crear un proyecto nuevo se abre la Font View Window, donde todos los slots de glifos de la fuente aparecen en forma de tabla
- En
Element > Font Info, ingresó la información de la fuente y agregó el nombre de la fuente bajo PS Names - Para exportar como TTF, cambió el Em size a 1024 en General dentro de la misma ventana
- Por convención, el UPM de las fuentes TrueType usa potencias de 2 como 1024 o 2048
- Las fuentes OTF tienen requisitos distintos
- En los antiguos tipos móviles de metal, cada carácter entraba en su propio contenedor espacial para mantener una altura uniforme, y la altura de esa pieza tipográfica se llamaba “em”
- Al hacer doble clic en un glifo en Font View, se abre Character View
- Allí se dibuja o edita el glifo
- Se puede ver uno por uno mediante una interfaz con pestañas, o revisar palabras lado a lado usando un archivo de texto preparado
- En la lista de capas de la parte inferior izquierda, seleccionó la capa Back y luego importó el PNG de la letra correspondiente con
File > Import - Luego creó el contorno del glifo de una de estas dos formas
- Dibujando el contorno manualmente
- Seleccionando la capa Fore y generando un contorno automático con
Select > Autotrace
- Autotrace toma como referencia la imagen de fondo y crea un contorno con puntos de control y curvas Bézier, pero puede generar demasiados puntos o problemas de extrema faltantes
- Cuando se crea una forma cerrada, ese glifo también aparece en otras ventanas
Side bearings y vista previa
- Para cada glifo, ajustó el side bearing izquierdo y derecho para definir el ancho final del glifo
- Para centrar automáticamente todos los glifos, se usa
Metrics > Auto Width - Para colocar todos los glifos centrados dentro de su ancho, se usa
Metrics > Center In Width - Al corregir contornos, ayuda desactivar la capa de referencia
- Para empezar de nuevo con un glifo, seleccione el glifo deseado en Font Window y use
Edit > Clear - Para borrar solo la capa de referencia, use
Edit > Clear Background - En el campo de texto sobre el lienzo de trabajo de Character View, se puede ingresar una palabra o caracteres arbitrarios después de la letra actual para previsualizar cómo se ven las letras una junto a otra
- Este proceso debe repetirse para todos los glifos; en particular, si no se ajustan los side bearings del glifo Space, el espacio entre palabras queda demasiado grande
Configuración de kerning
- El kerning es el proceso de ajustar el espacio entre caracteres para que las letras se vean fáciles de leer
- En Font Window, vaya a
Element > Font Infoy, en la pestaña GPOS de Lookups, presione Add Lookup - En el menú desplegable Type, seleccione
Pair Position (Kerning) - En la columna Feature, presione la flecha junto a
New, seleccioneKern Horizontal Kerningy confirme - Seleccione el nuevo elemento GPOS, presione Add Subtable y confirme dejando el nombre predeterminado
- Las letras a las que se aplicará kerning deben seleccionarse arrastrando en ambas tablas
- Hay que seleccionar tanto mayúsculas como minúsculas
- Para seleccionar ambos conjuntos en una tabla, use Shift
- Al hacer clic en pairings, se muestra una versión ampliada del par de glifos en la parte inferior de la ventana
- Arrastre el segundo glifo para colocarlo más cerca o más lejos del primero, ajustando todas las combinaciones de glifos para que se vean bien
Pruebas y validación de exportación
- Para probar la fuente y el kerning dentro de FontForge, use
File > Print - El texto predeterminado no muestra todas las combinaciones posibles, así que se puede agregar texto propio
- kern_pairings.txt incluye todas las combinaciones de kerning y puede pegarse en la pantalla de prueba
-
Problemas que pueden aparecer durante la exportación
- Al exportar con
File > Generate Fonts, FontForge puede marcar algunos caracteres para revisión - Non-integral coordinates significa que uno o varios puntos del contorno del glifo tienen una posición con parte decimal, como 2.25
- Seleccione el glifo con problemas, vaya a
Element > Validation > Find Problems, marque"non-integral coordinates"y repita fix - En una fuente manuscrita que no depende demasiado de la precisión, mover esos puntos a coordenadas enteras muy cercanas puede no producir grandes cambios
- Missing points at extrema ocurre cuando los puntos de control de una curva empujan la curva hacia afuera de sus límites
- Hay que ajustar los puntos de control para que el punto más alto o extremo de la curva sea un punto amarillo
Element > Add Extremapuede ayudar, pero también puede distorsionar el glifo o crear más problemas de non-integral coordinates- Aunque este error estuviera en el log, la fuente pudo generarse, pero pueden aparecer distorsiones sutiles y molestas en la fuente
- Si la fuente manuscrita es irregular o se usó Autotrace, pueden aparecer problemas de extrema
- Self intersecting significa que el contorno del glifo se superpone consigo mismo
- Hay que revisar todas las líneas y eliminar las superposiciones
- Al exportar con
Elección de TTF e instalación
- Para el objetivo de uso, TTF (TrueType Font) era suficiente
- OTF no era necesario porque no se planeaba almacenar muchos glifos, no se querían versiones en negrita o cursiva como estilos separados y no se necesitaban ligaduras
- El contenido donde se usará la fuente se publicará en la web, y TTF es adecuado para ese propósito
- Para generar la fuente con todos los glifos de Font View, use
File > Generate Fonts - Seleccione TTF como formato de salida en el menú desplegable bajo el nombre de la fuente y confirme; la fuente se guardará en la carpeta del proyecto
- La fuente generada se puede mover a la ubicación de fuentes del sistema
- Material de referencia y ejemplos de uso
- FontForge documentation: documentación de FontForge
- My spellbook: cómo instalar fuentes en Linux
- kaizah, smile: ejemplos donde se usó la fuente creada
1 comentarios
Opiniones de Hacker News
Me gustó el resumen de FontForge, y hace tiempo yo también lo probé un poco.
Es algo tosco, pero tampoco sé si los competidores comerciales serán mucho mejores. Ni siquiera conozco sus nombres.
Y el sitio web está muy bueno. Es único y tiene una personalidad muy marcada.
Si tienes macOS, puedes probar por tu cuenta Glyphs(/Mini) o RoboFont, que tienen periodos de prueba suficientemente largos. Aun así, lo que más expectativas me genera son las herramientas de próxima generación, incluidas las basadas en web como fontra.xyz.
Todo el trabajo relacionado con MFEK que he visto hasta ahora se ve bastante genial.
https://mfek.org/
Muchas veces una sola frase como “quick brown fox” no alcanza.
100r.co también vale mucho la pena.
Devine y Rekka documentan su vida, sus viajes y sus proyectos mientras operan un estudio desde el velero Pino.
https://youtu.be/T3u7bGgVspM?si=dnkROEB15z77Pq7Z aparece alrededor del minuto 6.
Buen resumen de FontForge.
Como sugiere el artículo, para hacer una tipografía a partir de escritura a mano también hay opciones más fáciles y automatizadas. Luego se puede retocar la tipografía resultante.
https://www.calligraphr.com/en/ antes se llamaba MyScriptFont.
https://apps.microsoft.com/detail/microsoft-font-maker/9N920...
La tipografía que hizo se ve bastante parecida a una que hice yo.
https://imgur.com/a/g8bIoUY
No me metí demasiado en optimizaciones como el kerning, pero los 3 o 4 programas que probé eran todos tremendamente frustrantes, estaban rotos o eran difíciles de manejar. Puede que haya sido por cómo los usé, y sospecho que el software pago es mucho mejor. Es admirable que lo haya llevado hasta el final.
Me pregunto cuál es la forma más sencilla de combinar varias tipografías en una sola.
VS Code no admite configurar tipografías por lenguaje o por token. Por ejemplo, no se puede usar Comic Sans para los comentarios y otra tipografía para el resto, aunque sí se pueden configurar cosas como cursiva/negrita.
Me gustan las tipografías desde que empezaron a usarse de forma generalizada en los 80, cuando se puso de moda el Desktop Publishing.
Se podría decir que durante un tiempo se usaron en exceso, pero fue una de las primeras cosas que me hizo notar que el diseño importa. En fin, es una tipografía genial y el resumen también es excelente.
Me pregunto si realmente hay gente que haga tipografías con MetaFont/MetaPost.
Tampoco sé si FontForge tiene funciones de scripting. Nunca lo usé directamente, solo leí sobre él, pero sí leí los 5 volúmenes de “Computers and Typesetting” de Knuth.
https://thottingal.in/blog/2022/10/05/nupuram/ https://twitter.com/santhoshtr/status/1577596445917470722 https://smc.org.in/fonts/nupuram https://typoday.in/spk_papers/Santhosh_Thottingal_Typoday202...
#!/usr/bin/fontforge, hacerlechmod +xy ejecutarlo tal cual.Eso sí, personalmente solo lo he usado para operaciones reproducibles como corregir pequeños problemas en tipografías existentes o glifos individuales, así que la satisfacción puede variar según los requisitos.
[0]: https://fontforge.org/docs/scripting/python.html
Me pregunto si ya existe alguna startup wrapper de IA que haga creación de tipografías.
El prompt sería interesante. Por ejemplo: “diseña una tipografía navideña amigable para niños, con una fuerte influencia balcánica pero también mezclada con brutalismo soviético”.
Comercialmente también debería volverse culturalmente natural usar tipografías exóticas. Entiendo por qué se usan Helvetica, Roboto, Noto Sans y tipografías más modernas, pero honestamente el mundo se volvió un poco monótono.
Fue una oportunidad desaprovechada que el propio post del blog no usara su propia tipografía.
La frase no debería ser que “el perro salta sobre el zorro”, sino que el zorro salta sobre el perro ;-)
Porque los perros son flojos y los zorros son rápidos.