Text/font rendering — verified dependency and asset manifest (F0)¶
Status: these are real, downloaded-and-hashed artifacts, not fabricated values. Each SHA-256 below was computed from the archive/file actually fetched during implementation. Never change a hash without re-verifying against the upstream release.
Source pins¶
| Dependency | Version | Archive URL | SHA-256 | License |
|---|---|---|---|---|
| FreeType | 2.14.3 | https://download.savannah.gnu.org/releases/freetype/freetype-2.14.3.tar.xz | 36bc4f1cc413335368ee656c42afca65c5a3987e8768cc28cf11ba775e785a5f |
FTL (BSD-style) or GPLv2; used under FTL. docs/FTL.TXT in the archive. |
| HarfBuzz | 14.5.1 | https://github.com/harfbuzz/harfbuzz/releases/download/14.5.1/harfbuzz-14.5.1.tar.xz | 7e2fa4e8c7c98e8d8140671f5772542afaaa6acccfbd746506886b6d85f7f8d6 |
"Old MIT" (COPYING). |
Verified from the archives themselves:
freetype.h declares FREETYPE_MAJOR 2 / MINOR 14 / PATCH 3; HarfBuzz
meson.build declares version: '14.5.1' and hb-version.h defines
HB_VERSION_STRING "14.5.1".
glslang 15.4.0 is named in the design as the host SPIR-V compiler for the two Vulkan GLSL shaders. It is bootstrapped/used only in F3 (the Vulkan pipeline), which is pending in this environment (no GPU); no glslang hash is recorded yet because it is not yet wired into a build. It must be recorded with the same verify-before-use discipline when F3 is implemented.
Native dependency resolution (Conan 2)¶
- FreeType 2.14.3 is available on ConanCenter and is consumed through the normal
Conan bootstrap with the design option set:
shared=False,with_png=False,with_zlib=False,with_brotli=False,with_bzip2=False. Its own HarfBuzz-assisted auto-hinter is not enabled (FreeType is built first, HarfBuzz links it). - HarfBuzz 14.5.1 is not published on ConanCenter (newest recipe there is
12.3.0 at time of writing). Per the design, a small local recipe builds the
exact pinned source:
third_party/harfbuzz/conanfile.py. It uses HarfBuzz's own CMake build withHB_HAVE_FREETYPE=ON, built-in Unicode functions, andHB_HAVE_GLIB/ICU/GRAPHITE2/CAIRO/GOBJECT/INTROSPECTION=OFF,HB_BUILD_UTILS/SUBSET/RASTER/VECTOR/GPU=OFF. The recipe is exported into the project Conan cache byscripts/python/engine.py(export_local_recipes) before the lockfile is resolved. conan.lockpins:harfbuzz/14.5.1#e3623b9b9c8b255282b298619d005330andfreetype/2.14.3#4ee27b7918b546a96d7e6898e3a02b34.- The 4.0.23 Emscripten SDK port pins HarfBuzz 3.2.0 / FreeType 2.13.3, so the
bare
USE_HARFBUZZ/USE_FREETYPEweb ports are not used; the locked sources must be built separately for wasm (F0 web path — pending here, no Emscripten toolchain in this environment).
Post-build verification of the HarfBuzz package: hb-ft.h is present and the
archive exports hb_ft_font_create_referenced / hb_ft_font_set_load_flags
(FreeType integration ON); hb_subset_input_create is absent (subsetter OFF).
Fixture fonts¶
All fixtures are statically licensed under the SIL Open Font License 1.1 (OFL text checked in beside the fonts). No system-font or runtime-network assumption is made; tests load the packaged bytes directly.
| File | Origin | SHA-256 | License |
|---|---|---|---|
modules/text/tests/fixtures/NotoSans-Regular.ttf |
notofonts.github.io NotoSans hinted TTF (unmodified) | 478c558ea716033cd60c03438f628dfa75694dcf6b5f6d505a2f05fd2b4f3823 |
OFL 1.1 (OFL-NotoSans.txt) |
modules/text/tests/fixtures/NotoSansArabic-Regular.ttf |
notofonts.github.io NotoSansArabic hinted TTF (unmodified) | bdff3e5659d67e67def05b33f749683b9376ae819d65d3dd62ac4640b3aaef48 |
OFL 1.1 (OFL-NotoSansArabic.txt) |
modules/text/tests/fixtures/NotoSansKR-Subset-Regular.ttf |
Static subset of Google Fonts NotoSansKR[wght].ttf (instanced to wght=400, subset to the fixture syllables, GSUB/GPOS/GDEF retained) via make_hangul_fixture.py |
6ed5abe8fdd4727df1ba8fec4145a04cb8d4b14d48dac38c764cd3524939e4a9 |
OFL 1.1 (OFL-NotoSansKR.txt) |
The Hangul fixture is subset because upstream Noto Sans KR is only distributed as a large variable font; the design permits a reproducible subset that retains the shaping tables. Regenerate byte-reproducibly with fonttools 4.66.1:
out/host-tools/venv/bin/python modules/text/tests/fixtures/make_hangul_fixture.py \
<NotoSansKR[wght].ttf> modules/text/tests/fixtures/NotoSansKR-Subset-Regular.ttf
(The large variable source is not committed; the small static output is.)