popup: replace FreeType renderer with PangoCairo

This commit is contained in:
2026-08-14 14:37:30 +09:00
parent 279b9230a4
commit 54355b8190
12 changed files with 349 additions and 266 deletions

View File

@@ -47,14 +47,20 @@ new SKK revision.
## Fonts
No font binaries are bundled. The daemon receives one to four font file paths
on its command line and tries them in that order; it does not discover fonts by
family name or directory contents. `font/PROVENANCE` retains the exact
checksums, source revisions, and license records for the three Noto faces that
were formerly stored in the repository.
on its command line, validates them, and registers them as Pango application
fonts. Pango shapes each complete string and selects glyph fallback from the
registered fonts and the normal system font set. Exact command-line file order
is deliberately not promised: preserving it would require a separate
Fontconfig policy alongside Pango's fallback. `font/PROVENANCE` retains the
exact checksums, source revisions, and license records for the three Noto faces
that were formerly stored in the repository.
The Docker renderer tests obtain their fonts from signed Arch packages rather
than the source checkout. On August 13, 2026 the tested package contract was:
than the source checkout. On August 14, 2026 the tested package contract was:
- `noto-fonts-emoji` `1:2.051-1`, providing
`/usr/share/fonts/noto/NotoColorEmoji.ttf` (SHA-256
`72a635cb3d2f3524c51620cdde406b217204e8a6a06c6a096ff8ed4b5fd6e27b`);
- `ttf-dejavu` `2.37+18+g9b5d1b2f-8`, providing
`/usr/share/fonts/TTF/DejaVuSans.ttf` (SHA-256
`6038a160b491e121c1f12c7bccb4a9c8730296e3adc1086a059404ed84b7451c`);
@@ -64,13 +70,14 @@ than the source checkout. On August 13, 2026 the tested package contract was:
and `/usr/share/fonts/TTF/Jigmo2.ttf` (SHA-256
`5da3582efe77e22073b86b3b86b556d7111148a76b957cfb53318a91da2efff0`).
Pacman validates the package checksums and repository signatures. DejaVu Sans
supplies ASCII and the monochrome U+1F600 outline in the tests; Jigmo supplies
Hangul and BMP CJK, and Jigmo2 supplies U+2000B. Their installed license files
are `/usr/share/licenses/ttf-dejavu/LICENSE` and
`/usr/share/licenses/ttf-jigmo/LICENSE.txt`; the packages identify their terms
as the DejaVu custom license and CC0 1.0, respectively. These packages are
test fixtures, not names or paths hard-coded into the daemon.
Pacman validates the package checksums and repository signatures. Noto Color
Emoji supplies the color and shaped-sequence coverage; DejaVu Sans supplies
ASCII, Jigmo supplies Hangul and BMP CJK, and Jigmo2 supplies U+2000B. Their
installed license files are `/usr/share/licenses/noto-fonts-emoji/LICENSE`,
`/usr/share/licenses/ttf-dejavu/LICENSE`, and
`/usr/share/licenses/ttf-jigmo/LICENSE.txt`. The packages identify their terms
as OFL-1.1-no-RFN, the DejaVu custom license, and CC0 1.0, respectively. These
packages are test fixtures, not names or paths hard-coded into the daemon.
## Git submodules