diff --git a/src/build/SharedDeps.zig b/src/build/SharedDeps.zig index 1864d4fb5..4aea66366 100644 --- a/src/build/SharedDeps.zig +++ b/src/build/SharedDeps.zig @@ -520,6 +520,14 @@ pub fn add( "jetbrains_mono_bold_italic", .{ .root_source_file = jb_mono.path("fonts/ttf/JetBrainsMono-BoldItalic.ttf") }, ); + step.root_module.addAnonymousImport( + "jetbrains_mono_variable", + .{ .root_source_file = jb_mono.path("fonts/variable/JetBrainsMono[wght].ttf") }, + ); + step.root_module.addAnonymousImport( + "jetbrains_mono_variable_italic", + .{ .root_source_file = jb_mono.path("fonts/variable/JetBrainsMono-Italic[wght].ttf") }, + ); // Symbols-only nerd font const nf_symbols = b.dependency("nerd_fonts_symbols_only", .{}); diff --git a/src/font/SharedGridSet.zig b/src/font/SharedGridSet.zig index c3e1ef964..b77b44f23 100644 --- a/src/font/SharedGridSet.zig +++ b/src/font/SharedGridSet.zig @@ -260,36 +260,42 @@ fn collection( .regular, .{ .fallback_loaded = try .init( self.font_lib, - font.embedded.regular, + font.embedded.variable, load_options.faceOptions(), ) }, ); - _ = try c.add( + try (try c.getFace(try c.add( self.alloc, .bold, .{ .fallback_loaded = try .init( self.font_lib, - font.embedded.bold, + font.embedded.variable, load_options.faceOptions(), ) }, + ))).setVariations( + &.{.{ .id = .init("wght"), .value = 700 }}, + load_options.faceOptions(), ); _ = try c.add( self.alloc, .italic, .{ .fallback_loaded = try .init( self.font_lib, - font.embedded.italic, + font.embedded.variable_italic, load_options.faceOptions(), ) }, ); - _ = try c.add( + try (try c.getFace(try c.add( self.alloc, .bold_italic, .{ .fallback_loaded = try .init( self.font_lib, - font.embedded.bold_italic, + font.embedded.variable_italic, load_options.faceOptions(), ) }, + ))).setVariations( + &.{.{ .id = .init("wght"), .value = 700 }}, + load_options.faceOptions(), ); // Nerd-font symbols fallback. diff --git a/src/font/embedded.zig b/src/font/embedded.zig index 6116c6921..1e496075d 100644 --- a/src/font/embedded.zig +++ b/src/font/embedded.zig @@ -6,14 +6,18 @@ //! redistribution and include their license as necessary. /// Default fonts that we prefer for Ghostty. +pub const variable = @embedFile("jetbrains_mono_variable"); +pub const variable_italic = @embedFile("jetbrains_mono_variable_italic"); + +/// Symbols-only nerd font. +pub const symbols_nerd_font = @embedFile("nerd_fonts_symbols_only"); + +/// Static jetbrains mono faces, currently unused. pub const regular = @embedFile("jetbrains_mono_regular"); pub const bold = @embedFile("jetbrains_mono_bold"); pub const italic = @embedFile("jetbrains_mono_italic"); pub const bold_italic = @embedFile("jetbrains_mono_bold_italic"); -/// Symbols-only nerd font. -pub const symbols_nerd_font = @embedFile("nerd_fonts_symbols_only"); - /// Emoji fonts pub const emoji = @embedFile("res/NotoColorEmoji.ttf"); pub const emoji_text = @embedFile("res/NotoEmoji-Regular.ttf"); @@ -22,7 +26,6 @@ pub const emoji_text = @embedFile("res/NotoEmoji-Regular.ttf"); /// Fonts with general properties pub const arabic = @embedFile("res/KawkabMono-Regular.ttf"); -pub const variable = @embedFile("res/Lilex-VF.ttf"); /// A font for testing which is patched with nerd font symbols. pub const test_nerd_font = @embedFile("res/JetBrainsMonoNerdFont-Regular.ttf");