filmcraft/crates
seif cfe0c751e9 #395: Arabic and Hebrew in the interface: fallback fonts, captions in reading order
The interface had no face for Arabic or Hebrew, so caption text, track and media names showed
missing-glyph boxes in the Text panel and on the timeline while the Program monitor drew them.
crates/ui-egui/src/rtl.rs adds the craft-fonts Arab / Hebr faces, else one installed face per
script (Noto Sans Arabic, SF Arabic, Segoe UI...), as the last fallbacks of every UI font family,
as cjk.rs does for Chinese.

egui already shapes each font run with harfrust, so the letters join, but it lays runs out left to
right with no bidi pass and multi-word Arabic read backwards. rtl::Lines lays captions out in
reading order: lines are broken on the logical text as egui wraps it, each line is reordered with
unicode-bidi (UAX #9, as crates/text does for titles) and every right-to-left word is its own
layout section for egui's shaper. Caption blocks on the timeline and the Text panel caption list
use it; a caption being edited keeps egui's logical order, since TextEdit places the caret by
character index. Left-to-right text is laid out exactly as before.
2026-10-11 13:14:30 -06:00
..
aac codecs: HE-AAC plays at its output rate; AAC export caps the bitrate (#108) 2026-10-06 22:28:30 -05:00
ac3 #647: decode E-AC-3 (Dolby Digital Plus) audio 2026-10-10 23:49:03 +02:00
apv Codecs: add clean-room APV (RFC 9924) decoder, encoder, container support, and export presets 2026-10-06 17:24:34 -04:00
audio-dsp Revert "Merge pull request #674 from vbasky/fix/542-limiter-lookahead" 2026-10-10 15:23:52 -04:00
automation #779: export JPEG, Targa and DPX image sequences 2026-10-10 23:51:41 +02:00
av1 Windows: skip AV1 oracle tests when ffmpeg lacks libsvtav1/libdav1d 2026-10-09 15:19:08 +01:00
bitstream Never crash: deny the panicking lints in the already-clean crates and apps 2026-10-04 16:08:23 -04:00
captions Captions: a TTML frame count that saturates the clock is rejected, not read as the end of time (#705 follow-up) 2026-10-10 15:24:43 -04:00
cfb CFB: bound the DIFAT and FAT chain walks by the file's own size 2026-10-10 17:34:16 +09:00
codecs #821: import Targa and DPX stills and image sequences 2026-10-11 00:58:15 +02:00
color Never crash: deny the panicking lints in the already-clean crates and apps 2026-10-04 16:08:23 -04:00
dnx Merge pull request #16 from storytold/pr/never-crash-codecs-small 2026-10-04 16:16:55 -04:00
edit Merge pull request #794 from impostazioni/fix/alt-drag-duplicate 2026-10-10 18:15:25 -04:00
engine Merge pull request #825 from vangel76/gap-aac-audio 2026-10-10 19:22:45 -04:00
export Merge remote-tracking branch 'upstream/main' into gap-aac-audio 2026-10-11 01:09:25 +02:00
format #620: Project Notes panel, saved in the project 2026-10-10 21:09:13 +02:00
frame #288: MP4 / MOV pictures are cropped as the file says (H.264 / HEVC cropping, clean aperture) 2026-10-10 00:50:03 +02:00
geom Never crash: deny the panicking lints in the already-clean crates and apps 2026-10-04 16:08:23 -04:00
golden GPU2: standard effects on the GPU compositor (#30) 2026-10-05 07:50:20 -04:00
gpu Merge pull request #761 from maccagnit/gpu-export-no-backend 2026-10-10 17:01:13 -04:00
h264 HW5: Linux VA-API H.264 hardware decoding (#30) 2026-10-09 08:35:57 +07:00
h264enc h264enc: CRF level fits its bitrate; stream records its settings 2026-10-10 17:09:05 +07:00
hevc HW5: Linux VA-API HEVC hardware decoding, Main and Main 10 (#30) 2026-10-09 09:00:30 +07:00
interchange Merge pull request #726 from Ni-zav/fix/edl-audio-transition-names-711-s20261010T1747Z-c64d9 2026-10-10 14:56:39 -04:00
isobmff #800: MP2 audio in MP4 and MOV decodes instead of playing silent 2026-10-11 00:26:39 +02:00
matroska #402: WebM transparency (VP9 alpha in BlockAdditions) 2026-10-10 17:40:58 +08:00
media #821: import Targa and DPX stills and image sequences 2026-10-11 00:58:15 +02:00
mpeg2v mpeg2v: seed_sweep derives its seeds without overflowing 2026-10-06 13:51:43 -04:00
mpegts #647: decode E-AC-3 (Dolby Digital Plus) audio 2026-10-10 23:49:03 +02:00
mxf #210 review: bound MXF reads by the file, keep legacy projects opening, allow 16K 2026-10-07 20:52:53 -04:00
ogg Containers: never crash — mpegts, ogg, mxf, matroska without expect/unreachable 2026-10-04 11:37:58 -04:00
opus Merge pull request #16 from storytold/pr/never-crash-codecs-small 2026-10-04 16:16:55 -04:00
platform UI.6: refresh shared UI integration against current main 2026-10-10 18:51:04 -06:00
project #813: masks round their corners (rounded rectangle masks) 2026-10-11 00:47:09 +02:00
prores Merge pull request #16 from storytold/pr/never-crash-codecs-small 2026-10-04 16:16:55 -04:00
render #805: Morph Cut morphs along optical flow instead of cross-dissolving 2026-10-11 00:32:08 +02:00
scopes Merge pull request #27 from storytold/pr/never-crash-clean-crates 2026-10-04 16:19:27 -04:00
speech M7.12: natural Text to Speech voices (Kokoro-82M in pure Rust) 2026-10-08 06:52:30 -07:00
testkit Clippy 1.99: fix new lints so `cargo xtask ci` is green again 2026-10-04 15:55:23 -04:00
text text: the CJK system-font search no longer keeps every probed font file in memory (#769) 2026-10-10 23:22:09 +02:00
time TIME.FRAME_NAVIGATION: Preserve exact frame steps and bound time arithmetic 2026-10-10 09:00:34 +10:00
tts M7.12: natural Text to Speech voices (Kokoro-82M in pure Rust) 2026-10-08 06:52:30 -07:00
tts-text tts-text: preserve numeric groups, percentage units and decimal money 2026-10-11 00:52:00 +07:00
ui-egui #395: Arabic and Hebrew in the interface: fallback fonts, captions in reading order 2026-10-11 13:14:30 -06:00
vp9 vp9: never crash — no unwrap/expect/panic in the decoder, deny them 2026-10-04 11:15:05 -04:00