Saltar al contenido

CSS, de a poco

Curso de CSS

Tipografía

Lección 06 de 37 · 3 min

La mayor parte de una página es texto. Cuatro propiedades deciden cómo se lee: el tamaño, el peso, el interlineado y el espaciado entre letras.

Tamaño y peso

El tamaño (font-size) define qué tan grande es la letra. El peso (font-weight) define qué tan gruesos son los trazos: 400 es normal y 700 es negrita.

Mové los controles y mirá cómo cambia el párrafo. Las franjas marcan cada línea, y la cota naranja del margen mide una: su alto es el tamaño por el interlineado, el mismo valor que aparece arriba.

font-family: Geistcada línea mide 27px de alto

Capítulo 3 · Interlineado

La voz del texto

La tipografía es la voz del texto. Un buen interlineado deja respirar cada línea: con poco, el ojo se pierde al saltar de renglón; con demasiado, el párrafo se desarma.

texto.css
.texto {
font-size: 18px;
line-height: 1.5; /* 27px */
font-weight: 400;
letter-spacing: 0em;
}
texto.html
<p class="text-lg leading-normal font-normal tracking-normal">
La tipografía es la voz del texto. Un buen interlineado deja respirar cada línea: con poco, el ojo se pierde al saltar de renglón; con demasiado, el párrafo se desarma.
</p>

En el demo el tamaño va en píxeles para que sea fácil de leer, pero en código real conviene usar rem. 1rem es el tamaño de letra de la raíz, 16px por defecto, y respeta al lector que agranda la letra en su navegador.

  1. Fuente estáticaTrae algunos pesos sueltos. Si pedís uno que no tiene, el navegador usa el más cercano.
  2. Fuente variableComo Geist, acepta cualquier peso dentro de su rango, incluso valores intermedios como 450.
Las letras Ag en Geist con pesos 100, 300, 400, 450, 500, 700 y 900. El 450 queda entre el normal y el medio: solo una fuente variable lo puede dibujar.

Interlineado

El interlineado (line-height) es el alto de cada línea. Escribilo sin unidad: 1.5 significa una vez y media el tamaño de letra del elemento. Así se hereda como proporción, y cada hijo lo recalcula con su propio tamaño.

Con unidad, el cálculo se hace una sola vez en el padre y los hijos heredan el resultado fijo. Con 1.5em en un body de 16px, el interlineado queda en 24px, y un título de 32px hereda esos 24px: sus líneas se pisan. Con 1.5, el título recalcula y obtiene 48px.

Un título de 32px dentro de un body de 16px. Con line-height 1.5em el título hereda líneas de 24px y sus dos renglones se pisan; con 1.5 recalcula y cada línea mide 48px.
texto.css
body {
font-size: 1rem; /* 16px */
line-height: 1.5; /* 24px */
}
h1 {
font-size: 2rem; /* 32px */
line-height: 1.1; /* 35.2px */
}

Para párrafos, un interlineado entre 1.4 y 1.6 se lee cómodo. Los títulos tienen pocas líneas y letra grande, así que van más apretados, entre 1.1 y 1.25.

Espaciado y cortes de línea

El espaciado (letter-spacing) suma o resta aire entre letras. Escribilo en em para que acompañe al tamaño: 0.05em son 0.8px en un texto de 16px y 2px en uno de 40px.

  1. En títulos grandes, un espaciado apenas negativo, como -0.02em, junta las letras que a ese tamaño se ven sueltas.
  2. En texto chico o en mayúsculas, un espaciado positivo, entre 0.05em y 0.1em, separa las letras y mejora la lectura.

text-wrap decide dónde se corta cada línea. balance reparte el texto en líneas de largo parecido, ideal para títulos cortos. pretty evita que la última línea de un párrafo quede con una palabra sola.

styles.css
h1,
h2 {
letter-spacing: -0.02em;
text-wrap: balance;
}
p {
text-wrap: pretty;
}

En Tailwind

Tailwind trae una escala para cada propiedad. Los tamaños text-* ponen el font-size y además un line-height propio; si sumás una clase leading-*, esa gana. Para tamaño e interlineado juntos está el atajo con barra: text-base/7 es 1rem de letra con 1.75rem de interlineado.

CSSTailwind
font-size: 1.125remtext-lg
font-size: 1.375remtext-[1.375rem]
line-height: 1.25 / 1.5 / 2leading-tight / normal / loose
line-height: 1.35leading-[1.35]
font-weight: 100 … 900 · 450font-thin … font-black · font-[450]
letter-spacing: -0.025em / 0.1emtracking-tight / tracking-widest
text-wrap: balance / prettytext-balance / text-pretty
articulo.html
<h1 class="text-4xl/[1.1] font-semibold tracking-[-0.02em] text-balance">
Tipografía que se lee sola
</h1>
<p class="text-base/7 font-[450] text-pretty">
Un buen interlineado deja respirar cada línea.
</p>