From 9941440f4714beb491cd511d5b5e0a446541afb6 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 23 Aug 2024 20:20:32 -0700 Subject: [PATCH] font: bold italic fallback has to avoid nested alias entry --- src/font/Collection.zig | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/font/Collection.zig b/src/font/Collection.zig index 18a236629..2a8368053 100644 --- a/src/font/Collection.zig +++ b/src/font/Collection.zig @@ -282,7 +282,25 @@ pub fn completeStyles(self: *Collection, alloc: Allocator) CompleteError!void { const bold_italic_list = self.faces.getPtr(.bold_italic); if (bold_italic_list.count() == 0) { log.warn("bold italic style not available, using italic font", .{}); - try bold_italic_list.append(alloc, .{ .alias = italic_list.at(0) }); + + // Nested alias isn't allowed so if the italic entry is an + // alias then we use the aliased entry. + const italic_entry = italic_list.at(0); + switch (italic_entry.*) { + .alias => |v| try bold_italic_list.append( + alloc, + .{ .alias = v }, + ), + + .loaded, + .fallback_loaded, + .deferred, + .fallback_deferred, + => try bold_italic_list.append( + alloc, + .{ .alias = italic_entry }, + ), + } } }