mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
pkg/fontconfig
This commit is contained in:
44
build.zig
44
build.zig
@ -15,7 +15,6 @@ const XCFrameworkStep = @import("src/build/XCFrameworkStep.zig");
|
||||
const Version = @import("src/build/Version.zig");
|
||||
|
||||
const glfw = @import("vendor/mach-glfw/build.zig");
|
||||
const fontconfig = @import("pkg/fontconfig/build.zig");
|
||||
const js = @import("vendor/zig-js/build.zig");
|
||||
const libxev = @import("vendor/libxev/build.zig");
|
||||
const libxml2 = @import("vendor/zig-libxml2/libxml2.zig");
|
||||
@ -26,6 +25,7 @@ const utf8proc = @import("pkg/utf8proc/build.zig");
|
||||
const tracylib = @import("pkg/tracy/build.zig");
|
||||
const system_sdk = @import("vendor/mach-glfw/system_sdk.zig");
|
||||
|
||||
const fontconfig = @import("pkg/fontconfig/build.old.zig");
|
||||
const freetype = @import("pkg/freetype/build.old.zig");
|
||||
const harfbuzz = @import("pkg/harfbuzz/build.old.zig");
|
||||
const libpng = @import("pkg/libpng/build.old.zig");
|
||||
@ -785,48 +785,6 @@ fn addDeps(
|
||||
step.linkLibrary(harfbuzz_dep.artifact("harfbuzz"));
|
||||
try static_libs.append(harfbuzz_dep.artifact("harfbuzz").getEmittedBin());
|
||||
|
||||
// const zlib_step = try zlib.link(b, step);
|
||||
// try static_libs.append(zlib_step.getEmittedBin());
|
||||
//
|
||||
// const libpng_step = try libpng.link(b, step, .{
|
||||
// .zlib = .{
|
||||
// .step = zlib_step,
|
||||
// .include = &zlib.include_paths,
|
||||
// },
|
||||
// });
|
||||
// try static_libs.append(libpng_step.getEmittedBin());
|
||||
//
|
||||
// // Freetype
|
||||
// const freetype_step = try freetype.link(b, step, .{
|
||||
// .libpng = freetype.Options.Libpng{
|
||||
// .enabled = true,
|
||||
// .step = libpng_step,
|
||||
// .include = &libpng.include_paths,
|
||||
// },
|
||||
//
|
||||
// .zlib = .{
|
||||
// .enabled = true,
|
||||
// .step = zlib_step,
|
||||
// .include = &zlib.include_paths,
|
||||
// },
|
||||
// });
|
||||
// try static_libs.append(freetype_step.getEmittedBin());
|
||||
//
|
||||
// // Harfbuzz
|
||||
// const harfbuzz_step = try harfbuzz.link(b, step, .{
|
||||
// .freetype = .{
|
||||
// .enabled = true,
|
||||
// .step = freetype_step,
|
||||
// .include = &freetype.include_paths,
|
||||
// },
|
||||
//
|
||||
// .coretext = .{
|
||||
// .enabled = font_backend.hasCoretext(),
|
||||
// },
|
||||
// });
|
||||
// system_sdk.include(b, harfbuzz_step, .{});
|
||||
// try static_libs.append(harfbuzz_step.getEmittedBin());
|
||||
|
||||
// Pixman
|
||||
const pixman_step = try pixman.link(b, step, .{});
|
||||
try static_libs.append(pixman_step.getEmittedBin());
|
||||
|
240
pkg/fontconfig/build.old.zig
Normal file
240
pkg/fontconfig/build.old.zig
Normal file
@ -0,0 +1,240 @@
|
||||
const std = @import("std");
|
||||
const builtin = @import("builtin");
|
||||
const NativeTargetInfo = std.zig.system.NativeTargetInfo;
|
||||
|
||||
/// Directories with our includes.
|
||||
const root = thisDir() ++ "../../../vendor/fontconfig-2.14.0/";
|
||||
const include_path = root;
|
||||
const include_path_self = thisDir();
|
||||
|
||||
pub const include_paths = .{ include_path, include_path_self };
|
||||
|
||||
pub fn module(b: *std.Build) *std.build.Module {
|
||||
return b.createModule(.{
|
||||
.source_file = .{ .path = (comptime thisDir()) ++ "/main.zig" },
|
||||
});
|
||||
}
|
||||
|
||||
fn thisDir() []const u8 {
|
||||
return std.fs.path.dirname(@src().file) orelse ".";
|
||||
}
|
||||
|
||||
pub const Options = struct {
|
||||
freetype: Freetype = .{},
|
||||
expat: Expat = .{},
|
||||
libxml2: bool = false,
|
||||
|
||||
pub const Freetype = struct {
|
||||
enabled: bool = false,
|
||||
step: ?*std.build.LibExeObjStep = null,
|
||||
include: ?[]const []const u8 = null,
|
||||
};
|
||||
|
||||
pub const Expat = struct {
|
||||
enabled: bool = false,
|
||||
step: ?*std.build.LibExeObjStep = null,
|
||||
include: ?[]const []const u8 = null,
|
||||
};
|
||||
};
|
||||
|
||||
pub fn link(
|
||||
b: *std.Build,
|
||||
step: *std.build.LibExeObjStep,
|
||||
opt: Options,
|
||||
) !*std.build.LibExeObjStep {
|
||||
const lib = try buildFontconfig(b, step, opt);
|
||||
step.linkLibrary(lib);
|
||||
step.addIncludePath(.{ .path = include_path });
|
||||
step.addIncludePath(.{ .path = include_path_self });
|
||||
return lib;
|
||||
}
|
||||
|
||||
pub fn buildFontconfig(
|
||||
b: *std.Build,
|
||||
step: *std.build.LibExeObjStep,
|
||||
opt: Options,
|
||||
) !*std.build.LibExeObjStep {
|
||||
const target = step.target;
|
||||
const lib = b.addStaticLibrary(.{
|
||||
.name = "fontconfig",
|
||||
.target = step.target,
|
||||
.optimize = step.optimize,
|
||||
});
|
||||
|
||||
// Include
|
||||
lib.addIncludePath(.{ .path = include_path });
|
||||
lib.addIncludePath(.{ .path = include_path_self });
|
||||
|
||||
// Link
|
||||
lib.linkLibC();
|
||||
if (opt.expat.enabled) {
|
||||
if (opt.expat.step) |expat|
|
||||
lib.linkLibrary(expat)
|
||||
else
|
||||
lib.linkSystemLibrary("expat");
|
||||
|
||||
if (opt.expat.include) |dirs|
|
||||
for (dirs) |dir| lib.addIncludePath(.{ .path = dir });
|
||||
}
|
||||
if (opt.freetype.enabled) {
|
||||
if (opt.freetype.step) |freetype|
|
||||
lib.linkLibrary(freetype)
|
||||
else
|
||||
lib.linkSystemLibrary("freetype2");
|
||||
|
||||
if (opt.freetype.include) |dirs|
|
||||
for (dirs) |dir| lib.addIncludePath(.{ .path = dir });
|
||||
}
|
||||
if (!target.isWindows()) {
|
||||
lib.linkSystemLibrary("pthread");
|
||||
}
|
||||
|
||||
// Compile
|
||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||
defer flags.deinit();
|
||||
|
||||
try flags.appendSlice(&.{
|
||||
"-DHAVE_DIRENT_H",
|
||||
"-DHAVE_FCNTL_H",
|
||||
"-DHAVE_STDLIB_H",
|
||||
"-DHAVE_STRING_H",
|
||||
"-DHAVE_UNISTD_H",
|
||||
"-DHAVE_SYS_PARAM_H",
|
||||
|
||||
"-DHAVE_MKSTEMP",
|
||||
"-DHAVE__MKTEMP_S",
|
||||
"-DHAVE_MKDTEMP",
|
||||
"-DHAVE_GETOPT",
|
||||
"-DHAVE_GETOPT_LONG",
|
||||
//"-DHAVE_GETPROGNAME",
|
||||
//"-DHAVE_GETEXECNAME",
|
||||
"-DHAVE_RAND",
|
||||
//"-DHAVE_RANDOM_R",
|
||||
"-DHAVE_FSTATVFS",
|
||||
"-DHAVE_FSTATFS",
|
||||
"-DHAVE_VPRINTF",
|
||||
|
||||
"-DHAVE_FT_GET_BDF_PROPERTY",
|
||||
"-DHAVE_FT_GET_PS_FONT_INFO",
|
||||
"-DHAVE_FT_HAS_PS_GLYPH_NAMES",
|
||||
"-DHAVE_FT_GET_X11_FONT_FORMAT",
|
||||
"-DHAVE_FT_DONE_MM_VAR",
|
||||
|
||||
"-DHAVE_POSIX_FADVISE",
|
||||
|
||||
//"-DHAVE_STRUCT_STATVFS_F_BASETYPE",
|
||||
// "-DHAVE_STRUCT_STATVFS_F_FSTYPENAME",
|
||||
// "-DHAVE_STRUCT_STATFS_F_FLAGS",
|
||||
// "-DHAVE_STRUCT_STATFS_F_FSTYPENAME",
|
||||
// "-DHAVE_STRUCT_DIRENT_D_TYPE",
|
||||
|
||||
"-DFLEXIBLE_ARRAY_MEMBER",
|
||||
|
||||
"-DHAVE_STDATOMIC_PRIMITIVES",
|
||||
|
||||
"-DFC_GPERF_SIZE_T=size_t",
|
||||
|
||||
// Default errors that fontconfig can't handle
|
||||
"-Wno-implicit-function-declaration",
|
||||
"-Wno-int-conversion",
|
||||
|
||||
// https://gitlab.freedesktop.org/fontconfig/fontconfig/-/merge_requests/231
|
||||
"-fno-sanitize=undefined",
|
||||
"-fno-sanitize-trap=undefined",
|
||||
});
|
||||
const target_info = try NativeTargetInfo.detect(target);
|
||||
switch (target_info.target.ptrBitWidth()) {
|
||||
32 => try flags.appendSlice(&.{
|
||||
"-DSIZEOF_VOID_P=4",
|
||||
"-DALIGNOF_VOID_P=4",
|
||||
}),
|
||||
|
||||
64 => try flags.appendSlice(&.{
|
||||
"-DSIZEOF_VOID_P=8",
|
||||
"-DALIGNOF_VOID_P=8",
|
||||
}),
|
||||
|
||||
else => @panic("unsupported arch"),
|
||||
}
|
||||
|
||||
if (opt.libxml2) {
|
||||
try flags.appendSlice(&.{
|
||||
"-DENABLE_LIBXML2",
|
||||
"-DLIBXML_STATIC",
|
||||
"-DLIBXML_PUSH_ENABLED",
|
||||
});
|
||||
if (target.isWindows()) {
|
||||
// NOTE: this should be defined on all targets
|
||||
try flags.appendSlice(&.{
|
||||
"-Werror=implicit-function-declaration",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (target.isWindows()) {
|
||||
try flags.appendSlice(&.{
|
||||
"-DFC_CACHEDIR=\"LOCAL_APPDATA_FONTCONFIG_CACHE\"",
|
||||
"-DFC_TEMPLATEDIR=\"c:/share/fontconfig/conf.avail\"",
|
||||
"-DCONFIGDIR=\"c:/etc/fonts/conf.d\"",
|
||||
"-DFC_DEFAULT_FONTS=\"\\t<dir>WINDOWSFONTDIR</dir>\\n\\t<dir>WINDOWSUSERFONTDIR</dir>\\n\"",
|
||||
});
|
||||
} else {
|
||||
try flags.appendSlice(&.{
|
||||
"-DHAVE_SYS_STATVFS_H",
|
||||
"-DHAVE_SYS_VFS_H",
|
||||
"-DHAVE_SYS_STATFS_H",
|
||||
"-DHAVE_SYS_MOUNT_H",
|
||||
"-DHAVE_LINK",
|
||||
"-DHAVE_MKOSTEMP",
|
||||
"-DHAVE_RANDOM",
|
||||
"-DHAVE_LRAND48",
|
||||
"-DHAVE_RAND_R",
|
||||
"-DHAVE_READLINK",
|
||||
"-DHAVE_LSTAT",
|
||||
"-DHAVE_MMAP",
|
||||
"-DHAVE_PTHREAD",
|
||||
|
||||
"-DFC_CACHEDIR=\"/var/cache/fontconfig\"",
|
||||
"-DFC_TEMPLATEDIR=\"/usr/share/fontconfig/conf.avail\"",
|
||||
"-DFONTCONFIG_PATH=\"/etc/fonts\"",
|
||||
"-DCONFIGDIR=\"/usr/local/fontconfig/conf.d\"",
|
||||
"-DFC_DEFAULT_FONTS=\"<dir>/usr/share/fonts</dir><dir>/usr/local/share/fonts</dir>\"",
|
||||
});
|
||||
}
|
||||
|
||||
// C files
|
||||
lib.addCSourceFiles(srcs, flags.items);
|
||||
|
||||
return lib;
|
||||
}
|
||||
|
||||
const srcs = &.{
|
||||
root ++ "src/fcatomic.c",
|
||||
root ++ "src/fccache.c",
|
||||
root ++ "src/fccfg.c",
|
||||
root ++ "src/fccharset.c",
|
||||
root ++ "src/fccompat.c",
|
||||
root ++ "src/fcdbg.c",
|
||||
root ++ "src/fcdefault.c",
|
||||
root ++ "src/fcdir.c",
|
||||
root ++ "src/fcformat.c",
|
||||
root ++ "src/fcfreetype.c",
|
||||
root ++ "src/fcfs.c",
|
||||
root ++ "src/fcptrlist.c",
|
||||
root ++ "src/fchash.c",
|
||||
root ++ "src/fcinit.c",
|
||||
root ++ "src/fclang.c",
|
||||
root ++ "src/fclist.c",
|
||||
root ++ "src/fcmatch.c",
|
||||
root ++ "src/fcmatrix.c",
|
||||
root ++ "src/fcname.c",
|
||||
root ++ "src/fcobjs.c",
|
||||
root ++ "src/fcpat.c",
|
||||
root ++ "src/fcrange.c",
|
||||
root ++ "src/fcserialize.c",
|
||||
root ++ "src/fcstat.c",
|
||||
root ++ "src/fcstr.c",
|
||||
root ++ "src/fcweight.c",
|
||||
root ++ "src/fcxml.c",
|
||||
root ++ "src/ftglue.c",
|
||||
};
|
@ -1,107 +1,51 @@
|
||||
const std = @import("std");
|
||||
const builtin = @import("builtin");
|
||||
const NativeTargetInfo = std.zig.system.NativeTargetInfo;
|
||||
|
||||
/// Directories with our includes.
|
||||
const root = thisDir() ++ "../../../vendor/fontconfig-2.14.0/";
|
||||
const include_path = root;
|
||||
const include_path_self = thisDir();
|
||||
pub fn build(b: *std.Build) !void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
|
||||
pub const include_paths = .{ include_path, include_path_self };
|
||||
const libxml2_enabled = b.option(bool, "enable-libxml2", "Build libxml2") orelse true;
|
||||
const freetype_enabled = b.option(bool, "enable-freetype", "Build freetype") orelse true;
|
||||
|
||||
pub fn module(b: *std.Build) *std.build.Module {
|
||||
return b.createModule(.{
|
||||
.source_file = .{ .path = (comptime thisDir()) ++ "/main.zig" },
|
||||
});
|
||||
}
|
||||
const upstream = b.dependency("fontconfig", .{});
|
||||
|
||||
fn thisDir() []const u8 {
|
||||
return std.fs.path.dirname(@src().file) orelse ".";
|
||||
}
|
||||
|
||||
pub const Options = struct {
|
||||
freetype: Freetype = .{},
|
||||
expat: Expat = .{},
|
||||
libxml2: bool = false,
|
||||
|
||||
pub const Freetype = struct {
|
||||
enabled: bool = false,
|
||||
step: ?*std.build.LibExeObjStep = null,
|
||||
include: ?[]const []const u8 = null,
|
||||
};
|
||||
|
||||
pub const Expat = struct {
|
||||
enabled: bool = false,
|
||||
step: ?*std.build.LibExeObjStep = null,
|
||||
include: ?[]const []const u8 = null,
|
||||
};
|
||||
};
|
||||
|
||||
pub fn link(
|
||||
b: *std.Build,
|
||||
step: *std.build.LibExeObjStep,
|
||||
opt: Options,
|
||||
) !*std.build.LibExeObjStep {
|
||||
const lib = try buildFontconfig(b, step, opt);
|
||||
step.linkLibrary(lib);
|
||||
step.addIncludePath(.{ .path = include_path });
|
||||
step.addIncludePath(.{ .path = include_path_self });
|
||||
return lib;
|
||||
}
|
||||
|
||||
pub fn buildFontconfig(
|
||||
b: *std.Build,
|
||||
step: *std.build.LibExeObjStep,
|
||||
opt: Options,
|
||||
) !*std.build.LibExeObjStep {
|
||||
const target = step.target;
|
||||
const lib = b.addStaticLibrary(.{
|
||||
.name = "fontconfig",
|
||||
.target = step.target,
|
||||
.optimize = step.optimize,
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
// Include
|
||||
lib.addIncludePath(.{ .path = include_path });
|
||||
lib.addIncludePath(.{ .path = include_path_self });
|
||||
|
||||
// Link
|
||||
lib.linkLibC();
|
||||
if (opt.expat.enabled) {
|
||||
if (opt.expat.step) |expat|
|
||||
lib.linkLibrary(expat)
|
||||
else
|
||||
lib.linkSystemLibrary("expat");
|
||||
|
||||
if (opt.expat.include) |dirs|
|
||||
for (dirs) |dir| lib.addIncludePath(.{ .path = dir });
|
||||
}
|
||||
if (opt.freetype.enabled) {
|
||||
if (opt.freetype.step) |freetype|
|
||||
lib.linkLibrary(freetype)
|
||||
else
|
||||
lib.linkSystemLibrary("freetype2");
|
||||
|
||||
if (opt.freetype.include) |dirs|
|
||||
for (dirs) |dir| lib.addIncludePath(.{ .path = dir });
|
||||
}
|
||||
if (!target.isWindows()) {
|
||||
lib.linkSystemLibrary("pthread");
|
||||
}
|
||||
if (freetype_enabled) {
|
||||
const freetype_dep = b.dependency("freetype", .{ .target = target, .optimize = optimize });
|
||||
lib.linkLibrary(freetype_dep.artifact("freetype"));
|
||||
}
|
||||
if (libxml2_enabled) {
|
||||
// const libxml2_dep = b.dependency("libxml2", .{ .target = target, .optimize = optimize });
|
||||
// lib.linkLibrary(libxml2_dep.artifact("xml2"));
|
||||
}
|
||||
|
||||
lib.addIncludePath(upstream.path(""));
|
||||
lib.addIncludePath(.{ .path = "override/include" });
|
||||
|
||||
// Compile
|
||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||
defer flags.deinit();
|
||||
|
||||
try flags.appendSlice(&.{
|
||||
"-DHAVE_DIRENT_H",
|
||||
"-DHAVE_FCNTL_H",
|
||||
"-DHAVE_STDLIB_H",
|
||||
"-DHAVE_STRING_H",
|
||||
"-DHAVE_UNISTD_H",
|
||||
"-DHAVE_SYS_STATVFS_H",
|
||||
"-DHAVE_SYS_PARAM_H",
|
||||
"-DHAVE_SYS_MOUNT_H",
|
||||
|
||||
"-DHAVE_LINK",
|
||||
"-DHAVE_MKSTEMP",
|
||||
"-DHAVE_MKOSTEMP",
|
||||
"-DHAVE__MKTEMP_S",
|
||||
"-DHAVE_MKDTEMP",
|
||||
"-DHAVE_GETOPT",
|
||||
@ -109,9 +53,15 @@ pub fn buildFontconfig(
|
||||
//"-DHAVE_GETPROGNAME",
|
||||
//"-DHAVE_GETEXECNAME",
|
||||
"-DHAVE_RAND",
|
||||
"-DHAVE_RANDOM",
|
||||
"-DHAVE_LRAND48",
|
||||
//"-DHAVE_RANDOM_R",
|
||||
"-DHAVE_RAND_R",
|
||||
"-DHAVE_READLINK",
|
||||
"-DHAVE_FSTATVFS",
|
||||
"-DHAVE_FSTATFS",
|
||||
"-DHAVE_LSTAT",
|
||||
"-DHAVE_MMAP",
|
||||
"-DHAVE_VPRINTF",
|
||||
|
||||
"-DHAVE_FT_GET_BDF_PROPERTY",
|
||||
@ -156,21 +106,6 @@ pub fn buildFontconfig(
|
||||
|
||||
else => @panic("unsupported arch"),
|
||||
}
|
||||
|
||||
if (opt.libxml2) {
|
||||
try flags.appendSlice(&.{
|
||||
"-DENABLE_LIBXML2",
|
||||
"-DLIBXML_STATIC",
|
||||
"-DLIBXML_PUSH_ENABLED",
|
||||
});
|
||||
if (target.isWindows()) {
|
||||
// NOTE: this should be defined on all targets
|
||||
try flags.appendSlice(&.{
|
||||
"-Werror=implicit-function-declaration",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (target.isWindows()) {
|
||||
try flags.appendSlice(&.{
|
||||
"-DFC_CACHEDIR=\"LOCAL_APPDATA_FONTCONFIG_CACHE\"",
|
||||
@ -181,8 +116,6 @@ pub fn buildFontconfig(
|
||||
} else {
|
||||
try flags.appendSlice(&.{
|
||||
"-DHAVE_SYS_STATVFS_H",
|
||||
"-DHAVE_SYS_VFS_H",
|
||||
"-DHAVE_SYS_STATFS_H",
|
||||
"-DHAVE_SYS_MOUNT_H",
|
||||
"-DHAVE_LINK",
|
||||
"-DHAVE_MKOSTEMP",
|
||||
@ -200,41 +133,77 @@ pub fn buildFontconfig(
|
||||
"-DCONFIGDIR=\"/usr/local/fontconfig/conf.d\"",
|
||||
"-DFC_DEFAULT_FONTS=\"<dir>/usr/share/fonts</dir><dir>/usr/local/share/fonts</dir>\"",
|
||||
});
|
||||
if (target.isLinux()) {
|
||||
try flags.appendSlice(&.{
|
||||
"-DHAVE_SYS_STATFS_H",
|
||||
"-DHAVE_SYS_VFS_H",
|
||||
});
|
||||
}
|
||||
}
|
||||
if (libxml2_enabled) {
|
||||
try flags.appendSlice(&.{
|
||||
"-DENABLE_LIBXML2",
|
||||
"-DLIBXML_STATIC",
|
||||
"-DLIBXML_PUSH_ENABLED",
|
||||
});
|
||||
if (target.isWindows()) {
|
||||
// NOTE: this should be defined on all targets
|
||||
try flags.appendSlice(&.{
|
||||
"-Werror=implicit-function-declaration",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// C files
|
||||
lib.addCSourceFiles(srcs, flags.items);
|
||||
|
||||
return lib;
|
||||
for (srcs) |src| {
|
||||
lib.addCSourceFile(.{
|
||||
.file = upstream.path(src),
|
||||
.flags = flags.items,
|
||||
});
|
||||
}
|
||||
|
||||
const srcs = &.{
|
||||
root ++ "src/fcatomic.c",
|
||||
root ++ "src/fccache.c",
|
||||
root ++ "src/fccfg.c",
|
||||
root ++ "src/fccharset.c",
|
||||
root ++ "src/fccompat.c",
|
||||
root ++ "src/fcdbg.c",
|
||||
root ++ "src/fcdefault.c",
|
||||
root ++ "src/fcdir.c",
|
||||
root ++ "src/fcformat.c",
|
||||
root ++ "src/fcfreetype.c",
|
||||
root ++ "src/fcfs.c",
|
||||
root ++ "src/fcptrlist.c",
|
||||
root ++ "src/fchash.c",
|
||||
root ++ "src/fcinit.c",
|
||||
root ++ "src/fclang.c",
|
||||
root ++ "src/fclist.c",
|
||||
root ++ "src/fcmatch.c",
|
||||
root ++ "src/fcmatrix.c",
|
||||
root ++ "src/fcname.c",
|
||||
root ++ "src/fcobjs.c",
|
||||
root ++ "src/fcpat.c",
|
||||
root ++ "src/fcrange.c",
|
||||
root ++ "src/fcserialize.c",
|
||||
root ++ "src/fcstat.c",
|
||||
root ++ "src/fcstr.c",
|
||||
root ++ "src/fcweight.c",
|
||||
root ++ "src/fcxml.c",
|
||||
root ++ "src/ftglue.c",
|
||||
lib.installHeadersDirectoryOptions(.{
|
||||
.source_dir = upstream.path("fontconfig"),
|
||||
.install_dir = .header,
|
||||
.install_subdir = "",
|
||||
.include_extensions = &.{".h"},
|
||||
});
|
||||
|
||||
b.installArtifact(lib);
|
||||
}
|
||||
|
||||
const headers = &.{
|
||||
"fontconfig/fontconfig.h",
|
||||
"fontconfig/fcprivate.h",
|
||||
"fontconfig/fcfreetype.h",
|
||||
};
|
||||
|
||||
const srcs: []const []const u8 = &.{
|
||||
"src/fcatomic.c",
|
||||
"src/fccache.c",
|
||||
"src/fccfg.c",
|
||||
"src/fccharset.c",
|
||||
"src/fccompat.c",
|
||||
"src/fcdbg.c",
|
||||
"src/fcdefault.c",
|
||||
"src/fcdir.c",
|
||||
"src/fcformat.c",
|
||||
"src/fcfreetype.c",
|
||||
"src/fcfs.c",
|
||||
"src/fcptrlist.c",
|
||||
"src/fchash.c",
|
||||
"src/fcinit.c",
|
||||
"src/fclang.c",
|
||||
"src/fclist.c",
|
||||
"src/fcmatch.c",
|
||||
"src/fcmatrix.c",
|
||||
"src/fcname.c",
|
||||
"src/fcobjs.c",
|
||||
"src/fcpat.c",
|
||||
"src/fcrange.c",
|
||||
"src/fcserialize.c",
|
||||
"src/fcstat.c",
|
||||
"src/fcstr.c",
|
||||
"src/fcweight.c",
|
||||
"src/fcxml.c",
|
||||
"src/ftglue.c",
|
||||
};
|
||||
|
12
pkg/fontconfig/build.zig.zon
Normal file
12
pkg/fontconfig/build.zig.zon
Normal file
@ -0,0 +1,12 @@
|
||||
.{
|
||||
.name = "fontconfig",
|
||||
.version = "2.14.2",
|
||||
.dependencies = .{
|
||||
.fontconfig = .{
|
||||
.url = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.14.2.tar.gz",
|
||||
.hash = "12201149afb3326c56c05bb0a577f54f76ac20deece63aa2f5cd6ff31a4fa4fcb3b7",
|
||||
},
|
||||
|
||||
.freetype = .{ .path = "../freetype" },
|
||||
},
|
||||
}
|
0
pkg/fontconfig/override/include/fcalias.h
Normal file
0
pkg/fontconfig/override/include/fcalias.h
Normal file
0
pkg/fontconfig/override/include/fcaliastail.h
Normal file
0
pkg/fontconfig/override/include/fcaliastail.h
Normal file
0
pkg/fontconfig/override/include/fcftalias.h
Normal file
0
pkg/fontconfig/override/include/fcftalias.h
Normal file
0
pkg/fontconfig/override/include/fcftaliastail.h
Normal file
0
pkg/fontconfig/override/include/fcftaliastail.h
Normal file
347
pkg/fontconfig/override/include/fcobjshash.h
Normal file
347
pkg/fontconfig/override/include/fcobjshash.h
Normal file
@ -0,0 +1,347 @@
|
||||
/* ANSI-C code produced by gperf version 3.1 */
|
||||
/* Command-line: gperf --pic -m 100 fcobjshash.gperf */
|
||||
/* Computed positions: -k'3,5' */
|
||||
|
||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
||||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
||||
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
|
||||
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
|
||||
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
|
||||
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
|
||||
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
|
||||
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
|
||||
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
|
||||
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
|
||||
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
|
||||
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
|
||||
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
|
||||
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
|
||||
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
|
||||
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
|
||||
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
|
||||
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
|
||||
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
|
||||
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
|
||||
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
|
||||
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
|
||||
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
|
||||
/* The character set is not based on ISO-646. */
|
||||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
|
||||
#endif
|
||||
|
||||
#line 1 "fcobjshash.gperf"
|
||||
|
||||
#line 13 "fcobjshash.gperf"
|
||||
struct FcObjectTypeInfo {
|
||||
int name;
|
||||
int id;
|
||||
};
|
||||
#include <string.h>
|
||||
/* maximum key range = 59, duplicates = 0 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
#else
|
||||
#ifdef __cplusplus
|
||||
inline
|
||||
#endif
|
||||
#endif
|
||||
static unsigned int
|
||||
FcObjectTypeHash (register const char *str, register size_t len)
|
||||
{
|
||||
static const unsigned char asso_values[] =
|
||||
{
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 4, 10, 32,
|
||||
21, 29, 28, 49, 14, 4, 66, 66, 5, 31,
|
||||
18, 22, 27, 66, 15, 9, 8, 23, 23, 13,
|
||||
23, 16, 4, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
||||
66, 66, 66, 66, 66, 66
|
||||
};
|
||||
register unsigned int hval = len;
|
||||
|
||||
switch (hval)
|
||||
{
|
||||
default:
|
||||
hval += asso_values[(unsigned char)str[4]];
|
||||
/*FALLTHROUGH*/
|
||||
case 4:
|
||||
case 3:
|
||||
hval += asso_values[(unsigned char)str[2]];
|
||||
break;
|
||||
}
|
||||
return hval;
|
||||
}
|
||||
|
||||
struct FcObjectTypeNamePool_t
|
||||
{
|
||||
char FcObjectTypeNamePool_str7[sizeof("dpi")];
|
||||
char FcObjectTypeNamePool_str8[sizeof("size")];
|
||||
char FcObjectTypeNamePool_str9[sizeof("file")];
|
||||
char FcObjectTypeNamePool_str13[sizeof("hash")];
|
||||
char FcObjectTypeNamePool_str14[sizeof("rgba")];
|
||||
char FcObjectTypeNamePool_str15[sizeof("spacing")];
|
||||
char FcObjectTypeNamePool_str16[sizeof("scalable")];
|
||||
char FcObjectTypeNamePool_str17[sizeof("slant")];
|
||||
char FcObjectTypeNamePool_str18[sizeof("matrix")];
|
||||
char FcObjectTypeNamePool_str19[sizeof("outline")];
|
||||
char FcObjectTypeNamePool_str20[sizeof("charset")];
|
||||
char FcObjectTypeNamePool_str21[sizeof("antialias")];
|
||||
char FcObjectTypeNamePool_str22[sizeof("lang")];
|
||||
char FcObjectTypeNamePool_str23[sizeof("embolden")];
|
||||
char FcObjectTypeNamePool_str24[sizeof("weight")];
|
||||
char FcObjectTypeNamePool_str25[sizeof("color")];
|
||||
char FcObjectTypeNamePool_str26[sizeof("charwidth")];
|
||||
char FcObjectTypeNamePool_str27[sizeof("variable")];
|
||||
char FcObjectTypeNamePool_str28[sizeof("charheight")];
|
||||
char FcObjectTypeNamePool_str29[sizeof("hinting")];
|
||||
char FcObjectTypeNamePool_str30[sizeof("autohint")];
|
||||
char FcObjectTypeNamePool_str31[sizeof("fullname")];
|
||||
char FcObjectTypeNamePool_str32[sizeof("postscriptname")];
|
||||
char FcObjectTypeNamePool_str33[sizeof("verticallayout")];
|
||||
char FcObjectTypeNamePool_str34[sizeof("lcdfilter")];
|
||||
char FcObjectTypeNamePool_str35[sizeof("fullnamelang")];
|
||||
char FcObjectTypeNamePool_str36[sizeof("hintstyle")];
|
||||
char FcObjectTypeNamePool_str37[sizeof("pixelsize")];
|
||||
char FcObjectTypeNamePool_str38[sizeof("scale")];
|
||||
char FcObjectTypeNamePool_str39[sizeof("globaladvance")];
|
||||
char FcObjectTypeNamePool_str40[sizeof("width")];
|
||||
char FcObjectTypeNamePool_str41[sizeof("order")];
|
||||
char FcObjectTypeNamePool_str42[sizeof("family")];
|
||||
char FcObjectTypeNamePool_str43[sizeof("fonthashint")];
|
||||
char FcObjectTypeNamePool_str44[sizeof("namelang")];
|
||||
char FcObjectTypeNamePool_str45[sizeof("embeddedbitmap")];
|
||||
char FcObjectTypeNamePool_str46[sizeof("familylang")];
|
||||
char FcObjectTypeNamePool_str47[sizeof("capability")];
|
||||
char FcObjectTypeNamePool_str48[sizeof("rasterizer")];
|
||||
char FcObjectTypeNamePool_str49[sizeof("index")];
|
||||
char FcObjectTypeNamePool_str50[sizeof("style")];
|
||||
char FcObjectTypeNamePool_str51[sizeof("foundry")];
|
||||
char FcObjectTypeNamePool_str52[sizeof("fontversion")];
|
||||
char FcObjectTypeNamePool_str53[sizeof("minspace")];
|
||||
char FcObjectTypeNamePool_str54[sizeof("stylelang")];
|
||||
char FcObjectTypeNamePool_str55[sizeof("fontvariations")];
|
||||
char FcObjectTypeNamePool_str56[sizeof("fontformat")];
|
||||
char FcObjectTypeNamePool_str57[sizeof("decorative")];
|
||||
char FcObjectTypeNamePool_str58[sizeof("fontfeatures")];
|
||||
char FcObjectTypeNamePool_str59[sizeof("symbol")];
|
||||
char FcObjectTypeNamePool_str60[sizeof("prgname")];
|
||||
char FcObjectTypeNamePool_str65[sizeof("aspect")];
|
||||
};
|
||||
static const struct FcObjectTypeNamePool_t FcObjectTypeNamePool_contents =
|
||||
{
|
||||
"dpi",
|
||||
"size",
|
||||
"file",
|
||||
"hash",
|
||||
"rgba",
|
||||
"spacing",
|
||||
"scalable",
|
||||
"slant",
|
||||
"matrix",
|
||||
"outline",
|
||||
"charset",
|
||||
"antialias",
|
||||
"lang",
|
||||
"embolden",
|
||||
"weight",
|
||||
"color",
|
||||
"charwidth",
|
||||
"variable",
|
||||
"charheight",
|
||||
"hinting",
|
||||
"autohint",
|
||||
"fullname",
|
||||
"postscriptname",
|
||||
"verticallayout",
|
||||
"lcdfilter",
|
||||
"fullnamelang",
|
||||
"hintstyle",
|
||||
"pixelsize",
|
||||
"scale",
|
||||
"globaladvance",
|
||||
"width",
|
||||
"order",
|
||||
"family",
|
||||
"fonthashint",
|
||||
"namelang",
|
||||
"embeddedbitmap",
|
||||
"familylang",
|
||||
"capability",
|
||||
"rasterizer",
|
||||
"index",
|
||||
"style",
|
||||
"foundry",
|
||||
"fontversion",
|
||||
"minspace",
|
||||
"stylelang",
|
||||
"fontvariations",
|
||||
"fontformat",
|
||||
"decorative",
|
||||
"fontfeatures",
|
||||
"symbol",
|
||||
"prgname",
|
||||
"aspect"
|
||||
};
|
||||
#define FcObjectTypeNamePool ((const char *) &FcObjectTypeNamePool_contents)
|
||||
const struct FcObjectTypeInfo *
|
||||
FcObjectTypeLookup (register const char *str, register size_t len)
|
||||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 52,
|
||||
MIN_WORD_LENGTH = 3,
|
||||
MAX_WORD_LENGTH = 14,
|
||||
MIN_HASH_VALUE = 7,
|
||||
MAX_HASH_VALUE = 65
|
||||
};
|
||||
|
||||
static const struct FcObjectTypeInfo wordlist[] =
|
||||
{
|
||||
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
|
||||
#line 43 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str7,FC_DPI_OBJECT},
|
||||
#line 27 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str8,FC_SIZE_OBJECT},
|
||||
#line 38 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str9,FC_FILE_OBJECT},
|
||||
{-1}, {-1}, {-1},
|
||||
#line 62 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str13,FC_HASH_OBJECT},
|
||||
#line 44 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str14,FC_RGBA_OBJECT},
|
||||
#line 30 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str15,FC_SPACING_OBJECT},
|
||||
#line 42 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str16,FC_SCALABLE_OBJECT},
|
||||
#line 24 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str17,FC_SLANT_OBJECT},
|
||||
#line 49 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str18,FC_MATRIX_OBJECT},
|
||||
#line 41 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str19,FC_OUTLINE_OBJECT},
|
||||
#line 50 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str20,FC_CHARSET_OBJECT},
|
||||
#line 32 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str21,FC_ANTIALIAS_OBJECT},
|
||||
#line 51 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str22,FC_LANG_OBJECT},
|
||||
#line 55 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str23,FC_EMBOLDEN_OBJECT},
|
||||
#line 25 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str24,FC_WEIGHT_OBJECT},
|
||||
#line 64 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str25,FC_COLOR_OBJECT},
|
||||
#line 47 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str26,FC_CHARWIDTH_OBJECT},
|
||||
#line 67 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str27,FC_VARIABLE_OBJECT},
|
||||
#line 48 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str28,FC_CHAR_HEIGHT_OBJECT},
|
||||
#line 34 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str29,FC_HINTING_OBJECT},
|
||||
#line 36 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str30,FC_AUTOHINT_OBJECT},
|
||||
#line 22 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str31,FC_FULLNAME_OBJECT},
|
||||
#line 63 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str32,FC_POSTSCRIPT_NAME_OBJECT},
|
||||
#line 35 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str33,FC_VERTICAL_LAYOUT_OBJECT},
|
||||
#line 58 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str34,FC_LCD_FILTER_OBJECT},
|
||||
#line 23 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str35,FC_FULLNAMELANG_OBJECT},
|
||||
#line 33 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str36,FC_HINT_STYLE_OBJECT},
|
||||
#line 29 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str37,FC_PIXEL_SIZE_OBJECT},
|
||||
#line 45 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str38,FC_SCALE_OBJECT},
|
||||
#line 37 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str39,FC_GLOBAL_ADVANCE_OBJECT},
|
||||
#line 26 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str40,FC_WIDTH_OBJECT},
|
||||
#line 69 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str41,FC_ORDER_OBJECT},
|
||||
#line 18 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str42,FC_FAMILY_OBJECT},
|
||||
#line 68 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str43,FC_FONT_HAS_HINT_OBJECT},
|
||||
#line 59 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str44,FC_NAMELANG_OBJECT},
|
||||
#line 56 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_EMBEDDED_BITMAP_OBJECT},
|
||||
#line 19 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str46,FC_FAMILYLANG_OBJECT},
|
||||
#line 53 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str47,FC_CAPABILITY_OBJECT},
|
||||
#line 40 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str48,FC_RASTERIZER_OBJECT},
|
||||
#line 39 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str49,FC_INDEX_OBJECT},
|
||||
#line 20 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str50,FC_STYLE_OBJECT},
|
||||
#line 31 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str51,FC_FOUNDRY_OBJECT},
|
||||
#line 52 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str52,FC_FONTVERSION_OBJECT},
|
||||
#line 46 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str53,FC_MINSPACE_OBJECT},
|
||||
#line 21 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str54,FC_STYLELANG_OBJECT},
|
||||
#line 66 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str55,FC_FONT_VARIATIONS_OBJECT},
|
||||
#line 54 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str56,FC_FONTFORMAT_OBJECT},
|
||||
#line 57 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str57,FC_DECORATIVE_OBJECT},
|
||||
#line 60 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str58,FC_FONT_FEATURES_OBJECT},
|
||||
#line 65 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str59,FC_SYMBOL_OBJECT},
|
||||
#line 61 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str60,FC_PRGNAME_OBJECT},
|
||||
{-1}, {-1}, {-1}, {-1},
|
||||
#line 28 "fcobjshash.gperf"
|
||||
{(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str65,FC_ASPECT_OBJECT}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
{
|
||||
register unsigned int key = FcObjectTypeHash (str, len);
|
||||
|
||||
if (key <= MAX_HASH_VALUE)
|
||||
{
|
||||
register int o = wordlist[key].name;
|
||||
if (o >= 0)
|
||||
{
|
||||
register const char *s = o + FcObjectTypeNamePool;
|
||||
|
||||
if (*str == *s && !strcmp (str + 1, s + 1))
|
||||
return &wordlist[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user