tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

⎇ main recipes/noto-fonts-emoji.toml TOML · 77 líneas · 4.1 KB Historia crudo

fix(receta): el `.conf` de emoji que anuncié como pendiente ya lo trae fontconfig 0b1be3745 · Sergio ·

1# noto-fonts-emoji — los emoji. La tercera parte del hueco de fuentes.
2#
3# ══ POR QUÉ HACE FALTA, Y POR QUÉ NO LO TAPA `noto-fonts` ══════════════════════════════════════
4# Es un repositorio de Google distinto (`googlefonts/noto-emoji`) y no entra en el tarball mensual
5# de `notofonts.github.io`. Sin esto, cualquier texto con un emoji —un mensaje, un commit, el
6# nombre de una rama, media web— sale con el glifo de reemplazo. Medido con
7# `scripts/censo-distro.py` el 2026-10-19: la categoría «escritura del mundo» estaba 4/4 ausente.
8#
9# ══ UN FICHERO DE OCHO, Y CADA DESCARTE TIENE MOTIVO ═══════════════════════════════════════════
10# El repo trae ocho `.ttf` en `fonts/` y la diferencia entre ellos no es cosmética:
11#
12#   NotoColorEmoji.ttf                   10,2 MB  ← ÉSTE
13#   NotoColorEmoji_WindowsCompatible.ttf 10,2 MB   formato para el rasterizador de Windows
14#   NotoColorEmoji-emojicompat.ttf       10,4 MB   lleva los metadatos de EmojiCompat de Android
15#   NotoColorEmoji-noflags.ttf            9,4 MB   sin banderas (por política de tiendas de apps)
16#   NotoColorEmoji-flagsonly.ttf          0,8 MB   sólo banderas
17#   Noto-COLRv1.ttf / -noflags / -emojicompat    el perfil COLRv1 vectorial
18#
19# Se instala **`NotoColorEmoji.ttf`**: es CBDT/CBLC (bitmap incrustado), que es lo que FreeType
20# rasteriza en color sin ayuda. El COLRv1 es vectorial y más moderno, y **se descartó a propósito**:
21# necesita que el stack de texto sepa COLRv1, y esta distro tiene varios caminos de dibujo
22# distintos —Pango/cairo en GTK, Qt en KDE, llimphi/wgpu en las apps propias— que no se midieron.
23# Poner los dos invita a que cada toolkit elija uno y el mismo emoji se vea distinto según la app.
24#
25# ✅ NO HACE FALTA NINGÚN `.conf`, y lo escribí al revés antes de medirlo. Mi primera versión de
26# esta receta avisaba de que «un emoji no se ve sólo por estar la fuente: hace falta un `.conf` que
27# la ordene por delante, y esta receta no lo trae». **Falso, medido sobre el artefacto de
28# `fontconfig` del store:** sus configs de fábrica ya nombran esta familia exacta, las tres piezas
29# que hacen falta:
30#
31#   45-generic.conf                  alias `Noto Color Emoji` → la familia genérica `emoji`
32#   60-generic.conf                  `<prefer>` de `emoji` la pone PRIMERA, antes de Apple y Segoe
33#   70-no-bitmaps-except-emoji.conf  rechaza fuentes bitmap EXCEPTO las de emoji ← justo este caso,
34#                                    porque NotoColorEmoji es CBDT/CBLC, o sea bitmap incrustado
35#
36# ⇒ el fichero cae en `/usr/share/fonts` y fontconfig lo prefiere sin que nadie configure nada. La
37# lección es la de siempre acá: **mirar el artefacto antes de anunciar un pendiente.** Un pendiente
38# inventado manda a alguien a trabajar de gratis, igual que un hueco falso.
39#
40# Data-only: fontconfig escanea `/usr/share/fonts` recursivamente, igual que con `dejavu-fonts`.
41name    = "noto-fonts-emoji"
42version = "2.051"
43license = "OFL-1.1"
44
45[source]
46tarball = "https://github.com/googlefonts/noto-emoji/archive/v2.051/font-noto-emoji-2.051.tar.gz"
47sha256  = "04f3d1e5605edebebac00a7a0becb390a4a3ead015066905b27935b30c18e745"
48
49[build]
50compiler = "zig-cc"   # inerte: acá no se compila nada
51target   = "x86_64-linux-musl"
52link     = "dynamic"
53
54[build.phases]
55configure = "true"
56compile   = "true"
57# El tamaño mínimo es un guardián con número: el `.ttf` de color pesa ~10 MB, y si upstream moviera
58# el fichero y quedara otro en su sitio, un `cp` silencioso sellaría un artefacto que no sirve.
59install = '''
60set -e
61f=fonts/NotoColorEmoji.ttf
62if [ ! -f "$f" ]; then
63  echo "noto-fonts-emoji: no está $f — ¿cambió el árbol de upstream? NO sello un artefacto a medias" >&2
64  exit 1
65fi
66bytes=$(wc -c < "$f")
67if [ "$bytes" -lt 5000000 ]; then
68  echo "noto-fonts-emoji: $f pesa $bytes bytes, esperaba >5 MB — eso no es la fuente de color" >&2
69  exit 1
70fi
71mkdir -p /out/usr/share/fonts/noto-emoji
72cp "$f" /out/usr/share/fonts/noto-emoji/
73echo "noto-fonts-emoji: NotoColorEmoji.ttf instalado ($bytes bytes)"
74'''
75
76[deps]
77build = []