| Pango 1.56.1 for mcpp — three members, each exposing a C++23 module The package the index said was blocked. gnome.gio landed, so the gate is open: PangoFontMap declares G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL, …), and the type cannot even register without it. The test asserts that at RUN TIME rather than taking the build's word for it. gnome.pango itemisation, bidi, line breaking, markup 851 exports gnome.pangoft2 fontconfig picks the file, FreeType draws 88 gnome.pangocairo the cairo backend 284 WHY A FORK: generators, not line count. Pango has three and this adds a fourth (the module wrapper), so the tree carries no sh and no python. ⚠️ config.h is the odd one: upstream writes configure_file(output: 'config.h') with NO input template, so meson emits a #define per key and there is nothing to substitute into. The file is WRITTEN, and every value in it is a decision. Two are arithmetic — PANGO_BINARY_AGE = minor*100+micro, PANGO_INTERFACE_AGE = minor odd ? 0 : micro — and pango_version_check reads the first, so a wrong value makes a correct comparison answer wrongly at run time. ⭐ ONE TEST PRODUCES PIXELS. pangocairo renders "Hello 世界" to an ARGB32 surface and counts non-transparent pixels: 1,492 here. Reaching that costs seven packages, and a blank image means one of them is not doing its job. It degrades HONESTLY when the runner has no fonts — that case is reported, not passed over, because "0 families so the check did not run" and "the text rendered" must not look alike. ⚠️ A SILENT DEGRADATION THIS FORK WALKED INTO. HAVE_CAIRO_FREETYPE was dropped from config.h by an editing slip. Nothing failed to build. pangocairo simply registered NO backends and died at run time: Pango-CRITICAL: Unknown $PANGOCAIRO_BACKEND value. Available backends are: <- an empty list then segfaulted. The test now reads the font map's FONT TYPE and requires CAIRO_FONT_TYPE_FT, which is the assertion that catches it immediately. ⚠️ freedesktop.cairo's module is NOT sufficient on its own — measured on 1.18.2: 470 names, ZERO enumerators (no CAIRO_FORMAT_ARGB32, no CAIRO_FONT_TYPE_FT) and no cairo_t. The index's own cairo example does not notice because it writes BOTH #include <cairo.h> and import freedesktop.cairo;. pangocairo cannot mix the routes — pangocairo.h reaches glib and therefore <stdio.h>, so struct _IO_FILE becomes two entities — so gnome.pangocairo scans cairo.h itself. That line can go when cairo is fixed. Six tests (three members × two routes), green on gcc 16.1 and llvm 22.1. | 1 个月前 |