113 lines
3.7 KiB
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");
|
|
}
|