La dueña pidió quitarlo. Con él se van las dos cosas que solo existían para sostenerlo: el `relative` de <main> —ninguna sección lo necesita, todas son relative por su cuenta salvo Disciplinas, que no tiene hijos absolutos— y el export RADIO_BARRA, sin consumidores. BARRAS_SIMBOLO se queda como forma canónica del ≡ aunque ya nadie dibuje las barras: LINEAS_SIMBOLO se deriva de ella y el test que obliga a las dos representaciones a coincidir es lo que mantiene honesta la geometría frente al Manual. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
// Single source of truth for the ≡ glyph geometry. Everything that draws the
|
||
// mark reads from here — today that is SecuenciaClaridad, which resolves its
|
||
// tangle into it — so the symbol it produces is provably the same one and not a
|
||
// lookalike. BARRAS_SIMBOLO stays the canonical form even with no one drawing
|
||
// the bars directly: the strokes below are derived from it, and the test that
|
||
// holds the two representations to each other is what keeps them honest.
|
||
//
|
||
// The proportions are the Manual de Identidad Visual's, already measured and
|
||
// traced in Wordmark.tsx: bar length = 5.919 × thickness, gap = 2 × thickness,
|
||
// ends fully rounded. Three bars and two gaps make the mark exactly seven
|
||
// thicknesses tall. These are not cosmetic: with stubby bars and tight gaps the
|
||
// mark stops reading as an E — the owner's 28/jul instruction — and starts
|
||
// reading as a hamburger menu icon.
|
||
|
||
export const VIEWBOX_SIMBOLO = '0 0 64 64';
|
||
|
||
const LADO = 64;
|
||
const LARGO_POR_GROSOR = 5.919;
|
||
const HUECO_POR_GROSOR = 2;
|
||
|
||
export const GROSOR_BARRA = 8;
|
||
|
||
const LARGO_BARRA = GROSOR_BARRA * LARGO_POR_GROSOR;
|
||
const HUECO = GROSOR_BARRA * HUECO_POR_GROSOR;
|
||
const PASO = GROSOR_BARRA + HUECO;
|
||
|
||
const IZQUIERDA = (LADO - LARGO_BARRA) / 2;
|
||
const ARRIBA = (LADO - (3 * GROSOR_BARRA + 2 * HUECO)) / 2;
|
||
|
||
export const BARRAS_SIMBOLO = [0, 1, 2].map((i) => ({
|
||
x: IZQUIERDA,
|
||
y: ARRIBA + i * PASO,
|
||
width: LARGO_BARRA,
|
||
height: GROSOR_BARRA,
|
||
}));
|
||
|
||
// The same three bars as strokes. A round cap reaches half the stroke width
|
||
// past its endpoint, so the ends are inset by exactly that much — otherwise the
|
||
// drawn line overshoots by a full thickness the rect it has to reproduce.
|
||
export const LINEAS_SIMBOLO = BARRAS_SIMBOLO.map((b) => ({
|
||
x1: b.x + b.height / 2,
|
||
y1: b.y + b.height / 2,
|
||
x2: b.x + b.width - b.height / 2,
|
||
y2: b.y + b.height / 2,
|
||
grosor: b.height,
|
||
}));
|