From 13315471d76b110134e18e43e7f48749ec0407da Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 7 Jul 2023 09:08:46 -0700 Subject: [PATCH] renderer: double line widths for sprite fonts when font-thicken is true Fixes #193 --- src/renderer/Metal.zig | 4 ++-- src/renderer/OpenGL.zig | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/renderer/Metal.zig b/src/renderer/Metal.zig index 22b7835d8..40247a652 100644 --- a/src/renderer/Metal.zig +++ b/src/renderer/Metal.zig @@ -226,7 +226,7 @@ pub fn init(alloc: Allocator, options: renderer.Options) !Metal { options.font_group.group.sprite = font.sprite.Face{ .width = metrics.cell_width, .height = metrics.cell_height, - .thickness = 2, + .thickness = 2 * @as(u32, if (options.config.font_thicken) 2 else 1), .underline_position = metrics.underline_position, }; @@ -496,7 +496,7 @@ pub fn setFontSize(self: *Metal, size: font.face.DesiredSize) !void { self.font_group.group.sprite = font.sprite.Face{ .width = self.cell_size.width, .height = self.cell_size.height, - .thickness = 2, + .thickness = 2 * @as(u32, if (self.config.font_thicken) 2 else 1), .underline_position = metrics.underline_position, }; diff --git a/src/renderer/OpenGL.zig b/src/renderer/OpenGL.zig index 4bc0d796e..45251bdd2 100644 --- a/src/renderer/OpenGL.zig +++ b/src/renderer/OpenGL.zig @@ -302,7 +302,11 @@ pub fn init(alloc: Allocator, options: renderer.Options) !OpenGL { ); // Setup our font metrics uniform - const metrics = try resetFontMetrics(alloc, options.font_group); + const metrics = try resetFontMetrics( + alloc, + options.font_group, + options.config.font_thicken, + ); // Set our cell dimensions const pbind = try program.use(); @@ -639,7 +643,11 @@ pub fn setFontSize(self: *OpenGL, size: font.face.DesiredSize) !void { self.resetCellsLRU(); // Reset our GPU uniforms - const metrics = try resetFontMetrics(self.alloc, self.font_group); + const metrics = try resetFontMetrics( + self.alloc, + self.font_group, + self.config.font_thicken, + ); // Defer our GPU updates self.deferred_font_size = .{ .metrics = metrics }; @@ -670,6 +678,7 @@ pub fn setFontSize(self: *OpenGL, size: font.face.DesiredSize) !void { fn resetFontMetrics( alloc: Allocator, font_group: *font.GroupCache, + font_thicken: bool, ) !font.face.Metrics { // Get our cell metrics based on a regular font ascii 'M'. Why 'M'? // Doesn't matter, any normal ASCII will do we're just trying to make @@ -685,7 +694,7 @@ fn resetFontMetrics( font_group.group.sprite = font.sprite.Face{ .width = metrics.cell_width, .height = metrics.cell_height, - .thickness = 2, + .thickness = 2 * @as(u32, if (font_thicken) 2 else 1), .underline_position = metrics.underline_position, };