Manual Canvas2D Diagram Label Composition - barocss/barocss GitHub Wiki
Manual: decorate an ellipsized label while retaining full text
Existing tracking and dependencies
Planned composition subclaim under Manual #1247, not a new filter or duplicate Issue. Preserve active Unicode guide and procedural shader evidence. Native1371 rasterizeBrowserEllipsizedText and1372 outlineImageAsset provide reusable package operations; exact local adoption and public exports for BOTH are required before this guide runs. Current1370 path editor is an example, and its private control/history helpers are not library APIs.
Freeze one explicit Canvas source/profile, app-only paths and actual public signatures before code. Do not infer these APIs are present from native author completion. Existing Unicode helper and new ellipsis have different text policies: this composition is printable ASCII1..128, not an unproved Unicode ellipsis/shaping operation.
Actual user outcome and limits
Prepare an ellipsized label, register its original raster asset, construct a public GlyphRun and display the outline as a separate Sprite with hitMode:none. Match the actual label quad's local logical position/extent and parent transform; bitmap radius is physical image pixels, not an assumed logical-pixel value. Freeze measured DPR/backing/quad mapping before claiming alignment.
Original layout.text and semantic range0..text.length remain authority. Derived displayText/visibleTextEnd describe truncation only; the outlined Sprite does not replace text identity or steal the glyph hit. Radius1..8 stays within the original bitmap extent and can clip at borders. Neither operation supplies per-character caret geometry.
Saved native documents retain complete text/layout/assets/bytes. Font/width policy/preparation metadata cannot be reconstructed from pixels or claimed restored automatically. Keep semantic text, derived label/outline bitmaps and public file provenance separate.
One actual guide flow
One app-owned guide/example shows width-limited display and decoration, full semantic text and actual GlyphRun hit. Invalid width is refused with accepted label retained. Actual Save/fresh Open restores complete original text/layout/asset bytes without rerasterization; declared preparation status is unknown where not persisted. One affected docs build and navigation/browser/file flow, original failures and exact pins. No original producer replay, new package API, font/IME/device campaign, general text engine or publication claim.
Actual dependency availability — guide still planned
1371 is adoptedb3b305ef59ae7228a13ea1b8263960454ff04366 and1372 adopted8fc5d6c46776f750d1c3a4222e255aea5d6aaaf7. Their public exports are available and Manual received exact availability once. Freeze one actual sourceprofile after bothadoptions and the measured bitmap-to-logical quad before guidecode. Nativeproducerproof does not prove new guide alignment/hit/filebehavior; no producer replay is requested. Unicode guide1247 is separately adoptedd8564197 and proves in-memory Save/Restore, not physical fileOpen.