mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00

This is a big'un. - **Glyph constraint logic is now done fully on the CPU** at the rasterization stage, so it only needs to be done once per glyph instead of every frame. This also lets us eliminate padding between glyphs on the atlas because we're doing nearest-neighbor sampling instead of interpolating-- which ever so slightly increases our packing efficiency. - **Special constraints for nerd font glyphs** are applied based roughly on the constraints they use in their patcher. It's a simplification of what they do, the largest difference being that they scale groups of glyphs based on a shared bounding box so that they maintain relative size to one another, but that would require loading all glyphs on the group and I'd want to do that on font load TBH and at that point I'd basically be re-implementing the nerd fonts patcher in Zig to patch fonts at load time which is way beyond the scope I want to have. (Fixes #7069) - These constraints allow for **perfectly sized and centered emojis**, this is very nice. - **Changed the default embedded fonts** from 4 copies (regular, italic, bold, bold italic) of a patched (and outdated) JetBrains Mono to a single JetBrains Mono variable font and a single Nerd Fonts Symbols Only font. This cuts the weight of those down from 9MB to 3MB! - **FreeType's `renderGlyph` is significantly reworked**, and the new code is, IMO, much cleaner- although there are probably some edge case behavior differences I've introduced. > [!NOTE] > One breaking change I definitely introduced is changing the `monochrome` freetype load flag config from its previous completely backwards meaning to instead the correct one (I also changed the default, so this won't affect any user who hasn't touched it, but users who set the `monochrome` flag will find their fonts quite crispy after this change because they will have no anti-aliasing anymore) ### Future work Following this change I want to get to work on automatic font size matching (a la CSS [`font-size-adjust`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-size-adjust)). I set the stage for that quite some time ago so it shouldn't be too much work and it will be a big benefit for users who regularly use multiple writing systems and so have multiple fonts for them that aren't necessarily size-compatible.
121 lines
5.5 KiB
Zig
121 lines
5.5 KiB
Zig
.{
|
|
.name = .ghostty,
|
|
.version = "1.1.4",
|
|
.paths = .{""},
|
|
.fingerprint = 0x64407a2a0b4147e5,
|
|
.dependencies = .{
|
|
// Zig libs
|
|
|
|
.libxev = .{
|
|
// mitchellh/libxev
|
|
.url = "https://github.com/mitchellh/libxev/archive/75a10d0fb374e8eb84948dcfc68d865e755e59c2.tar.gz",
|
|
.hash = "libxev-0.0.0-86vtcyMBEwA-UpcjfOICyI2GYG8o6MiRbinS1_8g1_rw",
|
|
.lazy = true,
|
|
},
|
|
.vaxis = .{
|
|
// rockorager/libvaxis
|
|
.url = "git+https://github.com/rockorager/libvaxis#1f41c121e8fc153d9ce8c6eb64b2bbab68ad7d23",
|
|
.hash = "vaxis-0.1.0-BWNV_FUICQAFZnTCL11TUvnUr1Y0_ZdqtXHhd51d76Rn",
|
|
.lazy = true,
|
|
},
|
|
.z2d = .{
|
|
// vancluever/z2d
|
|
.url = "https://github.com/vancluever/z2d/archive/8bbd035f4101f02b1d27947def0d7da3215df7fe.tar.gz",
|
|
.hash = "z2d-0.7.0-j5P_Hg_DDACq-2H2Zh7rAq6_TXWdQzv7JAUfnrdeDosg",
|
|
.lazy = true,
|
|
},
|
|
.zig_objc = .{
|
|
// mitchellh/zig-objc
|
|
.url = "https://github.com/mitchellh/zig-objc/archive/c9e917a4e15a983b672ca779c7985d738a2d517c.tar.gz",
|
|
.hash = "zig_objc-0.0.0-Ir_SpwsPAQBJgi9YRm2ubJMfdoysSq5gKpsIj3izQ8Zk",
|
|
.lazy = true,
|
|
},
|
|
.zig_js = .{
|
|
// mitchellh/zig-js
|
|
.url = "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz",
|
|
.hash = "N-V-__8AAB9YCQBaZtQjJZVndk-g_GDIK-NTZcIa63bFp9yZ",
|
|
.lazy = true,
|
|
},
|
|
.ziglyph = .{
|
|
.url = "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz",
|
|
.hash = "ziglyph-0.11.2-AAAAAHPtHwB4Mbzn1KvOV7Wpjo82NYEc_v0WC8oCLrkf",
|
|
.lazy = true,
|
|
},
|
|
.zig_wayland = .{
|
|
// codeberg ifreund/zig-wayland
|
|
.url = "https://codeberg.org/ifreund/zig-wayland/archive/f3c5d503e540ada8cbcb056420de240af0c094f7.tar.gz",
|
|
.hash = "wayland-0.4.0-dev-lQa1kjfIAQCmhhQu3xF0KH-94-TzeMXOqfnP0-Dg6Wyy",
|
|
},
|
|
.zf = .{
|
|
// natecraddock/zf
|
|
.url = "https://github.com/natecraddock/zf/archive/7aacbe6d155d64d15937ca95ca6c014905eb531f.tar.gz",
|
|
.hash = "zf-0.10.3-OIRy8aiIAACLrBllz0zjxaH0aOe5oNm3KtEMyCntST-9",
|
|
.lazy = true,
|
|
},
|
|
.gobject = .{
|
|
// https://github.com/jcollie/ghostty-gobject based on zig_gobject
|
|
// Temporary until we generate them at build time automatically.
|
|
.url = "https://github.com/jcollie/ghostty-gobject/releases/download/0.14.0-2025-03-18-21-1/ghostty-gobject-0.14.0-2025-03-18-21-1.tar.zst",
|
|
.hash = "gobject-0.2.0-Skun7IWDlQAOKu4BV7LapIxL9Imbq1JRmzvcIkazvAxR",
|
|
.lazy = true,
|
|
},
|
|
|
|
// C libs
|
|
.cimgui = .{ .path = "./pkg/cimgui", .lazy = true },
|
|
.fontconfig = .{ .path = "./pkg/fontconfig", .lazy = true },
|
|
.freetype = .{ .path = "./pkg/freetype", .lazy = true },
|
|
.gtk4_layer_shell = .{ .path = "./pkg/gtk4-layer-shell", .lazy = true },
|
|
.harfbuzz = .{ .path = "./pkg/harfbuzz", .lazy = true },
|
|
.highway = .{ .path = "./pkg/highway", .lazy = true },
|
|
.libintl = .{ .path = "./pkg/libintl", .lazy = true },
|
|
.libpng = .{ .path = "./pkg/libpng", .lazy = true },
|
|
.macos = .{ .path = "./pkg/macos", .lazy = true },
|
|
.oniguruma = .{ .path = "./pkg/oniguruma", .lazy = true },
|
|
.opengl = .{ .path = "./pkg/opengl", .lazy = true },
|
|
.sentry = .{ .path = "./pkg/sentry", .lazy = true },
|
|
.simdutf = .{ .path = "./pkg/simdutf", .lazy = true },
|
|
.utfcpp = .{ .path = "./pkg/utfcpp", .lazy = true },
|
|
.wuffs = .{ .path = "./pkg/wuffs", .lazy = true },
|
|
.zlib = .{ .path = "./pkg/zlib", .lazy = true },
|
|
|
|
// Shader translation
|
|
.glslang = .{ .path = "./pkg/glslang", .lazy = true },
|
|
.spirv_cross = .{ .path = "./pkg/spirv-cross", .lazy = true },
|
|
|
|
// Wayland
|
|
.wayland = .{
|
|
.url = "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz",
|
|
.hash = "N-V-__8AAKrHGAAs2shYq8UkE6bGcR1QJtLTyOE_lcosMn6t",
|
|
.lazy = true,
|
|
},
|
|
.wayland_protocols = .{
|
|
.url = "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz",
|
|
.hash = "N-V-__8AAKw-DAAaV8bOAAGqA0-oD7o-HNIlPFYKRXSPT03S",
|
|
.lazy = true,
|
|
},
|
|
.plasma_wayland_protocols = .{
|
|
.url = "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz",
|
|
.hash = "N-V-__8AAKYZBAB-CFHBKs3u4JkeiT4BMvyHu3Y5aaWF3Bbs",
|
|
.lazy = true,
|
|
},
|
|
|
|
// Fonts
|
|
.jetbrains_mono = .{
|
|
.url = "https://deps.files.ghostty.org/JetBrainsMono-2.304.tar.gz",
|
|
.hash = "N-V-__8AAIC5lwAVPJJzxnCAahSvZTIlG-HhtOvnM1uh-66x",
|
|
},
|
|
.nerd_fonts_symbols_only = .{
|
|
.url = "https://deps.files.ghostty.org/NerdFontsSymbolsOnly-3.4.0.tar.gz",
|
|
.hash = "N-V-__8AAMVLTABmYkLqhZPLXnMl-KyN38R8UVYqGrxqO26s",
|
|
},
|
|
|
|
// Other
|
|
.apple_sdk = .{ .path = "./pkg/apple-sdk" },
|
|
.iterm2_themes = .{
|
|
.url = "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/6fa671fdc1daf1fcfa025cb960ffa3e7373a2ed8.tar.gz",
|
|
.hash = "N-V-__8AAGHcWgTaKLjwmFkxToNT4jgz5VXUHR7hz8TQ2_AS",
|
|
.lazy = true,
|
|
},
|
|
},
|
|
}
|