Merge pull request #1236 from mitchellh/apple-emoji

Prefer Apple Emoji on macOS, don't crash on unknown Freetype error
This commit is contained in:
Mitchell Hashimoto
2024-01-05 21:48:00 -08:00
committed by GitHub
2 changed files with 17 additions and 1 deletions

View File

@ -94,6 +94,7 @@ pub const Error = error{
BbxTooBig, BbxTooBig,
CorruptedFontHeader, CorruptedFontHeader,
CorruptedFontGlyphs, CorruptedFontGlyphs,
UnknownFreetypeError,
}; };
pub fn intToError(err: c_int) Error!void { pub fn intToError(err: c_int) Error!void {
@ -188,7 +189,7 @@ pub fn intToError(err: c_int) Error!void {
c.FT_Err_Bbx_Too_Big => Error.BbxTooBig, c.FT_Err_Bbx_Too_Big => Error.BbxTooBig,
c.FT_Err_Corrupted_Font_Header => Error.CorruptedFontHeader, c.FT_Err_Corrupted_Font_Header => Error.CorruptedFontHeader,
c.FT_Err_Corrupted_Font_Glyphs => Error.CorruptedFontGlyphs, c.FT_Err_Corrupted_Font_Glyphs => Error.CorruptedFontGlyphs,
else => unreachable, else => Error.UnknownFreetypeError,
}; };
} }

View File

@ -410,6 +410,21 @@ pub fn init(
_ = try group.addFace(.bold_italic, .{ .deferred = face }); _ = try group.addFace(.bold_italic, .{ .deferred = face });
} else log.warn("font-family-bold-italic not found: {s}", .{family}); } else log.warn("font-family-bold-italic not found: {s}", .{family});
} }
// On macOS, always search for and add the Apple Emoji font
// as our preferred emoji font for fallback. We do this in case
// people add other emoji fonts to their system, we always want to
// prefer the official one. Users can override this by explicitly
// specifying a font-family for emoji.
if (comptime builtin.os.tag == .macos) {
var disco_it = try disco.discover(alloc, .{
.family = "Apple Color Emoji",
});
defer disco_it.deinit();
if (try disco_it.next()) |face| {
_ = try group.addFace(.regular, .{ .fallback_deferred = face });
}
}
} }
// Our built-in font will be used as a backup // Our built-in font will be used as a backup