a73x

d9da3081

Read terminal font size from config

a73x   2026-04-09 06:51


diff --git a/src/font.zig b/src/font.zig
index a31de21..2281e0c 100644
--- a/src/font.zig
+++ b/src/font.zig
@@ -1,5 +1,5 @@
const std = @import("std");
const config = @import("config");
pub const config = @import("config");
const c = @cImport({
    @cInclude("fontconfig/fontconfig.h");
    @cInclude("ft2build.h");
@@ -45,10 +45,6 @@ pub fn lookupConfiguredFont(alloc: std.mem.Allocator) !FontLookup {
    return .{ .path = dup, .index = index };
}

pub fn lookupMonospace(alloc: std.mem.Allocator) !FontLookup {
    return lookupConfiguredFont(alloc);
}

pub const Glyph = struct {
    codepoint: u21,
    width: u32,
diff --git a/src/main.zig b/src/main.zig
index 88b9cbe..1b1f5ae 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -4,6 +4,7 @@ const pty = @import("pty");
const wayland_client = @import("wayland-client");
const renderer = @import("renderer");
const font = @import("font");
const config = font.config;

const c = @cImport({
    @cInclude("xkbcommon/xkbcommon-keysyms.h");
@@ -60,10 +61,10 @@ pub fn main() !void {

fn runTerminal(alloc: std.mem.Allocator) !void {
    // === font first, to know cell size ===
    var font_lookup = try font.lookupMonospace(alloc);
    var font_lookup = try font.lookupConfiguredFont(alloc);
    defer font_lookup.deinit(alloc);

    const font_size: u32 = 16;
    const font_size: u32 = config.font_size_px;
    var face = try font.Face.init(alloc, font_lookup.path, font_lookup.index, font_size);
    defer face.deinit();

@@ -903,10 +904,10 @@ test "rebuildRowInstances emits expected instances for a colored glyph row" {
    term.write("\x1b[31;44mA\x1b[0m");
    try term.snapshot();

    var lookup = try font.lookupMonospace(std.testing.allocator);
    var lookup = try font.lookupConfiguredFont(std.testing.allocator);
    defer lookup.deinit(std.testing.allocator);

    var face = try font.Face.init(std.testing.allocator, lookup.path, lookup.index, 16);
    var face = try font.Face.init(std.testing.allocator, lookup.path, lookup.index, config.font_size_px);
    defer face.deinit();

    var atlas = try font.Atlas.init(std.testing.allocator, 256, 256);
@@ -955,10 +956,10 @@ test "rebuildRowInstances replaces stale cached contents without layout dirtines
    term.write("\x1b[31;44mA\x1b[0m");
    try term.snapshot();

    var lookup = try font.lookupMonospace(std.testing.allocator);
    var lookup = try font.lookupConfiguredFont(std.testing.allocator);
    defer lookup.deinit(std.testing.allocator);

    var face = try font.Face.init(std.testing.allocator, lookup.path, lookup.index, 16);
    var face = try font.Face.init(std.testing.allocator, lookup.path, lookup.index, config.font_size_px);
    defer face.deinit();

    var atlas = try font.Atlas.init(std.testing.allocator, 256, 256);
@@ -1147,6 +1148,10 @@ test "clearConsumedDirtyFlags clears only consumed partial rows after successful
    try std.testing.expectEqualSlices(bool, &.{ false, false, false, false }, dirty_rows[0..]);
}

test "font module no longer exposes lookupMonospace compatibility wrapper" {
    try std.testing.expect(!@hasDecl(font, "lookupMonospace"));
}

const RowInstanceCache = struct {
    instances: std.ArrayListUnmanaged(renderer.Instance) = .empty,
    gpu_offset_instances: u32 = 0,
@@ -1446,11 +1451,11 @@ fn runDrawSmokeTest(alloc: std.mem.Allocator) !void {
    defer ctx.deinit();
    std.debug.print("vulkan context created\n", .{});

    // Load monospace font and create atlas
    var font_lookup = try font.lookupMonospace(alloc);
    // Load configured font and create atlas
    var font_lookup = try font.lookupConfiguredFont(alloc);
    defer font_lookup.deinit(alloc);

    const px_size: u32 = 16;
    const px_size: u32 = config.font_size_px;
    var face = try font.Face.init(alloc, font_lookup.path, font_lookup.index, px_size);
    defer face.deinit();