diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-04-04 19:22:04 +0300 |
|---|---|---|
| committer | Can Celik <ogulcancelik@gmail.com> | 2026-04-05 01:23:06 +0300 |
| commit | 41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch) | |
| tree | 3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/src/font/main.zig | |
| parent | 55c138263e190a1e79d4b997bfb9397306c0ec1f (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.zig | 82 |
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; +} |
