— Disclaimer!

HT Letterspacer funciona de manera diferente en la versión 2 y 3 de Glyphs, el archivo de configuración utilizado en Glyphs 2 no es válido en Glyphs 3 y al revés.

Por tal motivo recomendamos realizar una migración de datos de una versión a otra del editor atendiendo a las diferencias de categoriazación de los glifos propuesta con la actualización del programa y con la precaución de que los resultados no serán idénticos.

— Prólogo

La magia no existe, son horas de trabajo

Lo primero que deberías saber es que HT Letterspacer no es una «varita mágica», no reemplaza al diseñador, es una herramienta y como tal debes aprender a utilizarla, a pensar el espaciado a través de esta nueva perspectiva y en este sentido estás frente a un cambio de paradigma que propone un camino alternativo para diseñar y definir el espacio a la izquierda y a la derecha de un signo.

Al diseñar una letra, diseñas el negro y el blanco, el trazo y el espacio que lo rodea. Por lo tanto, el espaciado es una cuestión de diseño, los diseñadores de tipografía diseñamos el blanco que rodea a un signo, esas decisiones son afectadas por la forma y contraforma, el dibujo, las proporciones, el estilo, la función, el soporte y los demás items descriptos en el brief del proyecto tipográfico.

Tabla de contenidos

Instalación. Plugin Manager

Para instalar HT Letterspacer en Glyphs 3 puedes seguir los siguientes pasos:

  1. Abrir el editor de tipografía Glyphs 3.
  2. Ir a Window > Plugin Manger. Se abrirá una nueva ventana de diálogo donde podrás ver los plugins, scripts y modules que puedes agregar a este programa.
  1. En la ventana Plugin Manager tildar los títulos All y Scripts.
  2. Escribir Letterspacer en el espacio de búsqueda.
  3. Hacer click en INSTALL.
  4. Cerrar esta ventana
  5. Volver a Glyphs e ir al menú Script presionando las teclas Opt , de esta manera al desplegar el menú en lugar de abrir ventana de scripts ahora podrás ver al final la opción Reload Scripts, esta acción actualizará los scripts y podrás ver entre las opciones HTLetterspacer.
    Shortcut: puedes actualizar la carpeta de script presionando Cmd⌘ Opt⌥ Schif⇧ Y.

Utilización inicial del HT Letterspacer

Has empezado a diseñar tu fuente tipográfica, ya tienes algunos signos, por ejemplo una n, una o, una v, una c. Ahora debes diseñar el blanco que los rodea, o sea, el espaciado, aquí comienzas a utilizar esta herramienta.

La primera vez que accedas al menú script > HTLetterspacer y se desplieguen las 2 opciones: HTLetterspacer UI y HTLeterspacer, se abrirá esta ventana de diálogo:

Esta ventana advierte que falta un archivo de configuración y pregunta si deseas crearlo, se recomienda responder Yes!
De esta manera se genera automáticamente un archivo .py en la misma carpeta donde has guardado el archivo de tu fuente. Si vas a esa carpeta encontrarás un nuevo archivo llamado elnombredetufuente_autospace.py, este es el archivo de configuración faltante, hablaremos de él más adelante.

Aproximación al diseño de espaciado.

En esta sección hablaré de diseño de espaciado propiamente dicho y de cómo utilizar el HT Letterspacer para espaciar una fuente tipográfica.

Pero antes quisiera hacer una breve introducción para ponernos a todos en el mismo punto de partida y evitar malentendidos semánticos.

(Si esto no te interesa, puedes saltar al próximo título.)

Puntos a difinir:


  • ¿Qué es espaciado?
  • ¿Qué factores podríamos considerar relevantes en la toma de decisiones del diseño del espaciado de una fuente?
  • ¿Qué actores intervienen durante el proceso de espaciado?
  • ¿Cómo estos actores están reflejados en los parámetros que propone HT Letterspacer?

La novedad de esta herramienta es que nos desafía a pensar y analizar el espaciado de una forma diferente, tal vez esto es lo que nos desorienta un poco en los primeros momentos. No es un botón que arregla todo.

Espaciar es determinar cuánto espacio hay a la derecha y a la izquierda de un signo, cuánto aire lo rodea, es diseñar el blanco que nos deja leer el negro.

[Espacio interno =~ espacio externo en Telder]
Espacio interno 1 ≈ Espacio externo 2
[Espacio interno =~ espacio externo en Alegreya]
Espacio interno 1 ≈ Espacio externo 2

Espaciar es equilibrar el espacio que hay dentro de la letra con el espacio que hay fuera de ella. En este punto estamos todos más o menos de acuerdo, si hemos leímos sobre espaciado, la idea de igualar blancos internos y externos es recurrente. La imagen utilizada es similar: si para llenar el interior de una n necesito 1 litro de agua, también necesitaré 1 litro para llenar el espacio entre esa n y la letra que sigue. La gran pregunta es ¿es un litro, 0,8 o 1,2?

Los métodos de espaciado propuestos por Walter Tracy, Thomas Phinney, Frank E. Blokland ponen el foco en las formas, agrupándolas y clasificándolas en rectas, curvas, diagonales, bastones, etcétera.

Andrés Torresi propone observar el blanco, no se basa en la forma, la atención apunta al espacio y nos anima a mirarlo como un algo que podemos modelar, pues tenemos que determinar dónde empieza y termina ese blanco que dará lugar al negro.

Criterios de diseño:

Al empezar a pensar en rasgos generales cómo será el espaciado de una fuente, hay algunos datos que van a ir perfilando ese blanco, estos ítem influyen en la toma de cualquier decisión. Por ejemplo, si tengo dos tipografías sans serif para cuerpo de lectura, una en papel y otra en pantalla, la segunda tendrá un espaciado más generoso que la primera; o si tengo una tipografía para títulos y su variante de texto, la primera tendrá un espaciado más apretado.
Algunos factores que pueden transformarse en un criterio de diseño de espaciado:

  • diseño de los signos, su forma
  • proporciones
  • color
  • función
  • soporte
  • etc.

Actores que intervienen técnicamente:

Cuando ya sabes que tipo de espaciado necesita tu tipografía y quieres utilizar el espaciador, hay cuatro conceptos que necesitas conocer, de la misma manera que para dibujar un signo en un editor de tipografía sabes como funcionan las curvas de Bézier, los manejadores y los nodos.
En el diseño de espaciado, los actores principales son:

  • 1. Sidebearings (izquierdo y derecho)
  • 2. Contorno del glifo
  • 3. Bounding box
  • 4. Ancho de caja

Glosario general:

«El espacio es lo que ocurre entre el límite de la caja y el contorno.»

El punto de origen [1] es el punto cero en el eje x.

El ancho de la caja [2] —Advance width— es el ancho que avanza el signo, el límite izquierdo es el punto de origen (que coincide con el sidebearing izquierdo) y el límite derecho es el sidebearing derecho. El ancho de caja está delimitado por lo laterales izquierdo [8] y derecho [10], lo que ocurre entre estos laterales es ancho [2]. El ancho de caja siempre es mayor o igual que cero.

Cuando hablo de glifo [3], hago referencia al dibujo (a la forma, al negro) y al espacio que lo rodea.

Cuando hablo del contorno [4] hago referencia a la línea que dibuja la forma y contraforma, a la línea que dibuja el negro.

Los puntos extremos del contorno [5] determinan el Bounding Box [6] (BBox). Dicho de otro modo, el BBox es el rectángulo que circunscribe al contorno.

Sidebearing es el componente esencial del espaciado, es el espacio a la izquierda y a la derecha. Cada glifo tiene un sidebearing izquierdo llamado Left Side Bearing - LSB [7] y un sidebearing derecho, Right Side Bearing - RSB [9]:

  • LSB [7] es la distancia entre el punto de origen [1] y el lado izquierdo del BBox [6].
  • RSB [9] es la distancia entre el lado derecho del BBox [6] y el lateral derecho de la caja [10].
anatomía del glifo

Definición de los parámetros generales

Para definir los parámetros es recomendable utilizar primero la ventana emergente HT Letterspacer UI (User Interface). Allí están los parámetros que debes definir para diseñar el espaciado de una tipografía.

1. LBS / RSB Sidebearings izquierdo y derecho. Con este parámetro indicas si quieres aplicar los valores a uno o a ambos lados del signo.


2. Tabular Este parámetro calcula los valores de espaciado pero los aplica de forma relativa (proporcional) sin modificar el ancho de la caja. Se puede utilizar para figuras tabulares, fuentes monoespaciadas o para recalcular la posición de un glifo dentro de su caja.

3. Area paramArea Este parámetro define el valor de área de espacio que se quiere lograr. Se mide en miles de UPM.
Por ejemplo: en una figura rectangular (donde el lado es recto y vertical) de 500UPM de altura, cada unidad de sidebearing equivale a 500 de área. Es decir, que un área de 500000 (500) equivale a un sidebearing de 100 unidades. Para una tipografía de texto en 1000UPM, el valor suele establecerse entre 200 y 400 (esto no es una regla y depende de lo que quieras hacer).

4. Depth paramDepth (profundidad) Si todos los signos fueran rectos como el lado izquierdo de la n sans Serif geométrica el asunto del espaciado estaría resuelto y no estaríamos aquí discutiendo esto.
¿Qué ocurre con las contraformas abiertas, con las zonas blancas que están dentro del BBox y por lo tanto no son tomadas en cuenta en el parámetro área?
¿Cómo definimos las superficies blancas en una c, en una v o una T?
¿Cuál es la línea de frontera entre contraforma y espaciado?

Hay una gran cantidad de blanco dentro del BBox que incide en la ecualización del espacio. Para definir este parámetro es imprescindible un ojo bien entrenado, pues necesitamos determinar una frontera visual, no hay ningún punto o línea que nos indique en qué momento el blanco interno de una c deja de ser espacio interior para ser espacio exterior, o en qué lugar nuestro ojo deja de ver al espacio inferior de la v como contraforma para verlo como espaciado.
El número que utilizamos aquí es un porcentaje de la altura de equis (un valor entre 0 y 100), e indica cuánto blanco debe medir hacia adentro del BBox, entre los límites verticales establecidos. Para una tipografía de texto estándar puede ser entre 10 y 25 (nuevamente, estos números son solo una referencia para tener un punto de partida).

5. Overshoot paramOver En los dos parámetros anteriores (área y depth) el cálculo es dentro de la altura establecida del glifo (altura de equis). Este parámetro expande el espacio medible hacia arriba y hacia abajo de esa altura.
Al incluír el espacio más allá de esos límites verticales, podemos considerar diferentes espaciados para una i sans, una l y una j, para una a de anillo, una d y una q.
En las minúsculas, de forma predeterminada, la zona de medición (que define la altura establecida antes mencionada) se corresponde a la alutra del glifo x, nuestro glifo de referencia. Puedes reemplazar ese signo de referencia para cualquier grupo de glifos en el archivo de configuración, esto lo vemos más adelante. Es decir, que para las minúsculas, el espacio se medirá entre el extremo inferior y superior de la x (usualmente la línea de base y la altura de equis). El overshoot extiende estos valores para producir una diferencia en glifos con ascendentes y descendentes.

Entonces una vez que sabes qué parámetro calcula qué blanco, puedes ir probando/experimentando rápidamente desde esta ventana diferentes valores hasta lograr el espaciado que quieres para tu tipografía.

Se recomienda comenzar con una secuencia de n para definir el parámetro área, luego incorporar la o y evaluar que ocurre con el valor del parámetro depth agregando la c, la v, y otros signos con contraformas abiertas. Por último revisar que ocurre con i, j y l para definir el parámetro overshoot. Pronto la secuencia se va transformando en palabras y frases que te permiten revisar los detalles y observar el resultado de las decisiones tomadas.

Como ya te habrás dado cuenta, cuando crees haber encontrado el valor de paramArea agregas una v a la secuencia y todo se desacomoda, logras hallar el valor de paramDepth pero al agregar una f vuelve a desajustarse, modificas paramArea luego paramOver y reconsideras el valor de paramDepth. En este punto es importante saber qué modificas con cada parámetro, sino todo se vuelve realmente una lotería.

Del testeo preliminar de minúsculas, mayúsculas, figuras, símbolos, etc. obtendrás un espaciado parejo y armónico pero no óptimo, más adelante, parámetros particulares, podrás resolver esto.

Los valores en la ventana HT Letterspacer UI no quedan guardados, es una instancia de prueba. Si estás trabajando en una fuente multiple másters y cargas los valores para el máster light, luego vas al bold y cambias los valores para hacer pruebas allí, al volver al máster light, los valores que habías seteado serán los que cambiaste en bold. Por este motivo se recomienda trabajar en un máster a la vez e ir pasando los parámetros de la ventana UI al máster correspondiente en el master info.

Cómo pasar los valores a cada máster

Una vez definidos los valores en la ventana emergente, debes cargarlos en el máster correspondiente, esto es bastante simple.

En la ventana donde estas trabajando haces click en copy parameters y vas a Información de la fuente > Másters allí encontrarás una sección para los Parámetros personalizados, en ese lugar debes pegarlos.
También puedes anotar los valores, ir a la sección Parámetros personalizados y tipear en la columna propiedades paramArea paramDepth paramOver y en la columna valor el número correspondiente según los resultados de las pruebas realizadas.

Resumen

  • Es importante recordar que para aplicar el espaciador los glifos deben estar seleccionados.
  • Saber qué parámetro corresponde a cada blanco te evitará trabajar a ciegas y jugar a la lotería.
  • La ventana UI NO GUARDA los valores → Pasar los parámetros generales a la información de cada máster.
  • Los parámetros generales se calculan contrastando minúsculas, el resto de los signos tendrán un espaciado parejo o constante. Podrás ajustar esto en el punto donde explicamos la configuración de los parámetros particulares.

Aplicar el HT Letterspacer a toda la fuente

Ahora que ya están los parámetros de espaciado copiados en cada máster, puedes hacer correr el macro en toda la fuente:

Esto deberás repetirlo por cada máster e ir revisando los resultados. Si necesitas modificar alguno de los valores, puedes hacerlo desde la ventana Información de la fuente > Másters o volver a trabajar con la ventana emergente.

Archivo de configuración y Parámetros particulares

Como ya has leído, los parámetros generales realizan el espaciado contrastando minúsuclas, por tal motivo las otras caegorías o subcategorías de signos deben ser ajustadas. El resultado será correcto en las lowercase pero es muy probable que en uppercase esté apretado.

En los pasos inciales se generó un archivo de configuración, este archivo contiene las instrucciones para resolver este problema y ajustar los parámetros generales a las necesidades particulares de cada grupo de signos.

Encontrarás este archivo en la misma carpeta donde está guardado el archivo de la fuente, se llama igual a ella más la extensión _autospace.py. Al abrirlo con un editor de texto (Sublime Text, Visual Studio Code, etc.) encontrarás los siguiente:

# Reference
# Script, Category, Subcategory, case, value, referenceGlyph, filter


# Letters
*,Letter,*,upper,2,H,*,
*,Letter,*,smallCaps,1.4,h.sc,*,
*,Letter,*,lower,1,x,*,
*,Letter,*,minor,0.7,m.sups,.sups,


# Numbers
*,Number,Decimal Digit,*,1.5,one,*,
*,Number,Decimal Digit,*,1.2,zero.osf,.osf,
*,Number,Fraction,minor,1.3,*,*,
*,Number,*,*,0.8,*,.dnom,
*,Number,*,*,0.8,*,.numr,
*,Number,*,*,0.8,*,.inferior,
*,Number,*,*,0.8,*,superior,


# Punctuation
*,Punctuation,Other,*,1.5,*,*,
*,Punctuation,Parenthesis,*,1.8,*,*,
*,Punctuation,Quote,*,3,*,*,
*,Punctuation,Dash,*,1.5,*,*,
*,Punctuation,*,*,1,*,slash,
*,Punctuation,*,*,1.2,*,*,


# Symbols
*,Symbol,Currency,*,1.6,*,*,
*,Symbol,*,*,1.5,*,*,
*,Mark,*,*,1,*,*,


# Devanagari
devanagari,Letter,Other,*,1,devaHeight,*,
devanagari,Letter,Ligature,*,1,devaHeight,*,

Es importante prestar atención es este archivo, pues aquí se encuentra la principal diferencia entre el uso de HT Letterspacer en Glyphs 2 y en Glyphs 3.

En Glyphs 3 se incorpora el parámetro case que solo aplica a la categoría letters, el resto de las categorías siguen el mismo criterio que en Glyphs 2.

Al abrir el arhcivo elnombredetufuente_autospace.py con un editor de texto encontrarás una serie de valores estándar que son solo un punto de partida, la idea es que puedas personalizarlo y ajustarlo a las necesidades específicas de tu fuente tipográfica.

De la misma manera que para ajustar los parámetros generales fueron definidos los actores que intervienen (LBS, RBS, ancho de caja, etc.) aquí lo que debes aprender es a leer e interpretar este archivo para poder modificarlo.

En las primeras dos líneas se presenta comentado el esqueleto del documento (el # introduce un comentario sin valor de instrucción), esta secuencia se repite en los siguientes párrafos del archivo.

Los parámetros que declara son los siguientes:

  • Script: indica el sistema de escritura que afecta —latin, devanagari, cirílico, etc.— si usas * indicas que afecta a todos los scripts.

  • Category: indica qué categoría de signos —letters, numbers, punctuation, symbols— o * que incluye a todas las categorías.

  • Subcategory: este parámetro no aplica a la categoía letras. (lo vemos en el ejemplo siguiente)

  • case: describe la caja afectada de la categoía letters, podría ser upper, smallCaps, lower o minor o * que incluye a todas.

  • value: es el valor del coeficiente por el cual se multiplica el espacio definido en los parámetros generales. Si utilizas como valor 1 los valores indicados en paramArea paramDepth y paramOver serán aplicados sin modificación, por lo tanto, en la categoría letters, case lower el valor que corresponde es 1, para las cases upper y SmallCaps como el espaciado debe ser más amplio será un valor mayor a 1 y para la minor será un valor menor a 1.

  • referenceGlyph: este signo de referencia es el que determina la altura de equis, el límite vertical de los parámetros generales, en las minúsculas sería una x en las mayúsculas sería una H (digo sería porque aquí podemos reemplazarlo por otro signo). Es importante tenerlo en cuenta para las letras o números volados, pues estos signos se desarrollan casi en su totalidad fuera de la altura de x, entonces en la subcategoria Superscript el signo de referencia debería ser x.sups

  • filter: aquí puedes especificar una cadena de texto para agrupar glifos y reducir el alcance de la clasificación. Por ejemplo .ss01, ord o sencillamente * que designa a cualquier nombre.

Por lo tanto esto se leería: A todas las letras Uppercase del script Latin se multiplicará el valor asignado en los parámetros generales × 1,25, tomando como referencia de altura el glifo H.

  • Script: * indicas que afecta a todos los scripts.

  • Category: Punctuation.

  • Subcategory: describe las subcategorías, en este caso Dash, podría ser Parenthesis, Quote, Other, Fullwidth, o * que incluye a todas las subcategorías.

  • case: describe la caja afectada. * indicas que afecta a todas.

  • value: multiplico por 1,5 el valor declarado en los parámetros generales.

  • referenceGlyph: No se declara glifo de referencia, por lo tanto la latura de referencia es el glifo x.

  • filter: no se declara ningún filtro de búsqueda.

Por lo tanto esto se leería: A todos los signos de puntuación dentro de la subcategoría Dash multiplicar × 1,5, el valor de espaciado resultante en los parámetros generales.

Esta lista de parámetros —Script, Category, Subcategory, case— podemos reconocerla en la columna de la izquierda de la ventana principal de Glyphs, pero también podemos investigar un poco más sus posibilidades en el glyph info. A esta paleta llegamos seleccionando uno o varios glifos y luego vamos a Edit > Info for Selection o presionando alt cmd i

Esta ventana nos muestra Unicode, Nombre, Script, Categoría, Subcategoría, dirección de escritura, case y short name. Podemos editar y modificar estos datos. ¡Con prudencia!

Ejemplos

Ejemplo 1:no puedes establecer excepciones.

Es importante mencionar que no es posible excluir signos. Una solución posible a esta situación es no seleccionar los glifos que deseas que no sean afectados por este método de espaciado al hacer correr el script por la fuente.

Otra opción podría ser no pensarlo desde la excepción, o sea, incluir esa situación a través de un filtro y transformar la excepción en una particularidad dentro de una categoría/subcategoría.

#Numeros Romanos
Latin,Letter,*,lower,1.5,RomanNumbersHeight,.ss02,

Por ejemplo, deseo espaciar los números romanos, pero el espaciador toma las barras superior e inferior y no aplica el espaciado. Entonces:
  • Latin sistema de escritura.
  • Letter categoría.
  • * todas las subcategorías.
  • case lower, o sea la caja baja.
  • 1 valor.
  • RomanNumbersHeight Glifo de referencia. Genero este glifo de referencia que redefine la altura de x medible.
  • ss02 Filtro, aquí es donde la excepción es incluída como particularidad dentro de un grupo, los ss02.

Ejemplo 2:

Latin,Letter,*,Uppercase,1.25,H,*,
Latin,Letter,*,Uppercase,1.4,H,E,

Observa la primera línea, donde el valor del parámetro filter es *, y en la segunda línea el valor E. Esto se lee: todas las mayúsculas usarán la letra H como referencia, y aplicará a todas las mayúsculas el coeficiente 1.25, pero en la segunda línea hay una nueva regla que indica que para el filtro E el coeficiente será 1.4. (Al igual que OpenType, se va sobre escribiendo).

Comprender y asimilar este paso es fundamental para lograr explotar al máximo la posibilidad de esta herramienta, aquí la importancia del sistema, las categorías y subcategorías, o la definición de filtros y glifos de referencias son un factor importante para diseñar ajustes que identifican y resuelven los detalles.

El archivo de configuración no es una fórmula rígida y está abierto a la creatividad de cada diseñador. Multiplicar los parámetros no siempre da los resultados esperados pero puedes volver al comienzo, redefinir los parámetros, declarar nuevas categorías o subcategorías, determinar glifos de referencias o filtros y de esta manera llegar al espaciado que estás buscando.

Es una herramienta que propone pensar el espacio desde el blanco, partiendo de lo general para luego profundizar en las particularidades.

Preguntas frecuentes

¿Es necesario tener un archivo de configuración por cada máster?

El archivo de configuración presenta como valor el coeficiente por el cual se multiplicará el valor de los parámetros generales de cada máster. Necesitas tener los parámetros generales copiados en cada máster y un solo archivo de configuración.

¿Es necesario tener los sidebearings en cero?

No necesitas que los sidebearings estén en cero para utilizar HT Letterpsacer, esta herramienta reemplaza los valores hayas puesto manualmente.

¿Qué ocurre con las reglas de espaciado?

indicacion reglas de espaciado
HT Letterspacer no sobreescribe estas reglas o grupos de espaciado.

¿Qué ocurre con el kerning?

HT Letterspacer no es una herramienta para desarrollar el kerning de una fuente tipgoráfica. Se recomienda enfáticamente realizar la revisión del kerning una vez que la instancia del espaciado está resuelta.

* * *

English version: coming soon

Update 2019-06-07: Fixed some text issues reported by Yolmar Campos.


Bibliografia