effectcraft/crates
DWAA1660 8cb120d0ec Text: fallback skips a font whose glyph for the character is empty (#285)
Face::has_char counted any non-zero cmap entry as coverage. Some fonts map
whole scripts to empty glyphs (a decorative Latin font installed on a Linux
machine maps あ, 水, ア and 。 to glyphs with no contours), so once such a
face was loaded, fallback_for could pick it and Japanese text rendered as
nothing; cjk_falls_back_to_a_system_family failed whenever another test had
loaded that face first.

has_char (and file_covers, used for faces not yet loaded) now also require
the glyph to draw something: an outline with at least one segment, a colour
glyph, or a bitmap in any strike. Characters that are blank by nature
(whitespace, and the default-ignorable code points such as soft hyphen,
joiners and variation selectors) still count as covered by any mapping.
Face::glyph is unchanged, so shaping with the chosen face is as before.

Test: an_empty_glyph_does_not_cover_its_character builds a minimal TrueType
font in code (no font file added to the repo) mapping U+E000 to an empty
glyph and U+E001 to a triangle, and checks has_char and fallback_for.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3vVft4VXvvy8SpbbUceTW
2026-10-08 16:48:13 +00:00
..
automation MCP: add_effect is one undo step and leaves nothing applied when it fails (#175) 2026-10-07 15:48:17 +07:00
av1enc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
color G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
effects Test: Fractal Noise's Soft Linear shows no lattice (#259) 2026-10-08 21:00:42 +07:00
engine Import: a 3D model doesn't ask how to interpret its alpha (#264) 2026-10-08 21:18:52 +07:00
export VP9: frames never end in a byte that reads as a superframe marker (#161) 2026-10-07 14:15:33 +07:00
expr Merge pull request #6 from storybored379/pr/expr-runtime-stack-leak 2026-10-05 12:10:53 +07:00
geom Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
gpu Effects: Fractal Noise's Soft Linear has no lattice creases (#259) 2026-10-08 21:00:42 +07:00
hevcenc Untrack crates/hevcenc/target (36 MB of build output) and ignore nested target/ 2026-10-06 15:02:20 -04:00
host Test: an imported GLB shows in a new composition in software (#264) 2026-10-08 20:45:07 +07:00
interchange Never crash: reject timeline documents nested too deeply 2026-10-04 14:05:57 -04:00
keyframe Keyframes: ease curves measure and apply the ease of a keyframe pair (#254) 2026-10-08 17:25:00 +07:00
lottie G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
media Media: conformed audio keeps its sound past 12:36 (#172) 2026-10-07 14:20:47 +07:00
model G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
opusenc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
path G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
pdf G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
plugin G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
project Project: new layers take their item's label colour (#153) 2026-10-07 13:32:40 +07:00
psd G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
raster G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
render Effects: Turbulent Displace displaces the whole layer, not one quadrant (#227) 2026-10-08 12:20:10 +07:00
script Scripting: script.run reports .jsxbin scripts as unsupported (#176) 2026-10-07 15:48:17 +07:00
segment G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
svg G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
text Text: fallback skips a font whose glyph for the character is empty (#285) 2026-10-08 16:48:13 +00:00
time Never crash: Tick and timecode arithmetic can't overflow or divide by zero 2026-10-04 14:20:33 -04:00
track G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
ui-egui Merge pull request #210 from jonassneu/fix/blank-panel-context-menus 2026-10-08 22:11:11 +07:00
vp9enc VP9: frames never end in a byte that reads as a superframe marker (#161) 2026-10-07 14:15:33 +07:00