2002-02-15 00:34:13 +01:00
|
|
|
/*
|
2003-03-05 06:52:31 +01:00
|
|
|
* $RCSId: xc/lib/fontconfig/src/fcint.h,v 1.27 2002/08/31 22:17:32 keithp Exp $
|
2002-02-15 00:34:13 +01:00
|
|
|
*
|
2004-12-07 02:14:46 +01:00
|
|
|
* Copyright © 2000 Keith Packard
|
2002-02-15 00:34:13 +01:00
|
|
|
*
|
|
|
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
|
|
* documentation for any purpose is hereby granted without fee, provided that
|
|
|
|
* the above copyright notice appear in all copies and that both that
|
|
|
|
* copyright notice and this permission notice appear in supporting
|
|
|
|
* documentation, and that the name of Keith Packard not be used in
|
|
|
|
* advertising or publicity pertaining to distribution of the software without
|
|
|
|
* specific, written prior permission. Keith Packard makes no
|
|
|
|
* representations about the suitability of this software for any purpose. It
|
|
|
|
* is provided "as is" without express or implied warranty.
|
|
|
|
*
|
|
|
|
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
|
|
|
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
|
|
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _FCINT_H_
|
|
|
|
#define _FCINT_H_
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdio.h>
|
2006-03-03 19:35:42 +01:00
|
|
|
#ifdef HAVE_INTTYPES_H
|
|
|
|
#include <inttypes.h>
|
|
|
|
#else
|
2005-11-16 16:55:17 +01:00
|
|
|
#include <stdint.h>
|
2006-03-03 19:35:42 +01:00
|
|
|
#endif
|
2002-02-15 00:34:13 +01:00
|
|
|
#include <string.h>
|
|
|
|
#include <ctype.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/stat.h>
|
2002-05-21 19:06:22 +02:00
|
|
|
#include <time.h>
|
2002-02-15 00:34:13 +01:00
|
|
|
#include <fontconfig/fontconfig.h>
|
|
|
|
#include <fontconfig/fcprivate.h>
|
2002-06-01 01:21:25 +02:00
|
|
|
#include <fontconfig/fcfreetype.h>
|
2002-02-15 00:34:13 +01:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef FC_CONFIG_PATH
|
|
|
|
#define FC_CONFIG_PATH "fonts.conf"
|
|
|
|
#endif
|
|
|
|
|
2002-05-21 19:06:22 +02:00
|
|
|
#define FC_FONT_FILE_INVALID ((FcChar8 *) ".")
|
|
|
|
#define FC_FONT_FILE_DIR ((FcChar8 *) ".dir")
|
2006-01-05 16:12:22 +01:00
|
|
|
#define FC_GLOBAL_MAGIC_COOKIE "GLOBAL"
|
2002-05-21 19:06:22 +02:00
|
|
|
|
2003-03-22 22:25:34 +01:00
|
|
|
#ifdef _WIN32
|
|
|
|
#define FC_SEARCH_PATH_SEPARATOR ';'
|
|
|
|
#else
|
|
|
|
#define FC_SEARCH_PATH_SEPARATOR ':'
|
|
|
|
#endif
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
#define FC_DBG_MATCH 1
|
|
|
|
#define FC_DBG_MATCHV 2
|
|
|
|
#define FC_DBG_EDIT 4
|
|
|
|
#define FC_DBG_FONTSET 8
|
|
|
|
#define FC_DBG_CACHE 16
|
|
|
|
#define FC_DBG_CACHEV 32
|
|
|
|
#define FC_DBG_PARSE 64
|
|
|
|
#define FC_DBG_SCAN 128
|
2002-06-29 22:31:02 +02:00
|
|
|
#define FC_DBG_SCANV 256
|
2002-02-15 00:34:13 +01:00
|
|
|
#define FC_DBG_MEMORY 512
|
2004-12-05 06:03:52 +01:00
|
|
|
#define FC_DBG_CONFIG 1024
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
#define FC_MEM_CHARSET 0
|
2002-08-22 09:36:45 +02:00
|
|
|
#define FC_MEM_CHARLEAF 1
|
2002-02-15 00:34:13 +01:00
|
|
|
#define FC_MEM_FONTSET 2
|
|
|
|
#define FC_MEM_FONTPTR 3
|
|
|
|
#define FC_MEM_OBJECTSET 4
|
|
|
|
#define FC_MEM_OBJECTPTR 5
|
|
|
|
#define FC_MEM_MATRIX 6
|
|
|
|
#define FC_MEM_PATTERN 7
|
|
|
|
#define FC_MEM_PATELT 8
|
|
|
|
#define FC_MEM_VALLIST 9
|
|
|
|
#define FC_MEM_SUBSTATE 10
|
|
|
|
#define FC_MEM_STRING 11
|
|
|
|
#define FC_MEM_LISTBUCK 12
|
2002-08-22 09:36:45 +02:00
|
|
|
#define FC_MEM_STRSET 13
|
|
|
|
#define FC_MEM_STRLIST 14
|
|
|
|
#define FC_MEM_CONFIG 15
|
|
|
|
#define FC_MEM_LANGSET 16
|
2002-09-01 00:17:32 +02:00
|
|
|
#define FC_MEM_ATOMIC 17
|
|
|
|
#define FC_MEM_BLANKS 18
|
|
|
|
#define FC_MEM_CACHE 19
|
|
|
|
#define FC_MEM_STRBUF 20
|
|
|
|
#define FC_MEM_SUBST 21
|
|
|
|
#define FC_MEM_OBJECTTYPE 22
|
|
|
|
#define FC_MEM_CONSTANT 23
|
|
|
|
#define FC_MEM_TEST 24
|
|
|
|
#define FC_MEM_EXPR 25
|
|
|
|
#define FC_MEM_VSTACK 26
|
|
|
|
#define FC_MEM_ATTR 27
|
|
|
|
#define FC_MEM_PSTACK 28
|
2004-12-07 02:36:26 +01:00
|
|
|
#define FC_MEM_STATICSTR 29
|
2002-08-22 09:36:45 +02:00
|
|
|
|
2004-12-07 02:36:26 +01:00
|
|
|
#define FC_MEM_NUM 30
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2005-11-24 22:40:20 +01:00
|
|
|
#define FC_BANK_DYNAMIC 0
|
|
|
|
#define FC_BANK_FIRST 1
|
2005-11-04 20:31:26 +01:00
|
|
|
#define FC_BANK_LANGS 0xfcfcfcfc
|
|
|
|
|
2002-06-29 22:31:02 +02:00
|
|
|
typedef enum _FcValueBinding {
|
2003-02-12 19:22:12 +01:00
|
|
|
FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame
|
2002-06-29 22:31:02 +02:00
|
|
|
} FcValueBinding;
|
|
|
|
|
2005-06-28 05:41:02 +02:00
|
|
|
typedef struct _FcValueListPtr {
|
2005-08-24 08:21:30 +02:00
|
|
|
int bank;
|
2005-06-28 05:41:02 +02:00
|
|
|
union {
|
|
|
|
int stat;
|
|
|
|
struct _FcValueList *dyn;
|
|
|
|
} u;
|
|
|
|
} FcValueListPtr;
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
typedef struct _FcValueList {
|
2005-06-28 05:41:02 +02:00
|
|
|
FcValueListPtr next;
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
FcValue value;
|
2002-07-10 00:08:14 +02:00
|
|
|
FcValueBinding binding;
|
2002-02-15 00:34:13 +01:00
|
|
|
} FcValueList;
|
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
typedef int FcObjectPtr;
|
|
|
|
|
2005-06-28 05:41:02 +02:00
|
|
|
typedef struct _FcPatternEltPtr {
|
2005-08-24 08:21:30 +02:00
|
|
|
int bank;
|
2005-06-28 05:41:02 +02:00
|
|
|
union {
|
|
|
|
int stat;
|
|
|
|
struct _FcPatternElt *dyn;
|
|
|
|
} u;
|
|
|
|
} FcPatternEltPtr;
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
typedef struct _FcPatternElt {
|
2005-06-28 05:41:02 +02:00
|
|
|
FcObjectPtr object;
|
|
|
|
FcValueListPtr values;
|
2002-02-15 00:34:13 +01:00
|
|
|
} FcPatternElt;
|
|
|
|
|
|
|
|
struct _FcPattern {
|
|
|
|
int num;
|
|
|
|
int size;
|
2005-06-28 05:41:02 +02:00
|
|
|
FcPatternEltPtr elts;
|
2002-07-10 00:08:14 +02:00
|
|
|
int ref;
|
2005-08-24 08:21:30 +02:00
|
|
|
int bank;
|
2002-02-15 00:34:13 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef enum _FcOp {
|
|
|
|
FcOpInteger, FcOpDouble, FcOpString, FcOpMatrix, FcOpBool, FcOpCharSet,
|
|
|
|
FcOpNil,
|
|
|
|
FcOpField, FcOpConst,
|
|
|
|
FcOpAssign, FcOpAssignReplace,
|
|
|
|
FcOpPrependFirst, FcOpPrepend, FcOpAppend, FcOpAppendLast,
|
|
|
|
FcOpQuest,
|
2003-07-20 18:06:18 +02:00
|
|
|
FcOpOr, FcOpAnd, FcOpEqual, FcOpNotEqual,
|
|
|
|
FcOpContains, FcOpListing, FcOpNotContains,
|
2002-02-15 00:34:13 +01:00
|
|
|
FcOpLess, FcOpLessEqual, FcOpMore, FcOpMoreEqual,
|
|
|
|
FcOpPlus, FcOpMinus, FcOpTimes, FcOpDivide,
|
2003-04-16 01:38:06 +02:00
|
|
|
FcOpNot, FcOpComma, FcOpFloor, FcOpCeil, FcOpRound, FcOpTrunc,
|
|
|
|
FcOpInvalid
|
2002-02-15 00:34:13 +01:00
|
|
|
} FcOp;
|
|
|
|
|
|
|
|
typedef struct _FcExpr {
|
|
|
|
FcOp op;
|
|
|
|
union {
|
|
|
|
int ival;
|
|
|
|
double dval;
|
2002-02-15 07:01:28 +01:00
|
|
|
FcChar8 *sval;
|
2002-02-15 00:34:13 +01:00
|
|
|
FcMatrix *mval;
|
|
|
|
FcBool bval;
|
|
|
|
FcCharSet *cval;
|
|
|
|
char *field;
|
2002-02-15 07:01:28 +01:00
|
|
|
FcChar8 *constant;
|
2002-02-15 00:34:13 +01:00
|
|
|
struct {
|
|
|
|
struct _FcExpr *left, *right;
|
|
|
|
} tree;
|
|
|
|
} u;
|
|
|
|
} FcExpr;
|
|
|
|
|
|
|
|
typedef enum _FcQual {
|
2002-06-19 22:08:22 +02:00
|
|
|
FcQualAny, FcQualAll, FcQualFirst, FcQualNotFirst
|
2002-02-15 00:34:13 +01:00
|
|
|
} FcQual;
|
|
|
|
|
2002-08-11 20:11:04 +02:00
|
|
|
#define FcMatchDefault ((FcMatchKind) -1)
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
typedef struct _FcTest {
|
|
|
|
struct _FcTest *next;
|
2002-08-11 20:11:04 +02:00
|
|
|
FcMatchKind kind;
|
2002-02-15 00:34:13 +01:00
|
|
|
FcQual qual;
|
|
|
|
const char *field;
|
|
|
|
FcOp op;
|
|
|
|
FcExpr *expr;
|
|
|
|
} FcTest;
|
|
|
|
|
|
|
|
typedef struct _FcEdit {
|
|
|
|
struct _FcEdit *next;
|
|
|
|
const char *field;
|
|
|
|
FcOp op;
|
|
|
|
FcExpr *expr;
|
2002-07-31 03:36:37 +02:00
|
|
|
FcValueBinding binding;
|
2002-02-15 00:34:13 +01:00
|
|
|
} FcEdit;
|
|
|
|
|
|
|
|
typedef struct _FcSubst {
|
|
|
|
struct _FcSubst *next;
|
|
|
|
FcTest *test;
|
|
|
|
FcEdit *edit;
|
|
|
|
} FcSubst;
|
|
|
|
|
2002-05-31 06:42:42 +02:00
|
|
|
typedef struct _FcCharLeaf {
|
2002-02-15 00:34:13 +01:00
|
|
|
FcChar32 map[256/32];
|
2002-05-31 06:42:42 +02:00
|
|
|
} FcCharLeaf;
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2002-08-22 09:36:45 +02:00
|
|
|
#define FC_REF_CONSTANT -1
|
2002-07-07 01:47:44 +02:00
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
struct _FcCharSet {
|
|
|
|
int ref; /* reference count */
|
2002-05-31 06:42:42 +02:00
|
|
|
int num; /* size of leaves and numbers arrays */
|
2005-08-24 08:21:30 +02:00
|
|
|
int bank;
|
2005-06-28 05:41:02 +02:00
|
|
|
union {
|
|
|
|
struct {
|
|
|
|
FcCharLeaf **leaves;
|
|
|
|
FcChar16 *numbers;
|
|
|
|
} dyn;
|
|
|
|
struct {
|
|
|
|
int leafidx_offset;
|
|
|
|
int numbers_offset;
|
|
|
|
} stat;
|
|
|
|
} u;
|
2002-02-15 00:34:13 +01:00
|
|
|
};
|
|
|
|
|
2002-05-21 19:06:22 +02:00
|
|
|
struct _FcStrSet {
|
|
|
|
int ref; /* reference count */
|
|
|
|
int num;
|
|
|
|
int size;
|
2005-08-24 08:21:30 +02:00
|
|
|
FcChar8 **strs;
|
2002-05-21 19:06:22 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _FcStrList {
|
|
|
|
FcStrSet *set;
|
|
|
|
int n;
|
|
|
|
};
|
|
|
|
|
2002-02-18 23:29:28 +01:00
|
|
|
typedef struct _FcStrBuf {
|
2002-02-15 00:34:13 +01:00
|
|
|
FcChar8 *buf;
|
|
|
|
FcBool allocated;
|
|
|
|
FcBool failed;
|
|
|
|
int len;
|
|
|
|
int size;
|
2002-02-18 23:29:28 +01:00
|
|
|
} FcStrBuf;
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2005-07-25 06:10:09 +02:00
|
|
|
typedef struct _FcCache {
|
2006-02-17 15:44:42 +01:00
|
|
|
int magic; /* FC_CACHE_MAGIC */
|
2005-09-23 03:48:33 +02:00
|
|
|
int count; /* number of bytes of data in block */
|
|
|
|
int bank; /* bank ID */
|
|
|
|
int pattern_count; /* number of FcPatterns */
|
|
|
|
int patternelt_count; /* number of FcPatternElts */
|
|
|
|
int valuelist_count; /* number of FcValueLists */
|
2005-09-23 06:09:37 +02:00
|
|
|
int str_count; /* size of strings appearing as FcValues */
|
|
|
|
int langset_count; /* number of FcLangSets */
|
|
|
|
int charset_count; /* number of FcCharSets */
|
|
|
|
int charset_numbers_count;
|
2005-08-24 08:21:30 +02:00
|
|
|
int charset_leaf_count;
|
|
|
|
int charset_leaf_idx_count;
|
2005-07-25 06:10:09 +02:00
|
|
|
} FcCache;
|
|
|
|
|
2003-05-05 00:53:49 +02:00
|
|
|
/*
|
|
|
|
* To map adobe glyph names to unicode values, a precomputed hash
|
|
|
|
* table is used
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct _FcGlyphName {
|
|
|
|
FcChar32 ucs; /* unicode value */
|
|
|
|
FcChar8 name[1]; /* name extends beyond struct */
|
|
|
|
} FcGlyphName;
|
|
|
|
|
2004-12-29 10:15:17 +01:00
|
|
|
/*
|
|
|
|
* To perform case-insensitive string comparisons, a table
|
|
|
|
* is used which holds three different kinds of folding data.
|
|
|
|
*
|
|
|
|
* The first is a range of upper case values mapping to a range
|
|
|
|
* of their lower case equivalents. Within each range, the offset
|
|
|
|
* between upper and lower case is constant.
|
|
|
|
*
|
|
|
|
* The second is a range of upper case values which are interleaved
|
|
|
|
* with their lower case equivalents.
|
|
|
|
*
|
|
|
|
* The third is a set of raw unicode values mapping to a list
|
|
|
|
* of unicode values for comparison purposes. This allows conversion
|
|
|
|
* of ß to "ss" so that SS, ss and ß all match. A separate array
|
|
|
|
* holds the list of unicode values for each entry.
|
|
|
|
*
|
|
|
|
* These are packed into a single table. Using a binary search,
|
|
|
|
* the appropriate entry can be located.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define FC_CASE_FOLD_RANGE 0
|
|
|
|
#define FC_CASE_FOLD_EVEN_ODD 1
|
|
|
|
#define FC_CASE_FOLD_FULL 2
|
|
|
|
|
|
|
|
typedef struct _FcCaseFold {
|
|
|
|
FcChar32 upper;
|
|
|
|
FcChar16 method : 2;
|
|
|
|
FcChar16 count : 14;
|
|
|
|
short offset; /* lower - upper for RANGE, table id for FULL */
|
|
|
|
} FcCaseFold;
|
|
|
|
|
2004-12-05 06:03:52 +01:00
|
|
|
#define FC_MAX_FILE_LEN 4096
|
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
#define FC_STORAGE_STATIC 0x80
|
|
|
|
#define fc_value_string(v) (((v)->type & FC_STORAGE_STATIC) ? ((FcChar8 *) v) + (v)->u.s_off : (v) -> u.s)
|
|
|
|
#define fc_value_charset(v) (((v)->type & FC_STORAGE_STATIC) ? (const FcCharSet *)(((char *) v) + (v)->u.c_off) : (v) -> u.c)
|
|
|
|
#define fc_value_langset(v) (((v)->type & FC_STORAGE_STATIC) ? (const FcLangSet *)(((char *) v) + (v)->u.l_off) : (v) -> u.l)
|
2005-11-24 22:40:20 +01:00
|
|
|
#define fc_storage_type(v) ((v)->type & ~FC_STORAGE_STATIC)
|
2005-08-24 08:21:30 +02:00
|
|
|
|
2002-07-28 12:50:59 +02:00
|
|
|
/*
|
2002-08-26 21:57:40 +02:00
|
|
|
* The per-user ~/.fonts.cache-<version> file is loaded into
|
2002-07-28 12:50:59 +02:00
|
|
|
* this data structure. Each directory gets a substructure
|
|
|
|
* which is validated by comparing the directory timestamp with
|
|
|
|
* that saved in the cache. When valid, the entire directory cache
|
|
|
|
* can be immediately loaded without reading the directory. Otherwise,
|
|
|
|
* the files are checked individually; updated files are loaded into the
|
|
|
|
* cache which is then rewritten to the users home directory
|
|
|
|
*/
|
|
|
|
|
2006-02-17 15:44:42 +01:00
|
|
|
#define FC_CACHE_MAGIC 0xFC02FC03
|
2002-07-28 12:50:59 +02:00
|
|
|
|
2002-09-26 02:16:23 +02:00
|
|
|
typedef struct _FcGlobalCacheDir FcGlobalCacheDir;
|
|
|
|
|
2006-02-06 23:44:02 +01:00
|
|
|
enum FcGCDirState {
|
|
|
|
FcGCDirDisabled, FcGCDirFileRead, FcGCDirConsumed, FcGCDirUpdated
|
|
|
|
};
|
2002-09-26 02:16:23 +02:00
|
|
|
struct _FcGlobalCacheDir {
|
2002-07-28 12:50:59 +02:00
|
|
|
struct _FcGlobalCacheDir *next;
|
2005-09-11 04:16:09 +02:00
|
|
|
char *name;
|
2005-08-30 07:55:13 +02:00
|
|
|
FcCache metadata;
|
|
|
|
off_t offset;
|
2006-01-30 05:27:53 +01:00
|
|
|
FcStrSet *subdirs;
|
2005-08-30 07:55:13 +02:00
|
|
|
void *ent;
|
2006-02-06 23:44:02 +01:00
|
|
|
enum FcGCDirState state;
|
2002-09-26 02:16:23 +02:00
|
|
|
};
|
2002-07-28 12:50:59 +02:00
|
|
|
|
|
|
|
typedef struct _FcGlobalCache {
|
2005-08-30 07:55:13 +02:00
|
|
|
FcGlobalCacheDir *dirs;
|
2002-07-28 12:50:59 +02:00
|
|
|
FcBool updated;
|
2005-08-30 07:55:13 +02:00
|
|
|
int fd;
|
2002-07-28 12:50:59 +02:00
|
|
|
} FcGlobalCache;
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2002-03-01 23:06:30 +01:00
|
|
|
struct _FcAtomic {
|
|
|
|
FcChar8 *file; /* original file name */
|
|
|
|
FcChar8 *new; /* temp file name -- write data here */
|
|
|
|
FcChar8 *lck; /* lockfile name (used for locking) */
|
|
|
|
FcChar8 *tmp; /* tmpfile name (used for locking) */
|
|
|
|
};
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
struct _FcBlanks {
|
|
|
|
int nblank;
|
|
|
|
int sblank;
|
|
|
|
FcChar32 *blanks;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _FcConfig {
|
|
|
|
/*
|
|
|
|
* File names loaded from the configuration -- saved here as the
|
|
|
|
* cache file must be consulted before the directories are scanned,
|
|
|
|
* and those directives may occur in any order
|
|
|
|
*/
|
2002-05-21 19:06:22 +02:00
|
|
|
FcStrSet *configDirs; /* directories to scan for fonts */
|
2002-02-15 07:01:28 +01:00
|
|
|
FcChar8 *cache; /* name of per-user cache file */
|
2002-02-15 00:34:13 +01:00
|
|
|
/*
|
|
|
|
* Set of allowed blank chars -- used to
|
|
|
|
* trim fonts of bogus glyphs
|
|
|
|
*/
|
|
|
|
FcBlanks *blanks;
|
2002-05-21 19:06:22 +02:00
|
|
|
/*
|
|
|
|
* List of directories containing fonts,
|
|
|
|
* built by recursively scanning the set
|
|
|
|
* of configured directories
|
|
|
|
*/
|
|
|
|
FcStrSet *fontDirs;
|
2002-02-15 00:34:13 +01:00
|
|
|
/*
|
|
|
|
* Names of all of the configuration files used
|
|
|
|
* to create this configuration
|
|
|
|
*/
|
2002-05-21 19:06:22 +02:00
|
|
|
FcStrSet *configFiles; /* config files loaded */
|
2002-02-15 00:34:13 +01:00
|
|
|
/*
|
|
|
|
* Substitution instructions for patterns and fonts;
|
|
|
|
* maxObjects is used to allocate appropriate intermediate storage
|
|
|
|
* while performing a whole set of substitutions
|
|
|
|
*/
|
|
|
|
FcSubst *substPattern; /* substitutions for patterns */
|
|
|
|
FcSubst *substFont; /* substitutions for fonts */
|
|
|
|
int maxObjects; /* maximum number of tests in all substs */
|
2003-05-07 18:13:24 +02:00
|
|
|
/*
|
|
|
|
* List of patterns used to control font file selection
|
|
|
|
*/
|
|
|
|
FcStrSet *acceptGlobs;
|
|
|
|
FcStrSet *rejectGlobs;
|
2004-12-04 20:41:10 +01:00
|
|
|
FcFontSet *acceptPatterns;
|
|
|
|
FcFontSet *rejectPatterns;
|
2002-02-15 00:34:13 +01:00
|
|
|
/*
|
|
|
|
* The set of fonts loaded from the listed directories; the
|
|
|
|
* order within the set does not determine the font selection,
|
|
|
|
* except in the case of identical matches in which case earlier fonts
|
|
|
|
* match preferrentially
|
|
|
|
*/
|
|
|
|
FcFontSet *fonts[FcSetApplication + 1];
|
2002-05-21 19:06:22 +02:00
|
|
|
/*
|
|
|
|
* Fontconfig can periodically rescan the system configuration
|
|
|
|
* and font directories. This rescanning occurs when font
|
|
|
|
* listing requests are made, but no more often than rescanInterval
|
|
|
|
* seconds apart.
|
|
|
|
*/
|
|
|
|
time_t rescanTime; /* last time information was scanned */
|
|
|
|
int rescanInterval; /* interval between scans */
|
2002-02-15 00:34:13 +01:00
|
|
|
};
|
|
|
|
|
2002-02-19 09:33:23 +01:00
|
|
|
extern FcConfig *_fcConfig;
|
|
|
|
|
2005-11-02 07:29:14 +01:00
|
|
|
typedef struct _FcFileTime {
|
|
|
|
time_t time;
|
|
|
|
FcBool set;
|
|
|
|
} FcFileTime;
|
|
|
|
|
2002-07-13 07:43:25 +02:00
|
|
|
typedef struct _FcCharMap FcCharMap;
|
|
|
|
|
2005-11-16 16:55:17 +01:00
|
|
|
#define ALIGN(v,type) ((__typeof__(v))(((uintptr_t)(v) + __alignof__(type) - 1) & ~(__alignof__(type) - 1)))
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcblanks.c */
|
|
|
|
|
|
|
|
/* fccache.c */
|
|
|
|
|
2005-08-25 09:38:02 +02:00
|
|
|
FcGlobalCache *
|
|
|
|
FcGlobalCacheCreate (void);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcGlobalCacheDestroy (FcGlobalCache *cache);
|
|
|
|
|
|
|
|
FcBool
|
2005-08-30 07:55:13 +02:00
|
|
|
FcGlobalCacheReadDir (FcFontSet *set,
|
|
|
|
FcStrSet *dirs,
|
|
|
|
FcGlobalCache *cache,
|
2005-09-11 04:16:09 +02:00
|
|
|
const char *dir,
|
2005-08-30 07:55:13 +02:00
|
|
|
FcConfig *config);
|
2005-08-25 09:38:02 +02:00
|
|
|
|
|
|
|
void
|
|
|
|
FcGlobalCacheLoad (FcGlobalCache *cache,
|
2005-09-03 06:56:56 +02:00
|
|
|
FcStrSet *staleDirs,
|
2005-11-02 07:29:14 +01:00
|
|
|
const FcChar8 *cache_file,
|
|
|
|
FcConfig *config);
|
2005-08-25 09:38:02 +02:00
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcGlobalCacheUpdate (FcGlobalCache *cache,
|
2006-01-30 05:27:53 +01:00
|
|
|
FcStrSet *dirs,
|
2005-09-11 04:16:09 +02:00
|
|
|
const char *file,
|
2006-01-14 22:23:03 +01:00
|
|
|
FcFontSet *set,
|
|
|
|
FcConfig *config);
|
2005-08-25 09:38:02 +02:00
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcGlobalCacheSave (FcGlobalCache *cache,
|
2006-01-14 22:23:03 +01:00
|
|
|
const FcChar8 *cache_file,
|
|
|
|
FcConfig *config);
|
2005-08-25 09:38:02 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
FcFontSet *
|
2005-08-25 09:38:02 +02:00
|
|
|
FcCacheRead (FcConfig *config, FcGlobalCache * cache);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
FcBool
|
2005-09-01 08:14:46 +02:00
|
|
|
FcDirCacheWrite (FcFontSet *set, FcStrSet * dirs, const FcChar8 *dir);
|
2005-08-24 08:21:30 +02:00
|
|
|
|
2005-10-12 09:55:42 +02:00
|
|
|
FcBool
|
2006-01-09 14:58:04 +01:00
|
|
|
FcDirCacheRead (FcFontSet * set, FcStrSet * dirs, const FcChar8 *dir, FcConfig *config);
|
2005-10-12 09:55:42 +02:00
|
|
|
|
2005-11-29 15:57:10 +01:00
|
|
|
extern int *_fcBankId, *_fcBankIdx;
|
2005-08-24 08:21:30 +02:00
|
|
|
int
|
2005-11-29 15:57:10 +01:00
|
|
|
FcCacheBankToIndexMTF (int bank);
|
|
|
|
|
|
|
|
static __inline__ int
|
|
|
|
FcCacheBankToIndex (int bank)
|
|
|
|
{
|
2005-12-21 06:37:10 +01:00
|
|
|
return (_fcBankId[*_fcBankIdx] == bank) ? *_fcBankIdx : FcCacheBankToIndexMTF(bank);
|
2005-11-29 15:57:10 +01:00
|
|
|
}
|
2005-11-01 06:26:27 +01:00
|
|
|
|
|
|
|
const char *
|
|
|
|
FcCacheFindBankDir (int bank);
|
2005-07-25 06:10:09 +02:00
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fccfg.c */
|
|
|
|
|
2002-05-21 19:06:22 +02:00
|
|
|
FcBool
|
|
|
|
FcConfigAddConfigDir (FcConfig *config,
|
|
|
|
const FcChar8 *d);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcConfigAddFontDir (FcConfig *config,
|
|
|
|
const FcChar8 *d);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
FcBool
|
2002-02-15 07:01:28 +01:00
|
|
|
FcConfigAddDir (FcConfig *config,
|
|
|
|
const FcChar8 *d);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
FcBool
|
2002-02-15 07:01:28 +01:00
|
|
|
FcConfigAddConfigFile (FcConfig *config,
|
|
|
|
const FcChar8 *f);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcConfigSetCache (FcConfig *config,
|
2002-02-15 07:01:28 +01:00
|
|
|
const FcChar8 *c);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcConfigAddBlank (FcConfig *config,
|
|
|
|
FcChar32 blank);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcConfigAddEdit (FcConfig *config,
|
|
|
|
FcTest *test,
|
|
|
|
FcEdit *edit,
|
|
|
|
FcMatchKind kind);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcConfigSetFonts (FcConfig *config,
|
|
|
|
FcFontSet *fonts,
|
|
|
|
FcSetName set);
|
|
|
|
|
|
|
|
FcBool
|
2005-08-24 08:21:30 +02:00
|
|
|
FcConfigCompareValue (const FcValue *m,
|
2002-02-15 00:34:13 +01:00
|
|
|
FcOp op,
|
2005-08-24 08:21:30 +02:00
|
|
|
const FcValue *v);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2003-05-07 18:13:24 +02:00
|
|
|
FcBool
|
|
|
|
FcConfigGlobAdd (FcConfig *config,
|
|
|
|
const FcChar8 *glob,
|
|
|
|
FcBool accept);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcConfigAcceptFilename (FcConfig *config,
|
|
|
|
const FcChar8 *filename);
|
|
|
|
|
2004-12-04 20:41:10 +01:00
|
|
|
FcBool
|
|
|
|
FcConfigPatternsAdd (FcConfig *config,
|
|
|
|
FcPattern *pattern,
|
|
|
|
FcBool accept);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcConfigAcceptFont (FcConfig *config,
|
|
|
|
const FcPattern *font);
|
|
|
|
|
2005-11-02 07:29:14 +01:00
|
|
|
FcFileTime
|
|
|
|
FcConfigModifiedTime (FcConfig *config);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fccharset.c */
|
2005-11-04 20:31:26 +01:00
|
|
|
void
|
|
|
|
FcLangCharSetPopulate (void);
|
|
|
|
|
2002-06-29 22:31:02 +02:00
|
|
|
FcCharSet *
|
|
|
|
FcCharSetFreeze (FcCharSet *cs);
|
|
|
|
|
2003-08-15 21:45:20 +02:00
|
|
|
void
|
|
|
|
FcCharSetThawAll (void);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
FcBool
|
2002-02-18 23:29:28 +01:00
|
|
|
FcNameUnparseCharSet (FcStrBuf *buf, const FcCharSet *c);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
FcCharSet *
|
|
|
|
FcNameParseCharSet (FcChar8 *string);
|
|
|
|
|
2003-02-06 18:46:06 +01:00
|
|
|
FcCharLeaf *
|
|
|
|
FcCharSetFindLeafCreate (FcCharSet *fcs, FcChar32 ucs4);
|
2002-07-13 07:43:25 +02:00
|
|
|
|
2005-06-28 05:41:02 +02:00
|
|
|
void
|
2005-08-24 08:21:30 +02:00
|
|
|
FcCharSetNewBank (void);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
int
|
|
|
|
FcCharSetNeededBytes (const FcCharSet *c);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-11-16 16:55:17 +01:00
|
|
|
int
|
|
|
|
FcCharSetNeededBytesAlign (void);
|
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
void *
|
|
|
|
FcCharSetDistributeBytes (FcCache * metadata,
|
|
|
|
void * block_ptr);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
FcCharSet *
|
|
|
|
FcCharSetSerialize(int bank, FcCharSet *c);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
void *
|
2005-11-25 16:50:34 +01:00
|
|
|
FcCharSetUnserialize (FcCache * metadata, void *block_ptr);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
|
|
|
FcCharLeaf *
|
|
|
|
FcCharSetGetLeaf(const FcCharSet *c, int i);
|
|
|
|
|
|
|
|
FcChar16 *
|
|
|
|
FcCharSetGetNumbers(const FcCharSet *c);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcdbg.c */
|
|
|
|
void
|
2005-06-28 05:41:02 +02:00
|
|
|
FcValueListPrint (const FcValueListPtr l);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2003-03-05 06:52:31 +01:00
|
|
|
void
|
|
|
|
FcLangSetPrint (const FcLangSet *ls);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
void
|
|
|
|
FcOpPrint (FcOp op);
|
|
|
|
|
|
|
|
void
|
2002-08-11 20:11:04 +02:00
|
|
|
FcTestPrint (const FcTest *test);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
void
|
2002-08-11 20:11:04 +02:00
|
|
|
FcExprPrint (const FcExpr *expr);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
void
|
2002-08-11 20:11:04 +02:00
|
|
|
FcEditPrint (const FcEdit *edit);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
void
|
2002-08-11 20:11:04 +02:00
|
|
|
FcSubstPrint (const FcSubst *subst);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2005-11-24 20:38:05 +01:00
|
|
|
extern int FcDebugVal;
|
|
|
|
|
|
|
|
static __inline__ int
|
|
|
|
FcDebug (void) { return FcDebugVal; }
|
|
|
|
|
|
|
|
void
|
|
|
|
FcInitDebug (void);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2005-10-22 16:21:14 +02:00
|
|
|
/* fcdefault.c */
|
|
|
|
FcChar8 *
|
|
|
|
FcGetDefaultLang (void);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcdir.c */
|
|
|
|
|
2004-12-05 06:03:52 +01:00
|
|
|
FcBool
|
|
|
|
FcFileIsDir (const FcChar8 *file);
|
|
|
|
|
2003-05-07 18:13:24 +02:00
|
|
|
FcBool
|
|
|
|
FcFileScanConfig (FcFontSet *set,
|
|
|
|
FcStrSet *dirs,
|
|
|
|
FcFileCache *cache,
|
|
|
|
FcBlanks *blanks,
|
|
|
|
const FcChar8 *file,
|
|
|
|
FcBool force,
|
|
|
|
FcConfig *config);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcDirScanConfig (FcFontSet *set,
|
|
|
|
FcStrSet *dirs,
|
|
|
|
FcFileCache *cache,
|
|
|
|
FcBlanks *blanks,
|
|
|
|
const FcChar8 *dir,
|
|
|
|
FcBool force,
|
|
|
|
FcConfig *config);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcfont.c */
|
|
|
|
int
|
|
|
|
FcFontDebug (void);
|
|
|
|
|
2002-07-07 01:47:44 +02:00
|
|
|
/* fcfreetype.c */
|
2002-07-08 09:31:53 +02:00
|
|
|
FcBool
|
|
|
|
FcFreeTypeIsExclusiveLang (const FcChar8 *lang);
|
|
|
|
|
2002-07-07 01:47:44 +02:00
|
|
|
FcBool
|
|
|
|
FcFreeTypeHasLang (FcPattern *pattern, const FcChar8 *lang);
|
|
|
|
|
2003-02-06 18:46:06 +01:00
|
|
|
FcChar32
|
|
|
|
FcFreeTypeUcs4ToPrivate (FcChar32 ucs4, const FcCharMap *map);
|
|
|
|
|
|
|
|
FcChar32
|
|
|
|
FcFreeTypePrivateToUcs4 (FcChar32 private, const FcCharMap *map);
|
|
|
|
|
|
|
|
const FcCharMap *
|
|
|
|
FcFreeTypeGetPrivateMap (FT_Encoding encoding);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcfs.c */
|
2005-06-28 05:41:02 +02:00
|
|
|
|
|
|
|
void
|
2005-08-24 08:21:30 +02:00
|
|
|
FcFontSetNewBank (void);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
int
|
|
|
|
FcFontSetNeededBytes (FcFontSet *s);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-11-16 16:55:17 +01:00
|
|
|
int
|
|
|
|
FcFontSetNeededBytesAlign (void);
|
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
void *
|
|
|
|
FcFontSetDistributeBytes (FcCache * metadata, void * block_ptr);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-07-25 06:10:09 +02:00
|
|
|
FcBool
|
2005-08-24 08:21:30 +02:00
|
|
|
FcFontSetSerialize (int bank, FcFontSet * s);
|
2005-07-25 06:10:09 +02:00
|
|
|
|
|
|
|
FcBool
|
2005-11-25 16:50:34 +01:00
|
|
|
FcFontSetUnserialize(FcCache * metadata, FcFontSet * s, void * block_ptr);
|
2005-07-25 06:10:09 +02:00
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcgram.y */
|
|
|
|
int
|
|
|
|
FcConfigparse (void);
|
|
|
|
|
|
|
|
int
|
|
|
|
FcConfigwrap (void);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcConfigerror (char *fmt, ...);
|
|
|
|
|
|
|
|
char *
|
|
|
|
FcConfigSaveField (const char *field);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcTestDestroy (FcTest *test);
|
|
|
|
|
|
|
|
FcExpr *
|
|
|
|
FcExprCreateInteger (int i);
|
|
|
|
|
|
|
|
FcExpr *
|
|
|
|
FcExprCreateDouble (double d);
|
|
|
|
|
|
|
|
FcExpr *
|
2002-02-15 07:01:28 +01:00
|
|
|
FcExprCreateString (const FcChar8 *s);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
FcExpr *
|
|
|
|
FcExprCreateMatrix (const FcMatrix *m);
|
|
|
|
|
|
|
|
FcExpr *
|
|
|
|
FcExprCreateBool (FcBool b);
|
|
|
|
|
|
|
|
FcExpr *
|
|
|
|
FcExprCreateNil (void);
|
|
|
|
|
|
|
|
FcExpr *
|
|
|
|
FcExprCreateField (const char *field);
|
|
|
|
|
|
|
|
FcExpr *
|
2002-02-15 07:01:28 +01:00
|
|
|
FcExprCreateConst (const FcChar8 *constant);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
FcExpr *
|
|
|
|
FcExprCreateOp (FcExpr *left, FcOp op, FcExpr *right);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcExprDestroy (FcExpr *e);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcEditDestroy (FcEdit *e);
|
|
|
|
|
|
|
|
/* fcinit.c */
|
|
|
|
|
|
|
|
void
|
|
|
|
FcMemReport (void);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcMemAlloc (int kind, int size);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcMemFree (int kind, int size);
|
|
|
|
|
2002-07-07 01:47:44 +02:00
|
|
|
/* fclang.c */
|
2002-08-22 09:36:45 +02:00
|
|
|
FcLangSet *
|
|
|
|
FcFreeTypeLangSet (const FcCharSet *charset,
|
2002-07-08 09:31:53 +02:00
|
|
|
const FcChar8 *exclusiveLang);
|
2002-07-07 01:47:44 +02:00
|
|
|
|
|
|
|
FcLangResult
|
|
|
|
FcLangCompare (const FcChar8 *s1, const FcChar8 *s2);
|
|
|
|
|
|
|
|
const FcCharSet *
|
|
|
|
FcCharSetForLang (const FcChar8 *lang);
|
|
|
|
|
2002-08-22 09:36:45 +02:00
|
|
|
FcLangSet *
|
|
|
|
FcLangSetPromote (const FcChar8 *lang);
|
|
|
|
|
|
|
|
FcLangSet *
|
|
|
|
FcNameParseLangSet (const FcChar8 *string);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls);
|
|
|
|
|
2005-06-28 05:41:02 +02:00
|
|
|
void
|
2005-08-24 08:21:30 +02:00
|
|
|
FcLangSetNewBank (void);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
int
|
|
|
|
FcLangSetNeededBytes (const FcLangSet *l);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-11-16 16:55:17 +01:00
|
|
|
int
|
|
|
|
FcLangSetNeededBytesAlign (void);
|
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
void *
|
|
|
|
FcLangSetDistributeBytes (FcCache * metadata,
|
|
|
|
void * block_ptr);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
|
|
|
FcLangSet *
|
2005-08-24 08:21:30 +02:00
|
|
|
FcLangSetSerialize (int bank, FcLangSet *l);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
void *
|
2005-11-25 16:50:34 +01:00
|
|
|
FcLangSetUnserialize (FcCache * metadata, void *block_ptr);
|
2005-07-25 06:10:09 +02:00
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fclist.c */
|
|
|
|
|
2004-12-04 20:41:10 +01:00
|
|
|
FcBool
|
|
|
|
FcListPatternMatchAny (const FcPattern *p,
|
|
|
|
const FcPattern *font);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcmatch.c */
|
|
|
|
|
|
|
|
/* fcname.c */
|
|
|
|
|
|
|
|
FcBool
|
2005-01-29 00:55:14 +01:00
|
|
|
FcNameBool (const FcChar8 *v, FcBool *result);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
void *
|
|
|
|
FcObjectDistributeBytes (FcCache * metadata,
|
|
|
|
void * block_ptr);
|
|
|
|
|
|
|
|
FcObjectPtr
|
|
|
|
FcObjectToPtr (const char * si);
|
|
|
|
|
|
|
|
int
|
2005-08-27 04:34:24 +02:00
|
|
|
FcObjectNeededBytes (void);
|
|
|
|
|
2005-11-16 16:55:17 +01:00
|
|
|
int
|
|
|
|
FcObjectNeededBytesAlign (void);
|
|
|
|
|
2005-08-27 04:34:24 +02:00
|
|
|
void *
|
2005-11-25 16:50:34 +01:00
|
|
|
FcObjectUnserialize (FcCache * metadata, void *block_ptr);
|
2005-08-24 08:21:30 +02:00
|
|
|
|
|
|
|
void
|
2005-08-27 04:34:24 +02:00
|
|
|
FcObjectSerialize (void);
|
2005-08-24 08:21:30 +02:00
|
|
|
|
2005-08-27 04:34:24 +02:00
|
|
|
const char *
|
|
|
|
FcObjectPtrU (FcObjectPtr p);
|
|
|
|
|
2005-11-25 04:00:51 +01:00
|
|
|
static __inline__ int
|
|
|
|
FcObjectPtrCompare (const FcObjectPtr a, const FcObjectPtr b)
|
|
|
|
{
|
|
|
|
return a - b;
|
|
|
|
}
|
2005-08-27 04:34:24 +02:00
|
|
|
|
|
|
|
void
|
|
|
|
FcObjectStaticNameFini (void);
|
2005-08-24 08:21:30 +02:00
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcpat.c */
|
2005-08-24 08:21:30 +02:00
|
|
|
|
|
|
|
FcValue
|
|
|
|
FcValueCanonicalize (const FcValue *v);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
void
|
2005-06-28 05:41:02 +02:00
|
|
|
FcValueListDestroy (FcValueListPtr l);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
FcPatternElt *
|
2002-06-03 10:31:15 +02:00
|
|
|
FcPatternFindElt (const FcPattern *p, const char *object);
|
|
|
|
|
|
|
|
FcPatternElt *
|
|
|
|
FcPatternInsertElt (FcPattern *p, const char *object);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2002-07-07 01:47:44 +02:00
|
|
|
FcBool
|
|
|
|
FcPatternAddWithBinding (FcPattern *p,
|
|
|
|
const char *object,
|
|
|
|
FcValue value,
|
|
|
|
FcValueBinding binding,
|
|
|
|
FcBool append);
|
|
|
|
|
2002-08-22 09:36:45 +02:00
|
|
|
FcPattern *
|
|
|
|
FcPatternFreeze (FcPattern *p);
|
|
|
|
|
2003-08-15 21:45:20 +02:00
|
|
|
void
|
2005-07-15 20:49:12 +02:00
|
|
|
FcPatternFini (void);
|
2003-08-15 21:45:20 +02:00
|
|
|
|
2004-12-04 20:41:10 +01:00
|
|
|
FcBool
|
|
|
|
FcPatternAppend (FcPattern *p, FcPattern *s);
|
|
|
|
|
2005-11-01 06:26:27 +01:00
|
|
|
void
|
|
|
|
FcPatternAddFullFname (const FcPattern *p, const char *fname);
|
|
|
|
|
2005-11-01 07:57:25 +01:00
|
|
|
void
|
|
|
|
FcPatternTransferFullFname (const FcPattern *new, const FcPattern *orig);
|
2005-11-01 06:26:27 +01:00
|
|
|
|
2005-09-11 04:16:09 +02:00
|
|
|
const FcChar8 *
|
|
|
|
FcStrStaticName (const FcChar8 *name);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-08-27 04:34:24 +02:00
|
|
|
FcChar32
|
|
|
|
FcStringHash (const FcChar8 *s);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
|
|
|
void
|
2005-08-24 08:21:30 +02:00
|
|
|
FcPatternNewBank (void);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
int
|
|
|
|
FcPatternNeededBytes (FcPattern *p);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-11-16 16:55:17 +01:00
|
|
|
int
|
|
|
|
FcPatternNeededBytesAlign (void);
|
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
void *
|
|
|
|
FcPatternDistributeBytes (FcCache * metadata, void * block_ptr);
|
2005-06-28 05:41:02 +02:00
|
|
|
|
2005-11-25 04:00:51 +01:00
|
|
|
/* please don't access these outside of fcpat.c! only visible so that
|
|
|
|
* *PtrU can be inlined. */
|
2005-11-25 17:04:44 +01:00
|
|
|
extern FcValueList ** _fcValueLists;
|
|
|
|
extern FcPatternElt ** _fcPatternElts;
|
2005-11-25 04:00:51 +01:00
|
|
|
|
|
|
|
static __inline__ FcValueList *
|
|
|
|
FcValueListPtrU (FcValueListPtr pi)
|
|
|
|
{
|
|
|
|
if (pi.bank == FC_BANK_DYNAMIC)
|
|
|
|
return pi.u.dyn;
|
|
|
|
|
2005-11-25 17:04:44 +01:00
|
|
|
return &_fcValueLists[FcCacheBankToIndex(pi.bank)][pi.u.stat];
|
2005-11-25 04:00:51 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
static __inline__ FcPatternElt *
|
|
|
|
FcPatternEltU (FcPatternEltPtr pei)
|
|
|
|
{
|
|
|
|
if (pei.bank == FC_BANK_DYNAMIC)
|
|
|
|
return pei.u.dyn;
|
|
|
|
|
2005-11-25 17:04:44 +01:00
|
|
|
return &_fcPatternElts[FcCacheBankToIndex(pei.bank)][pei.u.stat];
|
2005-11-25 04:00:51 +01:00
|
|
|
}
|
2005-06-28 05:41:02 +02:00
|
|
|
|
|
|
|
FcValueListPtr
|
|
|
|
FcValueListPtrCreateDynamic(FcValueList * p);
|
|
|
|
|
|
|
|
FcPattern *
|
2005-08-24 08:21:30 +02:00
|
|
|
FcPatternSerialize (int bank, FcPattern * p);
|
2005-07-25 06:10:09 +02:00
|
|
|
|
2005-08-27 04:34:24 +02:00
|
|
|
void *
|
2005-11-25 16:50:34 +01:00
|
|
|
FcPatternUnserialize (FcCache * metadata, void *block_ptr);
|
2005-07-25 06:10:09 +02:00
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
/* fcrender.c */
|
|
|
|
|
|
|
|
/* fcmatrix.c */
|
2002-07-28 12:50:59 +02:00
|
|
|
|
2005-08-24 08:21:30 +02:00
|
|
|
extern const FcMatrix FcIdentityMatrix;
|
2002-07-28 12:50:59 +02:00
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
void
|
|
|
|
FcMatrixFree (FcMatrix *mat);
|
|
|
|
|
|
|
|
/* fcstr.c */
|
2005-06-28 05:41:02 +02:00
|
|
|
void
|
|
|
|
FcStrSetSort (FcStrSet * set);
|
|
|
|
|
2002-02-15 07:01:28 +01:00
|
|
|
FcChar8 *
|
|
|
|
FcStrPlus (const FcChar8 *s1, const FcChar8 *s2);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
|
|
|
void
|
2002-02-15 07:01:28 +01:00
|
|
|
FcStrFree (FcChar8 *s);
|
2002-02-15 00:34:13 +01:00
|
|
|
|
2002-02-18 23:29:28 +01:00
|
|
|
void
|
|
|
|
FcStrBufInit (FcStrBuf *buf, FcChar8 *init, int size);
|
|
|
|
|
|
|
|
void
|
|
|
|
FcStrBufDestroy (FcStrBuf *buf);
|
|
|
|
|
|
|
|
FcChar8 *
|
|
|
|
FcStrBufDone (FcStrBuf *buf);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcStrBufChar (FcStrBuf *buf, FcChar8 c);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcStrBufString (FcStrBuf *buf, const FcChar8 *s);
|
|
|
|
|
|
|
|
FcBool
|
|
|
|
FcStrBufData (FcStrBuf *buf, const FcChar8 *s, int len);
|
|
|
|
|
2002-07-07 01:47:44 +02:00
|
|
|
int
|
|
|
|
FcStrCmpIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2);
|
|
|
|
|
2003-05-02 03:11:53 +02:00
|
|
|
const FcChar8 *
|
|
|
|
FcStrContainsIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2);
|
|
|
|
|
|
|
|
const FcChar8 *
|
|
|
|
FcStrContainsIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
|
|
|
|
|
2003-03-02 20:12:23 +01:00
|
|
|
FcBool
|
|
|
|
FcStrUsesHome (const FcChar8 *s);
|
|
|
|
|
2003-03-22 22:25:34 +01:00
|
|
|
FcChar8 *
|
|
|
|
FcStrLastSlash (const FcChar8 *path);
|
|
|
|
|
2004-12-29 10:15:17 +01:00
|
|
|
FcChar32
|
|
|
|
FcStrHashIgnoreCase (const FcChar8 *s);
|
|
|
|
|
2002-02-15 00:34:13 +01:00
|
|
|
#endif /* _FC_INT_H_ */
|