fix(block-cache): address PR211 review follow-ups
- expand_defn: dedup the <1px baseline LOD branch the same way the <5px greek branch does, so colour-split MTEXT no longer stacks N overlapping baselines (one per \C segment) over the same OBB. - sysfont: memoise canonical_family_name process-wide. resolve_font calls it once per word on the MTEXT measure hot path and Face::resolve re-runs it right after; the fontdb query + linear family scans were uncached. - dimension/multileader/table: reword the 6 fill_tris_low FIXMEs. They cited a stale line and the wrong consumer — these fills render on the top-level path (panic-safe .get().unwrap_or), not the block cache, so they cannot trip emit_wire's debug_assert. State the real status: latent f32-precision debt, not a crash. Also fix the mis-indented text-fill WireModel in dimension.rs. - tests: add a host-independent colour-split test (two \C segments in a block keep ≥2 distinct wire colours — guards the per-wire colour fix) and a TTF-gated UTM fill test (paired, non-zero fill_tris_low). Note the arial-style test's LFF-fallback limitation. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
a84da122f4
commit
a93271c1bd
6 changed files with 174 additions and 31 deletions
|
|
@ -755,9 +755,11 @@ pub fn tessellate_table(
|
|||
plinegen: true,
|
||||
vp_scissor: None,
|
||||
fill_tris,
|
||||
// FIXME: fill_tris_low left empty — needs double-single split to match
|
||||
// fill_tris. Any geometry from this path inside a block definition will
|
||||
// trip the debug_assert_eq! in emit_wire (block_cache.rs:1397).
|
||||
// fill_tris_low intentionally empty: this fill renders on the
|
||||
// top-level path, where consumers (face3d_gpu, xclip) treat a
|
||||
// short low half as all-zero, so it draws at f32 precision
|
||||
// (sub-metre error at UTM scale) — not a crash. Follow-up:
|
||||
// double-single-split via points_to_ds to match emit_wire.
|
||||
fill_tris_low: Vec::new(),
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue