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 43 typedef unsigned char FcChar8; 44 typedef unsigned short FcChar16; 45 typedef unsigned int FcChar32; 46 typedef 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 204 typedef 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 218 typedef 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 230 typedef struct _FcCharSet FcCharSet; 231 232 typedef struct _FcObjectType { 233 char *object; 234 FcType type; 235 } FcObjectType; 236 237 typedef struct _FcConstant { 238 const FcChar8 *name; 239 const char *object; 240 int value; 241 } FcConstant; 242 243 typedef enum _FcResult { 244 FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId, 245 FcResultOutOfMemory 246 } FcResult; 247 248 typedef enum _FcValueBinding { 249 FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame, 250 /* to make sure sizeof (FcValueBinding) == 4 even with -fshort-enums */ 251 FcValueBindingEnd = INT_MAX 252 } FcValueBinding; 253 254 typedef struct _FcPattern FcPattern; 255 256 typedef struct _FcPatternIter { 257 void *dummy1; 258 void *dummy2; 259 } FcPatternIter; 260 261 typedef struct _FcLangSet FcLangSet; 262 263 typedef struct _FcRange FcRange; 264 265 typedef 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 280 typedef struct _FcFontSet { 281 int nfont; 282 int sfont; 283 FcPattern **fonts; 284 } FcFontSet; 285 286 typedef struct _FcObjectSet { 287 int nobject; 288 int sobject; 289 const char **objects; 290 } FcObjectSet; 291 292 typedef enum _FcMatchKind { 293 FcMatchPattern, FcMatchFont, FcMatchScan, 294 FcMatchKindEnd, 295 FcMatchKindBegin = FcMatchPattern 296 } FcMatchKind; 297 298 typedef enum _FcLangResult { 299 FcLangEqual = 0, 300 FcLangDifferentCountry = 1, 301 FcLangDifferentTerritory = 1, 302 FcLangDifferentLang = 2 303 } FcLangResult; 304 305 typedef enum _FcSetName { 306 FcSetSystem = 0, 307 FcSetApplication = 1 308 } FcSetName; 309 310 typedef struct _FcConfigFileInfoIter { 311 void *dummy1; 312 void *dummy2; 313 void *dummy3; 314 } FcConfigFileInfoIter; 315 316 typedef 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 326 typedef enum { FcEndianBig, FcEndianLittle } FcEndian; 327 328 typedef struct _FcConfig FcConfig; 329 330 typedef struct _FcGlobalCache FcFileCache; 331 332 typedef struct _FcBlanks FcBlanks; 333 334 typedef struct _FcStrList FcStrList; 335 336 typedef struct _FcStrSet FcStrSet; 337 338 typedef struct _FcCache FcCache; 339 340 _FCFUNCPROTOBEGIN 341 342 /* fcblanks.c */ 343 FcPublic FcBlanks * 344 FcBlanksCreate (void); 345 346 FcPublic void 347 FcBlanksDestroy (FcBlanks *b); 348 349 FcPublic FcBool 350 FcBlanksAdd (FcBlanks *b, FcChar32 ucs4); 351 352 FcPublic FcBool 353 FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4); 354 355 /* fccache.c */ 356 357 FcPublic const FcChar8 * 358 FcCacheDir(const FcCache *c); 359 360 FcPublic FcFontSet * 361 FcCacheCopySet(const FcCache *c); 362 363 FcPublic const FcChar8 * 364 FcCacheSubdir (const FcCache *c, int i); 365 366 FcPublic int 367 FcCacheNumSubdir (const FcCache *c); 368 369 FcPublic int 370 FcCacheNumFont (const FcCache *c); 371 372 FcPublic FcBool 373 FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config); 374 375 FcPublic FcBool 376 FcDirCacheValid (const FcChar8 *cache_file); 377 378 FcPublic FcBool 379 FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose); 380 381 FcPublic void 382 FcCacheCreateTagFile (FcConfig *config); 383 384 FcPublic FcBool 385 FcDirCacheCreateUUID (FcChar8 *dir, 386 FcBool force, 387 FcConfig *config); 388 389 FcPublic FcBool 390 FcDirCacheDeleteUUID (const FcChar8 *dir, 391 FcConfig *config); 392 393 /* fccfg.c */ 394 FcPublic FcChar8 * 395 FcConfigHome (void); 396 397 FcPublic FcBool 398 FcConfigEnableHome (FcBool enable); 399 400 FcPublic FcChar8 * 401 FcConfigGetFilename (FcConfig *config, 402 const FcChar8 *url); 403 404 FcPublic FcChar8 * 405 FcConfigFilename (const FcChar8 *url); 406 407 FcPublic FcConfig * 408 FcConfigCreate (void); 409 410 FcPublic FcConfig * 411 FcConfigReference (FcConfig *config); 412 413 FcPublic void 414 FcConfigDestroy (FcConfig *config); 415 416 FcPublic FcBool 417 FcConfigSetCurrent (FcConfig *config); 418 419 FcPublic FcConfig * 420 FcConfigGetCurrent (void); 421 422 FcPublic FcBool 423 FcConfigUptoDate (FcConfig *config); 424 425 FcPublic FcBool 426 FcConfigBuildFonts (FcConfig *config); 427 428 FcPublic FcStrList * 429 FcConfigGetFontDirs (FcConfig *config); 430 431 FcPublic FcStrList * 432 FcConfigGetConfigDirs (FcConfig *config); 433 434 FcPublic FcStrList * 435 FcConfigGetConfigFiles (FcConfig *config); 436 437 FcPublic FcChar8 * 438 FcConfigGetCache (FcConfig *config); 439 440 FcPublic FcBlanks * 441 FcConfigGetBlanks (FcConfig *config); 442 443 FcPublic FcStrList * 444 FcConfigGetCacheDirs (FcConfig *config); 445 446 FcPublic int 447 FcConfigGetRescanInterval (FcConfig *config); 448 449 FcPublic FcBool 450 FcConfigSetRescanInterval (FcConfig *config, int rescanInterval); 451 452 FcPublic FcFontSet * 453 FcConfigGetFonts (FcConfig *config, 454 FcSetName set); 455 456 FcPublic FcBool 457 FcConfigAppFontAddFile (FcConfig *config, 458 const FcChar8 *file); 459 460 FcPublic FcBool 461 FcConfigAppFontAddDir (FcConfig *config, 462 const FcChar8 *dir); 463 464 FcPublic void 465 FcConfigAppFontClear (FcConfig *config); 466 467 FcPublic FcBool 468 FcConfigSubstituteWithPat (FcConfig *config, 469 FcPattern *p, 470 FcPattern *p_pat, 471 FcMatchKind kind); 472 473 FcPublic FcBool 474 FcConfigSubstitute (FcConfig *config, 475 FcPattern *p, 476 FcMatchKind kind); 477 478 FcPublic const FcChar8 * 479 FcConfigGetSysRoot (const FcConfig *config); 480 481 FcPublic void 482 FcConfigSetSysRoot (FcConfig *config, 483 const FcChar8 *sysroot); 484 485 FcPublic void 486 FcConfigFileInfoIterInit (FcConfig *config, 487 FcConfigFileInfoIter *iter); 488 489 FcPublic FcBool 490 FcConfigFileInfoIterNext (FcConfig *config, 491 FcConfigFileInfoIter *iter); 492 493 FcPublic FcBool 494 FcConfigFileInfoIterGet (FcConfig *config, 495 FcConfigFileInfoIter *iter, 496 FcChar8 **name, 497 FcChar8 **description, 498 FcBool *enabled); 499 500 /* fccharset.c */ 501 FcPublic FcCharSet* 502 FcCharSetCreate (void); 503 504 /* deprecated alias for FcCharSetCreate */ 505 FcPublic FcCharSet * 506 FcCharSetNew (void); 507 508 FcPublic void 509 FcCharSetDestroy (FcCharSet *fcs); 510 511 FcPublic FcBool 512 FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4); 513 514 FcPublic FcBool 515 FcCharSetDelChar (FcCharSet *fcs, FcChar32 ucs4); 516 517 FcPublic FcCharSet* 518 FcCharSetCopy (FcCharSet *src); 519 520 FcPublic FcBool 521 FcCharSetEqual (const FcCharSet *a, const FcCharSet *b); 522 523 FcPublic FcCharSet* 524 FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b); 525 526 FcPublic FcCharSet* 527 FcCharSetUnion (const FcCharSet *a, const FcCharSet *b); 528 529 FcPublic FcCharSet* 530 FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b); 531 532 FcPublic FcBool 533 FcCharSetMerge (FcCharSet *a, const FcCharSet *b, FcBool *changed); 534 535 FcPublic FcBool 536 FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4); 537 538 FcPublic FcChar32 539 FcCharSetCount (const FcCharSet *a); 540 541 FcPublic FcChar32 542 FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b); 543 544 FcPublic FcChar32 545 FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b); 546 547 FcPublic FcBool 548 FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b); 549 550 #define FC_CHARSET_MAP_SIZE (256/32) 551 #define FC_CHARSET_DONE ((FcChar32) -1) 552 553 FcPublic FcChar32 554 FcCharSetFirstPage (const FcCharSet *a, 555 FcChar32 map[FC_CHARSET_MAP_SIZE], 556 FcChar32 *next); 557 558 FcPublic FcChar32 559 FcCharSetNextPage (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 567 FcPublic FcChar32 568 FcCharSetCoverage (const FcCharSet *a, FcChar32 page, FcChar32 *result); 569 570 /* fcdbg.c */ 571 FcPublic void 572 FcValuePrint (const FcValue v); 573 574 FcPublic void 575 FcPatternPrint (const FcPattern *p); 576 577 FcPublic void 578 FcFontSetPrint (const FcFontSet *s); 579 580 /* fcdefault.c */ 581 FcPublic FcStrSet * 582 FcGetDefaultLangs (void); 583 584 FcPublic void 585 FcDefaultSubstitute (FcPattern *pattern); 586 587 /* fcdir.c */ 588 FcPublic FcBool 589 FcFileIsDir (const FcChar8 *file); 590 591 FcPublic FcBool 592 FcFileScan (FcFontSet *set, 593 FcStrSet *dirs, 594 FcFileCache *cache, 595 FcBlanks *blanks, 596 const FcChar8 *file, 597 FcBool force); 598 599 FcPublic FcBool 600 FcDirScan (FcFontSet *set, 601 FcStrSet *dirs, 602 FcFileCache *cache, 603 FcBlanks *blanks, 604 const FcChar8 *dir, 605 FcBool force); 606 607 FcPublic FcBool 608 FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir); 609 610 FcPublic FcCache * 611 FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file); 612 613 FcPublic FcCache * 614 FcDirCacheRescan (const FcChar8 *dir, FcConfig *config); 615 616 FcPublic FcCache * 617 FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config); 618 619 FcPublic FcCache * 620 FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat); 621 622 FcPublic void 623 FcDirCacheUnload (FcCache *cache); 624 625 /* fcfreetype.c */ 626 FcPublic FcPattern * 627 FcFreeTypeQuery (const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count); 628 629 FcPublic unsigned int 630 FcFreeTypeQueryAll(const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count, FcFontSet *set); 631 632 /* fcfs.c */ 633 634 FcPublic FcFontSet * 635 FcFontSetCreate (void); 636 637 FcPublic void 638 FcFontSetDestroy (FcFontSet *s); 639 640 FcPublic FcBool 641 FcFontSetAdd (FcFontSet *s, FcPattern *font); 642 643 /* fcinit.c */ 644 FcPublic FcConfig * 645 FcInitLoadConfig (void); 646 647 FcPublic FcConfig * 648 FcInitLoadConfigAndFonts (void); 649 650 FcPublic FcBool 651 FcInit (void); 652 653 FcPublic void 654 FcFini (void); 655 656 FcPublic int 657 FcGetVersion (void); 658 659 FcPublic FcBool 660 FcInitReinitialize (void); 661 662 FcPublic FcBool 663 FcInitBringUptoDate (void); 664 665 /* fclang.c */ 666 FcPublic FcStrSet * 667 FcGetLangs (void); 668 669 FcPublic FcChar8 * 670 FcLangNormalize (const FcChar8 *lang); 671 672 FcPublic const FcCharSet * 673 FcLangGetCharSet (const FcChar8 *lang); 674 675 FcPublic FcLangSet* 676 FcLangSetCreate (void); 677 678 FcPublic void 679 FcLangSetDestroy (FcLangSet *ls); 680 681 FcPublic FcLangSet* 682 FcLangSetCopy (const FcLangSet *ls); 683 684 FcPublic FcBool 685 FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang); 686 687 FcPublic FcBool 688 FcLangSetDel (FcLangSet *ls, const FcChar8 *lang); 689 690 FcPublic FcLangResult 691 FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang); 692 693 FcPublic FcLangResult 694 FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb); 695 696 FcPublic FcBool 697 FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb); 698 699 FcPublic FcBool 700 FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb); 701 702 FcPublic FcChar32 703 FcLangSetHash (const FcLangSet *ls); 704 705 FcPublic FcStrSet * 706 FcLangSetGetLangs (const FcLangSet *ls); 707 708 FcPublic FcLangSet * 709 FcLangSetUnion (const FcLangSet *a, const FcLangSet *b); 710 711 FcPublic FcLangSet * 712 FcLangSetSubtract (const FcLangSet *a, const FcLangSet *b); 713 714 /* fclist.c */ 715 FcPublic FcObjectSet * 716 FcObjectSetCreate (void); 717 718 FcPublic FcBool 719 FcObjectSetAdd (FcObjectSet *os, const char *object); 720 721 FcPublic void 722 FcObjectSetDestroy (FcObjectSet *os); 723 724 FcPublic FcObjectSet * 725 FcObjectSetVaBuild (const char *first, va_list va); 726 727 FcPublic FcObjectSet * 728 FcObjectSetBuild (const char *first, ...) FC_ATTRIBUTE_SENTINEL(0); 729 730 FcPublic FcFontSet * 731 FcFontSetList (FcConfig *config, 732 FcFontSet **sets, 733 int nsets, 734 FcPattern *p, 735 FcObjectSet *os); 736 737 FcPublic FcFontSet * 738 FcFontList (FcConfig *config, 739 FcPattern *p, 740 FcObjectSet *os); 741 742 /* fcatomic.c */ 743 744 FcPublic FcAtomic * 745 FcAtomicCreate (const FcChar8 *file); 746 747 FcPublic FcBool 748 FcAtomicLock (FcAtomic *atomic); 749 750 FcPublic FcChar8 * 751 FcAtomicNewFile (FcAtomic *atomic); 752 753 FcPublic FcChar8 * 754 FcAtomicOrigFile (FcAtomic *atomic); 755 756 FcPublic FcBool 757 FcAtomicReplaceOrig (FcAtomic *atomic); 758 759 FcPublic void 760 FcAtomicDeleteNew (FcAtomic *atomic); 761 762 FcPublic void 763 FcAtomicUnlock (FcAtomic *atomic); 764 765 FcPublic void 766 FcAtomicDestroy (FcAtomic *atomic); 767 768 /* fcmatch.c */ 769 FcPublic FcPattern * 770 FcFontSetMatch (FcConfig *config, 771 FcFontSet **sets, 772 int nsets, 773 FcPattern *p, 774 FcResult *result); 775 776 FcPublic FcPattern * 777 FcFontMatch (FcConfig *config, 778 FcPattern *p, 779 FcResult *result); 780 781 FcPublic FcPattern * 782 FcFontRenderPrepare (FcConfig *config, 783 FcPattern *pat, 784 FcPattern *font); 785 786 FcPublic FcFontSet * 787 FcFontSetSort (FcConfig *config, 788 FcFontSet **sets, 789 int nsets, 790 FcPattern *p, 791 FcBool trim, 792 FcCharSet **csp, 793 FcResult *result); 794 795 FcPublic FcFontSet * 796 FcFontSort (FcConfig *config, 797 FcPattern *p, 798 FcBool trim, 799 FcCharSet **csp, 800 FcResult *result); 801 802 FcPublic void 803 FcFontSetSortDestroy (FcFontSet *fs); 804 805 /* fcmatrix.c */ 806 FcPublic FcMatrix * 807 FcMatrixCopy (const FcMatrix *mat); 808 809 FcPublic FcBool 810 FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2); 811 812 FcPublic void 813 FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b); 814 815 FcPublic void 816 FcMatrixRotate (FcMatrix *m, double c, double s); 817 818 FcPublic void 819 FcMatrixScale (FcMatrix *m, double sx, double sy); 820 821 FcPublic void 822 FcMatrixShear (FcMatrix *m, double sh, double sv); 823 824 /* fcname.c */ 825 826 /* Deprecated. Does nothing. Returns FcFalse. */ 827 FcPublic FcBool 828 FcNameRegisterObjectTypes (const FcObjectType *types, int ntype); 829 830 /* Deprecated. Does nothing. Returns FcFalse. */ 831 FcPublic FcBool 832 FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype); 833 834 FcPublic const FcObjectType * 835 FcNameGetObjectType (const char *object); 836 837 /* Deprecated. Does nothing. Returns FcFalse. */ 838 FcPublic FcBool 839 FcNameRegisterConstants (const FcConstant *consts, int nconsts); 840 841 /* Deprecated. Does nothing. Returns FcFalse. */ 842 FcPublic FcBool 843 FcNameUnregisterConstants (const FcConstant *consts, int nconsts); 844 845 FcPublic const FcConstant * 846 FcNameGetConstant (const FcChar8 *string); 847 848 FcPublic const FcConstant * 849 FcNameGetConstantFor (const FcChar8 *string, const char *object); 850 851 FcPublic FcBool 852 FcNameConstant (const FcChar8 *string, int *result); 853 854 FcPublic FcPattern * 855 FcNameParse (const FcChar8 *name); 856 857 FcPublic FcChar8 * 858 FcNameUnparse (FcPattern *pat); 859 860 /* fcpat.c */ 861 FcPublic FcPattern * 862 FcPatternCreate (void); 863 864 FcPublic FcPattern * 865 FcPatternDuplicate (const FcPattern *p); 866 867 FcPublic void 868 FcPatternReference (FcPattern *p); 869 870 FcPublic FcPattern * 871 FcPatternFilter (FcPattern *p, const FcObjectSet *os); 872 873 FcPublic void 874 FcValueDestroy (FcValue v); 875 876 FcPublic FcBool 877 FcValueEqual (FcValue va, FcValue vb); 878 879 FcPublic FcValue 880 FcValueSave (FcValue v); 881 882 FcPublic void 883 FcPatternDestroy (FcPattern *p); 884 885 int 886 FcPatternObjectCount (const FcPattern *pat); 887 888 FcPublic FcBool 889 FcPatternEqual (const FcPattern *pa, const FcPattern *pb); 890 891 FcPublic FcBool 892 FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os); 893 894 FcPublic FcChar32 895 FcPatternHash (const FcPattern *p); 896 897 FcPublic FcBool 898 FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append); 899 900 FcPublic FcBool 901 FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append); 902 903 FcPublic FcResult 904 FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v); 905 906 FcPublic FcResult 907 FcPatternGetWithBinding (const FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b); 908 909 FcPublic FcBool 910 FcPatternDel (FcPattern *p, const char *object); 911 912 FcPublic FcBool 913 FcPatternRemove (FcPattern *p, const char *object, int id); 914 915 FcPublic FcBool 916 FcPatternAddInteger (FcPattern *p, const char *object, int i); 917 918 FcPublic FcBool 919 FcPatternAddDouble (FcPattern *p, const char *object, double d); 920 921 FcPublic FcBool 922 FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s); 923 924 FcPublic FcBool 925 FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s); 926 927 FcPublic FcBool 928 FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c); 929 930 FcPublic FcBool 931 FcPatternAddBool (FcPattern *p, const char *object, FcBool b); 932 933 FcPublic FcBool 934 FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls); 935 936 FcPublic FcBool 937 FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r); 938 939 FcPublic FcResult 940 FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i); 941 942 FcPublic FcResult 943 FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d); 944 945 FcPublic FcResult 946 FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s); 947 948 FcPublic FcResult 949 FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s); 950 951 FcPublic FcResult 952 FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c); 953 954 FcPublic FcResult 955 FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b); 956 957 FcPublic FcResult 958 FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls); 959 960 FcPublic FcResult 961 FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r); 962 963 FcPublic FcPattern * 964 FcPatternVaBuild (FcPattern *p, va_list va); 965 966 FcPublic FcPattern * 967 FcPatternBuild (FcPattern *p, ...) FC_ATTRIBUTE_SENTINEL(0); 968 969 FcPublic FcChar8 * 970 FcPatternFormat (FcPattern *pat, const FcChar8 *format); 971 972 /* fcrange.c */ 973 FcPublic FcRange * 974 FcRangeCreateDouble (double begin, double end); 975 976 FcPublic FcRange * 977 FcRangeCreateInteger (FcChar32 begin, FcChar32 end); 978 979 FcPublic void 980 FcRangeDestroy (FcRange *range); 981 982 FcPublic FcRange * 983 FcRangeCopy (const FcRange *r); 984 985 FcPublic FcBool 986 FcRangeGetDouble(const FcRange *range, double *begin, double *end); 987 988 FcPublic void 989 FcPatternIterStart (const FcPattern *pat, FcPatternIter *iter); 990 991 FcPublic FcBool 992 FcPatternIterNext (const FcPattern *pat, FcPatternIter *iter); 993 994 FcPublic FcBool 995 FcPatternIterEqual (const FcPattern *p1, FcPatternIter *i1, 996 const FcPattern *p2, FcPatternIter *i2); 997 998 FcPublic FcBool 999 FcPatternFindIter (const FcPattern *pat, FcPatternIter *iter, const char *object); 1000 1001 FcPublic FcBool 1002 FcPatternIterIsValid (const FcPattern *pat, FcPatternIter *iter); 1003 1004 FcPublic const char * 1005 FcPatternIterGetObject (const FcPattern *pat, FcPatternIter *iter); 1006 1007 FcPublic int 1008 FcPatternIterValueCount (const FcPattern *pat, FcPatternIter *iter); 1009 1010 FcPublic FcResult 1011 FcPatternIterGetValue (const FcPattern *pat, FcPatternIter *iter, int id, FcValue *v, FcValueBinding *b); 1012 1013 /* fcweight.c */ 1014 1015 FcPublic int 1016 FcWeightFromOpenType (int ot_weight); 1017 1018 FcPublic double 1019 FcWeightFromOpenTypeDouble (double ot_weight); 1020 1021 FcPublic int 1022 FcWeightToOpenType (int fc_weight); 1023 1024 FcPublic double 1025 FcWeightToOpenTypeDouble (double fc_weight); 1026 1027 /* fcstr.c */ 1028 1029 FcPublic FcChar8 * 1030 FcStrCopy (const FcChar8 *s); 1031 1032 FcPublic FcChar8 * 1033 FcStrCopyFilename (const FcChar8 *s); 1034 1035 FcPublic FcChar8 * 1036 FcStrPlus (const FcChar8 *s1, const FcChar8 *s2); 1037 1038 FcPublic void 1039 FcStrFree (FcChar8 *s); 1040 1041 /* These are ASCII only, suitable only for pattern element names */ 1042 #define FcIsUpper(c) ((0101 <= (c) && (c) <= 0132)) 1043 #define FcIsLower(c) ((0141 <= (c) && (c) <= 0172)) 1044 #define FcToLower(c) (FcIsUpper(c) ? (c) - 0101 + 0141 : (c)) 1045 1046 FcPublic FcChar8 * 1047 FcStrDowncase (const FcChar8 *s); 1048 1049 FcPublic int 1050 FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2); 1051 1052 FcPublic int 1053 FcStrCmp (const FcChar8 *s1, const FcChar8 *s2); 1054 1055 FcPublic const FcChar8 * 1056 FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2); 1057 1058 FcPublic const FcChar8 * 1059 FcStrStr (const FcChar8 *s1, const FcChar8 *s2); 1060 1061 FcPublic int 1062 FcUtf8ToUcs4 (const FcChar8 *src_orig, 1063 FcChar32 *dst, 1064 int len); 1065 1066 FcPublic FcBool 1067 FcUtf8Len (const FcChar8 *string, 1068 int len, 1069 int *nchar, 1070 int *wchar); 1071 1072 #define FC_UTF8_MAX_LEN 6 1073 1074 FcPublic int 1075 FcUcs4ToUtf8 (FcChar32 ucs4, 1076 FcChar8 dest[FC_UTF8_MAX_LEN]); 1077 1078 FcPublic int 1079 FcUtf16ToUcs4 (const FcChar8 *src_orig, 1080 FcEndian endian, 1081 FcChar32 *dst, 1082 int len); /* in bytes */ 1083 1084 FcPublic FcBool 1085 FcUtf16Len (const FcChar8 *string, 1086 FcEndian endian, 1087 int len, /* in bytes */ 1088 int *nchar, 1089 int *wchar); 1090 1091 FcPublic FcChar8 * 1092 FcStrBuildFilename (const FcChar8 *path, 1093 ...); 1094 1095 FcPublic FcChar8 * 1096 FcStrDirname (const FcChar8 *file); 1097 1098 FcPublic FcChar8 * 1099 FcStrBasename (const FcChar8 *file); 1100 1101 FcPublic FcStrSet * 1102 FcStrSetCreate (void); 1103 1104 FcPublic FcBool 1105 FcStrSetMember (FcStrSet *set, const FcChar8 *s); 1106 1107 FcPublic FcBool 1108 FcStrSetEqual (FcStrSet *sa, FcStrSet *sb); 1109 1110 FcPublic FcBool 1111 FcStrSetAdd (FcStrSet *set, const FcChar8 *s); 1112 1113 FcPublic FcBool 1114 FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s); 1115 1116 FcPublic FcBool 1117 FcStrSetDel (FcStrSet *set, const FcChar8 *s); 1118 1119 FcPublic void 1120 FcStrSetDestroy (FcStrSet *set); 1121 1122 FcPublic FcStrList * 1123 FcStrListCreate (FcStrSet *set); 1124 1125 FcPublic void 1126 FcStrListFirst (FcStrList *list); 1127 1128 FcPublic FcChar8 * 1129 FcStrListNext (FcStrList *list); 1130 1131 FcPublic void 1132 FcStrListDone (FcStrList *list); 1133 1134 /* fcxml.c */ 1135 FcPublic FcBool 1136 FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain); 1137 1138 FcPublic FcBool 1139 FcConfigParseAndLoadFromMemory (FcConfig *config, 1140 const FcChar8 *buffer, 1141 FcBool complain); 1142 1143 _FCFUNCPROTOEND 1144 1145 #undef FC_ATTRIBUTE_SENTINEL 1146 1147 1148 #ifndef _FCINT_H_ 1149 1150 /* 1151 * Deprecated functions are placed here to help users fix their code without 1152 * digging through documentation 1153 */ 1154 1155 #define FcConfigGetRescanInverval FcConfigGetRescanInverval_REPLACE_BY_FcConfigGetRescanInterval 1156 #define FcConfigSetRescanInverval FcConfigSetRescanInverval_REPLACE_BY_FcConfigSetRescanInterval 1157 1158 #endif 1159 1160 #endif /* _FONTCONFIG_H_ */ 1161