mach/freetype/src/main.zig

113 lines
3.7 KiB
Zig

pub usingnamespace @import("color.zig");
pub usingnamespace @import("freetype.zig");
pub usingnamespace @import("glyph.zig");
pub usingnamespace @import("image.zig");
pub usingnamespace @import("lcdfilter.zig");
pub usingnamespace @import("stroke.zig");
pub usingnamespace @import("types.zig");
pub usingnamespace @import("computations.zig");
pub const Library = @import("Library.zig");
pub const Face = @import("Face.zig");
pub const GlyphSlot = @import("GlyphSlot.zig");
pub const Error = @import("error.zig").Error;
pub const Outline = @import("Outline.zig");
pub const harfbuzz = @import("harfbuzz/main.zig");
pub const c = @import("c");
const std = @import("std");
const testing = std.testing;
// Remove once the stage2 compiler fixes pkg std not found
comptime {
_ = @import("utils");
}
test {
std.testing.refAllDeclsRecursive(@import("color.zig"));
std.testing.refAllDeclsRecursive(@import("error.zig"));
std.testing.refAllDeclsRecursive(@import("freetype.zig"));
std.testing.refAllDeclsRecursive(@import("glyph.zig"));
std.testing.refAllDeclsRecursive(@import("image.zig"));
std.testing.refAllDeclsRecursive(@import("lcdfilter.zig"));
std.testing.refAllDeclsRecursive(@import("stroke.zig"));
std.testing.refAllDeclsRecursive(@import("types.zig"));
std.testing.refAllDeclsRecursive(@import("computations.zig"));
std.testing.refAllDeclsRecursive(Library);
std.testing.refAllDeclsRecursive(Face);
std.testing.refAllDeclsRecursive(GlyphSlot);
std.testing.refAllDeclsRecursive(Outline);
std.testing.refAllDeclsRecursive(harfbuzz);
}
const firasans_font_path = thisDir() ++ "/../upstream/assets/FiraSans-Regular.ttf";
const firasans_font_data = @embedFile(thisDir() ++ "/../upstream/assets/FiraSans-Regular.ttf");
fn thisDir() []const u8 {
return std.fs.path.dirname(@src().file) orelse ".";
}
test "create face from file" {
const lib = try Library.init();
_ = try lib.createFace(firasans_font_path, 0);
}
test "create face from memory" {
const lib = try Library.init();
_ = try lib.createFaceMemory(firasans_font_data, 0);
}
test "create stroker" {
const lib = try Library.init();
_ = try lib.createStroker();
}
test "load glyph" {
const lib = try Library.init();
const face = try lib.createFace(firasans_font_path, 0);
try face.setPixelSizes(100, 100);
try face.setCharSize(10 * 10, 0, 72, 0);
try face.loadGlyph(205, .{});
try face.loadChar('A', .{});
face.deinit();
}
test "attach file" {
const lib = try Library.init();
const face = try lib.createFace(thisDir() ++ "/../upstream/assets/DejaVuSans.pfb", 0);
try face.attachFile(thisDir() ++ "/../upstream/assets/DejaVuSans.pfm");
}
test "attach from memory" {
const lib = try Library.init();
const face = try lib.createFace(thisDir() ++ "/../upstream/assets/DejaVuSans.pfb", 0);
const file = @embedFile(thisDir() ++ "/../upstream/assets/DejaVuSans.pfm");
try face.attachMemory(file);
}
test "charmap iterator" {
const lib = try Library.init();
const face = try lib.createFace(firasans_font_path, 0);
var iterator = face.getCharmapIterator();
var old_char: usize = 0;
while (iterator.next()) |char| {
try testing.expect(old_char != char);
old_char = char;
}
}
test "get name index" {
const lib = try Library.init();
const face = try lib.createFace(firasans_font_path, 0);
try testing.expectEqual(@as(u32, 1120), face.getNameIndex("summation").?);
}
test "get index name" {
const lib = try Library.init();
const face = try lib.createFace(firasans_font_path, 0);
var buf: [32]u8 = undefined;
try face.getGlyphName(1120, &buf);
try testing.expectEqualStrings(std.mem.sliceTo(&buf, 0), "summation");
}