Pin isolated ligature evaluators to licensed Noto Sans fixture

This commit is contained in:
2026-09-13 04:31:01 -07:00
parent 11c605f917
commit 4c9bc87e4e
6 changed files with 172 additions and 11 deletions
@@ -12,9 +12,15 @@ The relevant pinned sources are `iced_graphics 0.14.0/src/text.rs:202–256` (me
## Font and execution limitations
These fixtures use the installed system default font selection; they do **not** pin font bytes. The strong ligature, supported-glyph, shared-cluster and bidi preconditions must fail visibly if the local font environment cannot exercise the intended case. RTL cases print resolved font IDs, PostScript names and family records from the actual Paragraph. Font IDs are process-local and these names are diagnostic metadata, not a portable content hash. No global font mutation or new dependency is introduced. A missing precondition is an evaluator/environment finding, not proof that field geometry passed.
At source 11c605f9170eae461913410f83f333e9314714a5, the isolated harness compiled and its default-test diagnostic reported 21 passed, two failed and two ignored. The intended first listing accidentally executed tests; a later literal listing reported all 25. A separate serial normal run reproduced the same two failures before either reached field_layout: the host font did not meet the tests' exact ffi-cluster preconditions. No actual face identity was captured for those failed cases, so the failure must not be attributed to a guessed family. Parent-owned closed runner receipts are the execution authority; this note does not turn the failed diagnostic into a passing gate.
There are twelve normal field tests and one ignored diagnostic in the new module; all remain **UNEXECUTED** at this handoff. Existing label evaluators are retained. Because the parent module remains unwired, ordinary desktop listing does not include these tests until an explicitly isolated evaluator harness wires it. Formatting and `git diff --check` are source checks only, not compilation or execution evidence.
The correction uses an unmodified, byte-pinned Noto Sans fixture from cosmic-text 0.15.0 for exactly those two tests; see [fixture source, hashes and license](../../../crates/oa-desktop/src/behavior/scenario_label/fixtures/README.md). Standard liga contains the required ffi substitution. Each test verifies the actual Paragraph face bytes and retains its positive nonzero ffi-cluster precondition. The partial-field case compares the complete shared rectangle; the Auto case also requires three initial Basic clusters followed by the actual Advanced final-buffer rectangle set. Neither infers successful geometry merely from a shaping enum.
The two fixture-loading tests are ignored by default because their isolated setup replaces the global font database. Run each as the sole exact test in a fresh process: --ignored --exact <actual-listed-name> --nocapture --test-threads=1. Do not run all ignored tests together. This prevents ordinary/default parallel test execution from invalidating render sessions. Their leaf names are advanced_ligature_partial_field_uses_whole_shared_cluster_not_fraction and auto_ascii_to_ellipsis_advanced_transition_uses_final_buffer. The existing font-load invalidation test remains separately isolated.
Other cases retain installed system-font selection and explicit font/cluster/coverage preconditions. RTL font IDs, PostScript names and family records are diagnostic metadata, not portable content hashes. No new dependency or production font policy is introduced. A missing precondition remains an evaluator/environment finding, not a geometry pass.
After this correction the field module contains ten normal tests and three ignored tests (two isolated ligature cases plus the lookup diagnostic). Across the parent label module the intended inventory remains 25, now 21 normal and four ignored. The corrected source is **UNEXECUTED** at handoff. The parent module remains unwired; ordinary desktop listing does not include it without the isolated evaluator harness. Source review is not compilation or execution evidence.
## Optional bounded lookup diagnostic