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