# mach/freetype - Ziggified FreeType 2 bindings [](https://github.com/hexops/mach-freetype/actions)
Ziggified FreeType 2 bindings that [Mach engine](https://github.com/hexops/mach) uses, with zero-fuss installation, cross compilation, and more.
This repository is a separate copy of the same library in the [main Mach repository](https://github.com/hexops/mach), and is automatically kept in sync, so that anyone can use this library in their own project / engine if they like!
## Zero fuss installation, cross compilation, and more
[Just as with Mach](https://github.com/hexops/mach#zero-fuss-installation--cross-compilation), 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.
## Usage
## Getting started
### Adding dependency (using Git)
In a `libs` subdirectory of the root of your project:
```sh
git clone https://github.com/hexops/mach-freetype
```
Then in your `build.zig` add:
```zig
...
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:
```zig
exe.addPackage(freetype.harfbuzz_pkg);
freetype.link(b, exe, .{ .harfbuzz = .{} });
```
You can also optionally build brotli compression (for WOFF2 font support):
```zig
exe.addPackage(freetype.pkg);
freetype.link(b, exe, .{ .freetype = .{ .brotli = true } });
```
Optional: Using Gyro dependency manager
```sh
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:
```zig
...
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:
```zig
const freetype = @import("freetype");
```
## Examples
See the `examples/` directory. for running each example do:
```sh
zig build run-example- # e.g run-example-single-glyph
```
## Join the community
Join the Mach engine community [on Matrix chat](https://matrix.to/#/#hexops:matrix.org) to discuss this project, ask questions, get help, etc.
## Issues
Issues are tracked in the [main Mach repository](https://github.com/hexops/mach/issues?q=is%3Aissue+is%3Aopen+label%3Afreetype).
## Contributing
Contributions are very welcome. Pull requests must be sent to [the main repository](https://github.com/hexops/mach/tree/main/freetype) 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.
# Thanks
Special thanks to [@alichraghi](https://github.com/alichraghi), original author of these bindings who contributed them to Mach!