From d166c05edd5732b4eb2db907d18f14a2faff77a2 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 5 Aug 2026 13:55:19 -0700 Subject: [PATCH] font: handle missing CoreText display names CTFontCopyDisplayName can return null. --- pkg/macos/text/font.zig | 2 +- src/font/DeferredFace.zig | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/macos/text/font.zig b/pkg/macos/text/font.zig index ea37891f5..6fd2db21a 100644 --- a/pkg/macos/text/font.zig +++ b/pkg/macos/text/font.zig @@ -156,7 +156,7 @@ pub const Font = opaque { return @ptrFromInt(@intFromPtr(c.CTFontCopyFamilyName(@ptrCast(self)))); } - pub fn copyDisplayName(self: *Font) *foundation.String { + pub fn copyDisplayName(self: *Font) ?*foundation.String { return @ptrFromInt(@intFromPtr(c.CTFontCopyDisplayName(@ptrCast(self)))); } diff --git a/src/font/DeferredFace.zig b/src/font/DeferredFace.zig index 425f3c283..9a8124c96 100644 --- a/src/font/DeferredFace.zig +++ b/src/font/DeferredFace.zig @@ -184,7 +184,8 @@ pub fn name(self: DeferredFace, buf: []u8) ![]const u8 { .coretext_harfbuzz, .coretext_noshape, => if (self.ct) |ct| { - const display_name = ct.font.copyDisplayName(); + const display_name = ct.font.copyDisplayName() orelse + return self.familyName(buf); return display_name.cstringPtr(.utf8) orelse unsupported: { // "NULL if the internal storage of theString does not allow // this to be returned efficiently." In this case, we need