fontconfig/fontconfig/fontconfig.h

857 lines
19 KiB
C
Raw Normal View History

2002-02-15 00:34:13 +01:00
/*
2003-03-05 06:48:15 +01:00
* $RCSId: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.30 2002/09/26 00:17:27 keithp Exp $
2002-02-15 00:34:13 +01:00
*
2004-12-07 02:14:46 +01:00
* Copyright © 2001 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 _FONTCONFIG_H_
#define _FONTCONFIG_H_
#include <stdarg.h>
typedef unsigned char FcChar8;
typedef unsigned short FcChar16;
typedef unsigned int FcChar32;
typedef int FcBool;
/*
* Current Fontconfig version number. This same number
* must appear in the fontconfig configure.in file. Yes,
* it'a a pain to synchronize version numbers like this.
2002-02-15 00:34:13 +01:00
*/
2003-02-24 18:18:50 +01:00
#define FC_MAJOR 2
2005-03-01 21:48:36 +01:00
#define FC_MINOR 3
2005-10-01 21:18:51 +02:00
#define FC_REVISION 91
2002-02-15 00:34:13 +01:00
#define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
/*
* Current font cache file format version
* This is appended to the cache files so that multiple
* versions of the library will peacefully coexist
*
* Change this value whenever the disk format for the cache file
* changes in any non-compatible way. Try to avoid such changes as
* it means multiple copies of the font information.
*/
#define FC_CACHE_VERSION "2"
2002-02-15 00:34:13 +01:00
#define FcTrue 1
#define FcFalse 0
#define FC_FAMILY "family" /* String */
#define FC_STYLE "style" /* String */
#define FC_SLANT "slant" /* Int */
#define FC_WEIGHT "weight" /* Int */
#define FC_SIZE "size" /* Double */
#define FC_ASPECT "aspect" /* Double */
2002-02-15 00:34:13 +01:00
#define FC_PIXEL_SIZE "pixelsize" /* Double */
#define FC_SPACING "spacing" /* Int */
#define FC_FOUNDRY "foundry" /* String */
#define FC_ANTIALIAS "antialias" /* Bool (depends) */
#define FC_HINTING "hinting" /* Bool (true) */
#define FC_HINT_STYLE "hintstyle" /* Int */
2002-02-15 00:34:13 +01:00
#define FC_VERTICAL_LAYOUT "verticallayout" /* Bool (false) */
#define FC_AUTOHINT "autohint" /* Bool (false) */
#define FC_GLOBAL_ADVANCE "globaladvance" /* Bool (true) */
#define FC_WIDTH "width" /* Int */
2002-02-15 00:34:13 +01:00
#define FC_FILE "file" /* String */
#define FC_INDEX "index" /* Int */
#define FC_FT_FACE "ftface" /* FT_Face */
2002-02-15 00:34:13 +01:00
#define FC_RASTERIZER "rasterizer" /* String */
#define FC_OUTLINE "outline" /* Bool */
#define FC_SCALABLE "scalable" /* Bool */
#define FC_SCALE "scale" /* double */
#define FC_DPI "dpi" /* double */
#define FC_RGBA "rgba" /* Int */
#define FC_MINSPACE "minspace" /* Bool use minimum line spacing */
#define FC_SOURCE "source" /* String (deprecated) */
2002-02-15 00:34:13 +01:00
#define FC_CHARSET "charset" /* CharSet */
2002-09-26 02:17:28 +02:00
#define FC_LANG "lang" /* String RFC 3066 langs */
#define FC_FONTVERSION "fontversion" /* Int from 'head' table */
#define FC_FULLNAME "fullname" /* String */
#define FC_FAMILYLANG "familylang" /* String RFC 3066 langs */
#define FC_STYLELANG "stylelang" /* String RFC 3066 langs */
#define FC_FULLNAMELANG "fullnamelang" /* String RFC 3066 langs */
#define FC_CAPABILITY "capability" /* String */
#define FC_FONTFORMAT "fontformat" /* String */
#define FC_EMBOLDEN "embolden" /* Bool - true if emboldening needed*/
2002-02-15 00:34:13 +01:00
#define FC_DIR_CACHE_FILE "fonts.cache-"FC_CACHE_VERSION
#define FC_USER_CACHE_FILE ".fonts.cache-"FC_CACHE_VERSION
2002-02-15 00:34:13 +01:00
/* Adjust outline rasterizer */
#define FC_CHAR_WIDTH "charwidth" /* Int */
#define FC_CHAR_HEIGHT "charheight"/* Int */
#define FC_MATRIX "matrix" /* FcMatrix */
#define FC_WEIGHT_THIN 0
#define FC_WEIGHT_EXTRALIGHT 40
#define FC_WEIGHT_ULTRALIGHT FC_WEIGHT_EXTRALIGHT
#define FC_WEIGHT_LIGHT 50
2003-05-02 03:09:57 +02:00
#define FC_WEIGHT_BOOK 75
#define FC_WEIGHT_REGULAR 80
#define FC_WEIGHT_NORMAL FC_WEIGHT_REGULAR
#define FC_WEIGHT_MEDIUM 100
#define FC_WEIGHT_DEMIBOLD 180
#define FC_WEIGHT_SEMIBOLD FC_WEIGHT_DEMIBOLD
#define FC_WEIGHT_BOLD 200
#define FC_WEIGHT_EXTRABOLD 205
#define FC_WEIGHT_ULTRABOLD FC_WEIGHT_EXTRABOLD
#define FC_WEIGHT_BLACK 210
#define FC_WEIGHT_HEAVY FC_WEIGHT_BLACK
#define FC_SLANT_ROMAN 0
#define FC_SLANT_ITALIC 100
#define FC_SLANT_OBLIQUE 110
#define FC_WIDTH_ULTRACONDENSED 50
#define FC_WIDTH_EXTRACONDENSED 63
#define FC_WIDTH_CONDENSED 75
#define FC_WIDTH_SEMICONDENSED 87
#define FC_WIDTH_NORMAL 100
#define FC_WIDTH_SEMIEXPANDED 113
#define FC_WIDTH_EXPANDED 125
#define FC_WIDTH_EXTRAEXPANDED 150
#define FC_WIDTH_ULTRAEXPANDED 200
#define FC_PROPORTIONAL 0
#define FC_DUAL 90
#define FC_MONO 100
#define FC_CHARCELL 110
2002-02-15 00:34:13 +01:00
/* sub-pixel order */
2002-10-02 09:11:30 +02:00
#define FC_RGBA_UNKNOWN 0
2002-02-15 00:34:13 +01:00
#define FC_RGBA_RGB 1
#define FC_RGBA_BGR 2
#define FC_RGBA_VRGB 3
#define FC_RGBA_VBGR 4
2002-10-02 09:11:30 +02:00
#define FC_RGBA_NONE 5
2002-02-15 00:34:13 +01:00
/* hinting style */
#define FC_HINT_NONE 0
#define FC_HINT_SLIGHT 1
#define FC_HINT_MEDIUM 2
#define FC_HINT_FULL 3
2002-02-15 00:34:13 +01:00
typedef enum _FcType {
FcTypeVoid,
FcTypeInteger,
FcTypeDouble,
FcTypeString,
FcTypeBool,
FcTypeMatrix,
FcTypeCharSet,
FcTypeFTFace,
FcTypeLangSet
2002-02-15 00:34:13 +01:00
} FcType;
typedef struct _FcMatrix {
double xx, xy, yx, yy;
} FcMatrix;
#define FcMatrixInit(m) ((m)->xx = (m)->yy = 1, \
(m)->xy = (m)->yx = 0)
/*
* A data structure to represent the available glyphs in a font.
* This is represented as a sparse boolean btree.
*/
typedef struct _FcCharSet FcCharSet;
typedef struct _FcObjectType {
const char *object;
FcType type;
} FcObjectType;
typedef struct _FcConstant {
const FcChar8 *name;
2002-02-15 00:34:13 +01:00
const char *object;
int value;
} FcConstant;
typedef enum _FcResult {
FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId,
FcResultOutOfMemory
2002-02-15 00:34:13 +01:00
} FcResult;
typedef struct _FcPattern FcPattern;
typedef struct _FcLangSet FcLangSet;
#define FC_BANK_DYNAMIC 0
#define FC_BANK_FIRST 1
Add functionality to allow fontconfig data structure serialization. This patch allows the fundamental fontconfig data structures to be serialized. I've converted everything from FcPattern down to be able to use *Ptr objects, which can be either static or dynamic (using a union which either contains a pointer or an index) and replaced storage of pointers in the heap with the appropriate *Ptr object. I then changed all writes of pointers to the heap with a *CreateDynamic call, which creates a dynamic Ptr object pointing to the same object as before. This way, the fundamental fontconfig semantics should be unchanged; I did not have to change external signatures this way, although I did change some internal signatures. When given a *Ptr object, just run *U to get back to a normal pointer; it gives the right answer regardless of whether we're using static or dynamic storage. I've also implemented a Fc*Serialize call. Calling FcFontSetSerialize converts the dynamic FcFontSets contained in the config object to static FcFontSets and also converts its dependencies (e.g. everything you'd need to write to disk) to static objects. Note that you have to call Fc*PrepareSerialize first; this call will count the number of objects that actually needs to be allocated, so that we can avoid realloc. The Fc*Serialize calls then check the static pointers for nullness, and allocate the buffers if necessary. I've tested the execution of fc-list and fc-match after Fc*Serialize and they appear to work the same way.
2005-06-28 05:41:02 +02:00
2002-02-15 00:34:13 +01:00
typedef struct _FcValue {
FcType type;
union {
const FcChar8 *s;
int s_off;
2002-02-15 00:34:13 +01:00
int i;
FcBool b;
double d;
const FcMatrix *m;
const FcCharSet *c;
int c_off;
void *f;
const FcPattern *p;
const FcLangSet *l;
int l_off; // this is a difference of char *s
2002-02-15 00:34:13 +01:00
} u;
} FcValue;
typedef struct _FcFontSet {
int nfont;
int sfont;
FcPattern **fonts;
} FcFontSet;
typedef struct _FcObjectSet {
int nobject;
int sobject;
const char **objects;
2002-02-15 00:34:13 +01:00
} FcObjectSet;
typedef enum _FcMatchKind {
FcMatchPattern, FcMatchFont
2002-02-15 00:34:13 +01:00
} FcMatchKind;
typedef enum _FcLangResult {
FcLangEqual, FcLangDifferentCountry, FcLangDifferentLang
} FcLangResult;
2002-02-15 00:34:13 +01:00
typedef enum _FcSetName {
FcSetSystem = 0,
FcSetApplication = 1
} FcSetName;
typedef struct _FcAtomic FcAtomic;
2002-02-15 00:34:13 +01:00
#if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */
#define _FCFUNCPROTOBEGIN extern "C" { /* do not leave open across includes */
#define _FCFUNCPROTOEND }
#else
#define _FCFUNCPROTOBEGIN
#define _FCFUNCPROTOEND
#endif
typedef enum { FcEndianBig, FcEndianLittle } FcEndian;
2002-02-15 00:34:13 +01:00
typedef struct _FcConfig FcConfig;
typedef struct _FcGlobalCache FcFileCache;
2002-02-15 00:34:13 +01:00
typedef struct _FcBlanks FcBlanks;
typedef struct _FcStrList FcStrList;
typedef struct _FcStrSet FcStrSet;
2002-02-15 00:34:13 +01:00
_FCFUNCPROTOBEGIN
2002-08-01 03:35:02 +02:00
FcBool
FcDirCacheValid (const FcChar8 *cache_file);
FcBool
FcDirCacheHasCurrentArch (const FcChar8 *dir);
FcBool
FcDirCacheUnlink (const FcChar8 *dir);
2002-02-15 00:34:13 +01:00
/* fcblanks.c */
FcBlanks *
FcBlanksCreate (void);
void
FcBlanksDestroy (FcBlanks *b);
FcBool
FcBlanksAdd (FcBlanks *b, FcChar32 ucs4);
FcBool
FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4);
/* fccfg.c */
FcChar8 *
FcConfigHome (void);
FcBool
FcConfigEnableHome (FcBool enable);
FcChar8 *
FcConfigFilename (const FcChar8 *url);
2002-02-15 00:34:13 +01:00
FcConfig *
FcConfigCreate (void);
void
FcConfigDestroy (FcConfig *config);
FcBool
FcConfigSetCurrent (FcConfig *config);
FcConfig *
FcConfigGetCurrent (void);
FcBool
FcConfigUptoDate (FcConfig *config);
2002-02-15 00:34:13 +01:00
FcBool
FcConfigBuildFonts (FcConfig *config);
FcStrList *
FcConfigGetFontDirs (FcConfig *config);
FcStrList *
FcConfigGetConfigDirs (FcConfig *config);
2002-02-15 00:34:13 +01:00
FcStrList *
2002-02-15 00:34:13 +01:00
FcConfigGetConfigFiles (FcConfig *config);
FcChar8 *
2002-02-15 00:34:13 +01:00
FcConfigGetCache (FcConfig *config);
FcBlanks *
FcConfigGetBlanks (FcConfig *config);
int
FcConfigGetRescanInverval (FcConfig *config);
FcBool
FcConfigSetRescanInverval (FcConfig *config, int rescanInterval);
2002-02-15 00:34:13 +01:00
FcFontSet *
FcConfigGetFonts (FcConfig *config,
FcSetName set);
FcBool
FcConfigAppFontAddFile (FcConfig *config,
const FcChar8 *file);
2002-02-15 00:34:13 +01:00
FcBool
FcConfigAppFontAddDir (FcConfig *config,
const FcChar8 *dir);
2002-02-15 00:34:13 +01:00
void
FcConfigAppFontClear (FcConfig *config);
FcBool
FcConfigSubstituteWithPat (FcConfig *config,
FcPattern *p,
FcPattern *p_pat,
FcMatchKind kind);
2002-02-15 00:34:13 +01:00
FcBool
FcConfigSubstitute (FcConfig *config,
FcPattern *p,
FcMatchKind kind);
/* fccharset.c */
FcCharSet *
FcCharSetCreate (void);
void
FcCharSetDestroy (FcCharSet *fcs);
FcBool
FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4);
FcCharSet *
FcCharSetCopy (FcCharSet *src);
FcBool
FcCharSetEqual (const FcCharSet *a, const FcCharSet *b);
FcCharSet *
FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b);
FcCharSet *
FcCharSetUnion (const FcCharSet *a, const FcCharSet *b);
FcCharSet *
FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b);
FcBool
FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4);
FcChar32
FcCharSetCount (const FcCharSet *a);
FcChar32
FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b);
FcChar32
FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b);
FcBool
FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b);
#define FC_CHARSET_MAP_SIZE (256/32)
#define FC_CHARSET_DONE ((FcChar32) -1)
FcChar32
FcCharSetFirstPage (const FcCharSet *a,
FcChar32 map[FC_CHARSET_MAP_SIZE],
FcChar32 *next);
FcChar32
FcCharSetNextPage (const FcCharSet *a,
FcChar32 map[FC_CHARSET_MAP_SIZE],
FcChar32 *next);
2002-02-15 00:34:13 +01:00
/* fcdbg.c */
2002-03-01 02:00:54 +01:00
void
FcValuePrint (const FcValue v);
2002-03-01 02:00:54 +01:00
2002-02-15 00:34:13 +01:00
void
FcPatternPrint (const FcPattern *p);
2002-02-15 00:34:13 +01:00
2002-03-01 02:00:54 +01:00
void
FcFontSetPrint (const FcFontSet *s);
2002-03-01 02:00:54 +01:00
2002-02-15 00:34:13 +01:00
/* fcdefault.c */
void
FcDefaultSubstitute (FcPattern *pattern);
/* fcdir.c */
FcBool
FcFileScan (FcFontSet *set,
FcStrSet *dirs,
FcFileCache *cache,
FcBlanks *blanks,
const FcChar8 *file,
FcBool force);
2002-02-15 00:34:13 +01:00
FcBool
FcDirScan (FcFontSet *set,
FcStrSet *dirs,
FcFileCache *cache,
FcBlanks *blanks,
const FcChar8 *dir,
FcBool force);
FcBool
FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
2002-02-15 00:34:13 +01:00
/* fcfreetype.c */
FcPattern *
FcFreeTypeQuery (const FcChar8 *file, int id, FcBlanks *blanks, int *count);
2002-02-15 00:34:13 +01:00
/* fcfs.c */
FcFontSet *
FcFontSetCreate (void);
void
FcFontSetDestroy (FcFontSet *s);
FcBool
FcFontSetAdd (FcFontSet *s, FcPattern *font);
/* fcinit.c */
FcConfig *
FcInitLoadConfig (void);
FcConfig *
FcInitLoadConfigAndFonts (void);
2002-02-15 00:34:13 +01:00
FcBool
FcInit (void);
2002-02-15 00:34:13 +01:00
void
FcFini (void);
2002-05-24 01:00:46 +02:00
int
FcGetVersion (void);
2002-02-15 00:34:13 +01:00
FcBool
FcInitReinitialize (void);
2002-02-15 00:34:13 +01:00
FcBool
FcInitBringUptoDate (void);
2002-02-15 00:34:13 +01:00
/* fclang.c */
FcLangSet *
FcLangSetCreate (void);
void
FcLangSetDestroy (FcLangSet *ls);
FcLangSet *
FcLangSetCopy (const FcLangSet *ls);
FcBool
FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang);
FcLangResult
FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang);
FcLangResult
FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb);
2003-03-05 06:48:15 +01:00
FcBool
FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb);
FcBool
FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
FcChar32
FcLangSetHash (const FcLangSet *ls);
2002-02-15 00:34:13 +01:00
/* fclist.c */
FcObjectSet *
FcObjectSetCreate (void);
FcBool
FcObjectSetAdd (FcObjectSet *os, const char *object);
void
FcObjectSetDestroy (FcObjectSet *os);
FcObjectSet *
FcObjectSetVaBuild (const char *first, va_list va);
FcObjectSet *
FcObjectSetBuild (const char *first, ...);
FcFontSet *
FcFontSetList (FcConfig *config,
FcFontSet **sets,
int nsets,
FcPattern *p,
FcObjectSet *os);
2002-02-15 00:34:13 +01:00
FcFontSet *
FcFontList (FcConfig *config,
FcPattern *p,
FcObjectSet *os);
/* fcatomic.c */
FcAtomic *
FcAtomicCreate (const FcChar8 *file);
FcBool
FcAtomicLock (FcAtomic *atomic);
FcChar8 *
FcAtomicNewFile (FcAtomic *atomic);
FcChar8 *
FcAtomicOrigFile (FcAtomic *atomic);
FcBool
FcAtomicReplaceOrig (FcAtomic *atomic);
void
FcAtomicDeleteNew (FcAtomic *atomic);
void
FcAtomicUnlock (FcAtomic *atomic);
void
FcAtomicDestroy (FcAtomic *atomic);
2002-02-15 00:34:13 +01:00
/* fcmatch.c */
FcPattern *
FcFontSetMatch (FcConfig *config,
FcFontSet **sets,
int nsets,
FcPattern *p,
FcResult *result);
2002-02-15 00:34:13 +01:00
FcPattern *
FcFontMatch (FcConfig *config,
FcPattern *p,
FcResult *result);
FcPattern *
FcFontRenderPrepare (FcConfig *config,
FcPattern *pat,
FcPattern *font);
FcFontSet *
FcFontSetSort (FcConfig *config,
FcFontSet **sets,
int nsets,
FcPattern *p,
FcBool trim,
FcCharSet **csp,
FcResult *result);
FcFontSet *
FcFontSort (FcConfig *config,
FcPattern *p,
FcBool trim,
FcCharSet **csp,
FcResult *result);
void
FcFontSetSortDestroy (FcFontSet *fs);
2002-02-15 00:34:13 +01:00
/* fcmatrix.c */
FcMatrix *
FcMatrixCopy (const FcMatrix *mat);
FcBool
FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2);
void
FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b);
void
FcMatrixRotate (FcMatrix *m, double c, double s);
void
FcMatrixScale (FcMatrix *m, double sx, double sy);
void
FcMatrixShear (FcMatrix *m, double sh, double sv);
/* fcname.c */
FcBool
FcNameRegisterObjectTypes (const FcObjectType *types, int ntype);
FcBool
FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype);
const FcObjectType *
FcNameGetObjectType (const char *object);
FcBool
FcNameRegisterConstants (const FcConstant *consts, int nconsts);
FcBool
FcNameUnregisterConstants (const FcConstant *consts, int nconsts);
const FcConstant *
FcNameGetConstant (FcChar8 *string);
2002-02-15 00:34:13 +01:00
FcBool
FcNameConstant (FcChar8 *string, int *result);
2002-02-15 00:34:13 +01:00
FcPattern *
FcNameParse (const FcChar8 *name);
2002-02-15 00:34:13 +01:00
FcChar8 *
FcNameUnparse (FcPattern *pat);
/* fcpat.c */
FcPattern *
FcPatternCreate (void);
FcPattern *
FcPatternDuplicate (const FcPattern *p);
2002-02-15 00:34:13 +01:00
void
FcPatternReference (FcPattern *p);
2002-02-15 00:34:13 +01:00
void
FcValueDestroy (FcValue v);
FcBool
FcValueEqual (FcValue va, FcValue vb);
2002-02-15 00:34:13 +01:00
FcValue
FcValueSave (FcValue v);
void
FcPatternDestroy (FcPattern *p);
FcBool
FcPatternEqual (const FcPattern *pa, const FcPattern *pb);
FcBool
FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os);
FcChar32
FcPatternHash (const FcPattern *p);
2002-02-15 00:34:13 +01:00
FcBool
FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append);
2002-07-07 01:47:44 +02:00
FcBool
FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append);
2002-02-15 00:34:13 +01:00
FcResult
FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v);
2002-02-15 00:34:13 +01:00
FcBool
FcPatternDel (FcPattern *p, const char *object);
FcBool
FcPatternRemove (FcPattern *p, const char *object, int id);
2002-02-15 00:34:13 +01:00
FcBool
FcPatternAddInteger (FcPattern *p, const char *object, int i);
FcBool
FcPatternAddDouble (FcPattern *p, const char *object, double d);
FcBool
FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s);
2002-02-15 00:34:13 +01:00
FcBool
FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s);
FcBool
FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c);
FcBool
FcPatternAddBool (FcPattern *p, const char *object, FcBool b);
FcBool
FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls);
2002-02-15 00:34:13 +01:00
FcResult
FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i);
2002-02-15 00:34:13 +01:00
FcResult
FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d);
2002-02-15 00:34:13 +01:00
FcResult
FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s);
2002-02-15 00:34:13 +01:00
FcResult
FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s);
2002-02-15 00:34:13 +01:00
FcResult
FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c);
2002-02-15 00:34:13 +01:00
FcResult
FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b);
2002-02-15 00:34:13 +01:00
FcResult
FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls);
2002-02-15 00:34:13 +01:00
FcPattern *
FcPatternVaBuild (FcPattern *orig, va_list va);
FcPattern *
FcPatternBuild (FcPattern *orig, ...);
/* fcstr.c */
FcChar8 *
FcStrCopy (const FcChar8 *s);
2002-02-15 00:34:13 +01:00
FcChar8 *
FcStrCopyFilename (const FcChar8 *s);
/* These are ASCII only, suitable only for pattern element names */
#define FcIsUpper(c) ((0101 <= (c) && (c) <= 0132))
#define FcIsLower(c) ((0141 <= (c) && (c) <= 0172))
#define FcToLower(c) (FcIsUpper(c) ? (c) - 0101 + 0141 : (c))
FcChar8 *
FcStrDowncase (const FcChar8 *s);
2002-02-15 00:34:13 +01:00
int
FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
2002-02-15 00:34:13 +01:00
int
FcStrCmp (const FcChar8 *s1, const FcChar8 *s2);
const FcChar8 *
FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
const FcChar8 *
FcStrStr (const FcChar8 *s1, const FcChar8 *s2);
2002-02-15 00:34:13 +01:00
int
2002-08-24 22:08:53 +02:00
FcUtf8ToUcs4 (const FcChar8 *src_orig,
FcChar32 *dst,
int len);
2002-02-15 00:34:13 +01:00
FcBool
2002-08-24 22:08:53 +02:00
FcUtf8Len (const FcChar8 *string,
int len,
int *nchar,
int *wchar);
2002-02-15 00:34:13 +01:00
#define FC_UTF8_MAX_LEN 6
int
FcUcs4ToUtf8 (FcChar32 ucs4,
FcChar8 dest[FC_UTF8_MAX_LEN]);
int
2002-08-24 22:08:53 +02:00
FcUtf16ToUcs4 (const FcChar8 *src_orig,
FcEndian endian,
FcChar32 *dst,
int len); /* in bytes */
FcBool
2002-08-24 22:08:53 +02:00
FcUtf16Len (const FcChar8 *string,
FcEndian endian,
int len, /* in bytes */
int *nchar,
int *wchar);
FcChar8 *
FcStrDirname (const FcChar8 *file);
FcChar8 *
FcStrBasename (const FcChar8 *file);
FcStrSet *
FcStrSetCreate (void);
FcBool
FcStrSetMember (FcStrSet *set, const FcChar8 *s);
FcBool
FcStrSetEqual (FcStrSet *sa, FcStrSet *sb);
FcBool
FcStrSetAdd (FcStrSet *set, const FcChar8 *s);
FcBool
FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s);
FcBool
FcStrSetDel (FcStrSet *set, const FcChar8 *s);
void
FcStrSetDestroy (FcStrSet *set);
FcStrList *
FcStrListCreate (FcStrSet *set);
FcChar8 *
FcStrListNext (FcStrList *list);
void
FcStrListDone (FcStrList *list);
2002-02-15 00:34:13 +01:00
/* fcxml.c */
FcBool
FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain);
2002-02-15 00:34:13 +01:00
_FCFUNCPROTOEND
#endif /* _FONTCONFIG_H_ */