Primitivos
Tipografía
Los primitivos tipográficos de DesignToken101 (familias, tamaños y pesos), de dónde sale la escala de tamaños y por qué el interlineado vive en código.
Última revisión:
La tipografía tiene varias escalas a la vez: familias, tamaños, pesos e interlineados. En esta lección verás los primitivos tipográficos de DesignToken101 y de dónde sale cada escala. Cómo se combinan en estilos de texto lo verás en Estilos de texto como capa.
En esta página
- Los primitivos tipográficos
- Familias
- Tamaños
- Pesos
- Interlineado y espaciado entre letras
- En Figma
- Lo que te llevas
Los primitivos tipográficos
| Escala | Tokens | Tipo de variable en Figma | Dónde vive |
|---|---|---|---|
| Familia | font-family/sans, font-family/mono | String | Figma |
| Tamaño | font-size/01 … font-size/10 | Number | Figma |
| Peso | font-weight/400 … font-weight/700 | Number | Figma |
| Interlineado | line-height/tight, snug, normal | No se crea | Código |
Por qué cada tipo de variable es el que es lo viste en Tipos simples. Aquí nos centramos en los valores.
Familias
| Token | Valor | Uso |
|---|---|---|
font-family/sans | Inter | Interfaz y texto |
font-family/mono | JetBrains Mono | Código y nombres de tokens |
Las dos tienen licencia SIL Open Font License 1.1, que permite usarlas, también en proyectos comerciales (Inter, JetBrains Mono).
En Figma, la variable guarda un único nombre de fuente. Las fuentes de reserva (system-ui, sans-serif…) se añaden en el CSS.
Tamaños
Diez pasos, tomados de la escala del Simple Design System (SDS) de Figma, que va de --sds-typography-scale-01 (0.75rem) a --sds-typography-scale-10 (4.5rem) (SDS: theme.css):
| Token | px (Figma) | rem (CSS) |
|---|---|---|
font-size/01 | 12 | 0.75 |
font-size/02 | 14 | 0.875 |
font-size/03 | 16 | 1 |
font-size/04 | 20 | 1.25 |
font-size/05 | 24 | 1.5 |
font-size/06 | 32 | 2 |
font-size/07 | 40 | 2.5 |
font-size/08 | 48 | 3 |
font-size/09 | 64 | 4 |
font-size/10 | 72 | 4.5 |
Aquí el número es un orden, no una proporción: font-size/02 no mide el doble que font-size/01. Los tamaños de letra no crecen a partir de una base fija, así que un número proporcional dejaría huecos sin sentido. El cero inicial (01, 02) mantiene el orden al ordenar los nombres como texto.
El texto de lectura mide 16 px (font-size/03). Es el tamaño que el navegador usa por defecto: con el valor por defecto, 1rem equivale a 16 px, y rem se calcula a partir del tamaño de letra del elemento raíz (MDN: font-size).
Recomendación
DesignToken101 no añade un tamaño de 18 px para el texto de lectura. Con 16 px, el texto respeta el tamaño por defecto, y quien lo necesite más grande lo amplía en su navegador.
Nota
Los títulos son más pequeños en móvil. Eso no se resuelve en los primitivos, sino con una colección semántica con dos modos, Desktop y Mobile, que apunta a pasos distintos de esta escala. Lo verás en Crear la colección Layout, en el módulo Modos y temas.
Tu escala puede ser otra
DesignToken101 usa la escala del SDS porque está probada en un sistema real y encaja con la base de 4 px del espaciado. No es la única válida: puedes usar la de otro sistema o crear la tuya.
Una forma habitual de crear una escala propia es la escala modular: partes de un tamaño base y multiplicas cada paso por la misma proporción. Typescale, una herramienta web gratuita (con funciones de pago), lo hace por ti: eliges el tamaño base y una proporción entre varias predefinidas, desde 1,067 (Minor Second) hasta 1,618 (Golden Ratio), pasando por 1,2 (Minor Third) o 1,25 (Major Third), y ves el resultado con tus fuentes. También exporta el CSS.
Nota
La escala del SDS no es modular: de 12 a 14 px el salto es de ×1,17, y de 24 a 32 px, de ×1,33. Sus pasos están elegidos uno a uno. Las dos opciones funcionan; lo importante es que el sistema tenga pocos tamaños y que cada uno tenga un uso.
Recomendación
Si generas tu escala con una herramienta, redondea cada tamaño a un número entero de píxeles y, si puedes, a un múltiplo de 2 o de 4. Así los tamaños encajan con el espaciado y se leen mejor en las tablas de tokens.
Pesos
| Token | Valor | En Figma, con Inter |
|---|---|---|
font-weight/400 | 400 | Regular |
font-weight/500 | 500 | Medium |
font-weight/600 | 600 | Semi Bold |
font-weight/700 | 700 | Bold |
Son variables Number, por los motivos que viste en Tipos simples.
Recomendación
En el peso, el nombre del token es su valor: font-weight/600 vale 600. Es la única excepción a la regla de no poner valores en el nombre, porque el número es el nombre estándar del peso en CSS y en DTCG.
Interlineado y espaciado entre letras
| Token | Valor | En los estilos de texto de Figma | Uso |
|---|---|---|---|
line-height/tight | 1.2 | 120 % | Títulos |
line-height/snug | 1.4 | 140 % | Interfaz y textos cortos |
line-height/normal | 1.5 | 150 % | Texto de lectura |
Los tres son tokens de código: Figma lee una variable de interlineado como píxeles, no como multiplicador (Tipos simples). En Figma, los estilos de texto escriben el porcentaje a mano.
El texto de lectura usa 1.5 por accesibilidad. El criterio 1.4.12 Text Spacing (AA) de WCAG 2.2 pide que el contenido no se rompa si la persona aumenta el interlineado hasta 1,5 veces el tamaño de la letra, junto con otros espaciados (Understanding 1.4.12). El criterio no obliga a usar 1.5: pide que nada se rompa cuando la persona cambia el espaciado. Por eso afecta al diseño de los componentes, que deben tener alturas flexibles. Cómo se comprueba lo verás en Tamaño y espaciado.
Recomendación
DesignToken101 no tiene tokens de espaciado entre letras: todos los estilos usan 0. Si los títulos grandes lo necesitan, se añadirán. Ten en cuenta que Figma también lee una variable de espaciado entre letras como píxeles, no como porcentaje (Figma: Overview of variables).
En Figma
Crea las variables tipográficas en la colección Primitives (Figma: Create and manage variables):
| Variables | Tipo | Scope | Al publicar |
|---|---|---|---|
font-family/* | String | Font family | Ocultas |
font-size/* | Number | Font size | Ocultas |
font-weight/* | Number | Font weight | Ocultas |
Añade a cada una su code syntax Web, por ejemplo var(--t101-font-size-03). No crees variables de interlineado.
Recomendación
Los primitivos tipográficos se ocultan al publicar porque nadie los aplica a mano: los usan los estilos de texto (módulo Relaciones) y los tamaños por contexto (módulo Modos y temas). Quien usa la biblioteca elige un estilo de texto, no un tamaño suelto.
Nota
En la exportación de Figma, el scope del peso aparece como FONT_STYLE (comprobado en la exportación de esta web). Sirve para saber qué buscar si lees el JSON.
:root {
--t101-font-family-sans: "Inter";
--t101-font-size-03: 1rem;
--t101-font-weight-600: 600;
--t101-line-height-normal: 1.5; /* token de código */
}El token de familia no se usa tal cual en el CSS: la web carga Inter con next/font, que le da otro nombre. Cómo se resuelve lo verás en el módulo De Figma al código.
Lo que te llevas
- La tipografía son varias escalas a la vez: familias, tamaños, pesos e interlineados.
- El texto de lectura usa 16 px, el tamaño por defecto del navegador.
- Los primitivos tipográficos se ocultan: al diseñar se aplican estilos de texto.