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

source code of include/fontconfig/fontconfig.h