Ziggified FreeType 2 bindings that Mach engine uses, with zero-fuss installation, cross compilation, and more.
This repository is a separate copy of the same library in the main Mach repository, and is automatically kept in sync, so that anyone can use this library in their own project / engine if they like!
Just as with Mach, you get zero fuss installation & cross compilation using these Freetype bindings. only zig
and git
are needed to build from any OS and produce binaries for every OS. No system dependencies at all.
In a libs
subdirectory of the root of your project:
git clone https://github.com/hexops/mach-freetype
Then in your build.zig
add:
...
const freetype = @import("libs/mach-freetype/build.zig");
pub fn build(b: *Builder) void {
...
exe.addPackage(freetype.pkg);
freetype.link(b, exe, .{});
}
and optionaly add harfbuzz:
exe.addPackage(freetype.harfbuzz_pkg);
freetype.link(b, exe, .{ .harfbuzz = .{} });
gyro add --src github hexops/mach-freetype --root src/main.zig --alias freetype
gyro add --build-dep --src github hexops/mach-freetype --root build.zig --alias build-freetype
Then in your build.zig
add:
...
const pkgs = @import("deps.zig").pkgs;
const freetype = @import("build-freetype");
pub fn build(b: *Builder) void {
...
exe.addPackage(pkgs.freetype);
freetype.link(b, exe, .{});
}
WARNING: You should use gyro build
instead of zig build
now!
Now you can import in code:
const freetype = @import("freetype");
See the examples/
directory. for running each example do:
zig build run-example-<name> # e.g run-example-single-glyph
Join the Mach engine community on Matrix chat to discuss this project, ask questions, get help, etc.
Issues are tracked in the main Mach repository.
Contributions are very welcome. Pull requests must be sent to the main repository to avoid some complex merge conflicts we'd get by accepting contributions in both repositories. Once the changes are merged there, they'll get sync'd to this repository automatically.
Special thanks to @alichraghi, original author of these bindings who contributed them to Mach!