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