10.2. Data Definitions for libfontconfig

This section defines global identifiers and their values that are associated with interfaces contained in libfontconfig. These definitions are organized into groups that correspond to system headers. This convention is used as a convenience for the reader, and does not imply the existence of these headers, or their content. Where an interface is defined as requiring a particular system header file all of the data definitions for that system header file presented here shall be in effect.

This section gives data definitions to promote binary application portability, not to repeat source interface definitions available elsewhere. System providers and application developers should use this ABI to supplement - not to replace - source interface definition specifications.

This specification uses the ISO C (1999) C Language as the reference programming language, and data definitions are specified in ISO C format. The C language is used here as a convenient notation. Using a C language description of these data objects does not preclude their use by other programming languages.

10.2.1. fontconfig/fcfreetype.h


extern FcResult FcPatternGetFTFace(const FcPattern *, const char *, int,
				   FT_Face *);
extern FcBool FcPatternAddFTFace(FcPattern *, const char *, const FT_Face);
extern FT_UInt FcFreeTypeCharIndex(FT_Face, FcChar32);
extern FcCharSet *FcFreeTypeCharSet(FT_Face, FcBlanks *);
extern FcCharSet *FcFreeTypeCharSetAndSpacing(FT_Face, FcBlanks *, int *);

10.2.2. fontconfig/fcprivate.h


#define FcObjectSetVapBuild(__ret__,__first__,__va__)	 \
	{ FcObjectSet *__os__; const char *__ob__; __ret__ = 0; __os__ = \
	FcObjectSetCreate (); if (!__os__) goto _FcObjectSetVapBuild_bail0; \
	__ob__ = __first__; while (__ob__) { if (!FcObjectSetAdd (__os__, \
	__ob__)) goto _FcObjectSetVapBuild_bail1; __ob__ = va_arg (__va__, \
	const char *); } __ret__ = __os__; _FcObjectSetVapBuild_bail1: if \
	(!__ret__ && __os__) FcObjectSetDestroy (__os__); \
	_FcObjectSetVapBuild_bail0: ; }
#define FcPatternVapBuild(result,orig,va)	 \
	{ FcPattern *__p__ = (orig); const char *__o__; FcValue __v__; if \
	(!__p__) { __p__ = FcPatternCreate (); if (!__p__) goto \
	_FcPatternVapBuild_bail0; } for (;;) { __o__ = va_arg (va, const char \
	*); if (!__o__) break; __v__.type = va_arg (va, FcType); switch \
	(__v__.type) { case FcTypeVoid: goto _FcPatternVapBuild_bail1; case \
	FcTypeInteger: __v__.u.i = va_arg (va, int); break; case FcTypeDouble: \
	__v__.u.d = va_arg (va, double); break; case FcTypeString: __v__.u.s = \
	va_arg (va, FcChar8 *); break; case FcTypeBool: __v__.u.b = va_arg \
	(va, FcBool); break; case FcTypeMatrix: __v__.u.m = va_arg (va, \
	FcMatrix *); break; case FcTypeCharSet: __v__.u.c = va_arg (va, \
	FcCharSet *); break; case FcTypeFTFace: __v__.u.f = va_arg (va, \
	FT_Face); break; case FcTypeLangSet: __v__.u.l = va_arg (va, FcLangSet \
	*); break; } if (!FcPatternAdd (__p__, __o__, __v__, FcTrue)) goto \
	_FcPatternVapBuild_bail1; } result = __p__; goto \
	_FcPatternVapBuild_return; _FcPatternVapBuild_bail1: if (!orig) \
	FcPatternDestroy (__p__); _FcPatternVapBuild_bail0: result = (void*)0; \
	_FcPatternVapBuild_return: ; }

10.2.3. fontconfig/fontconfig.h


#define _FCFUNCPROTOBEGIN
#define _FCFUNCPROTOEND
#define FC_USER_CACHE_FILE	".fonts.cache-"FC_CACHE_VERSION
#define FC_DIR_CACHE_FILE	"fonts.cache-"FC_CACHE_VERSION
#define FcIsUpper(c)	((0101 <= (c) && (c) <= 0132))
#define FcIsLower(c)	((0141 <= (c) && (c) <= 0172))
#define FC_CHARSET_DONE	((FcChar32) -1)
#define FC_VERSION	((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
#define FcMatrixInit(m)	((m)->xx = (m)->yy = 1, (m)->xy = (m)->yx = 0)
#define FC_CHARSET_MAP_SIZE	(256/32)
#define FcToLower(c)	(FcIsUpper(c) ? (c) - 0101 + 0141 : (c))
#define FC_HINT_NONE	0
#define FC_PROPORTIONAL	0
#define FC_RGBA_UNKNOWN	0
#define FC_SLANT_ROMAN	0
#define FC_WEIGHT_THIN	0
#define FcFalse	0
#define FC_CACHE_VERSION	"1"
#define FC_HINT_SLIGHT	1
#define FC_RGBA_RGB	1
#define FcTrue	1
#define FC_MONO	100
#define FC_SLANT_ITALIC	100
#define FC_WEIGHT_MEDIUM	100
#define FC_WIDTH_NORMAL	100
#define FC_CHARCELL	110
#define FC_SLANT_OBLIQUE	110
#define FC_WIDTH_SEMIEXPANDED	113
#define FC_WIDTH_EXPANDED	125
#define FC_WIDTH_EXTRAEXPANDED	150
#define FC_WEIGHT_DEMIBOLD	180
#define FC_HINT_MEDIUM	2
#define FC_MAJOR	2
#define FC_REVISION	2
#define FC_RGBA_BGR	2
#define FC_WEIGHT_BOLD	200
#define FC_WIDTH_ULTRAEXPANDED	200
#define FC_WEIGHT_EXTRABOLD	205
#define FC_WEIGHT_BLACK	210
#define FC_HINT_FULL	3
#define FC_MINOR	3
#define FC_RGBA_VRGB	3
#define FC_RGBA_VBGR	4
#define FC_WEIGHT_EXTRALIGHT	40
#define FC_RGBA_NONE	5
#define FC_WEIGHT_LIGHT	50
#define FC_WIDTH_ULTRACONDENSED	50
#define FC_UTF8_MAX_LEN	6
#define FC_WIDTH_EXTRACONDENSED	63
#define FC_WEIGHT_BOOK	75
#define FC_WIDTH_CONDENSED	75
#define FC_WEIGHT_REGULAR	80
#define FC_WIDTH_SEMICONDENSED	87
#define FC_DUAL	90
#define FC_ANTIALIAS	"antialias"
#define FC_ASPECT	"aspect"
#define FC_AUTOHINT	"autohint"
#define FC_CAPABILITY	"capability"
#define FC_CHAR_HEIGHT	"charheight"
#define FC_CHARSET	"charset"
#define FC_CHAR_WIDTH	"charwidth"
#define FC_DPI	"dpi"
#define FC_EMBOLDEN	"embolden"
#define FC_FAMILY	"family"
#define FC_FAMILYLANG	"familylang"
#define FC_WEIGHT_HEAVY	FC_WEIGHT_BLACK
#define FC_WEIGHT_SEMIBOLD	FC_WEIGHT_DEMIBOLD
#define FC_WEIGHT_ULTRABOLD	FC_WEIGHT_EXTRABOLD
#define FC_WEIGHT_ULTRALIGHT	FC_WEIGHT_EXTRALIGHT
#define FC_WEIGHT_NORMAL	FC_WEIGHT_REGULAR
#define FC_FILE	"file"
#define FC_FONTFORMAT	"fontformat"
#define FC_FONTVERSION	"fontversion"
#define FC_FOUNDRY	"foundry"
#define FC_FT_FACE	"ftface"
#define FC_FULLNAME	"fullname"
#define FC_FULLNAMELANG	"fullnamelang"
#define FC_GLOBAL_ADVANCE	"globaladvance"
#define FC_HINTING	"hinting"
#define FC_HINT_STYLE	"hintstyle"
#define FC_INDEX	"index"
#define FC_LANG	"lang"
#define FC_MATRIX	"matrix"
#define FC_MINSPACE	"minspace"
#define FC_OUTLINE	"outline"
#define FC_PIXEL_SIZE	"pixelsize"
#define FC_RASTERIZER	"rasterizer"
#define FC_RGBA	"rgba"
#define FC_SCALABLE	"scalable"
#define FC_SCALE	"scale"
#define FC_SIZE	"size"
#define FC_SLANT	"slant"
#define FC_SOURCE	"source"
#define FC_SPACING	"spacing"
#define FC_STYLE	"style"
#define FC_STYLELANG	"stylelang"
#define FC_VERTICAL_LAYOUT	"verticallayout"
#define FC_WEIGHT	"weight"
#define FC_WIDTH	"width"

typedef int FcBool;
typedef struct _FcPattern
 FcPattern;
typedef enum _FcType {
    FcTypeVoid = 0,
    FcTypeInteger = 1,
    FcTypeDouble = 2,
    FcTypeString = 3,
    FcTypeBool = 4,
    FcTypeMatrix = 5,
    FcTypeCharSet = 6,
    FcTypeFTFace = 7,
    FcTypeLangSet = 8
} FcType;
typedef unsigned char FcChar8;
typedef struct _FcMatrix {
    double xx;
    double xy;
    double yx;
    double yy;
} FcMatrix;
typedef struct _FcCharSet
 FcCharSet;
typedef struct _FcLangSet
 FcLangSet;
typedef struct _FcValue {
    FcType type;
    union {
	const FcChar8 *s;
	int i;
	FcBool b;
	double d;
	const FcMatrix *m;
	const FcCharSet *c;
	void *f;
	const FcPattern *p;
	const FcLangSet *l;
    } u;
} FcValue;
typedef struct _FcStrList
 FcStrList;
typedef struct _FcConfig
 FcConfig;
typedef struct _FcStrSet
 FcStrSet;
typedef unsigned int FcChar32;
typedef enum _FcMatchKind {
    FcMatchPattern = 0,
    FcMatchFont = 1
} FcMatchKind;
typedef struct _FcObjectSet {
    int nobject;
    int sobject;
    const char **objects;
} FcObjectSet;
typedef enum {
    FcEndianBig = 0,
    FcEndianLittle = 1
} FcEndian;
typedef struct _FcAtomic
 FcAtomic;
typedef struct _FcConstant {
    const FcChar8 *name;
    const char *object;
    int value;
} FcConstant;
typedef struct _FcFontSet {
    int nfont;
    int sfont;
    FcPattern **fonts;
} FcFontSet;
typedef enum _FcSetName {
    FcSetSystem = 0,
    FcSetApplication = 1
} FcSetName;
typedef struct _FcBlanks
 FcBlanks;
typedef enum _FcResult {
    FcResultMatch = 0,
    FcResultNoMatch = 1,
    FcResultTypeMismatch = 2,
    FcResultNoId = 3,
    FcResultOutOfMemory = 4
} FcResult;
typedef struct _FcObjectType {
    const char *object;
    FcType type;
} FcObjectType;
typedef struct _FcGlobalCache
 FcGlobalCache;
typedef enum _FcLangResult {
    FcLangEqual = 0,
    FcLangDifferentCountry = 1,
    FcLangDifferentLang = 2
} FcLangResult;
typedef short unsigned int FcChar16;
extern FcBool FcPatternAdd(FcPattern *, const char *, FcValue, FcBool);
extern FcStrList *FcConfigGetConfigFiles(FcConfig *);
extern FcBool FcStrSetAdd(FcStrSet *, const FcChar8 *);
extern FcBool FcCharSetIsSubset(const FcCharSet *, const FcCharSet *);
extern void FcDefaultSubstitute(FcPattern *);
extern FcChar32 FcCharSetIntersectCount(const FcCharSet *,
					const FcCharSet *);
extern FcBool FcConfigUptoDate(FcConfig *);
extern void FcPatternDestroy(FcPattern *);
extern FcLangSet *FcLangSetCopy(const FcLangSet *);
extern FcBool FcPatternAddCharSet(FcPattern *, const char *,
				  const FcCharSet *);
extern FcBool FcPatternAddLangSet(FcPattern *, const char *,
				  const FcLangSet *);
extern void FcConfigAppFontClear(FcConfig *);
extern int FcConfigGetRescanInverval(FcConfig *);
extern FcBool FcConfigSubstitute(FcConfig *, FcPattern *, FcMatchKind);
extern FcObjectSet *FcObjectSetBuild(const char *, ...);
extern FcBool FcObjectSetAdd(FcObjectSet *, const char *);
extern FcChar32 FcCharSetSubtractCount(const FcCharSet *,
				       const FcCharSet *);
extern FcBool FcUtf16Len(const FcChar8 *, FcEndian, int, int *, int *);
extern FcBool FcConfigBuildFonts(FcConfig *);
extern FcChar8 *FcAtomicOrigFile(FcAtomic *);
extern FcBool FcNameUnregisterConstants(const FcConstant *, int);
extern FcBool FcConfigSetRescanInverval(FcConfig *, int);
extern FcBool FcAtomicLock(FcAtomic *);
extern FcPattern *FcPatternBuild(FcPattern *, ...);
extern FcFontSet *FcConfigGetFonts(FcConfig *, FcSetName);
extern void FcStrListDone(FcStrList *);
extern FcBool FcLangSetEqual(const FcLangSet *, const FcLangSet *);
extern const FcConstant *FcNameGetConstant(FcChar8 *);
extern void FcMatrixShear(FcMatrix *, double, double);
extern FcMatrix *FcMatrixCopy(const FcMatrix *);
extern FcStrList *FcConfigGetConfigDirs(FcConfig *);
extern FcBool FcStrSetDel(FcStrSet *, const FcChar8 *);
extern FcBool FcConfigEnableHome(FcBool);
extern FcStrSet *FcStrSetCreate(void);
extern int FcStrCmpIgnoreCase(const FcChar8 *, const FcChar8 *);
extern FcCharSet *FcCharSetUnion(const FcCharSet *, const FcCharSet *);
extern FcObjectSet *FcObjectSetCreate(void);
extern FcBlanks *FcBlanksCreate(void);
extern void FcBlanksDestroy(FcBlanks *);
extern FcBool FcNameConstant(FcChar8 *, int *);
extern void FcMatrixRotate(FcMatrix *, double, double);
extern FcPattern *FcNameParse(const FcChar8 *);
extern void FcMatrixMultiply(FcMatrix *, const FcMatrix *,
			     const FcMatrix *);
extern FcResult FcPatternGetLangSet(const FcPattern *, const char *, int,
				    FcLangSet * *);
extern FcValue FcValueSave(FcValue);
extern void FcAtomicDestroy(FcAtomic *);
extern FcBool FcPatternEqual(const FcPattern *, const FcPattern *);
extern FcBool FcNameRegisterObjectTypes(const FcObjectType *, int);
extern FcChar32 FcCharSetNextPage(const FcCharSet *, FcChar32 *,
				  FcChar32 *);
extern FcBool FcConfigSetCurrent(FcConfig *);
extern FcPattern *FcFreeTypeQuery(const FcChar8 *, int, FcBlanks *, int *);
extern FcChar8 *FcStrListNext(FcStrList *);
extern FcBool FcNameRegisterConstants(const FcConstant *, int);
extern void FcValueDestroy(FcValue);
extern FcBool FcFileScan(FcFontSet *, FcStrSet *, FcGlobalCache *,
			 FcBlanks *, const FcChar8 *, FcBool);
extern FcFontSet *FcFontSetSort(FcConfig *, FcFontSet * *, int,
				FcPattern *, FcBool, FcCharSet * *,
				FcResult *);
extern FcResult FcPatternGetString(const FcPattern *, const char *, int,
				   FcChar8 * *);
extern FcChar8 *FcStrCopy(const FcChar8 *);
extern FcBool FcPatternEqualSubset(const FcPattern *, const FcPattern *,
				   const FcObjectSet *);
extern FcConfig *FcInitLoadConfig(void);
extern FcStrList *FcStrListCreate(FcStrSet *);
extern FcResult FcPatternGetCharSet(const FcPattern *, const char *, int,
				    FcCharSet * *);
extern FcPattern *FcPatternCreate(void);
extern FcChar32 FcPatternHash(const FcPattern *);
extern FcChar8 *FcConfigFilename(const FcChar8 *);
extern FcBool FcPatternDel(FcPattern *, const char *);
extern FcCharSet *FcCharSetCopy(FcCharSet *);
extern FcBool FcInitReinitialize(void);
extern FcFontSet *FcFontList(FcConfig *, FcPattern *, FcObjectSet *);
extern int FcUcs4ToUtf8(FcChar32, FcChar8 *);
extern FcBool FcAtomicReplaceOrig(FcAtomic *);
extern FcObjectSet *FcObjectSetVaBuild(const char *, va_list);
extern FcBool FcInitBringUptoDate(void);
extern FcResult FcPatternGetDouble(const FcPattern *, const char *, int,
				   double *);
extern int FcStrCmp(const FcChar8 *, const FcChar8 *);
extern FcChar8 *FcConfigGetCache(FcConfig *);
extern FcAtomic *FcAtomicCreate(const FcChar8 *);
extern FcPattern *FcPatternDuplicate(const FcPattern *);
extern FcChar8 *FcStrDirname(const FcChar8 *);
extern FcBool FcConfigSubstituteWithPat(FcConfig *, FcPattern *,
					FcPattern *, FcMatchKind);
extern FcBool FcDirScan(FcFontSet *, FcStrSet *, FcGlobalCache *,
			FcBlanks *, const FcChar8 *, FcBool);
extern FcChar8 *FcStrCopyFilename(const FcChar8 *);
extern FcBool FcLangSetAdd(FcLangSet *, const FcChar8 *);
extern FcResult FcPatternGetInteger(const FcPattern *, const char *, int,
				    int *);
extern FcBool FcConfigParseAndLoad(FcConfig *, const FcChar8 *, FcBool);
extern FcBool FcStrSetEqual(FcStrSet *, FcStrSet *);
extern FcBool FcConfigAppFontAddFile(FcConfig *, const FcChar8 *);
extern FcPattern *FcFontSetMatch(FcConfig *, FcFontSet * *, int,
				 FcPattern *, FcResult *);
extern FcBool FcStrSetAddFilename(FcStrSet *, const FcChar8 *);
extern FcChar8 *FcNameUnparse(FcPattern *);
extern FcChar32 FcCharSetFirstPage(const FcCharSet *, FcChar32 *,
				   FcChar32 *);
extern void FcFontSetPrint(const FcFontSet *);
extern FcPattern *FcPatternVaBuild(FcPattern *, va_list);
extern FcChar8 *FcConfigHome(void);
extern FcBool FcBlanksAdd(FcBlanks *, FcChar32);
extern FcBool FcBlanksIsMember(FcBlanks *, FcChar32);
extern FcBool FcNameUnregisterObjectTypes(const FcObjectType *, int);
extern FcLangResult FcLangSetHasLang(const FcLangSet *, const FcChar8 *);
extern FcChar8 *FcStrBasename(const FcChar8 *);
extern FcPattern *FcFontMatch(FcConfig *, FcPattern *, FcResult *);
extern void FcValuePrint(const FcValue);
extern FcLangSet *FcLangSetCreate(void);
extern FcStrList *FcConfigGetFontDirs(FcConfig *);
extern FcBool FcCharSetAddChar(FcCharSet *, FcChar32);
extern FcCharSet *FcCharSetIntersect(const FcCharSet *, const FcCharSet *);
extern void FcMatrixScale(FcMatrix *, double, double);
extern void FcPatternReference(FcPattern *);
extern FcBool FcCharSetEqual(const FcCharSet *, const FcCharSet *);
extern FcBool FcFontSetAdd(FcFontSet *, FcPattern *);
extern FcChar8 *FcAtomicNewFile(FcAtomic *);
extern FcFontSet *FcFontSetList(FcConfig *, FcFontSet * *, int,
				FcPattern *, FcObjectSet *);
extern void FcFontSetSortDestroy(FcFontSet *);
extern FcBool FcPatternAddMatrix(FcPattern *, const char *,
				 const FcMatrix *);
extern FcChar32 FcCharSetCount(const FcCharSet *);
extern FcBool FcPatternAddString(FcPattern *, const char *,
				 const FcChar8 *);
extern void FcStrSetDestroy(FcStrSet *);
extern FcConfig *FcConfigGetCurrent(void);
extern FcBool FcPatternAddInteger(FcPattern *, const char *, int);
extern FcResult FcPatternGetMatrix(const FcPattern *, const char *, int,
				   FcMatrix * *);
extern int FcGetVersion(void);
extern FcBool FcCharSetHasChar(const FcCharSet *, FcChar32);
extern FcBool FcPatternAddBool(FcPattern *, const char *, FcBool);
extern const FcObjectType *FcNameGetObjectType(const char *);
extern FcBool FcDirCacheValid(const FcChar8 *);
extern FcBool FcUtf8Len(const FcChar8 *, int, int *, int *);
extern FcConfig *FcInitLoadConfigAndFonts(void);
extern FcResult FcPatternGetBool(const FcPattern *, const char *, int,
				 FcBool *);
extern void FcFontSetDestroy(FcFontSet *);
extern FcBool FcConfigAppFontAddDir(FcConfig *, const FcChar8 *);
extern int FcUtf16ToUcs4(const FcChar8 *, FcEndian, FcChar32 *, int);
extern int FcUtf8ToUcs4(const FcChar8 *, FcChar32 *, int);
extern FcFontSet *FcFontSetCreate(void);
extern FcBool FcDirSave(FcFontSet *, FcStrSet *, const FcChar8 *);
extern void FcConfigDestroy(FcConfig *);
extern FcBool FcPatternAddDouble(FcPattern *, const char *, double);
extern FcFontSet *FcFontSort(FcConfig *, FcPattern *, FcBool,
			     FcCharSet * *, FcResult *);
extern FcPattern *FcFontRenderPrepare(FcConfig *, FcPattern *,
				      FcPattern *);
extern void FcLangSetDestroy(FcLangSet *);
extern void FcCharSetDestroy(FcCharSet *);
extern FcBool FcValueEqual(FcValue, FcValue);
extern FcBool FcPatternAddWeak(FcPattern *, const char *, FcValue, FcBool);
extern FcBool FcLangSetContains(const FcLangSet *, const FcLangSet *);
extern void FcObjectSetDestroy(FcObjectSet *);
extern FcCharSet *FcCharSetCreate(void);
extern FcLangResult FcLangSetCompare(const FcLangSet *, const FcLangSet *);
extern FcBool FcMatrixEqual(const FcMatrix *, const FcMatrix *);
extern void FcAtomicUnlock(FcAtomic *);
extern FcBool FcStrSetMember(FcStrSet *, const FcChar8 *);
extern FcChar32 FcLangSetHash(const FcLangSet *);
extern void FcAtomicDeleteNew(FcAtomic *);
extern FcCharSet *FcCharSetSubtract(const FcCharSet *, const FcCharSet *);
extern FcBool FcInit(void);
extern FcResult FcPatternGet(const FcPattern *, const char *, int,
			     FcValue *);
extern void FcPatternPrint(const FcPattern *);
extern FcBlanks *FcConfigGetBlanks(FcConfig *);