¿Cómo puedo hacer una fuente monoespaciada?


14

Supongamos que tengo una fuente en un formato muy popular modestamente ( .ttf, .otf, etc.), y tengo los derechos legales para modificarlo. Tal como está, es una fuente normal con diferentes caracteres (glifos?) Que varían en ancho y espaciado. ¿Cómo haría para convertir dicha fuente en una fuente monoespaciada (por ejemplo, todos los caracteres tienen las mismas dimensiones, etc.)?

Si es posible, ¿hay alguna herramienta automatizada que pueda hacer algunas conjeturas por usted? (Los resultados no tienen que ser perfectos ). La fuente puede ser grande (muchos caracteres), y la edición puede ser tediosa.

¡Cualquier sugerencia sobre el problema es muy apreciada! :)


Descargo de responsabilidad: lo siento si esto se considera un tutorial simple , pero Google tiene muy poca información sobre el tema, y ​​para un programador que no se ocupa mucho de gráficos o fuentes, seguro que no es simple . Además, lo siento si mi terminología está apagada ...: P


¿Qué software de fuente está utilizando, si lo hay? Fontlab? Fontforge?
thomasrutter

Respuestas:


12

Si aún no tiene ningún software de edición de fuentes, la buena noticia es que Fontforge es gratuito y de código abierto. La mala noticia es que tiene una curva de aprendizaje relativamente alta y una interfaz de usuario algo inusual.

Básicamente, para que una fuente se considere monoespacio, cada glifo debe tener el mismo ancho, hasta exactamente el mismo número de unidades. Esto incluye incluso glifos que normalmente deberían ser de ancho cero, o un cierto ancho (como espacios en blanco, guiones, etc.).

Consulte la entrada de preguntas frecuentes "¿Cómo marco una fuente como monoespaciado?"

Para editar realmente el ancho de todos los glifos a la vez en un lote, puede ir a "Métricas" -> "Establecer ancho" en el menú, pero no esperaría que funcione para todos los caracteres. Probablemente tendrá que editar manualmente todos los caracteres anchos como 'W', 'M', '@', etc. para que no se superpongan. Y combinar diacríticos (acentos destinados a ser "combinados" con letras en el momento del renderizado) puede tener todas sus posiciones desordenadas (lo cual es difícil de probar si eres estadounidense / inglés y casi nunca las usas).

Una persona que sepa cómo crear y editar fuentes podría realizar esta tarea, pero aún así no sería sencillo.


Tengo la misma pregunta sobre la conversión de una fuente a monoespacio. Entiendo que estirar sería malo. Lo que realmente estoy buscando es una herramienta que 1) encuentre el glifo más ancho, 2) luego, en lugar de estirar los glifos, me gustaría que estén centrados en un campo de ese ancho. ¿No hay herramienta para hacer eso?
NJRandy

@thomasrutter en el caso de gnu unifont? (fuente de mapa de bits donde los glifos son 8 16 o 16 16)
user2284570

Gran respuesta. Sin embargo, editar directamente desde la interfaz de usuario de FontForge no funcionó para mí (permaneció congelado durante horas antes de que lo matara). En su lugar, utilicé los enlaces de Python. Mi objetivo era usar la fuente monoespacificada como alternativa, por lo que el mal kerning y el sangrado no eran grandes problemas. He detallado todo esto en una respuesta separada.
Clément

1
Cuando estaba aprendiendo, hice muchas fuentes mono editando fuentes gratuitas. Al igual que cualquier herramienta de automatización, solo debe ser un punto de partida: uno debe modificar los resultados según sea necesario. Encontré que Fontographer tiene la curva de aprendizaje más rápida. Seleccionar glifos, vaya a Set Widthbajo Metricsmenús desplegables: configurar todos los glifos de una anchura media (modificar más adelante si es necesario) y, por último, seleccione Equalise Sidebearingstambién bajo Metricsmenú para centrar los glifos de la em-cuadrado. Por supuesto: estudie cómo otros han superado las dificultades particulares para diseñar fuentes exitosas de ancho fijo.
Moscarda

7

thomasrutter ofrece más de una respuesta técnica; Te mostraré algunos principios de tipografía para desanimarte de hacer lo que quieres hacer a menos que realmente lo necesites.

Amplíe una 'i' y una 'm' en Consolas o Courier y luego en Corbel o Verdana. Observe cuán diferentes deben ser las letras para que el monoespacio funcione. Convertir correctamente una fuente a monoespacio requiere mucho conocimiento y trabajo. La idea general de estirar las fuentes está mal vista por cualquier diseñador que valga la pena, por eso incluso pasar de una variante normal a una condensada toma una nueva versión de todos los glifos.

Entonces, mire Consolas vs. Corbel aquí y vea cómo, cuando se acerca, puede ver 1) el espaciado entre letras, 2) la consistencia del grosor del trazo y 3) cómo cada letra cabe en su caja. Mire la cara monoespaciada (primero) en comparación con la cara espaciada variable (segunda), luego vea la tercera y la cuarta para ver qué sucede cuando intenta estirar y espaciar para igualarla. Para el cuarto, hice que la Ms se aplastara al 75% para entrar en la caja, pero ahora son mucho más delgados que los Is. eso se notará cuando se use.

Comparación de tipos de letra monoespaciales y de espacio variable

En resumen: no te metas con los tipos de letra; ¡son mucho más formidables de lo que cabría esperar!


2
Sí, estirar glifos anchos como M no es una solución suficientemente buena exactamente por la razón que señala Brendan: sus trazos verticales se vuelven más estrechos que otras letras y eso se ve mal. Debe editar los glifos a mano, seleccionando puntos de control y moviéndolos. Esperemos que esto le dé al OP alguna idea de cómo hacer esto bien (o bien) no es una tarea fácil. Especialmente si quieres tener una cobertura de glifos algo decente.
thomasrutter

@Brendan Creo que debería ser diferente para una fuente de mapa de bits donde solo hay dos anchos de glifos (en mi caso, los glifos tienen 8 o 16 píxeles de ancho)
user2284570

+1; No es realista esperar una traducción automática completa. Sin embargo, en contextos restringidos, lo que mostró en la tercera imagen realmente funciona bien: si desea importar operadores matemáticos faltantes en una fuente monoespaciada, esa solución se verá bastante bien (publiqué el software para hacer esto como una respuesta separada).
Clément

@Brendan, no estoy de acuerdo. El problema con todos sus ejemplos es que no aplicó la misma transformación a todos los glifos
simbionte

6

Encontré este mismo problema al tratar de editar el código fuente haciendo un uso intensivo de los símbolos Unicode. En ese contexto, la mayor parte del código fuente se muestra en una fuente monoespacio, y algunos símbolos que no están cubiertos por esa fuente terminan arruinando la alineación.

Aunque es cierto que "monoespacificar" una fuente completa producirá resultados horribles (interletraje, anchos de trazo y equilibrio general, todo estará en mal estado), importando solo unos pocos símbolos de una fuente de ancho variable a una monoespacio produce resultados decentes. La siguiente animación muestra el uso de Consolas + Symbola como alternativa, en comparación con el uso de Consolas + una versión monoespacificada de Symbola:

antes y después de la monoespacificación

Esto es inútil para la tipografía avanzada, pero es un buen compromiso si desea usar símbolos en su código fuente sin arruinar la sangría. Sin embargo, hay una serie de advertencias:

  • Los caracteres anchos se desangrarán un poco en los espacios vecinos (aunque pueden reducirse ligeramente para mitigar el problema)
  • Kerning será malo (no es un gran problema, ya que es solo una alternativa)

Me he lanzado un proyecto GitHub para manejar este tipo de transformaciones de fuente automáticamente. Incluye fuentes pregeneradas y código que utiliza enlaces Python de fontforge.

Vea también esta pregunta de emacs.se .


-1

En el procesador de textos, yo: (1) creé una tabla; (2) dividido en columnas: una columna por cada letra; (3) centró las letras; y (4) hizo que todos los bordes, internos y externos fueran invisibles.


1
Esto no responde la pregunta. No ayuda a crear una fuente, y suena como una pérdida de tiempo.
Moscarda
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.