Files
ddidderr e536b603b2 fix: inspector font/formatting, FreeType-only backend on Apple
Resolves the parity items of docs/rewrite/notes/review-rv17-codex.md
(final-Z20.md):
- FreeType-only font backend is also available on Apple targets
  (discovery-free, embedded emoji fonts); ghostty_surface_quicklook_font
  returns null for every backend except plain CoreText like Zig.
- The +list-fonts test keys off the font crate's selected backend
  (HAS_DISCOVERY), correct under feature unification and on Apple.
- Inspector font: 32 px rasterized with FreeType (dear-imgui freetype)
  like Ghostty; a new `visual-parity.sh inspector` scenario shows 0.031%
  differing pixels (hover highlight) vs the original on Linux. Windows,
  Apple and wasm keep stb_truetype at 32 px (registered as a deliberate
  deviation).
- Inspector DCS/APC descriptions follow Zig 0.15.2's formatting
  (checked by running Zig), incl. the terminal.Parser.Action prefix.
- The ImGui demo window appears only in dev-profile builds, mirroring
  Zig's .Debug-only gate.

Test Plan:
- cargo test --workspace --no-fail-fast (3582 passed)
- just check-macos (both, also with --features font-backend-freetype)
- scripts/visual-parity.sh inspector
2026-10-12 16:23:54 +02:00

1.8 KiB

Z20: RV17 P3 fixes (uncommitted)

  1. FreeType-only on Apple: ghostty-font/build.rs honours font-backend-freetype on every non-wasm target (coretext cfgs off, so the embedded-emoji fallback applies, as in Zig Discover == void); backend.rs OPTIONS and the harfbuzz-sys/coretext feature (now only for the coretext features, because the SDK headers are needed otherwise). New test selected_backend_matches_build_cfgs. ghostty_surface_quicklook_font now answers only for plain .coretext as in Zig (ghostty_font::face::quicklook_font_raw). scripts/macos-crosscheck.sh takes MACOS_CHECK_FEATURES; clippy passes on both Apple targets with and without the feature.
  2. cli/list_fonts.rs test follows ghostty_font::options.backend / HAS_DISCOVERY.
  3. Inspector: 32 px (FONT_SIZE), FreeType through dear-imgui-rs/freetype on non-Windows, non-Apple, non-wasm targets (registered deviation elsewhere: stb_truetype). setup lost its scale parameter (Zig has none). Visual check: new scenario scripts/visual-parity.sh inspector (ctrl+shift+i via xdotool, production build vs /usr/bin/ghostty 1.3.1). The window position differs between runs, so the tabs + table region was compared at the best-aligned offset (95,134): 0.031 % of pixels differ (max channel delta 14); the list rows differ only by the hover highlight (pointer position).
  4. DCS/APC descriptions follow Zig 0.15.2 printValue(any); prefix is terminal.Parser.Action (was parser.Parser.Action), checked by running Zig 0.15.2 ({ 36, 32 }, { } for empty slices).
  5. Demo window gate: ghostty_debug_build cfg from PROFILE == "debug" (ghostty-inspector/build.rs).
  6. Metal buffer: metal_layout::grown_buffer_bytes + test; DEVIANT_FIXES row 34 (commit bab49ee).