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