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
This commit is contained in:
1 parent
5ab6dba4a4
commit
132f7c27ba
18 files changed
+267
-83
No files matched your search
@@ -134,20 +134,28 @@ pub fn run(args: &[impl AsRef<[u8]>]) -> Result<u8, Error> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
/// Keyed off the font crate's actually selected backend, not this
|
||||
/// crate's own feature flag: cargo feature unification can enable
|
||||
/// `ghostty-font/font-backend-freetype` without the CLI forwarding
|
||||
/// feature, and on Apple targets the default backend (CoreText) has
|
||||
/// discovery.
|
||||
///
|
||||
/// Without a discovery mechanism (the `freetype` font backend, Zig
|
||||
/// `Discover == void`) `+list-fonts` prints the compile-time-option
|
||||
/// message and exits with 1, after parsing the arguments.
|
||||
#[cfg(feature = "font-backend-freetype")]
|
||||
#[test]
|
||||
fn freetype_backend_reports_no_discovery() {
|
||||
const { assert!(!ghostty_font::HAS_DISCOVERY) };
|
||||
assert_eq!(super::run(&[] as &[&[u8]]).expect("run"), 1);
|
||||
assert!(super::NO_DISCOVERY_MESSAGE.ends_with("try again."));
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "font-backend-freetype"))]
|
||||
#[test]
|
||||
fn default_backend_has_discovery() {
|
||||
const { assert!(ghostty_font::HAS_DISCOVERY) };
|
||||
fn discovery_presence_follows_selected_backend() {
|
||||
let backend = ghostty_font::options.backend;
|
||||
assert_eq!(
|
||||
ghostty_font::HAS_DISCOVERY,
|
||||
backend.has_fontconfig() || backend.has_coretext()
|
||||
);
|
||||
if ghostty_font::HAS_DISCOVERY {
|
||||
assert_ne!(backend, ghostty_font::Backend::Freetype);
|
||||
} else {
|
||||
assert_eq!(backend, ghostty_font::Backend::Freetype);
|
||||
assert_eq!(super::run(&[] as &[&[u8]]).expect("run"), 1);
|
||||
assert!(super::NO_DISCOVERY_MESSAGE.ends_with("try again."));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user