Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:57:25

0001 /*
0002  * fontconfig/fontconfig/fontconfig.h
0003  *
0004  * Copyright © 2001 Keith Packard
0005  *
0006  * Permission to use, copy, modify, distribute, and sell this software and its
0007  * documentation for any purpose is hereby granted without fee, provided that
0008  * the above copyright notice appear in all copies and that both that
0009  * copyright notice and this permission notice appear in supporting
0010  * documentation, and that the name of the author(s) not be used in
0011  * advertising or publicity pertaining to distribution of the software without
0012  * specific, written prior permission.  The authors make no
0013  * representations about the suitability of this software for any purpose.  It
0014  * is provided "as is" without express or implied warranty.
0015  *
0016  * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
0017  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
0018  * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
0019  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
0020  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
0021  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
0022  * PERFORMANCE OF THIS SOFTWARE.
0023  */
0024 
0025 #ifndef _FONTCONFIG_H_
0026 #define _FONTCONFIG_H_
0027 
0028 #include <sys/types.h>
0029 #include <sys/stat.h>
0030 #include <stdarg.h>
0031 #include <limits.h>
0032 
0033 #if defined(__GNUC__) && (__GNUC__ >= 4)
0034 #define FC_ATTRIBUTE_SENTINEL(x) __attribute__((__sentinel__(0)))
0035 #else
0036 #define FC_ATTRIBUTE_SENTINEL(x)
0037 #endif
0038 
0039 #ifndef FcPublic
0040 #define FcPublic
0041 #endif
0042 
0043 typedef unsigned char   FcChar8;
0044 typedef unsigned short  FcChar16;
0045 typedef unsigned int    FcChar32;
0046 typedef int     FcBool;
0047 
0048 /*
0049  * Current Fontconfig version number.  This same number
0050  * must appear in the fontconfig configure.in file. Yes,
0051  * it'a a pain to synchronize version numbers like this.
0052  */
0053 
0054 #define FC_MAJOR    2
0055 #define FC_MINOR    15
0056 #define FC_REVISION 0
0057 
0058 #define FC_VERSION  ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
0059 
0060 /*
0061  * Current font cache file format version
0062  * This is appended to the cache files so that multiple
0063  * versions of the library will peacefully coexist
0064  *
0065  * Change this value whenever the disk format for the cache file
0066  * changes in any non-compatible way.  Try to avoid such changes as
0067  * it means multiple copies of the font information.
0068  */
0069 
0070 #define FC_CACHE_VERSION_NUMBER 9
0071 #define _FC_STRINGIFY_(s)       #s
0072 #define _FC_STRINGIFY(s)        _FC_STRINGIFY_(s)
0073 #define FC_CACHE_VERSION        _FC_STRINGIFY(FC_CACHE_VERSION_NUMBER)
0074 
0075 #define FcFalse     0
0076 #define FcTrue      1
0077 #define FcDontCare  2
0078 
0079 #define FC_FAMILY       "family"        /* String */
0080 #define FC_STYLE        "style"     /* String */
0081 #define FC_SLANT        "slant"     /* Int */
0082 #define FC_WEIGHT       "weight"        /* Int */
0083 #define FC_SIZE         "size"      /* Range (double) */
0084 #define FC_ASPECT       "aspect"        /* Double */
0085 #define FC_PIXEL_SIZE       "pixelsize"     /* Double */
0086 #define FC_SPACING      "spacing"       /* Int */
0087 #define FC_FOUNDRY      "foundry"       /* String */
0088 #define FC_ANTIALIAS        "antialias"     /* Bool (depends) */
0089 #define FC_HINTING      "hinting"       /* Bool (true) */
0090 #define FC_HINT_STYLE       "hintstyle"     /* Int */
0091 #define FC_VERTICAL_LAYOUT  "verticallayout"    /* Bool (false) */
0092 #define FC_AUTOHINT     "autohint"      /* Bool (false) */
0093 /* FC_GLOBAL_ADVANCE is deprecated. this is simply ignored on freetype 2.4.5 or later */
0094 #define FC_GLOBAL_ADVANCE   "globaladvance" /* Bool (true) */
0095 #define FC_WIDTH        "width"     /* Int */
0096 #define FC_FILE         "file"      /* String */
0097 #define FC_INDEX        "index"     /* Int */
0098 #define FC_FT_FACE      "ftface"        /* FT_Face */
0099 #define FC_RASTERIZER       "rasterizer"    /* String (deprecated) */
0100 #define FC_OUTLINE      "outline"       /* Bool */
0101 #define FC_SCALABLE     "scalable"      /* Bool */
0102 #define FC_COLOR        "color"     /* Bool */
0103 #define FC_VARIABLE     "variable"      /* Bool */
0104 #define FC_SCALE        "scale"     /* double (deprecated) */
0105 #define FC_SYMBOL       "symbol"        /* Bool */
0106 #define FC_DPI          "dpi"       /* double */
0107 #define FC_RGBA         "rgba"      /* Int */
0108 #define FC_MINSPACE     "minspace"      /* Bool use minimum line spacing */
0109 #define FC_SOURCE       "source"        /* String (deprecated) */
0110 #define FC_CHARSET      "charset"       /* CharSet */
0111 #define FC_LANG         "lang"      /* LangSet Set of RFC 3066 langs */
0112 #define FC_FONTVERSION      "fontversion"   /* Int from 'head' table */
0113 #define FC_FULLNAME     "fullname"      /* String */
0114 #define FC_FAMILYLANG       "familylang"    /* String RFC 3066 langs */
0115 #define FC_STYLELANG        "stylelang"     /* String RFC 3066 langs */
0116 #define FC_FULLNAMELANG     "fullnamelang"  /* String RFC 3066 langs */
0117 #define FC_CAPABILITY       "capability"    /* String */
0118 #define FC_FONTFORMAT       "fontformat"    /* String */
0119 #define FC_EMBOLDEN     "embolden"      /* Bool - true if emboldening needed*/
0120 #define FC_EMBEDDED_BITMAP  "embeddedbitmap"    /* Bool - true to enable embedded bitmaps */
0121 #define FC_DECORATIVE       "decorative"    /* Bool - true if style is a decorative variant */
0122 #define FC_LCD_FILTER       "lcdfilter"     /* Int */
0123 #define FC_FONT_FEATURES    "fontfeatures"  /* String */
0124 #define FC_FONT_VARIATIONS  "fontvariations"    /* String */
0125 #define FC_NAMELANG     "namelang"      /* String RFC 3866 langs */
0126 #define FC_PRGNAME      "prgname"       /* String */
0127 #define FC_HASH         "hash"      /* String (deprecated) */
0128 #define FC_POSTSCRIPT_NAME  "postscriptname"    /* String */
0129 #define FC_FONT_HAS_HINT    "fonthashint"   /* Bool - true if font has hinting */
0130 #define FC_ORDER        "order"     /* Integer */
0131 #define FC_DESKTOP_NAME     "desktop"       /* String */
0132 #define FC_NAMED_INSTANCE   "namedinstance" /* Bool - true if font is named instance */
0133 #define FC_FONT_WRAPPER     "fontwrapper"   /* String */
0134 
0135 #define FC_CACHE_SUFFIX         ".cache-" FC_CACHE_VERSION
0136 #define FC_DIR_CACHE_FILE       "fonts.cache-" FC_CACHE_VERSION
0137 #define FC_USER_CACHE_FILE      ".fonts.cache-" FC_CACHE_VERSION
0138 
0139 /* Adjust outline rasterizer */
0140 #define FC_CHARWIDTH        "charwidth" /* Int */
0141 #define FC_CHAR_WIDTH       FC_CHARWIDTH
0142 #define FC_CHAR_HEIGHT      "charheight"/* Int */
0143 #define FC_MATRIX       "matrix"    /* FcMatrix */
0144 
0145 #define FC_WEIGHT_THIN          0
0146 #define FC_WEIGHT_EXTRALIGHT        40
0147 #define FC_WEIGHT_ULTRALIGHT        FC_WEIGHT_EXTRALIGHT
0148 #define FC_WEIGHT_LIGHT         50
0149 #define FC_WEIGHT_DEMILIGHT     55
0150 #define FC_WEIGHT_SEMILIGHT     FC_WEIGHT_DEMILIGHT
0151 #define FC_WEIGHT_BOOK          75
0152 #define FC_WEIGHT_REGULAR       80
0153 #define FC_WEIGHT_NORMAL        FC_WEIGHT_REGULAR
0154 #define FC_WEIGHT_MEDIUM        100
0155 #define FC_WEIGHT_DEMIBOLD      180
0156 #define FC_WEIGHT_SEMIBOLD      FC_WEIGHT_DEMIBOLD
0157 #define FC_WEIGHT_BOLD          200
0158 #define FC_WEIGHT_EXTRABOLD     205
0159 #define FC_WEIGHT_ULTRABOLD     FC_WEIGHT_EXTRABOLD
0160 #define FC_WEIGHT_BLACK         210
0161 #define FC_WEIGHT_HEAVY         FC_WEIGHT_BLACK
0162 #define FC_WEIGHT_EXTRABLACK        215
0163 #define FC_WEIGHT_ULTRABLACK        FC_WEIGHT_EXTRABLACK
0164 
0165 #define FC_SLANT_ROMAN          0
0166 #define FC_SLANT_ITALIC         100
0167 #define FC_SLANT_OBLIQUE        110
0168 
0169 #define FC_WIDTH_ULTRACONDENSED     50
0170 #define FC_WIDTH_EXTRACONDENSED     63
0171 #define FC_WIDTH_CONDENSED      75
0172 #define FC_WIDTH_SEMICONDENSED      87
0173 #define FC_WIDTH_NORMAL         100
0174 #define FC_WIDTH_SEMIEXPANDED       113
0175 #define FC_WIDTH_EXPANDED       125
0176 #define FC_WIDTH_EXTRAEXPANDED      150
0177 #define FC_WIDTH_ULTRAEXPANDED      200
0178 
0179 #define FC_PROPORTIONAL         0
0180 #define FC_DUAL             90
0181 #define FC_MONO             100
0182 #define FC_CHARCELL         110
0183 
0184 /* sub-pixel order */
0185 #define FC_RGBA_UNKNOWN     0
0186 #define FC_RGBA_RGB     1
0187 #define FC_RGBA_BGR     2
0188 #define FC_RGBA_VRGB        3
0189 #define FC_RGBA_VBGR        4
0190 #define FC_RGBA_NONE        5
0191 
0192 /* hinting style */
0193 #define FC_HINT_NONE        0
0194 #define FC_HINT_SLIGHT      1
0195 #define FC_HINT_MEDIUM      2
0196 #define FC_HINT_FULL        3
0197 
0198 /* LCD filter */
0199 #define FC_LCD_NONE     0
0200 #define FC_LCD_DEFAULT      1
0201 #define FC_LCD_LIGHT        2
0202 #define FC_LCD_LEGACY       3
0203 
0204 typedef enum _FcType {
0205     FcTypeUnknown = -1,
0206     FcTypeVoid,
0207     FcTypeInteger,
0208     FcTypeDouble,
0209     FcTypeString,
0210     FcTypeBool,
0211     FcTypeMatrix,
0212     FcTypeCharSet,
0213     FcTypeFTFace,
0214     FcTypeLangSet,
0215     FcTypeRange
0216 } FcType;
0217 
0218 typedef struct _FcMatrix {
0219     double xx, xy, yx, yy;
0220 } FcMatrix;
0221 
0222 #define FcMatrixInit(m) ((m)->xx = (m)->yy = 1, \
0223              (m)->xy = (m)->yx = 0)
0224 
0225 /*
0226  * A data structure to represent the available glyphs in a font.
0227  * This is represented as a sparse boolean btree.
0228  */
0229 
0230 typedef struct _FcCharSet FcCharSet;
0231 
0232 typedef struct _FcObjectType {
0233     char    *object;
0234     FcType  type;
0235 } FcObjectType;
0236 
0237 typedef struct _FcConstant {
0238     const FcChar8  *name;
0239     const char  *object;
0240     int     value;
0241 } FcConstant;
0242 
0243 typedef enum _FcResult {
0244     FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId,
0245     FcResultOutOfMemory
0246 } FcResult;
0247 
0248 typedef enum _FcValueBinding {
0249     FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame,
0250     /* to make sure sizeof (FcValueBinding) == 4 even with -fshort-enums */
0251     FcValueBindingEnd = INT_MAX
0252 } FcValueBinding;
0253 
0254 typedef struct _FcPattern   FcPattern;
0255 
0256 typedef struct _FcPatternIter {
0257     void *dummy1;
0258     void *dummy2;
0259 } FcPatternIter;
0260 
0261 typedef struct _FcLangSet   FcLangSet;
0262 
0263 typedef struct _FcRange     FcRange;
0264 
0265 typedef struct _FcValue {
0266     FcType  type;
0267     union {
0268     const FcChar8   *s;
0269     int     i;
0270     FcBool      b;
0271     double      d;
0272     const FcMatrix  *m;
0273     const FcCharSet *c;
0274     void        *f;
0275     const FcLangSet *l;
0276     const FcRange   *r;
0277     } u;
0278 } FcValue;
0279 
0280 typedef struct _FcFontSet {
0281     int     nfont;
0282     int     sfont;
0283     FcPattern   **fonts;
0284 } FcFontSet;
0285 
0286 typedef struct _FcObjectSet {
0287     int     nobject;
0288     int     sobject;
0289     const char  **objects;
0290 } FcObjectSet;
0291 
0292 typedef enum _FcMatchKind {
0293     FcMatchPattern, FcMatchFont, FcMatchScan,
0294     FcMatchKindEnd,
0295     FcMatchKindBegin = FcMatchPattern
0296 } FcMatchKind;
0297 
0298 typedef enum _FcLangResult {
0299     FcLangEqual = 0,
0300     FcLangDifferentCountry = 1,
0301     FcLangDifferentTerritory = 1,
0302     FcLangDifferentLang = 2
0303 } FcLangResult;
0304 
0305 typedef enum _FcSetName {
0306     FcSetSystem = 0,
0307     FcSetApplication = 1
0308 } FcSetName;
0309 
0310 typedef struct _FcConfigFileInfoIter {
0311     void    *dummy1;
0312     void    *dummy2;
0313     void    *dummy3;
0314 } FcConfigFileInfoIter;
0315 
0316 typedef struct _FcAtomic FcAtomic;
0317 
0318 #if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */
0319 #define _FCFUNCPROTOBEGIN extern "C" {  /* do not leave open across includes */
0320 #define _FCFUNCPROTOEND }
0321 #else
0322 #define _FCFUNCPROTOBEGIN
0323 #define _FCFUNCPROTOEND
0324 #endif
0325 
0326 typedef enum { FcEndianBig, FcEndianLittle } FcEndian;
0327 
0328 typedef struct _FcConfig    FcConfig;
0329 
0330 typedef struct _FcGlobalCache   FcFileCache;
0331 
0332 typedef struct _FcBlanks    FcBlanks;
0333 
0334 typedef struct _FcStrList   FcStrList;
0335 
0336 typedef struct _FcStrSet    FcStrSet;
0337 
0338 typedef struct _FcCache     FcCache;
0339 
0340 _FCFUNCPROTOBEGIN
0341 
0342 /* fcblanks.c */
0343 FcPublic FcBlanks *
0344 FcBlanksCreate (void);
0345 
0346 FcPublic void
0347 FcBlanksDestroy (FcBlanks *b);
0348 
0349 FcPublic FcBool
0350 FcBlanksAdd (FcBlanks *b, FcChar32 ucs4);
0351 
0352 FcPublic FcBool
0353 FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4);
0354 
0355 /* fccache.c */
0356 
0357 FcPublic const FcChar8 *
0358 FcCacheDir(const FcCache *c);
0359 
0360 FcPublic FcFontSet *
0361 FcCacheCopySet(const FcCache *c);
0362 
0363 FcPublic const FcChar8 *
0364 FcCacheSubdir (const FcCache *c, int i);
0365 
0366 FcPublic int
0367 FcCacheNumSubdir (const FcCache *c);
0368 
0369 FcPublic int
0370 FcCacheNumFont (const FcCache *c);
0371 
0372 FcPublic FcBool
0373 FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config);
0374 
0375 FcPublic FcBool
0376 FcDirCacheValid (const FcChar8 *cache_file);
0377 
0378 FcPublic FcBool
0379 FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose);
0380 
0381 FcPublic void
0382 FcCacheCreateTagFile (FcConfig *config);
0383 
0384 FcPublic FcBool
0385 FcDirCacheCreateUUID (FcChar8  *dir,
0386               FcBool    force,
0387               FcConfig *config);
0388 
0389 FcPublic FcBool
0390 FcDirCacheDeleteUUID (const FcChar8  *dir,
0391               FcConfig       *config);
0392 
0393 /* fccfg.c */
0394 FcPublic FcChar8 *
0395 FcConfigHome (void);
0396 
0397 FcPublic FcBool
0398 FcConfigEnableHome (FcBool enable);
0399 
0400 FcPublic FcChar8 *
0401 FcConfigGetFilename (FcConfig      *config,
0402              const FcChar8 *url);
0403 
0404 FcPublic FcChar8 *
0405 FcConfigFilename (const FcChar8 *url);
0406 
0407 FcPublic FcConfig *
0408 FcConfigCreate (void);
0409 
0410 FcPublic FcConfig *
0411 FcConfigReference (FcConfig *config);
0412 
0413 FcPublic void
0414 FcConfigDestroy (FcConfig *config);
0415 
0416 FcPublic FcBool
0417 FcConfigSetCurrent (FcConfig *config);
0418 
0419 FcPublic FcConfig *
0420 FcConfigGetCurrent (void);
0421 
0422 FcPublic FcBool
0423 FcConfigUptoDate (FcConfig *config);
0424 
0425 FcPublic FcBool
0426 FcConfigBuildFonts (FcConfig *config);
0427 
0428 FcPublic FcStrList *
0429 FcConfigGetFontDirs (FcConfig   *config);
0430 
0431 FcPublic FcStrList *
0432 FcConfigGetConfigDirs (FcConfig   *config);
0433 
0434 FcPublic FcStrList *
0435 FcConfigGetConfigFiles (FcConfig    *config);
0436 
0437 FcPublic FcChar8 *
0438 FcConfigGetCache (FcConfig  *config);
0439 
0440 FcPublic FcBlanks *
0441 FcConfigGetBlanks (FcConfig *config);
0442 
0443 FcPublic FcStrList *
0444 FcConfigGetCacheDirs (FcConfig  *config);
0445 
0446 FcPublic int
0447 FcConfigGetRescanInterval (FcConfig *config);
0448 
0449 FcPublic FcBool
0450 FcConfigSetRescanInterval (FcConfig *config, int rescanInterval);
0451 
0452 FcPublic FcFontSet *
0453 FcConfigGetFonts (FcConfig  *config,
0454           FcSetName set);
0455 
0456 FcPublic FcBool
0457 FcConfigAppFontAddFile (FcConfig    *config,
0458             const FcChar8  *file);
0459 
0460 FcPublic FcBool
0461 FcConfigAppFontAddDir (FcConfig     *config,
0462                const FcChar8   *dir);
0463 
0464 FcPublic void
0465 FcConfigAppFontClear (FcConfig      *config);
0466 
0467 FcPublic FcBool
0468 FcConfigSubstituteWithPat (FcConfig *config,
0469                FcPattern    *p,
0470                FcPattern    *p_pat,
0471                FcMatchKind  kind);
0472 
0473 FcPublic FcBool
0474 FcConfigSubstitute (FcConfig    *config,
0475             FcPattern   *p,
0476             FcMatchKind kind);
0477 
0478 FcPublic const FcChar8 *
0479 FcConfigGetSysRoot (const FcConfig *config);
0480 
0481 FcPublic void
0482 FcConfigSetSysRoot (FcConfig      *config,
0483             const FcChar8 *sysroot);
0484 
0485 FcPublic void
0486 FcConfigFileInfoIterInit (FcConfig      *config,
0487               FcConfigFileInfoIter  *iter);
0488 
0489 FcPublic FcBool
0490 FcConfigFileInfoIterNext (FcConfig      *config,
0491               FcConfigFileInfoIter  *iter);
0492 
0493 FcPublic FcBool
0494 FcConfigFileInfoIterGet (FcConfig       *config,
0495              FcConfigFileInfoIter   *iter,
0496              FcChar8        **name,
0497              FcChar8        **description,
0498              FcBool         *enabled);
0499 
0500 /* fccharset.c */
0501 FcPublic FcCharSet*
0502 FcCharSetCreate (void);
0503 
0504 /* deprecated alias for FcCharSetCreate */
0505 FcPublic FcCharSet *
0506 FcCharSetNew (void);
0507 
0508 FcPublic void
0509 FcCharSetDestroy (FcCharSet *fcs);
0510 
0511 FcPublic FcBool
0512 FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4);
0513 
0514 FcPublic FcBool
0515 FcCharSetDelChar (FcCharSet *fcs, FcChar32 ucs4);
0516 
0517 FcPublic FcCharSet*
0518 FcCharSetCopy (FcCharSet *src);
0519 
0520 FcPublic FcBool
0521 FcCharSetEqual (const FcCharSet *a, const FcCharSet *b);
0522 
0523 FcPublic FcCharSet*
0524 FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b);
0525 
0526 FcPublic FcCharSet*
0527 FcCharSetUnion (const FcCharSet *a, const FcCharSet *b);
0528 
0529 FcPublic FcCharSet*
0530 FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b);
0531 
0532 FcPublic FcBool
0533 FcCharSetMerge (FcCharSet *a, const FcCharSet *b, FcBool *changed);
0534 
0535 FcPublic FcBool
0536 FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4);
0537 
0538 FcPublic FcChar32
0539 FcCharSetCount (const FcCharSet *a);
0540 
0541 FcPublic FcChar32
0542 FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b);
0543 
0544 FcPublic FcChar32
0545 FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b);
0546 
0547 FcPublic FcBool
0548 FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b);
0549 
0550 #define FC_CHARSET_MAP_SIZE (256/32)
0551 #define FC_CHARSET_DONE ((FcChar32) -1)
0552 
0553 FcPublic FcChar32
0554 FcCharSetFirstPage (const FcCharSet *a,
0555             FcChar32        map[FC_CHARSET_MAP_SIZE],
0556             FcChar32        *next);
0557 
0558 FcPublic FcChar32
0559 FcCharSetNextPage (const FcCharSet  *a,
0560            FcChar32     map[FC_CHARSET_MAP_SIZE],
0561            FcChar32     *next);
0562 
0563 /*
0564  * old coverage API, rather hard to use correctly
0565  */
0566 
0567 FcPublic FcChar32
0568 FcCharSetCoverage (const FcCharSet *a, FcChar32 page, FcChar32 *result);
0569 
0570 /* fcdbg.c */
0571 FcPublic void
0572 FcValuePrint (const FcValue v);
0573 
0574 FcPublic void
0575 FcPatternPrint (const FcPattern *p);
0576 
0577 FcPublic void
0578 FcFontSetPrint (const FcFontSet *s);
0579 
0580 /* fcdefault.c */
0581 FcPublic FcStrSet *
0582 FcGetDefaultLangs (void);
0583 
0584 FcPublic void
0585 FcDefaultSubstitute (FcPattern *pattern);
0586 
0587 /* fcdir.c */
0588 FcPublic FcBool
0589 FcFileIsDir (const FcChar8 *file);
0590 
0591 FcPublic FcBool
0592 FcFileScan (FcFontSet       *set,
0593         FcStrSet        *dirs,
0594         FcFileCache     *cache,
0595         FcBlanks        *blanks,
0596         const FcChar8   *file,
0597         FcBool      force);
0598 
0599 FcPublic FcBool
0600 FcDirScan (FcFontSet        *set,
0601        FcStrSet     *dirs,
0602        FcFileCache      *cache,
0603        FcBlanks     *blanks,
0604        const FcChar8    *dir,
0605        FcBool       force);
0606 
0607 FcPublic FcBool
0608 FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
0609 
0610 FcPublic FcCache *
0611 FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file);
0612 
0613 FcPublic FcCache *
0614 FcDirCacheRescan (const FcChar8 *dir, FcConfig *config);
0615 
0616 FcPublic FcCache *
0617 FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config);
0618 
0619 FcPublic FcCache *
0620 FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat);
0621 
0622 FcPublic void
0623 FcDirCacheUnload (FcCache *cache);
0624 
0625 /* fcfreetype.c */
0626 FcPublic FcPattern *
0627 FcFreeTypeQuery (const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count);
0628 
0629 FcPublic unsigned int
0630 FcFreeTypeQueryAll(const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count, FcFontSet *set);
0631 
0632 /* fcfs.c */
0633 
0634 FcPublic FcFontSet *
0635 FcFontSetCreate (void);
0636 
0637 FcPublic void
0638 FcFontSetDestroy (FcFontSet *s);
0639 
0640 FcPublic FcBool
0641 FcFontSetAdd (FcFontSet *s, FcPattern *font);
0642 
0643 /* fcinit.c */
0644 FcPublic FcConfig *
0645 FcInitLoadConfig (void);
0646 
0647 FcPublic FcConfig *
0648 FcInitLoadConfigAndFonts (void);
0649 
0650 FcPublic FcBool
0651 FcInit (void);
0652 
0653 FcPublic void
0654 FcFini (void);
0655 
0656 FcPublic int
0657 FcGetVersion (void);
0658 
0659 FcPublic FcBool
0660 FcInitReinitialize (void);
0661 
0662 FcPublic FcBool
0663 FcInitBringUptoDate (void);
0664 
0665 /* fclang.c */
0666 FcPublic FcStrSet *
0667 FcGetLangs (void);
0668 
0669 FcPublic FcChar8 *
0670 FcLangNormalize (const FcChar8 *lang);
0671 
0672 FcPublic const FcCharSet *
0673 FcLangGetCharSet (const FcChar8 *lang);
0674 
0675 FcPublic FcLangSet*
0676 FcLangSetCreate (void);
0677 
0678 FcPublic void
0679 FcLangSetDestroy (FcLangSet *ls);
0680 
0681 FcPublic FcLangSet*
0682 FcLangSetCopy (const FcLangSet *ls);
0683 
0684 FcPublic FcBool
0685 FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang);
0686 
0687 FcPublic FcBool
0688 FcLangSetDel (FcLangSet *ls, const FcChar8 *lang);
0689 
0690 FcPublic FcLangResult
0691 FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang);
0692 
0693 FcPublic FcLangResult
0694 FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb);
0695 
0696 FcPublic FcBool
0697 FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb);
0698 
0699 FcPublic FcBool
0700 FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
0701 
0702 FcPublic FcChar32
0703 FcLangSetHash (const FcLangSet *ls);
0704 
0705 FcPublic FcStrSet *
0706 FcLangSetGetLangs (const FcLangSet *ls);
0707 
0708 FcPublic FcLangSet *
0709 FcLangSetUnion (const FcLangSet *a, const FcLangSet *b);
0710 
0711 FcPublic FcLangSet *
0712 FcLangSetSubtract (const FcLangSet *a, const FcLangSet *b);
0713 
0714 /* fclist.c */
0715 FcPublic FcObjectSet *
0716 FcObjectSetCreate (void);
0717 
0718 FcPublic FcBool
0719 FcObjectSetAdd (FcObjectSet *os, const char *object);
0720 
0721 FcPublic void
0722 FcObjectSetDestroy (FcObjectSet *os);
0723 
0724 FcPublic FcObjectSet *
0725 FcObjectSetVaBuild (const char *first, va_list va);
0726 
0727 FcPublic FcObjectSet *
0728 FcObjectSetBuild (const char *first, ...) FC_ATTRIBUTE_SENTINEL(0);
0729 
0730 FcPublic FcFontSet *
0731 FcFontSetList (FcConfig     *config,
0732            FcFontSet    **sets,
0733            int      nsets,
0734            FcPattern    *p,
0735            FcObjectSet  *os);
0736 
0737 FcPublic FcFontSet *
0738 FcFontList (FcConfig    *config,
0739         FcPattern   *p,
0740         FcObjectSet *os);
0741 
0742 /* fcatomic.c */
0743 
0744 FcPublic FcAtomic *
0745 FcAtomicCreate (const FcChar8   *file);
0746 
0747 FcPublic FcBool
0748 FcAtomicLock (FcAtomic *atomic);
0749 
0750 FcPublic FcChar8 *
0751 FcAtomicNewFile (FcAtomic *atomic);
0752 
0753 FcPublic FcChar8 *
0754 FcAtomicOrigFile (FcAtomic *atomic);
0755 
0756 FcPublic FcBool
0757 FcAtomicReplaceOrig (FcAtomic *atomic);
0758 
0759 FcPublic void
0760 FcAtomicDeleteNew (FcAtomic *atomic);
0761 
0762 FcPublic void
0763 FcAtomicUnlock (FcAtomic *atomic);
0764 
0765 FcPublic void
0766 FcAtomicDestroy (FcAtomic *atomic);
0767 
0768 /* fcmatch.c */
0769 FcPublic FcPattern *
0770 FcFontSetMatch (FcConfig    *config,
0771         FcFontSet   **sets,
0772         int     nsets,
0773         FcPattern   *p,
0774         FcResult    *result);
0775 
0776 FcPublic FcPattern *
0777 FcFontMatch (FcConfig   *config,
0778          FcPattern  *p,
0779          FcResult   *result);
0780 
0781 FcPublic FcPattern *
0782 FcFontRenderPrepare (FcConfig       *config,
0783              FcPattern      *pat,
0784              FcPattern      *font);
0785 
0786 FcPublic FcFontSet *
0787 FcFontSetSort (FcConfig     *config,
0788            FcFontSet    **sets,
0789            int      nsets,
0790            FcPattern    *p,
0791            FcBool       trim,
0792            FcCharSet    **csp,
0793            FcResult     *result);
0794 
0795 FcPublic FcFontSet *
0796 FcFontSort (FcConfig     *config,
0797         FcPattern    *p,
0798         FcBool   trim,
0799         FcCharSet    **csp,
0800         FcResult     *result);
0801 
0802 FcPublic void
0803 FcFontSetSortDestroy (FcFontSet *fs);
0804 
0805 /* fcmatrix.c */
0806 FcPublic FcMatrix *
0807 FcMatrixCopy (const FcMatrix *mat);
0808 
0809 FcPublic FcBool
0810 FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2);
0811 
0812 FcPublic void
0813 FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b);
0814 
0815 FcPublic void
0816 FcMatrixRotate (FcMatrix *m, double c, double s);
0817 
0818 FcPublic void
0819 FcMatrixScale (FcMatrix *m, double sx, double sy);
0820 
0821 FcPublic void
0822 FcMatrixShear (FcMatrix *m, double sh, double sv);
0823 
0824 /* fcname.c */
0825 
0826 /* Deprecated.  Does nothing.  Returns FcFalse. */
0827 FcPublic FcBool
0828 FcNameRegisterObjectTypes (const FcObjectType *types, int ntype);
0829 
0830 /* Deprecated.  Does nothing.  Returns FcFalse. */
0831 FcPublic FcBool
0832 FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype);
0833 
0834 FcPublic const FcObjectType *
0835 FcNameGetObjectType (const char *object);
0836 
0837 /* Deprecated.  Does nothing.  Returns FcFalse. */
0838 FcPublic FcBool
0839 FcNameRegisterConstants (const FcConstant *consts, int nconsts);
0840 
0841 /* Deprecated.  Does nothing.  Returns FcFalse. */
0842 FcPublic FcBool
0843 FcNameUnregisterConstants (const FcConstant *consts, int nconsts);
0844 
0845 FcPublic const FcConstant *
0846 FcNameGetConstant (const FcChar8 *string);
0847 
0848 FcPublic const FcConstant *
0849 FcNameGetConstantFor (const FcChar8 *string, const char *object);
0850 
0851 FcPublic FcBool
0852 FcNameConstant (const FcChar8 *string, int *result);
0853 
0854 FcPublic FcPattern *
0855 FcNameParse (const FcChar8 *name);
0856 
0857 FcPublic FcChar8 *
0858 FcNameUnparse (FcPattern *pat);
0859 
0860 /* fcpat.c */
0861 FcPublic FcPattern *
0862 FcPatternCreate (void);
0863 
0864 FcPublic FcPattern *
0865 FcPatternDuplicate (const FcPattern *p);
0866 
0867 FcPublic void
0868 FcPatternReference (FcPattern *p);
0869 
0870 FcPublic FcPattern *
0871 FcPatternFilter (FcPattern *p, const FcObjectSet *os);
0872 
0873 FcPublic void
0874 FcValueDestroy (FcValue v);
0875 
0876 FcPublic FcBool
0877 FcValueEqual (FcValue va, FcValue vb);
0878 
0879 FcPublic FcValue
0880 FcValueSave (FcValue v);
0881 
0882 FcPublic void
0883 FcPatternDestroy (FcPattern *p);
0884 
0885 int
0886 FcPatternObjectCount (const FcPattern *pat);
0887 
0888 FcPublic FcBool
0889 FcPatternEqual (const FcPattern *pa, const FcPattern *pb);
0890 
0891 FcPublic FcBool
0892 FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os);
0893 
0894 FcPublic FcChar32
0895 FcPatternHash (const FcPattern *p);
0896 
0897 FcPublic FcBool
0898 FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append);
0899 
0900 FcPublic FcBool
0901 FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append);
0902 
0903 FcPublic FcResult
0904 FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v);
0905 
0906 FcPublic FcResult
0907 FcPatternGetWithBinding (const FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b);
0908 
0909 FcPublic FcBool
0910 FcPatternDel (FcPattern *p, const char *object);
0911 
0912 FcPublic FcBool
0913 FcPatternRemove (FcPattern *p, const char *object, int id);
0914 
0915 FcPublic FcBool
0916 FcPatternAddInteger (FcPattern *p, const char *object, int i);
0917 
0918 FcPublic FcBool
0919 FcPatternAddDouble (FcPattern *p, const char *object, double d);
0920 
0921 FcPublic FcBool
0922 FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s);
0923 
0924 FcPublic FcBool
0925 FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s);
0926 
0927 FcPublic FcBool
0928 FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c);
0929 
0930 FcPublic FcBool
0931 FcPatternAddBool (FcPattern *p, const char *object, FcBool b);
0932 
0933 FcPublic FcBool
0934 FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls);
0935 
0936 FcPublic FcBool
0937 FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r);
0938 
0939 FcPublic FcResult
0940 FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i);
0941 
0942 FcPublic FcResult
0943 FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d);
0944 
0945 FcPublic FcResult
0946 FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s);
0947 
0948 FcPublic FcResult
0949 FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s);
0950 
0951 FcPublic FcResult
0952 FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c);
0953 
0954 FcPublic FcResult
0955 FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b);
0956 
0957 FcPublic FcResult
0958 FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls);
0959 
0960 FcPublic FcResult
0961 FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r);
0962 
0963 FcPublic FcPattern *
0964 FcPatternVaBuild (FcPattern *p, va_list va);
0965 
0966 FcPublic FcPattern *
0967 FcPatternBuild (FcPattern *p, ...) FC_ATTRIBUTE_SENTINEL(0);
0968 
0969 FcPublic FcChar8 *
0970 FcPatternFormat (FcPattern *pat, const FcChar8 *format);
0971 
0972 /* fcrange.c */
0973 FcPublic FcRange *
0974 FcRangeCreateDouble (double begin, double end);
0975 
0976 FcPublic FcRange *
0977 FcRangeCreateInteger (FcChar32 begin, FcChar32 end);
0978 
0979 FcPublic void
0980 FcRangeDestroy (FcRange *range);
0981 
0982 FcPublic FcRange *
0983 FcRangeCopy (const FcRange *r);
0984 
0985 FcPublic FcBool
0986 FcRangeGetDouble(const FcRange *range, double *begin, double *end);
0987 
0988 FcPublic void
0989 FcPatternIterStart (const FcPattern *pat, FcPatternIter *iter);
0990 
0991 FcPublic FcBool
0992 FcPatternIterNext (const FcPattern *pat, FcPatternIter *iter);
0993 
0994 FcPublic FcBool
0995 FcPatternIterEqual (const FcPattern *p1, FcPatternIter *i1,
0996             const FcPattern *p2, FcPatternIter *i2);
0997 
0998 FcPublic FcBool
0999 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_ */