Bump version to 2.11.1
[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     1
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 FcDirCacheRescan (const FcChar8 *dir, FcConfig *config);
547     
548 FcPublic FcCache *
549 FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config);
550
551 FcPublic FcCache *
552 FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat);
553
554 FcPublic void
555 FcDirCacheUnload (FcCache *cache);
556
557 /* fcfreetype.c */
558 FcPublic FcPattern *
559 FcFreeTypeQuery (const FcChar8 *file, int id, FcBlanks *blanks, int *count);
560
561 /* fcfs.c */
562
563 FcPublic FcFontSet *
564 FcFontSetCreate (void);
565
566 FcPublic void
567 FcFontSetDestroy (FcFontSet *s);
568
569 FcPublic FcBool
570 FcFontSetAdd (FcFontSet *s, FcPattern *font);
571
572 /* fcinit.c */
573 FcPublic FcConfig *
574 FcInitLoadConfig (void);
575
576 FcPublic FcConfig *
577 FcInitLoadConfigAndFonts (void);
578
579 FcPublic FcBool
580 FcInit (void);
581
582 FcPublic void
583 FcFini (void);
584
585 FcPublic int
586 FcGetVersion (void);
587
588 FcPublic FcBool
589 FcInitReinitialize (void);
590
591 FcPublic FcBool
592 FcInitBringUptoDate (void);
593
594 /* fclang.c */
595 FcPublic FcStrSet *
596 FcGetLangs (void);
597
598 FcPublic FcChar8 *
599 FcLangNormalize (const FcChar8 *lang);
600
601 FcPublic const FcCharSet *
602 FcLangGetCharSet (const FcChar8 *lang);
603
604 FcPublic FcLangSet*
605 FcLangSetCreate (void);
606
607 FcPublic void
608 FcLangSetDestroy (FcLangSet *ls);
609
610 FcPublic FcLangSet*
611 FcLangSetCopy (const FcLangSet *ls);
612
613 FcPublic FcBool
614 FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang);
615
616 FcPublic FcBool
617 FcLangSetDel (FcLangSet *ls, const FcChar8 *lang);
618
619 FcPublic FcLangResult
620 FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang);
621
622 FcPublic FcLangResult
623 FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb);
624
625 FcPublic FcBool
626 FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb);
627
628 FcPublic FcBool
629 FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
630
631 FcPublic FcChar32
632 FcLangSetHash (const FcLangSet *ls);
633
634 FcPublic FcStrSet *
635 FcLangSetGetLangs (const FcLangSet *ls);
636
637 FcPublic FcLangSet *
638 FcLangSetUnion (const FcLangSet *a, const FcLangSet *b);
639
640 FcPublic FcLangSet *
641 FcLangSetSubtract (const FcLangSet *a, const FcLangSet *b);
642
643 /* fclist.c */
644 FcPublic FcObjectSet *
645 FcObjectSetCreate (void);
646
647 FcPublic FcBool
648 FcObjectSetAdd (FcObjectSet *os, const char *object);
649
650 FcPublic void
651 FcObjectSetDestroy (FcObjectSet *os);
652
653 FcPublic FcObjectSet *
654 FcObjectSetVaBuild (const char *first, va_list va);
655
656 FcPublic FcObjectSet *
657 FcObjectSetBuild (const char *first, ...) FC_ATTRIBUTE_SENTINEL(0);
658
659 FcPublic FcFontSet *
660 FcFontSetList (FcConfig     *config,
661                FcFontSet    **sets,
662                int          nsets,
663                FcPattern    *p,
664                FcObjectSet  *os);
665
666 FcPublic FcFontSet *
667 FcFontList (FcConfig    *config,
668             FcPattern   *p,
669             FcObjectSet *os);
670
671 /* fcatomic.c */
672
673 FcPublic FcAtomic *
674 FcAtomicCreate (const FcChar8   *file);
675
676 FcPublic FcBool
677 FcAtomicLock (FcAtomic *atomic);
678
679 FcPublic FcChar8 *
680 FcAtomicNewFile (FcAtomic *atomic);
681
682 FcPublic FcChar8 *
683 FcAtomicOrigFile (FcAtomic *atomic);
684
685 FcPublic FcBool
686 FcAtomicReplaceOrig (FcAtomic *atomic);
687
688 FcPublic void
689 FcAtomicDeleteNew (FcAtomic *atomic);
690
691 FcPublic void
692 FcAtomicUnlock (FcAtomic *atomic);
693
694 FcPublic void
695 FcAtomicDestroy (FcAtomic *atomic);
696
697 /* fcmatch.c */
698 FcPublic FcPattern *
699 FcFontSetMatch (FcConfig    *config,
700                 FcFontSet   **sets,
701                 int         nsets,
702                 FcPattern   *p,
703                 FcResult    *result);
704
705 FcPublic FcPattern *
706 FcFontMatch (FcConfig   *config,
707              FcPattern  *p, 
708              FcResult   *result);
709
710 FcPublic FcPattern *
711 FcFontRenderPrepare (FcConfig       *config,
712                      FcPattern      *pat,
713                      FcPattern      *font);
714
715 FcPublic FcFontSet *
716 FcFontSetSort (FcConfig     *config,
717                FcFontSet    **sets,
718                int          nsets,
719                FcPattern    *p,
720                FcBool       trim,
721                FcCharSet    **csp,
722                FcResult     *result);
723
724 FcPublic FcFontSet *
725 FcFontSort (FcConfig     *config,
726             FcPattern    *p,
727             FcBool       trim,
728             FcCharSet    **csp,
729             FcResult     *result);
730
731 FcPublic void
732 FcFontSetSortDestroy (FcFontSet *fs);
733
734 /* fcmatrix.c */
735 FcPublic FcMatrix *
736 FcMatrixCopy (const FcMatrix *mat);
737
738 FcPublic FcBool
739 FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2);
740
741 FcPublic void
742 FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b);
743
744 FcPublic void
745 FcMatrixRotate (FcMatrix *m, double c, double s);
746
747 FcPublic void
748 FcMatrixScale (FcMatrix *m, double sx, double sy);
749
750 FcPublic void
751 FcMatrixShear (FcMatrix *m, double sh, double sv);
752
753 /* fcname.c */
754
755 /* Deprecated.  Does nothing.  Returns FcFalse. */
756 FcPublic FcBool
757 FcNameRegisterObjectTypes (const FcObjectType *types, int ntype);
758
759 /* Deprecated.  Does nothing.  Returns FcFalse. */
760 FcPublic FcBool
761 FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype);
762
763 FcPublic const FcObjectType *
764 FcNameGetObjectType (const char *object);
765
766 /* Deprecated.  Does nothing.  Returns FcFalse. */
767 FcPublic FcBool
768 FcNameRegisterConstants (const FcConstant *consts, int nconsts);
769
770 /* Deprecated.  Does nothing.  Returns FcFalse. */
771 FcPublic FcBool
772 FcNameUnregisterConstants (const FcConstant *consts, int nconsts);
773
774 FcPublic const FcConstant *
775 FcNameGetConstant (const FcChar8 *string);
776
777 FcPublic FcBool
778 FcNameConstant (const FcChar8 *string, int *result);
779
780 FcPublic FcPattern *
781 FcNameParse (const FcChar8 *name);
782
783 FcPublic FcChar8 *
784 FcNameUnparse (FcPattern *pat);
785
786 /* fcpat.c */
787 FcPublic FcPattern *
788 FcPatternCreate (void);
789
790 FcPublic FcPattern *
791 FcPatternDuplicate (const FcPattern *p);
792
793 FcPublic void
794 FcPatternReference (FcPattern *p);
795
796 FcPublic FcPattern *
797 FcPatternFilter (FcPattern *p, const FcObjectSet *os);
798
799 FcPublic void
800 FcValueDestroy (FcValue v);
801
802 FcPublic FcBool
803 FcValueEqual (FcValue va, FcValue vb);
804
805 FcPublic FcValue
806 FcValueSave (FcValue v);
807
808 FcPublic void
809 FcPatternDestroy (FcPattern *p);
810
811 FcPublic FcBool
812 FcPatternEqual (const FcPattern *pa, const FcPattern *pb);
813
814 FcPublic FcBool
815 FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os);
816
817 FcPublic FcChar32
818 FcPatternHash (const FcPattern *p);
819
820 FcPublic FcBool
821 FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append);
822     
823 FcPublic FcBool
824 FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append);
825     
826 FcPublic FcResult
827 FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v);
828     
829 FcPublic FcBool
830 FcPatternDel (FcPattern *p, const char *object);
831
832 FcPublic FcBool
833 FcPatternRemove (FcPattern *p, const char *object, int id);
834
835 FcPublic FcBool
836 FcPatternAddInteger (FcPattern *p, const char *object, int i);
837
838 FcPublic FcBool
839 FcPatternAddDouble (FcPattern *p, const char *object, double d);
840
841 FcPublic FcBool
842 FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s);
843
844 FcPublic FcBool
845 FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s);
846
847 FcPublic FcBool
848 FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c);
849
850 FcPublic FcBool
851 FcPatternAddBool (FcPattern *p, const char *object, FcBool b);
852
853 FcPublic FcBool
854 FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls);
855
856 FcPublic FcResult
857 FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i);
858
859 FcPublic FcResult
860 FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d);
861
862 FcPublic FcResult
863 FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s);
864
865 FcPublic FcResult
866 FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s);
867
868 FcPublic FcResult
869 FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c);
870
871 FcPublic FcResult
872 FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b);
873
874 FcPublic FcResult
875 FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls);
876
877 FcPublic FcPattern *
878 FcPatternVaBuild (FcPattern *p, va_list va);
879     
880 FcPublic FcPattern *
881 FcPatternBuild (FcPattern *p, ...) FC_ATTRIBUTE_SENTINEL(0);
882
883 FcPublic FcChar8 *
884 FcPatternFormat (FcPattern *pat, const FcChar8 *format);
885
886 /* fcstr.c */
887
888 FcPublic FcChar8 *
889 FcStrCopy (const FcChar8 *s);
890
891 FcPublic FcChar8 *
892 FcStrCopyFilename (const FcChar8 *s);
893     
894 FcPublic FcChar8 *
895 FcStrPlus (const FcChar8 *s1, const FcChar8 *s2);
896     
897 FcPublic void
898 FcStrFree (FcChar8 *s);
899
900 /* These are ASCII only, suitable only for pattern element names */
901 #define FcIsUpper(c)    ((0101 <= (c) && (c) <= 0132))
902 #define FcIsLower(c)    ((0141 <= (c) && (c) <= 0172))
903 #define FcToLower(c)    (FcIsUpper(c) ? (c) - 0101 + 0141 : (c))
904
905 FcPublic FcChar8 *
906 FcStrDowncase (const FcChar8 *s);
907
908 FcPublic int
909 FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
910
911 FcPublic int
912 FcStrCmp (const FcChar8 *s1, const FcChar8 *s2);
913
914 FcPublic const FcChar8 *
915 FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
916
917 FcPublic const FcChar8 *
918 FcStrStr (const FcChar8 *s1, const FcChar8 *s2);
919
920 FcPublic int
921 FcUtf8ToUcs4 (const FcChar8 *src_orig,
922               FcChar32      *dst,
923               int           len);
924
925 FcPublic FcBool
926 FcUtf8Len (const FcChar8    *string,
927            int              len,
928            int              *nchar,
929            int              *wchar);
930
931 #define FC_UTF8_MAX_LEN 6
932
933 FcPublic int
934 FcUcs4ToUtf8 (FcChar32  ucs4,
935               FcChar8   dest[FC_UTF8_MAX_LEN]);
936
937 FcPublic int
938 FcUtf16ToUcs4 (const FcChar8    *src_orig,
939                FcEndian         endian,
940                FcChar32         *dst,
941                int              len);       /* in bytes */
942
943 FcPublic FcBool
944 FcUtf16Len (const FcChar8   *string,
945             FcEndian        endian,
946             int             len,            /* in bytes */
947             int             *nchar,
948             int             *wchar);
949
950 FcPublic FcChar8 *
951 FcStrDirname (const FcChar8 *file);
952
953 FcPublic FcChar8 *
954 FcStrBasename (const FcChar8 *file);
955
956 FcPublic FcStrSet *
957 FcStrSetCreate (void);
958
959 FcPublic FcBool
960 FcStrSetMember (FcStrSet *set, const FcChar8 *s);
961
962 FcPublic FcBool
963 FcStrSetEqual (FcStrSet *sa, FcStrSet *sb);
964
965 FcPublic FcBool
966 FcStrSetAdd (FcStrSet *set, const FcChar8 *s);
967
968 FcPublic FcBool
969 FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s);
970
971 FcPublic FcBool
972 FcStrSetDel (FcStrSet *set, const FcChar8 *s);
973
974 FcPublic void
975 FcStrSetDestroy (FcStrSet *set);
976
977 FcPublic FcStrList *
978 FcStrListCreate (FcStrSet *set);
979
980 FcPublic void
981 FcStrListFirst (FcStrList *list);
982
983 FcPublic FcChar8 *
984 FcStrListNext (FcStrList *list);
985
986 FcPublic void
987 FcStrListDone (FcStrList *list);
988
989 /* fcxml.c */
990 FcPublic FcBool
991 FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain);
992
993 _FCFUNCPROTOEND
994
995 #undef FC_ATTRIBUTE_SENTINEL
996
997
998 #ifndef _FCINT_H_
999
1000 /*
1001  * Deprecated functions are placed here to help users fix their code without
1002  * digging through documentation
1003  */
1004  
1005 #define FcConfigGetRescanInverval   FcConfigGetRescanInverval_REPLACE_BY_FcConfigGetRescanInterval
1006 #define FcConfigSetRescanInverval   FcConfigSetRescanInverval_REPLACE_BY_FcConfigSetRescanInterval
1007
1008 #endif
1009
1010 #endif /* _FONTCONFIG_H_ */