diff --git a/pkg/fontconfig/config.zig b/pkg/fontconfig/config.zig index e22aec3f3..0b2fd5127 100644 --- a/pkg/fontconfig/config.zig +++ b/pkg/fontconfig/config.zig @@ -1,5 +1,6 @@ const std = @import("std"); const c = @import("c.zig"); +const Error = @import("main.zig").Error; const CharSet = @import("char_set.zig").CharSet; const FontSet = @import("font_set.zig").FontSet; const ObjectSet = @import("object_set.zig").ObjectSet; @@ -34,8 +35,11 @@ pub const Config = opaque { return result; } - pub fn fontRenderPrepare(self: *Config, pat: *Pattern, font: *Pattern) *Pattern { - return @ptrCast(*Pattern, c.FcFontRenderPrepare(self.cval(), pat.cval(), font.cval())); + pub fn fontRenderPrepare(self: *Config, pat: *Pattern, font: *Pattern) Error!*Pattern { + return @ptrCast( + ?*Pattern, + c.FcFontRenderPrepare(self.cval(), pat.cval(), font.cval()), + ) orelse Error.FontconfigFailed; } pub fn substituteWithPat(self: *Config, pat: *Pattern, kind: MatchKind) bool { diff --git a/pkg/fontconfig/error.zig b/pkg/fontconfig/error.zig new file mode 100644 index 000000000..427a36844 --- /dev/null +++ b/pkg/fontconfig/error.zig @@ -0,0 +1,3 @@ +pub const Error = error{ + FontconfigFailed, +}; diff --git a/pkg/fontconfig/main.zig b/pkg/fontconfig/main.zig index 12ee3206e..c759078c0 100644 --- a/pkg/fontconfig/main.zig +++ b/pkg/fontconfig/main.zig @@ -3,6 +3,7 @@ pub usingnamespace @import("init.zig"); pub usingnamespace @import("char_set.zig"); pub usingnamespace @import("common.zig"); pub usingnamespace @import("config.zig"); +pub usingnamespace @import("error.zig"); pub usingnamespace @import("font_set.zig"); pub usingnamespace @import("lang_set.zig"); pub usingnamespace @import("matrix.zig"); diff --git a/pkg/fontconfig/test.zig b/pkg/fontconfig/test.zig index 7f2f2d063..9ba1fe819 100644 --- a/pkg/fontconfig/test.zig +++ b/pkg/fontconfig/test.zig @@ -43,7 +43,7 @@ test "fc-match" { const fonts = result.fs.fonts(); try testing.expect(fonts.len > 0); for (fonts) |font| { - var pat_prep = cfg.fontRenderPrepare(pat, font); + var pat_prep = try cfg.fontRenderPrepare(pat, font); try testing.expect(fs.add(pat_prep)); } result.fs.destroy();