Home | History | Annotate | Line # | Download | only in fontconfig
      1 /*
      2  * fontconfig/fontconfig/fontconfig.h
      3  *
      4  * Copyright  2001 Keith Packard
      5  *
      6  * Permission to use, copy, modify, distribute, and sell this software and its
      7  * documentation for any purpose is hereby granted without fee, provided that
      8  * the above copyright notice appear in all copies and that both that
      9  * copyright notice and this permission notice appear in supporting
     10  * documentation, and that the name of the author(s) not be used in
     11  * advertising or publicity pertaining to distribution of the software without
     12  * specific, written prior permission.  The authors make no
     13  * representations about the suitability of this software for any purpose.  It
     14  * is provided "as is" without express or implied warranty.
     15  *
     16  * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
     17  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
     18  * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
     19  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
     20  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
     21  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
     22  * PERFORMANCE OF THIS SOFTWARE.
     23  */
     24 
     25 #ifndef _FONTCONFIG_H_
     26 #define _FONTCONFIG_H_
     27 
     28 #include <sys/types.h>
     29 #include <sys/stat.h>
     30 #include <stdarg.h>
     31 #include <limits.h>
     32 
     33 #if defined(__GNUC__) && (__GNUC__ >= 4)
     34 #define FC_ATTRIBUTE_SENTINEL(x) __attribute__((__sentinel__(0)))
     35 #else
     36 #define FC_ATTRIBUTE_SENTINEL(x)
     37 #endif
     38 
     39 #ifndef FcPublic
     40 #define FcPublic
     41 #endif
     42 
     43 typedef unsigned char	FcChar8;
     44 typedef unsigned short	FcChar16;
     45 typedef unsigned int	FcChar32;
     46 typedef int		FcBool;
     47 
     48 /*
     49  * Current Fontconfig version number.  This same number
     50  * must appear in the fontconfig configure.in file. Yes,
     51  * it'a a pain to synchronize version numbers like this.
     52  */
     53 
     54 #define FC_MAJOR	2
     55 #define FC_MINOR	15
     56 #define FC_REVISION	0
     57 
     58 #define FC_VERSION	((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
     59 
     60 /*
     61  * Current font cache file format version
     62  * This is appended to the cache files so that multiple
     63  * versions of the library will peacefully coexist
     64  *
     65  * Change this value whenever the disk format for the cache file
     66  * changes in any non-compatible way.  Try to avoid such changes as
     67  * it means multiple copies of the font information.
     68  */
     69 
     70 #define FC_CACHE_VERSION_NUMBER	9
     71 #define _FC_STRINGIFY_(s)    	#s
     72 #define _FC_STRINGIFY(s)    	_FC_STRINGIFY_(s)
     73 #define FC_CACHE_VERSION    	_FC_STRINGIFY(FC_CACHE_VERSION_NUMBER)
     74 
     75 #define FcFalse		0
     76 #define FcTrue		1
     77 #define FcDontCare	2
     78 
     79 #define FC_FAMILY	    "family"		/* String */
     80 #define FC_STYLE	    "style"		/* String */
     81 #define FC_SLANT	    "slant"		/* Int */
     82 #define FC_WEIGHT	    "weight"		/* Int */
     83 #define FC_SIZE		    "size"		/* Range (double) */
     84 #define FC_ASPECT	    "aspect"		/* Double */
     85 #define FC_PIXEL_SIZE	    "pixelsize"		/* Double */
     86 #define FC_SPACING	    "spacing"		/* Int */
     87 #define FC_FOUNDRY	    "foundry"		/* String */
     88 #define FC_ANTIALIAS	    "antialias"		/* Bool (depends) */
     89 #define FC_HINTING	    "hinting"		/* Bool (true) */
     90 #define FC_HINT_STYLE	    "hintstyle"		/* Int */
     91 #define FC_VERTICAL_LAYOUT  "verticallayout"	/* Bool (false) */
     92 #define FC_AUTOHINT	    "autohint"		/* Bool (false) */
     93 /* FC_GLOBAL_ADVANCE is deprecated. this is simply ignored on freetype 2.4.5 or later */
     94 #define FC_GLOBAL_ADVANCE   "globaladvance"	/* Bool (true) */
     95 #define FC_WIDTH	    "width"		/* Int */
     96 #define FC_FILE		    "file"		/* String */
     97 #define FC_INDEX	    "index"		/* Int */
     98 #define FC_FT_FACE	    "ftface"		/* FT_Face */
     99 #define FC_RASTERIZER	    "rasterizer"	/* String (deprecated) */
    100 #define FC_OUTLINE	    "outline"		/* Bool */
    101 #define FC_SCALABLE	    "scalable"		/* Bool */
    102 #define FC_COLOR	    "color"		/* Bool */
    103 #define FC_VARIABLE	    "variable"		/* Bool */
    104 #define FC_SCALE	    "scale"		/* double (deprecated) */
    105 #define FC_SYMBOL	    "symbol"		/* Bool */
    106 #define FC_DPI		    "dpi"		/* double */
    107 #define FC_RGBA		    "rgba"		/* Int */
    108 #define FC_MINSPACE	    "minspace"		/* Bool use minimum line spacing */
    109 #define FC_SOURCE	    "source"		/* String (deprecated) */
    110 #define FC_CHARSET	    "charset"		/* CharSet */
    111 #define FC_LANG		    "lang"		/* LangSet Set of RFC 3066 langs */
    112 #define FC_FONTVERSION	    "fontversion"	/* Int from 'head' table */
    113 #define FC_FULLNAME	    "fullname"		/* String */
    114 #define FC_FAMILYLANG	    "familylang"	/* String RFC 3066 langs */
    115 #define FC_STYLELANG	    "stylelang"		/* String RFC 3066 langs */
    116 #define FC_FULLNAMELANG	    "fullnamelang"	/* String RFC 3066 langs */
    117 #define FC_CAPABILITY       "capability"	/* String */
    118 #define FC_FONTFORMAT	    "fontformat"	/* String */
    119 #define FC_EMBOLDEN	    "embolden"		/* Bool - true if emboldening needed*/
    120 #define FC_EMBEDDED_BITMAP  "embeddedbitmap"	/* Bool - true to enable embedded bitmaps */
    121 #define FC_DECORATIVE	    "decorative"	/* Bool - true if style is a decorative variant */
    122 #define FC_LCD_FILTER	    "lcdfilter"		/* Int */
    123 #define FC_FONT_FEATURES    "fontfeatures"	/* String */
    124 #define FC_FONT_VARIATIONS  "fontvariations"	/* String */
    125 #define FC_NAMELANG	    "namelang"		/* String RFC 3866 langs */
    126 #define FC_PRGNAME	    "prgname"		/* String */
    127 #define FC_HASH		    "hash"		/* String (deprecated) */
    128 #define FC_POSTSCRIPT_NAME  "postscriptname"	/* String */
    129 #define FC_FONT_HAS_HINT    "fonthashint"	/* Bool - true if font has hinting */
    130 #define FC_ORDER	    "order"		/* Integer */
    131 #define FC_DESKTOP_NAME     "desktop"		/* String */
    132 #define FC_NAMED_INSTANCE   "namedinstance"	/* Bool - true if font is named instance */
    133 #define FC_FONT_WRAPPER     "fontwrapper" 	/* String */
    134 
    135 #define FC_CACHE_SUFFIX		    ".cache-" FC_CACHE_VERSION
    136 #define FC_DIR_CACHE_FILE	    "fonts.cache-" FC_CACHE_VERSION
    137 #define FC_USER_CACHE_FILE	    ".fonts.cache-" FC_CACHE_VERSION
    138 
    139 /* Adjust outline rasterizer */
    140 #define FC_CHARWIDTH	    "charwidth"	/* Int */
    141 #define FC_CHAR_WIDTH	    FC_CHARWIDTH
    142 #define FC_CHAR_HEIGHT	    "charheight"/* Int */
    143 #define FC_MATRIX	    "matrix"    /* FcMatrix */
    144 
    145 #define FC_WEIGHT_THIN		    0
    146 #define FC_WEIGHT_EXTRALIGHT	    40
    147 #define FC_WEIGHT_ULTRALIGHT	    FC_WEIGHT_EXTRALIGHT
    148 #define FC_WEIGHT_LIGHT		    50
    149 #define FC_WEIGHT_DEMILIGHT	    55
    150 #define FC_WEIGHT_SEMILIGHT	    FC_WEIGHT_DEMILIGHT
    151 #define FC_WEIGHT_BOOK		    75
    152 #define FC_WEIGHT_REGULAR	    80
    153 #define FC_WEIGHT_NORMAL	    FC_WEIGHT_REGULAR
    154 #define FC_WEIGHT_MEDIUM	    100
    155 #define FC_WEIGHT_DEMIBOLD	    180
    156 #define FC_WEIGHT_SEMIBOLD	    FC_WEIGHT_DEMIBOLD
    157 #define FC_WEIGHT_BOLD		    200
    158 #define FC_WEIGHT_EXTRABOLD	    205
    159 #define FC_WEIGHT_ULTRABOLD	    FC_WEIGHT_EXTRABOLD
    160 #define FC_WEIGHT_BLACK		    210
    161 #define FC_WEIGHT_HEAVY		    FC_WEIGHT_BLACK
    162 #define FC_WEIGHT_EXTRABLACK	    215
    163 #define FC_WEIGHT_ULTRABLACK	    FC_WEIGHT_EXTRABLACK
    164 
    165 #define FC_SLANT_ROMAN		    0
    166 #define FC_SLANT_ITALIC		    100
    167 #define FC_SLANT_OBLIQUE	    110
    168 
    169 #define FC_WIDTH_ULTRACONDENSED	    50
    170 #define FC_WIDTH_EXTRACONDENSED	    63
    171 #define FC_WIDTH_CONDENSED	    75
    172 #define FC_WIDTH_SEMICONDENSED	    87
    173 #define FC_WIDTH_NORMAL		    100
    174 #define FC_WIDTH_SEMIEXPANDED	    113
    175 #define FC_WIDTH_EXPANDED	    125
    176 #define FC_WIDTH_EXTRAEXPANDED	    150
    177 #define FC_WIDTH_ULTRAEXPANDED	    200
    178 
    179 #define FC_PROPORTIONAL		    0
    180 #define FC_DUAL			    90
    181 #define FC_MONO			    100
    182 #define FC_CHARCELL		    110
    183 
    184 /* sub-pixel order */
    185 #define FC_RGBA_UNKNOWN	    0
    186 #define FC_RGBA_RGB	    1
    187 #define FC_RGBA_BGR	    2
    188 #define FC_RGBA_VRGB	    3
    189 #define FC_RGBA_VBGR	    4
    190 #define FC_RGBA_NONE	    5
    191 
    192 /* hinting style */
    193 #define FC_HINT_NONE        0
    194 #define FC_HINT_SLIGHT      1
    195 #define FC_HINT_MEDIUM      2
    196 #define FC_HINT_FULL        3
    197 
    198 /* LCD filter */
    199 #define FC_LCD_NONE	    0
    200 #define FC_LCD_DEFAULT	    1
    201 #define FC_LCD_LIGHT	    2
    202 #define FC_LCD_LEGACY	    3
    203 
    204 typedef enum _FcType {
    205     FcTypeUnknown = -1,
    206     FcTypeVoid,
    207     FcTypeInteger,
    208     FcTypeDouble,
    209     FcTypeString,
    210     FcTypeBool,
    211     FcTypeMatrix,
    212     FcTypeCharSet,
    213     FcTypeFTFace,
    214     FcTypeLangSet,
    215     FcTypeRange
    216 } FcType;
    217 
    218 typedef struct _FcMatrix {
    219     double xx, xy, yx, yy;
    220 } FcMatrix;
    221 
    222 #define FcMatrixInit(m)	((m)->xx = (m)->yy = 1, \
    223 			 (m)->xy = (m)->yx = 0)
    224 
    225 /*
    226  * A data structure to represent the available glyphs in a font.
    227  * This is represented as a sparse boolean btree.
    228  */
    229 
    230 typedef struct _FcCharSet FcCharSet;
    231 
    232 typedef struct _FcObjectType {
    233     char	*object;
    234     FcType	type;
    235 } FcObjectType;
    236 
    237 typedef struct _FcConstant {
    238     const FcChar8  *name;
    239     const char	*object;
    240     int		value;
    241 } FcConstant;
    242 
    243 typedef enum _FcResult {
    244     FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId,
    245     FcResultOutOfMemory
    246 } FcResult;
    247 
    248 typedef enum _FcValueBinding {
    249     FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame,
    250     /* to make sure sizeof (FcValueBinding) == 4 even with -fshort-enums */
    251     FcValueBindingEnd = INT_MAX
    252 } FcValueBinding;
    253 
    254 typedef struct _FcPattern   FcPattern;
    255 
    256 typedef struct _FcPatternIter {
    257     void *dummy1;
    258     void *dummy2;
    259 } FcPatternIter;
    260 
    261 typedef struct _FcLangSet   FcLangSet;
    262 
    263 typedef struct _FcRange	    FcRange;
    264 
    265 typedef struct _FcValue {
    266     FcType	type;
    267     union {
    268 	const FcChar8	*s;
    269 	int		i;
    270 	FcBool		b;
    271 	double		d;
    272 	const FcMatrix	*m;
    273 	const FcCharSet	*c;
    274 	void		*f;
    275 	const FcLangSet	*l;
    276 	const FcRange	*r;
    277     } u;
    278 } FcValue;
    279 
    280 typedef struct _FcFontSet {
    281     int		nfont;
    282     int		sfont;
    283     FcPattern	**fonts;
    284 } FcFontSet;
    285 
    286 typedef struct _FcObjectSet {
    287     int		nobject;
    288     int		sobject;
    289     const char	**objects;
    290 } FcObjectSet;
    291 
    292 typedef enum _FcMatchKind {
    293     FcMatchPattern, FcMatchFont, FcMatchScan,
    294     FcMatchKindEnd,
    295     FcMatchKindBegin = FcMatchPattern
    296 } FcMatchKind;
    297 
    298 typedef enum _FcLangResult {
    299     FcLangEqual = 0,
    300     FcLangDifferentCountry = 1,
    301     FcLangDifferentTerritory = 1,
    302     FcLangDifferentLang = 2
    303 } FcLangResult;
    304 
    305 typedef enum _FcSetName {
    306     FcSetSystem = 0,
    307     FcSetApplication = 1
    308 } FcSetName;
    309 
    310 typedef struct _FcConfigFileInfoIter {
    311     void	*dummy1;
    312     void	*dummy2;
    313     void	*dummy3;
    314 } FcConfigFileInfoIter;
    315 
    316 typedef struct _FcAtomic FcAtomic;
    317 
    318 #if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */
    319 #define _FCFUNCPROTOBEGIN extern "C" {	/* do not leave open across includes */
    320 #define _FCFUNCPROTOEND }
    321 #else
    322 #define _FCFUNCPROTOBEGIN
    323 #define _FCFUNCPROTOEND
    324 #endif
    325 
    326 typedef enum { FcEndianBig, FcEndianLittle } FcEndian;
    327 
    328 typedef struct _FcConfig    FcConfig;
    329 
    330 typedef struct _FcGlobalCache	FcFileCache;
    331 
    332 typedef struct _FcBlanks    FcBlanks;
    333 
    334 typedef struct _FcStrList   FcStrList;
    335 
    336 typedef struct _FcStrSet    FcStrSet;
    337 
    338 typedef struct _FcCache	    FcCache;
    339 
    340 _FCFUNCPROTOBEGIN
    341 
    342 /* fcblanks.c */
    343 FcPublic FcBlanks *
    344 FcBlanksCreate (void);
    345 
    346 FcPublic void
    347 FcBlanksDestroy (FcBlanks *b);
    348 
    349 FcPublic FcBool
    350 FcBlanksAdd (FcBlanks *b, FcChar32 ucs4);
    351 
    352 FcPublic FcBool
    353 FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4);
    354 
    355 /* fccache.c */
    356 
    357 FcPublic const FcChar8 *
    358 FcCacheDir(const FcCache *c);
    359 
    360 FcPublic FcFontSet *
    361 FcCacheCopySet(const FcCache *c);
    362 
    363 FcPublic const FcChar8 *
    364 FcCacheSubdir (const FcCache *c, int i);
    365 
    366 FcPublic int
    367 FcCacheNumSubdir (const FcCache *c);
    368 
    369 FcPublic int
    370 FcCacheNumFont (const FcCache *c);
    371 
    372 FcPublic FcBool
    373 FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config);
    374 
    375 FcPublic FcBool
    376 FcDirCacheValid (const FcChar8 *cache_file);
    377 
    378 FcPublic FcBool
    379 FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose);
    380 
    381 FcPublic void
    382 FcCacheCreateTagFile (FcConfig *config);
    383 
    384 FcPublic FcBool
    385 FcDirCacheCreateUUID (FcChar8  *dir,
    386 		      FcBool    force,
    387 		      FcConfig *config);
    388 
    389 FcPublic FcBool
    390 FcDirCacheDeleteUUID (const FcChar8  *dir,
    391 		      FcConfig       *config);
    392 
    393 /* fccfg.c */
    394 FcPublic FcChar8 *
    395 FcConfigHome (void);
    396 
    397 FcPublic FcBool
    398 FcConfigEnableHome (FcBool enable);
    399 
    400 FcPublic FcChar8 *
    401 FcConfigGetFilename (FcConfig      *config,
    402 		     const FcChar8 *url);
    403 
    404 FcPublic FcChar8 *
    405 FcConfigFilename (const FcChar8 *url);
    406 
    407 FcPublic FcConfig *
    408 FcConfigCreate (void);
    409 
    410 FcPublic FcConfig *
    411 FcConfigReference (FcConfig *config);
    412 
    413 FcPublic void
    414 FcConfigDestroy (FcConfig *config);
    415 
    416 FcPublic FcBool
    417 FcConfigSetCurrent (FcConfig *config);
    418 
    419 FcPublic FcConfig *
    420 FcConfigGetCurrent (void);
    421 
    422 FcPublic FcBool
    423 FcConfigUptoDate (FcConfig *config);
    424 
    425 FcPublic FcBool
    426 FcConfigBuildFonts (FcConfig *config);
    427 
    428 FcPublic FcStrList *
    429 FcConfigGetFontDirs (FcConfig   *config);
    430 
    431 FcPublic FcStrList *
    432 FcConfigGetConfigDirs (FcConfig   *config);
    433 
    434 FcPublic FcStrList *
    435 FcConfigGetConfigFiles (FcConfig    *config);
    436 
    437 FcPublic FcChar8 *
    438 FcConfigGetCache (FcConfig  *config);
    439 
    440 FcPublic FcBlanks *
    441 FcConfigGetBlanks (FcConfig *config);
    442 
    443 FcPublic FcStrList *
    444 FcConfigGetCacheDirs (FcConfig	*config);
    445 
    446 FcPublic int
    447 FcConfigGetRescanInterval (FcConfig *config);
    448 
    449 FcPublic FcBool
    450 FcConfigSetRescanInterval (FcConfig *config, int rescanInterval);
    451 
    452 FcPublic FcFontSet *
    453 FcConfigGetFonts (FcConfig	*config,
    454 		  FcSetName	set);
    455 
    456 FcPublic FcBool
    457 FcConfigAppFontAddFile (FcConfig    *config,
    458 			const FcChar8  *file);
    459 
    460 FcPublic FcBool
    461 FcConfigAppFontAddDir (FcConfig	    *config,
    462 		       const FcChar8   *dir);
    463 
    464 FcPublic void
    465 FcConfigAppFontClear (FcConfig	    *config);
    466 
    467 FcPublic FcBool
    468 FcConfigSubstituteWithPat (FcConfig	*config,
    469 			   FcPattern	*p,
    470 			   FcPattern	*p_pat,
    471 			   FcMatchKind	kind);
    472 
    473 FcPublic FcBool
    474 FcConfigSubstitute (FcConfig	*config,
    475 		    FcPattern	*p,
    476 		    FcMatchKind	kind);
    477 
    478 FcPublic const FcChar8 *
    479 FcConfigGetSysRoot (const FcConfig *config);
    480 
    481 FcPublic void
    482 FcConfigSetSysRoot (FcConfig      *config,
    483 		    const FcChar8 *sysroot);
    484 
    485 FcPublic void
    486 FcConfigFileInfoIterInit (FcConfig		*config,
    487 			  FcConfigFileInfoIter	*iter);
    488 
    489 FcPublic FcBool
    490 FcConfigFileInfoIterNext (FcConfig		*config,
    491 			  FcConfigFileInfoIter	*iter);
    492 
    493 FcPublic FcBool
    494 FcConfigFileInfoIterGet (FcConfig		*config,
    495 			 FcConfigFileInfoIter	*iter,
    496 			 FcChar8		**name,
    497 			 FcChar8		**description,
    498 			 FcBool			*enabled);
    499 
    500 /* fccharset.c */
    501 FcPublic FcCharSet*
    502 FcCharSetCreate (void);
    503 
    504 /* deprecated alias for FcCharSetCreate */
    505 FcPublic FcCharSet *
    506 FcCharSetNew (void);
    507 
    508 FcPublic void
    509 FcCharSetDestroy (FcCharSet *fcs);
    510 
    511 FcPublic FcBool
    512 FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4);
    513 
    514 FcPublic FcBool
    515 FcCharSetDelChar (FcCharSet *fcs, FcChar32 ucs4);
    516 
    517 FcPublic FcCharSet*
    518 FcCharSetCopy (FcCharSet *src);
    519 
    520 FcPublic FcBool
    521 FcCharSetEqual (const FcCharSet *a, const FcCharSet *b);
    522 
    523 FcPublic FcCharSet*
    524 FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b);
    525 
    526 FcPublic FcCharSet*
    527 FcCharSetUnion (const FcCharSet *a, const FcCharSet *b);
    528 
    529 FcPublic FcCharSet*
    530 FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b);
    531 
    532 FcPublic FcBool
    533 FcCharSetMerge (FcCharSet *a, const FcCharSet *b, FcBool *changed);
    534 
    535 FcPublic FcBool
    536 FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4);
    537 
    538 FcPublic FcChar32
    539 FcCharSetCount (const FcCharSet *a);
    540 
    541 FcPublic FcChar32
    542 FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b);
    543 
    544 FcPublic FcChar32
    545 FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b);
    546 
    547 FcPublic FcBool
    548 FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b);
    549 
    550 #define FC_CHARSET_MAP_SIZE (256/32)
    551 #define FC_CHARSET_DONE	((FcChar32) -1)
    552 
    553 FcPublic FcChar32
    554 FcCharSetFirstPage (const FcCharSet *a,
    555 		    FcChar32	    map[FC_CHARSET_MAP_SIZE],
    556 		    FcChar32	    *next);
    557 
    558 FcPublic FcChar32
    559 FcCharSetNextPage (const FcCharSet  *a,
    560 		   FcChar32	    map[FC_CHARSET_MAP_SIZE],
    561 		   FcChar32	    *next);
    562 
    563 /*
    564  * old coverage API, rather hard to use correctly
    565  */
    566 
    567 FcPublic FcChar32
    568 FcCharSetCoverage (const FcCharSet *a, FcChar32 page, FcChar32 *result);
    569 
    570 /* fcdbg.c */
    571 FcPublic void
    572 FcValuePrint (const FcValue v);
    573 
    574 FcPublic void
    575 FcPatternPrint (const FcPattern *p);
    576 
    577 FcPublic void
    578 FcFontSetPrint (const FcFontSet *s);
    579 
    580 /* fcdefault.c */
    581 FcPublic FcStrSet *
    582 FcGetDefaultLangs (void);
    583 
    584 FcPublic void
    585 FcDefaultSubstitute (FcPattern *pattern);
    586 
    587 /* fcdir.c */
    588 FcPublic FcBool
    589 FcFileIsDir (const FcChar8 *file);
    590 
    591 FcPublic FcBool
    592 FcFileScan (FcFontSet	    *set,
    593 	    FcStrSet	    *dirs,
    594 	    FcFileCache	    *cache,
    595 	    FcBlanks	    *blanks,
    596 	    const FcChar8   *file,
    597 	    FcBool	    force);
    598 
    599 FcPublic FcBool
    600 FcDirScan (FcFontSet	    *set,
    601 	   FcStrSet	    *dirs,
    602 	   FcFileCache	    *cache,
    603 	   FcBlanks	    *blanks,
    604 	   const FcChar8    *dir,
    605 	   FcBool	    force);
    606 
    607 FcPublic FcBool
    608 FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
    609 
    610 FcPublic FcCache *
    611 FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file);
    612 
    613 FcPublic FcCache *
    614 FcDirCacheRescan (const FcChar8 *dir, FcConfig *config);
    615 
    616 FcPublic FcCache *
    617 FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config);
    618 
    619 FcPublic FcCache *
    620 FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat);
    621 
    622 FcPublic void
    623 FcDirCacheUnload (FcCache *cache);
    624 
    625 /* fcfreetype.c */
    626 FcPublic FcPattern *
    627 FcFreeTypeQuery (const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count);
    628 
    629 FcPublic unsigned int
    630 FcFreeTypeQueryAll(const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count, FcFontSet *set);
    631 
    632 /* fcfs.c */
    633 
    634 FcPublic FcFontSet *
    635 FcFontSetCreate (void);
    636 
    637 FcPublic void
    638 FcFontSetDestroy (FcFontSet *s);
    639 
    640 FcPublic FcBool
    641 FcFontSetAdd (FcFontSet *s, FcPattern *font);
    642 
    643 /* fcinit.c */
    644 FcPublic FcConfig *
    645 FcInitLoadConfig (void);
    646 
    647 FcPublic FcConfig *
    648 FcInitLoadConfigAndFonts (void);
    649 
    650 FcPublic FcBool
    651 FcInit (void);
    652 
    653 FcPublic void
    654 FcFini (void);
    655 
    656 FcPublic int
    657 FcGetVersion (void);
    658 
    659 FcPublic FcBool
    660 FcInitReinitialize (void);
    661 
    662 FcPublic FcBool
    663 FcInitBringUptoDate (void);
    664 
    665 /* fclang.c */
    666 FcPublic FcStrSet *
    667 FcGetLangs (void);
    668 
    669 FcPublic FcChar8 *
    670 FcLangNormalize (const FcChar8 *lang);
    671 
    672 FcPublic const FcCharSet *
    673 FcLangGetCharSet (const FcChar8 *lang);
    674 
    675 FcPublic FcLangSet*
    676 FcLangSetCreate (void);
    677 
    678 FcPublic void
    679 FcLangSetDestroy (FcLangSet *ls);
    680 
    681 FcPublic FcLangSet*
    682 FcLangSetCopy (const FcLangSet *ls);
    683 
    684 FcPublic FcBool
    685 FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang);
    686 
    687 FcPublic FcBool
    688 FcLangSetDel (FcLangSet *ls, const FcChar8 *lang);
    689 
    690 FcPublic FcLangResult
    691 FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang);
    692 
    693 FcPublic FcLangResult
    694 FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb);
    695 
    696 FcPublic FcBool
    697 FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb);
    698 
    699 FcPublic FcBool
    700 FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
    701 
    702 FcPublic FcChar32
    703 FcLangSetHash (const FcLangSet *ls);
    704 
    705 FcPublic FcStrSet *
    706 FcLangSetGetLangs (const FcLangSet *ls);
    707 
    708 FcPublic FcLangSet *
    709 FcLangSetUnion (const FcLangSet *a, const FcLangSet *b);
    710 
    711 FcPublic FcLangSet *
    712 FcLangSetSubtract (const FcLangSet *a, const FcLangSet *b);
    713 
    714 /* fclist.c */
    715 FcPublic FcObjectSet *
    716 FcObjectSetCreate (void);
    717 
    718 FcPublic FcBool
    719 FcObjectSetAdd (FcObjectSet *os, const char *object);
    720 
    721 FcPublic void
    722 FcObjectSetDestroy (FcObjectSet *os);
    723 
    724 FcPublic FcObjectSet *
    725 FcObjectSetVaBuild (const char *first, va_list va);
    726 
    727 FcPublic FcObjectSet *
    728 FcObjectSetBuild (const char *first, ...) FC_ATTRIBUTE_SENTINEL(0);
    729 
    730 FcPublic FcFontSet *
    731 FcFontSetList (FcConfig	    *config,
    732 	       FcFontSet    **sets,
    733 	       int	    nsets,
    734 	       FcPattern    *p,
    735 	       FcObjectSet  *os);
    736 
    737 FcPublic FcFontSet *
    738 FcFontList (FcConfig	*config,
    739 	    FcPattern	*p,
    740 	    FcObjectSet *os);
    741 
    742 /* fcatomic.c */
    743 
    744 FcPublic FcAtomic *
    745 FcAtomicCreate (const FcChar8   *file);
    746 
    747 FcPublic FcBool
    748 FcAtomicLock (FcAtomic *atomic);
    749 
    750 FcPublic FcChar8 *
    751 FcAtomicNewFile (FcAtomic *atomic);
    752 
    753 FcPublic FcChar8 *
    754 FcAtomicOrigFile (FcAtomic *atomic);
    755 
    756 FcPublic FcBool
    757 FcAtomicReplaceOrig (FcAtomic *atomic);
    758 
    759 FcPublic void
    760 FcAtomicDeleteNew (FcAtomic *atomic);
    761 
    762 FcPublic void
    763 FcAtomicUnlock (FcAtomic *atomic);
    764 
    765 FcPublic void
    766 FcAtomicDestroy (FcAtomic *atomic);
    767 
    768 /* fcmatch.c */
    769 FcPublic FcPattern *
    770 FcFontSetMatch (FcConfig    *config,
    771 		FcFontSet   **sets,
    772 		int	    nsets,
    773 		FcPattern   *p,
    774 		FcResult    *result);
    775 
    776 FcPublic FcPattern *
    777 FcFontMatch (FcConfig	*config,
    778 	     FcPattern	*p,
    779 	     FcResult	*result);
    780 
    781 FcPublic FcPattern *
    782 FcFontRenderPrepare (FcConfig	    *config,
    783 		     FcPattern	    *pat,
    784 		     FcPattern	    *font);
    785 
    786 FcPublic FcFontSet *
    787 FcFontSetSort (FcConfig	    *config,
    788 	       FcFontSet    **sets,
    789 	       int	    nsets,
    790 	       FcPattern    *p,
    791 	       FcBool	    trim,
    792 	       FcCharSet    **csp,
    793 	       FcResult	    *result);
    794 
    795 FcPublic FcFontSet *
    796 FcFontSort (FcConfig	 *config,
    797 	    FcPattern    *p,
    798 	    FcBool	 trim,
    799 	    FcCharSet    **csp,
    800 	    FcResult	 *result);
    801 
    802 FcPublic void
    803 FcFontSetSortDestroy (FcFontSet *fs);
    804 
    805 /* fcmatrix.c */
    806 FcPublic FcMatrix *
    807 FcMatrixCopy (const FcMatrix *mat);
    808 
    809 FcPublic FcBool
    810 FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2);
    811 
    812 FcPublic void
    813 FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b);
    814 
    815 FcPublic void
    816 FcMatrixRotate (FcMatrix *m, double c, double s);
    817 
    818 FcPublic void
    819 FcMatrixScale (FcMatrix *m, double sx, double sy);
    820 
    821 FcPublic void
    822 FcMatrixShear (FcMatrix *m, double sh, double sv);
    823 
    824 /* fcname.c */
    825 
    826 /* Deprecated.  Does nothing.  Returns FcFalse. */
    827 FcPublic FcBool
    828 FcNameRegisterObjectTypes (const FcObjectType *types, int ntype);
    829 
    830 /* Deprecated.  Does nothing.  Returns FcFalse. */
    831 FcPublic FcBool
    832 FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype);
    833 
    834 FcPublic const FcObjectType *
    835 FcNameGetObjectType (const char *object);
    836 
    837 /* Deprecated.  Does nothing.  Returns FcFalse. */
    838 FcPublic FcBool
    839 FcNameRegisterConstants (const FcConstant *consts, int nconsts);
    840 
    841 /* Deprecated.  Does nothing.  Returns FcFalse. */
    842 FcPublic FcBool
    843 FcNameUnregisterConstants (const FcConstant *consts, int nconsts);
    844 
    845 FcPublic const FcConstant *
    846 FcNameGetConstant (const FcChar8 *string);
    847 
    848 FcPublic const FcConstant *
    849 FcNameGetConstantFor (const FcChar8 *string, const char *object);
    850 
    851 FcPublic FcBool
    852 FcNameConstant (const FcChar8 *string, int *result);
    853 
    854 FcPublic FcPattern *
    855 FcNameParse (const FcChar8 *name);
    856 
    857 FcPublic FcChar8 *
    858 FcNameUnparse (FcPattern *pat);
    859 
    860 /* fcpat.c */
    861 FcPublic FcPattern *
    862 FcPatternCreate (void);
    863 
    864 FcPublic FcPattern *
    865 FcPatternDuplicate (const FcPattern *p);
    866 
    867 FcPublic void
    868 FcPatternReference (FcPattern *p);
    869 
    870 FcPublic FcPattern *
    871 FcPatternFilter (FcPattern *p, const FcObjectSet *os);
    872 
    873 FcPublic void
    874 FcValueDestroy (FcValue v);
    875 
    876 FcPublic FcBool
    877 FcValueEqual (FcValue va, FcValue vb);
    878 
    879 FcPublic FcValue
    880 FcValueSave (FcValue v);
    881 
    882 FcPublic void
    883 FcPatternDestroy (FcPattern *p);
    884 
    885 int
    886 FcPatternObjectCount (const FcPattern *pat);
    887 
    888 FcPublic FcBool
    889 FcPatternEqual (const FcPattern *pa, const FcPattern *pb);
    890 
    891 FcPublic FcBool
    892 FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os);
    893 
    894 FcPublic FcChar32
    895 FcPatternHash (const FcPattern *p);
    896 
    897 FcPublic FcBool
    898 FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append);
    899 
    900 FcPublic FcBool
    901 FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append);
    902 
    903 FcPublic FcResult
    904 FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v);
    905 
    906 FcPublic FcResult
    907 FcPatternGetWithBinding (const FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b);
    908 
    909 FcPublic FcBool
    910 FcPatternDel (FcPattern *p, const char *object);
    911 
    912 FcPublic FcBool
    913 FcPatternRemove (FcPattern *p, const char *object, int id);
    914 
    915 FcPublic FcBool
    916 FcPatternAddInteger (FcPattern *p, const char *object, int i);
    917 
    918 FcPublic FcBool
    919 FcPatternAddDouble (FcPattern *p, const char *object, double d);
    920 
    921 FcPublic FcBool
    922 FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s);
    923 
    924 FcPublic FcBool
    925 FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s);
    926 
    927 FcPublic FcBool
    928 FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c);
    929 
    930 FcPublic FcBool
    931 FcPatternAddBool (FcPattern *p, const char *object, FcBool b);
    932 
    933 FcPublic FcBool
    934 FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls);
    935 
    936 FcPublic FcBool
    937 FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r);
    938 
    939 FcPublic FcResult
    940 FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i);
    941 
    942 FcPublic FcResult
    943 FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d);
    944 
    945 FcPublic FcResult
    946 FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s);
    947 
    948 FcPublic FcResult
    949 FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s);
    950 
    951 FcPublic FcResult
    952 FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c);
    953 
    954 FcPublic FcResult
    955 FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b);
    956 
    957 FcPublic FcResult
    958 FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls);
    959 
    960 FcPublic FcResult
    961 FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r);
    962 
    963 FcPublic FcPattern *
    964 FcPatternVaBuild (FcPattern *p, va_list va);
    965 
    966 FcPublic FcPattern *
    967 FcPatternBuild (FcPattern *p, ...) FC_ATTRIBUTE_SENTINEL(0);
    968 
    969 FcPublic FcChar8 *
    970 FcPatternFormat (FcPattern *pat, const FcChar8 *format);
    971 
    972 /* fcrange.c */
    973 FcPublic FcRange *
    974 FcRangeCreateDouble (double begin, double end);
    975 
    976 FcPublic FcRange *
    977 FcRangeCreateInteger (FcChar32 begin, FcChar32 end);
    978 
    979 FcPublic void
    980 FcRangeDestroy (FcRange *range);
    981 
    982 FcPublic FcRange *
    983 FcRangeCopy (const FcRange *r);
    984 
    985 FcPublic FcBool
    986 FcRangeGetDouble(const FcRange *range, double *begin, double *end);
    987 
    988 FcPublic void
    989 FcPatternIterStart (const FcPattern *pat, FcPatternIter *iter);
    990 
    991 FcPublic FcBool
    992 FcPatternIterNext (const FcPattern *pat, FcPatternIter *iter);
    993 
    994 FcPublic FcBool
    995 FcPatternIterEqual (const FcPattern *p1, FcPatternIter *i1,
    996 		    const FcPattern *p2, FcPatternIter *i2);
    997 
    998 FcPublic FcBool
    999 FcPatternFindIter (const FcPattern *pat, FcPatternIter *iter, const char *object);
   1000 
   1001 FcPublic FcBool
   1002 FcPatternIterIsValid (const FcPattern *pat, FcPatternIter *iter);
   1003 
   1004 FcPublic const char *
   1005 FcPatternIterGetObject (const FcPattern *pat, FcPatternIter *iter);
   1006 
   1007 FcPublic int
   1008 FcPatternIterValueCount (const FcPattern *pat, FcPatternIter *iter);
   1009 
   1010 FcPublic FcResult
   1011 FcPatternIterGetValue (const FcPattern *pat, FcPatternIter *iter, int id, FcValue *v, FcValueBinding *b);
   1012 
   1013 /* fcweight.c */
   1014 
   1015 FcPublic int
   1016 FcWeightFromOpenType (int ot_weight);
   1017 
   1018 FcPublic double
   1019 FcWeightFromOpenTypeDouble (double ot_weight);
   1020 
   1021 FcPublic int
   1022 FcWeightToOpenType (int fc_weight);
   1023 
   1024 FcPublic double
   1025 FcWeightToOpenTypeDouble (double fc_weight);
   1026 
   1027 /* fcstr.c */
   1028 
   1029 FcPublic FcChar8 *
   1030 FcStrCopy (const FcChar8 *s);
   1031 
   1032 FcPublic FcChar8 *
   1033 FcStrCopyFilename (const FcChar8 *s);
   1034 
   1035 FcPublic FcChar8 *
   1036 FcStrPlus (const FcChar8 *s1, const FcChar8 *s2);
   1037 
   1038 FcPublic void
   1039 FcStrFree (FcChar8 *s);
   1040 
   1041 /* These are ASCII only, suitable only for pattern element names */
   1042 #define FcIsUpper(c)	((0101 <= (c) && (c) <= 0132))
   1043 #define FcIsLower(c)	((0141 <= (c) && (c) <= 0172))
   1044 #define FcToLower(c)	(FcIsUpper(c) ? (c) - 0101 + 0141 : (c))
   1045 
   1046 FcPublic FcChar8 *
   1047 FcStrDowncase (const FcChar8 *s);
   1048 
   1049 FcPublic int
   1050 FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
   1051 
   1052 FcPublic int
   1053 FcStrCmp (const FcChar8 *s1, const FcChar8 *s2);
   1054 
   1055 FcPublic const FcChar8 *
   1056 FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
   1057 
   1058 FcPublic const FcChar8 *
   1059 FcStrStr (const FcChar8 *s1, const FcChar8 *s2);
   1060 
   1061 FcPublic int
   1062 FcUtf8ToUcs4 (const FcChar8 *src_orig,
   1063 	      FcChar32	    *dst,
   1064 	      int	    len);
   1065 
   1066 FcPublic FcBool
   1067 FcUtf8Len (const FcChar8    *string,
   1068 	   int		    len,
   1069 	   int		    *nchar,
   1070 	   int		    *wchar);
   1071 
   1072 #define FC_UTF8_MAX_LEN	6
   1073 
   1074 FcPublic int
   1075 FcUcs4ToUtf8 (FcChar32	ucs4,
   1076 	      FcChar8	dest[FC_UTF8_MAX_LEN]);
   1077 
   1078 FcPublic int
   1079 FcUtf16ToUcs4 (const FcChar8	*src_orig,
   1080 	       FcEndian		endian,
   1081 	       FcChar32		*dst,
   1082 	       int		len);	    /* in bytes */
   1083 
   1084 FcPublic FcBool
   1085 FcUtf16Len (const FcChar8   *string,
   1086 	    FcEndian	    endian,
   1087 	    int		    len,	    /* in bytes */
   1088 	    int		    *nchar,
   1089 	    int		    *wchar);
   1090 
   1091 FcPublic FcChar8 *
   1092 FcStrBuildFilename (const FcChar8 *path,
   1093 		    ...);
   1094 
   1095 FcPublic FcChar8 *
   1096 FcStrDirname (const FcChar8 *file);
   1097 
   1098 FcPublic FcChar8 *
   1099 FcStrBasename (const FcChar8 *file);
   1100 
   1101 FcPublic FcStrSet *
   1102 FcStrSetCreate (void);
   1103 
   1104 FcPublic FcBool
   1105 FcStrSetMember (FcStrSet *set, const FcChar8 *s);
   1106 
   1107 FcPublic FcBool
   1108 FcStrSetEqual (FcStrSet *sa, FcStrSet *sb);
   1109 
   1110 FcPublic FcBool
   1111 FcStrSetAdd (FcStrSet *set, const FcChar8 *s);
   1112 
   1113 FcPublic FcBool
   1114 FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s);
   1115 
   1116 FcPublic FcBool
   1117 FcStrSetDel (FcStrSet *set, const FcChar8 *s);
   1118 
   1119 FcPublic void
   1120 FcStrSetDestroy (FcStrSet *set);
   1121 
   1122 FcPublic FcStrList *
   1123 FcStrListCreate (FcStrSet *set);
   1124 
   1125 FcPublic void
   1126 FcStrListFirst (FcStrList *list);
   1127 
   1128 FcPublic FcChar8 *
   1129 FcStrListNext (FcStrList *list);
   1130 
   1131 FcPublic void
   1132 FcStrListDone (FcStrList *list);
   1133 
   1134 /* fcxml.c */
   1135 FcPublic FcBool
   1136 FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain);
   1137 
   1138 FcPublic FcBool
   1139 FcConfigParseAndLoadFromMemory (FcConfig       *config,
   1140 				const FcChar8  *buffer,
   1141 				FcBool         complain);
   1142 
   1143 _FCFUNCPROTOEND
   1144 
   1145 #undef FC_ATTRIBUTE_SENTINEL
   1146 
   1147 
   1148 #ifndef _FCINT_H_
   1149 
   1150 /*
   1151  * Deprecated functions are placed here to help users fix their code without
   1152  * digging through documentation
   1153  */
   1154 
   1155 #define FcConfigGetRescanInverval   FcConfigGetRescanInverval_REPLACE_BY_FcConfigGetRescanInterval
   1156 #define FcConfigSetRescanInverval   FcConfigSetRescanInverval_REPLACE_BY_FcConfigSetRescanInterval
   1157 
   1158 #endif
   1159 
   1160 #endif /* _FONTCONFIG_H_ */
   1161