SplitShot 1.0.5 fixes a critical regression where exported video overlays rendered unreadable tofu boxes instead of text.
tl;dr - F*ck Fonts bro
What
- Fixed exported overlay text rendering as tofu on Windows. The root cause was that the Qt offscreen platform plugin skips DirectWrite font enumeration on Windows, leaving every font request with zero glyph data regardless of the family name requested. The fix lets Qt use its native
windowsplatform plugin for export rendering, which properly initializes the DirectWrite font database. - Added explicit Windows font family constants (
font_policy.py) and routed all overlay Qt text through a shared font resolver that uses Windows-safe families (Segoe UI,Arial,Verdana,Tahoma,Trebuchet MSfor sans-serif;Consolas,Courier New,Lucida Consolefor monospace;Georgia,Cambria,Times New Romanfor serif). - Aligned browser preview font stacks in
app.jswith the same Windows-safe families so the live preview matches the exported output. - Prepended
Segoe UIandConsolasto the CSS body and monospace font stacks so the entire application UI renders with real Windows fonts instead of falling through unrecognized Apple-specific keywords. - Added a Windows OCR proof gate that runs Tesseract against the bottom half of the exported Clip1 video frame to verify overlay text is human-readable, preventing future font regressions on Windows CI.
Why
Windows exports could produce a valid MP4 file whose overlay text was unreadable tofu (□ boxes) because Qt had no font glyph data to render. Multiple approaches were attempted — explicit font families, system-font fallback, Helvetica aliasing — but none worked because they all assumed the font database was populated. The offscreen platform plugin was the systemic blocker, and no amount of font-name tuning could compensate for a completely empty font database.