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…
fix(receta): el `.conf` de emoji que anuncié como pendiente ya lo trae fontconfig
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 = []