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