Faro: la torre en espiral negra y roja

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
hacklab 2026-10-14 21:43:01 +02:00
parent 3509b6dd38
commit 2dc0ff5e58
23 changed files with 74 additions and 74 deletions

View file

@ -257,7 +257,7 @@ Tres piezas, cada una con su uso:
![Hoja de marca](docs/marca/hoja.png)
- **Símbolo** (`docs/marca/simbolo*.svg`): un faro dentro de un aro grueso, como un emblema de tienda de graffiti (en la línea del sello de Writers Madrid). La luz es amarilla: un haz horizontal que se abre hacia los dos lados y ondas en círculo alrededor de la linterna. La torre, en negro, con dos franjas. Plano y rotundo, para que se lea en un favicon, una pegatina o un avatar. Versiones: positivo, negativo, sobre naranja y pegatina (círculo amarillo). Se genera con `python3 tools/faro.py docs/marca` y se copia a `sites/<web>/img/simbolo.svg` y a `favicon.svg`.
- **Símbolo** (`docs/marca/simbolo*.svg`): un faro dentro de un aro grueso, como un emblema de tienda de graffiti (en la línea del sello de Writers Madrid). La luz es amarilla: un haz horizontal que se abre hacia los dos lados y ondas en círculo alrededor de la linterna. La torre va en espiral negra y roja, con franjas en diagonal, y el tejado en rojo. Plano y rotundo, para que se lea en un favicon, una pegatina o un avatar. Versiones: positivo, negativo, sobre naranja y pegatina (círculo amarillo). Se genera con `python3 tools/faro.py docs/marca` y se copia a `sites/<web>/img/simbolo.svg` y a `favicon.svg`.
- **Logotipo** (`docs/marca/logotipo*.svg`): «TAKE THE STREET» en **Grindy Brush**, todo en negro (o en blanco sobre negro). Va convertido a trazados, así que no hace falta la fuente. Hay versión en una línea y en dos.
- **Firma**: símbolo + logotipo. Es lo que va arriba a la izquierda de la web.
- **Ilustración** (`docs/calle.svg`): la imagen principal de la portada, nunca en la cabecera. Ver el apartado 6.

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#f04e23"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#fff" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#fff" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#fff" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#fff"/><circle cx="50" cy="36" r="6.5" fill="#ffe2a8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#f04e23"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#f04e23"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#f04e23"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#fff" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#fff" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#fff" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#fff"/><circle cx="50" cy="36" r="6.5" fill="#ffe2a8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#fff"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#fff"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#fff"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 988 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#111"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#111"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#fff"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 991 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="48"/></clipPath><circle cx="50" cy="50" r="48" fill="#ffc21a"/><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#fff" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#fff" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#fff" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#fff"/><circle cx="50" cy="36" r="6.5" fill="#fff"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#ffc21a"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#ffc21a"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="48"/></clipPath><circle cx="50" cy="50" r="48" fill="#ffc21a"/><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#fff" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#fff" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#fff" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#fff"/><circle cx="50" cy="36" r="6.5" fill="#fff"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g></svg>

Before

Width:  |  Height:  |  Size: 910 B

After

Width:  |  Height:  |  Size: 1 KiB

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 947 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 947 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#111"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#111"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#fff"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 991 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 947 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 947 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#111"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#111"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#fff"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#fff"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#fff"/><path d="M44,43 V31 M56,43 V31" stroke="#fff" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 991 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><path d="M42.0,56 H58.0 L59.4,62 H40.6 Z" fill="#fff"/><path d="M39.9,72 H60.1 L61.4,78 H38.6 Z" fill="#fff"/><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#111"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath><g clip-path="url(#c)"><path d="M50,33 L0,19 V53 L50,39 L100,53 V19 Z" fill="#ffc21a" opacity=".9"/><circle cx="50" cy="36" r="19" fill="none" stroke="#ffc21a" stroke-width="3" opacity="0.9"/><circle cx="50" cy="36" r="27" fill="none" stroke="#ffc21a" stroke-width="2.2" opacity="0.55"/><circle cx="50" cy="36" r="12" fill="#ffc21a"/><circle cx="50" cy="36" r="6.5" fill="#fff4b8"/><clipPath id="ct"><path d="M42,46 H58 L65,100 H35 Z"/></clipPath><path d="M42,46 H58 L65,100 H35 Z" fill="#111"/><g clip-path="url(#ct)"><path d="M30,59 L70,47 V56 L30,68 Z" fill="#e3141b"/><path d="M30,77 L70,65 V74 L30,86 Z" fill="#e3141b"/><path d="M30,95 L70,83 V92 L30,104 Z" fill="#e3141b"/></g><rect x="39" y="43" width="22" height="4" rx="1" fill="#111"/><path d="M44,43 V31 M56,43 V31" stroke="#111" stroke-width="2.6"/><path d="M41,31 L50,21 L59,31 Z" fill="#e3141b"/></g><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>

Before

Width:  |  Height:  |  Size: 947 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
# Genera el símbolo: un faro dentro de un aro grueso, como un emblema de tienda de graffiti.
# La luz es amarilla: un haz horizontal que se abre hacia los dos lados y un halo en círculo.
import sys
INK, BL, NAR = "#111", "#fff", "#f04e23"
INK, BL, NAR, ROJO = "#111", "#fff", "#f04e23", "#e3141b"
LUZ, CLARA = "#ffc21a", "#fff4b8"
CX, CY = 50, 36 # centro de la linterna
@ -13,26 +13,26 @@ def luz_(luz, clara):
halo = f'<circle cx="{CX}" cy="{CY}" r="12" fill="{luz}"/><circle cx="{CX}" cy="{CY}" r="6.5" fill="{clara}"/>'
return haz + ondas + halo
def torre(ink, papel):
# Torre que se estrecha hacia arriba, con dos franjas, la linterna y el tejado en punta.
cuerpo = f'<path d="M42,46 H58 L65,100 H35 Z" fill="{ink}"/>'
franjas = "".join(f'<path d="M{43.3 - (y - 46) * 7 / 54:.1f},{y} H{56.7 + (y - 46) * 7 / 54:.1f} L{57.3 + (y + 6 - 46) * 7 / 54:.1f},{y + 6} H{42.7 - (y + 6 - 46) * 7 / 54:.1f} Z" fill="{papel}"/>'
for y in (56, 72))
def torre(ink, raya, clip):
# Torre que se estrecha hacia arriba, en espiral negra y roja (franjas en diagonal), la linterna y el tejado en punta.
forma = "M42,46 H58 L65,100 H35 Z"
cuerpo = f'<clipPath id="{clip}t"><path d="{forma}"/></clipPath><path d="{forma}" fill="{ink}"/>'
franjas = "".join(f'<path d="M30,{y + 9} L70,{y - 3} V{y + 6} L30,{y + 18} Z" fill="{raya}"/>' for y in (50, 68, 86))
balcon = f'<rect x="39" y="43" width="22" height="4" rx="1" fill="{ink}"/>'
linterna = f'<path d="M44,43 V31 M56,43 V31" stroke="{ink}" stroke-width="2.6"/>'
tejado = f'<path d="M41,31 L50,21 L59,31 Z" fill="{ink}"/>'
return cuerpo + franjas + balcon + linterna + tejado
tejado = f'<path d="M41,31 L50,21 L59,31 Z" fill="{ink if raya == BL else raya}"/>'
return cuerpo + f'<g clip-path="url(#{clip}t)">{franjas}</g>' + balcon + linterna + tejado
def faro(estilo="aro", ink=INK, luz=LUZ, papel=BL, clara=CLARA, clip="c", grueso=7, fondo_aro=None):
def faro(estilo="aro", ink=INK, luz=LUZ, raya=ROJO, clara=CLARA, clip="c", grueso=7, fondo_aro=None):
if estilo == "aro":
defs = f'<clipPath id="{clip}"><circle cx="50" cy="50" r="42"/></clipPath>'
fondo = f'<circle cx="50" cy="50" r="47" fill="{fondo_aro}"/>' if fondo_aro else ""
dentro = f'<g clip-path="url(#{clip})">{luz_(luz, clara)}{torre(ink, papel)}</g>'
dentro = f'<g clip-path="url(#{clip})">{luz_(luz, clara)}{torre(ink, raya, clip)}</g>'
aro = f'<circle cx="50" cy="50" r="45" fill="none" stroke="{ink}" stroke-width="{grueso}"/>'
return defs + fondo + dentro + aro
# Pegatina: círculo amarillo, la luz en blanco
defs = f'<clipPath id="{clip}"><circle cx="50" cy="50" r="48"/></clipPath>'
return defs + f'<circle cx="50" cy="50" r="48" fill="{luz}"/><g clip-path="url(#{clip})">{luz_(papel, BL)}{torre(ink, luz)}</g>'
return defs + f'<circle cx="50" cy="50" r="48" fill="{luz}"/><g clip-path="url(#{clip})">{luz_(BL, BL)}{torre(ink, raya, clip)}</g>'
def svg(cuerpo, fondo=None):
bg = f'<rect width="100" height="100" fill="{fondo}"/>' if fondo else ""
@ -45,6 +45,6 @@ def simbolo_mapa():
if __name__ == "__main__":
d = sys.argv[1]
open(f"{d}/simbolo.svg", "w").write(svg(faro()))
open(f"{d}/simbolo-negativo.svg", "w").write(svg(faro(ink=BL, papel=INK), INK))
open(f"{d}/simbolo-naranja.svg", "w").write(svg(faro(luz=BL, papel=NAR, clara="#ffe2a8"), NAR))
open(f"{d}/simbolo-negativo.svg", "w").write(svg(faro(ink=BL), INK))
open(f"{d}/simbolo-naranja.svg", "w").write(svg(faro(luz=BL, raya=BL, ink=INK, clara="#ffe2a8"), NAR))
open(f"{d}/simbolo-pegatina.svg", "w").write(svg(faro("pegatina")))