aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/font/main.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/src/font/main.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/src/font/main.zig')
-rw-r--r--vendor/libghostty-vt/src/font/main.zig82
1 files changed, 82 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/src/font/main.zig b/vendor/libghostty-vt/src/font/main.zig
new file mode 100644
index 00000000..a8522afe
--- /dev/null
+++ b/vendor/libghostty-vt/src/font/main.zig
@@ -0,0 +1,82 @@
+const std = @import("std");
+const builtin = @import("builtin");
+const build_config = @import("../build_config.zig");
+
+const library = @import("library.zig");
+
+pub const Atlas = @import("Atlas.zig");
+pub const Backend = @import("backend.zig").Backend;
+pub const discovery = @import("discovery.zig");
+pub const embedded = @import("embedded.zig");
+pub const face = @import("face.zig");
+pub const CodepointMap = @import("CodepointMap.zig");
+pub const CodepointResolver = @import("CodepointResolver.zig");
+pub const Collection = @import("Collection.zig");
+pub const DeferredFace = @import("DeferredFace.zig");
+pub const Face = face.Face;
+pub const Glyph = @import("Glyph.zig");
+pub const Metrics = @import("Metrics.zig");
+pub const opentype = @import("opentype.zig");
+pub const shape = @import("shape.zig");
+pub const Shaper = shape.Shaper;
+pub const ShaperCache = shape.Cache;
+pub const SharedGrid = @import("SharedGrid.zig");
+pub const SharedGridSet = @import("SharedGridSet.zig");
+pub const sprite = @import("sprite.zig");
+pub const Sprite = sprite.Sprite;
+pub const SpriteFace = sprite.Face;
+pub const Descriptor = discovery.Descriptor;
+pub const Discover = discovery.Discover;
+pub const Library = library.Library;
+
+// If we're targeting wasm then we export some wasm APIs.
+comptime {
+ if (builtin.target.cpu.arch.isWasm()) {
+ _ = Atlas.Wasm;
+ _ = DeferredFace.Wasm;
+ _ = face.web_canvas.Wasm;
+ _ = shape.web_canvas.Wasm;
+ }
+}
+
+/// Build options
+pub const options: struct {
+ backend: Backend,
+} = .{
+ // TODO: we need to modify the build config for wasm builds. the issue
+ // is we're sharing the build config options between all exes in build.zig.
+ // We need to construct it per target.
+ .backend = if (builtin.target.cpu.arch.isWasm()) .web_canvas else build_config.font_backend,
+};
+
+/// The styles that a family can take.
+pub const Style = enum(u3) {
+ regular = 0,
+ bold = 1,
+ italic = 2,
+ bold_italic = 3,
+};
+
+/// The presentation for an emoji.
+pub const Presentation = enum(u1) {
+ text = 0, // U+FE0E
+ emoji = 1, // U+FEOF
+};
+
+/// A FontIndex that can be used to use the sprite font directly.
+pub const sprite_index = Collection.Index.initSpecial(.sprite);
+
+/// The default font size adjustment we use when loading fallback fonts.
+///
+/// TODO: Add user configuration for this instead of hard-coding it.
+pub const default_fallback_adjustment: Collection.SizeAdjustment = .ic_width;
+
+test {
+ // For non-wasm we want to test everything we can
+ if (!comptime builtin.target.cpu.arch.isWasm()) {
+ @import("std").testing.refAllDecls(@This());
+ return;
+ }
+
+ _ = Atlas;
+}