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 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 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 175typedef enum _FcType { 176 FcTypeVoid, 177 FcTypeInteger, 178 FcTypeDouble, 179 FcTypeString, 180 FcTypeBool, 181 FcTypeMatrix, 182 FcTypeCharSet, 183 FcTypeFTFace, 184 FcTypeLangSet 185} FcType; 186 187typedef 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 199typedef struct _FcCharSet FcCharSet; 200 201typedef struct _FcObjectType { 202 const char *object; 203 FcType type; 204} FcObjectType; 205 206typedef struct _FcConstant { 207 const FcChar8 *name; 208 const char *object; 209 int value; 210} FcConstant; 211 212typedef enum _FcResult { 213 FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId, 214 FcResultOutOfMemory 215} FcResult; 216 217typedef struct _FcPattern FcPattern; 218 219typedef struct _FcLangSet FcLangSet; 220 221typedef 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 235typedef struct _FcFontSet { 236 int nfont; 237 int sfont; 238 FcPattern **fonts; 239} FcFontSet; 240 241typedef struct _FcObjectSet { 242 int nobject; 243 int sobject; 244 const char **objects; 245} FcObjectSet; 246 247typedef enum _FcMatchKind { 248 FcMatchPattern, FcMatchFont, FcMatchScan 249} FcMatchKind; 250 251typedef enum _FcLangResult { 252 FcLangEqual = 0, 253 FcLangDifferentCountry = 1, 254 FcLangDifferentTerritory = 1, 255 FcLangDifferentLang = 2 256} FcLangResult; 257 258typedef enum _FcSetName { 259 FcSetSystem = 0, 260 FcSetApplication = 1 261} FcSetName; 262 263typedef 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 273typedef enum { FcEndianBig, FcEndianLittle } FcEndian; 274 275typedef struct _FcConfig FcConfig; 276 277typedef struct _FcGlobalCache FcFileCache; 278 279typedef struct _FcBlanks FcBlanks; 280 281typedef struct _FcStrList FcStrList; 282 283typedef struct _FcStrSet FcStrSet; 284 285typedef struct _FcCache FcCache; 286 287_FCFUNCPROTOBEGIN 288 289/* fcblanks.c */ 290FcPublic FcBlanks * 291FcBlanksCreate (void); 292 293FcPublic void 294FcBlanksDestroy (FcBlanks *b); 295 296FcPublic FcBool 297FcBlanksAdd (FcBlanks *b, FcChar32 ucs4); 298 299FcPublic FcBool 300FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4); 301 302/* fccache.c */ 303 304FcPublic const FcChar8 * 305FcCacheDir(const FcCache *c); 306 307FcPublic FcFontSet * 308FcCacheCopySet(const FcCache *c); 309 310FcPublic const FcChar8 * 311FcCacheSubdir (const FcCache *c, int i); 312 313FcPublic int 314FcCacheNumSubdir (const FcCache *c); 315 316FcPublic int 317FcCacheNumFont (const FcCache *c); 318 319FcPublic FcBool 320FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config); 321 322FcPublic FcBool 323FcDirCacheValid (const FcChar8 *cache_file); 324 325/* fccfg.c */ 326FcPublic FcChar8 * 327FcConfigHome (void); 328 329FcPublic FcBool 330FcConfigEnableHome (FcBool enable); 331 332FcPublic FcChar8 * 333FcConfigFilename (const FcChar8 *url); 334 335FcPublic FcConfig * 336FcConfigCreate (void); 337 338FcPublic void 339FcConfigDestroy (FcConfig *config); 340 341FcPublic FcBool 342FcConfigSetCurrent (FcConfig *config); 343 344FcPublic FcConfig * 345FcConfigGetCurrent (void); 346 347FcPublic FcBool 348FcConfigUptoDate (FcConfig *config); 349 350FcPublic FcBool 351FcConfigBuildFonts (FcConfig *config); 352 353FcPublic FcStrList * 354FcConfigGetFontDirs (FcConfig *config); 355 356FcPublic FcStrList * 357FcConfigGetConfigDirs (FcConfig *config); 358 359FcPublic FcStrList * 360FcConfigGetConfigFiles (FcConfig *config); 361 362FcPublic FcChar8 * 363FcConfigGetCache (FcConfig *config); 364 365FcPublic FcBlanks * 366FcConfigGetBlanks (FcConfig *config); 367 368FcPublic FcStrList * 369FcConfigGetCacheDirs (FcConfig *config); 370 371FcPublic int 372FcConfigGetRescanInterval (FcConfig *config); 373 374FcPublic FcBool 375FcConfigSetRescanInterval (FcConfig *config, int rescanInterval); 376 377FcPublic FcFontSet * 378FcConfigGetFonts (FcConfig *config, 379 FcSetName set); 380 381FcPublic FcBool 382FcConfigAppFontAddFile (FcConfig *config, 383 const FcChar8 *file); 384 385FcPublic FcBool 386FcConfigAppFontAddDir (FcConfig *config, 387 const FcChar8 *dir); 388 389FcPublic void 390FcConfigAppFontClear (FcConfig *config); 391 392FcPublic FcBool 393FcConfigSubstituteWithPat (FcConfig *config, 394 FcPattern *p, 395 FcPattern *p_pat, 396 FcMatchKind kind); 397 398FcPublic FcBool 399FcConfigSubstitute (FcConfig *config, 400 FcPattern *p, 401 FcMatchKind kind); 402 403/* fccharset.c */ 404FcPublic FcCharSet* 405FcCharSetCreate (void); 406 407/* deprecated alias for FcCharSetCreate */ 408FcPublic FcCharSet * 409FcCharSetNew (void); 410 411FcPublic void 412FcCharSetDestroy (FcCharSet *fcs); 413 414FcPublic FcBool 415FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4); 416 417FcPublic FcCharSet* 418FcCharSetCopy (FcCharSet *src); 419 420FcPublic FcBool 421FcCharSetEqual (const FcCharSet *a, const FcCharSet *b); 422 423FcPublic FcCharSet* 424FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b); 425 426FcPublic FcCharSet* 427FcCharSetUnion (const FcCharSet *a, const FcCharSet *b); 428 429FcPublic FcCharSet* 430FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b); 431 432FcPublic FcBool 433FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4); 434 435FcPublic FcChar32 436FcCharSetCount (const FcCharSet *a); 437 438FcPublic FcChar32 439FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b); 440 441FcPublic FcChar32 442FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b); 443 444FcPublic FcBool 445FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b); 446 447#define FC_CHARSET_MAP_SIZE (256/32) 448#define FC_CHARSET_DONE ((FcChar32) -1) 449 450FcPublic FcChar32 451FcCharSetFirstPage (const FcCharSet *a, 452 FcChar32 map[FC_CHARSET_MAP_SIZE], 453 FcChar32 *next); 454 455FcPublic FcChar32 456FcCharSetNextPage (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 464FcPublic FcChar32 465FcCharSetCoverage (const FcCharSet *a, FcChar32 page, FcChar32 *result); 466 467/* fcdbg.c */ 468FcPublic void 469FcValuePrint (const FcValue v); 470 471FcPublic void 472FcPatternPrint (const FcPattern *p); 473 474FcPublic void 475FcFontSetPrint (const FcFontSet *s); 476 477/* fcdefault.c */ 478FcPublic void 479FcDefaultSubstitute (FcPattern *pattern); 480 481/* fcdir.c */ 482FcPublic FcBool 483FcFileIsDir (const FcChar8 *file); 484 485FcPublic FcBool 486FcFileScan (FcFontSet *set, 487 FcStrSet *dirs, 488 FcFileCache *cache, 489 FcBlanks *blanks, 490 const FcChar8 *file, 491 FcBool force); 492 493FcPublic FcBool 494FcDirScan (FcFontSet *set, 495 FcStrSet *dirs, 496 FcFileCache *cache, 497 FcBlanks *blanks, 498 const FcChar8 *dir, 499 FcBool force); 500 501FcPublic FcBool 502FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir); 503 504FcPublic FcCache * 505FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file); 506 507FcPublic FcCache * 508FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config); 509 510FcPublic FcCache * 511FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat); 512 513FcPublic void 514FcDirCacheUnload (FcCache *cache); 515 516/* fcfreetype.c */ 517FcPublic FcPattern * 518FcFreeTypeQuery (const FcChar8 *file, int id, FcBlanks *blanks, int *count); 519 520/* fcfs.c */ 521 522FcPublic FcFontSet * 523FcFontSetCreate (void); 524 525FcPublic void 526FcFontSetDestroy (FcFontSet *s); 527 528FcPublic FcBool 529FcFontSetAdd (FcFontSet *s, FcPattern *font); 530 531/* fcinit.c */ 532FcPublic FcConfig * 533FcInitLoadConfig (void); 534 535FcPublic FcConfig * 536FcInitLoadConfigAndFonts (void); 537 538FcPublic FcBool 539FcInit (void); 540 541FcPublic void 542FcFini (void); 543 544FcPublic int 545FcGetVersion (void); 546 547FcPublic FcBool 548FcInitReinitialize (void); 549 550FcPublic FcBool 551FcInitBringUptoDate (void); 552 553/* fclang.c */ 554FcPublic FcStrSet * 555FcGetLangs (void); 556 557FcPublic const FcCharSet * 558FcLangGetCharSet (const FcChar8 *lang); 559 560FcPublic FcLangSet* 561FcLangSetCreate (void); 562 563FcPublic void 564FcLangSetDestroy (FcLangSet *ls); 565 566FcPublic FcLangSet* 567FcLangSetCopy (const FcLangSet *ls); 568 569FcPublic FcBool 570FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang); 571 572FcPublic FcLangResult 573FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang); 574 575FcPublic FcLangResult 576FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb); 577 578FcPublic FcBool 579FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb); 580 581FcPublic FcBool 582FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb); 583 584FcPublic FcChar32 585FcLangSetHash (const FcLangSet *ls); 586 587/* fclist.c */ 588FcPublic FcObjectSet * 589FcObjectSetCreate (void); 590 591FcPublic FcBool 592FcObjectSetAdd (FcObjectSet *os, const char *object); 593 594FcPublic void 595FcObjectSetDestroy (FcObjectSet *os); 596 597FcPublic FcObjectSet * 598FcObjectSetVaBuild (const char *first, va_list va); 599 600FcPublic FcObjectSet * 601FcObjectSetBuild (const char *first, ...) FC_ATTRIBUTE_SENTINEL(0); 602 603FcPublic FcFontSet * 604FcFontSetList (FcConfig *config, 605 FcFontSet **sets, 606 int nsets, 607 FcPattern *p, 608 FcObjectSet *os); 609 610FcPublic FcFontSet * 611FcFontList (FcConfig *config, 612 FcPattern *p, 613 FcObjectSet *os); 614 615/* fcatomic.c */ 616 617FcPublic FcAtomic * 618FcAtomicCreate (const FcChar8 *file); 619 620FcPublic FcBool 621FcAtomicLock (FcAtomic *atomic); 622 623FcPublic FcChar8 * 624FcAtomicNewFile (FcAtomic *atomic); 625 626FcPublic FcChar8 * 627FcAtomicOrigFile (FcAtomic *atomic); 628 629FcPublic FcBool 630FcAtomicReplaceOrig (FcAtomic *atomic); 631 632FcPublic void 633FcAtomicDeleteNew (FcAtomic *atomic); 634 635FcPublic void 636FcAtomicUnlock (FcAtomic *atomic); 637 638FcPublic void 639FcAtomicDestroy (FcAtomic *atomic); 640 641/* fcmatch.c */ 642FcPublic FcPattern * 643FcFontSetMatch (FcConfig *config, 644 FcFontSet **sets, 645 int nsets, 646 FcPattern *p, 647 FcResult *result); 648 649FcPublic FcPattern * 650FcFontMatch (FcConfig *config, 651 FcPattern *p, 652 FcResult *result); 653 654FcPublic FcPattern * 655FcFontRenderPrepare (FcConfig *config, 656 FcPattern *pat, 657 FcPattern *font); 658 659FcPublic FcFontSet * 660FcFontSetSort (FcConfig *config, 661 FcFontSet **sets, 662 int nsets, 663 FcPattern *p, 664 FcBool trim, 665 FcCharSet **csp, 666 FcResult *result); 667 668FcPublic FcFontSet * 669FcFontSort (FcConfig *config, 670 FcPattern *p, 671 FcBool trim, 672 FcCharSet **csp, 673 FcResult *result); 674 675FcPublic void 676FcFontSetSortDestroy (FcFontSet *fs); 677 678/* fcmatrix.c */ 679FcPublic FcMatrix * 680FcMatrixCopy (const FcMatrix *mat); 681 682FcPublic FcBool 683FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2); 684 685FcPublic void 686FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b); 687 688FcPublic void 689FcMatrixRotate (FcMatrix *m, double c, double s); 690 691FcPublic void 692FcMatrixScale (FcMatrix *m, double sx, double sy); 693 694FcPublic void 695FcMatrixShear (FcMatrix *m, double sh, double sv); 696 697/* fcname.c */ 698 699FcPublic FcBool 700FcNameRegisterObjectTypes (const FcObjectType *types, int ntype); 701 702FcPublic FcBool 703FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype); 704 705FcPublic const FcObjectType * 706FcNameGetObjectType (const char *object); 707 708FcPublic FcBool 709FcNameRegisterConstants (const FcConstant *consts, int nconsts); 710 711FcPublic FcBool 712FcNameUnregisterConstants (const FcConstant *consts, int nconsts); 713 714FcPublic const FcConstant * 715FcNameGetConstant (FcChar8 *string); 716 717FcPublic FcBool 718FcNameConstant (FcChar8 *string, int *result); 719 720FcPublic FcPattern * 721FcNameParse (const FcChar8 *name); 722 723FcPublic FcChar8 * 724FcNameUnparse (FcPattern *pat); 725 726/* fcpat.c */ 727FcPublic FcPattern * 728FcPatternCreate (void); 729 730FcPublic FcPattern * 731FcPatternDuplicate (const FcPattern *p); 732 733FcPublic void 734FcPatternReference (FcPattern *p); 735 736FcPublic void 737FcValueDestroy (FcValue v); 738 739FcPublic FcBool 740FcValueEqual (FcValue va, FcValue vb); 741 742FcPublic FcValue 743FcValueSave (FcValue v); 744 745FcPublic void 746FcPatternDestroy (FcPattern *p); 747 748FcPublic FcBool 749FcPatternEqual (const FcPattern *pa, const FcPattern *pb); 750 751FcPublic FcBool 752FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os); 753 754FcPublic FcChar32 755FcPatternHash (const FcPattern *p); 756 757FcPublic FcBool 758FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append); 759 760FcPublic FcBool 761FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append); 762 763FcPublic FcResult 764FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v); 765 766FcPublic FcBool 767FcPatternDel (FcPattern *p, const char *object); 768 769FcPublic FcBool 770FcPatternRemove (FcPattern *p, const char *object, int id); 771 772FcPublic FcBool 773FcPatternAddInteger (FcPattern *p, const char *object, int i); 774 775FcPublic FcBool 776FcPatternAddDouble (FcPattern *p, const char *object, double d); 777 778FcPublic FcBool 779FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s); 780 781FcPublic FcBool 782FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s); 783 784FcPublic FcBool 785FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c); 786 787FcPublic FcBool 788FcPatternAddBool (FcPattern *p, const char *object, FcBool b); 789 790FcPublic FcBool 791FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls); 792 793FcPublic FcResult 794FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i); 795 796FcPublic FcResult 797FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d); 798 799FcPublic FcResult 800FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s); 801 802FcPublic FcResult 803FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s); 804 805FcPublic FcResult 806FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c); 807 808FcPublic FcResult 809FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b); 810 811FcPublic FcResult 812FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls); 813 814FcPublic FcPattern * 815FcPatternVaBuild (FcPattern *orig, va_list va); 816 817FcPublic FcPattern * 818FcPatternBuild (FcPattern *orig, ...) FC_ATTRIBUTE_SENTINEL(0); 819 820/* fcstr.c */ 821 822FcPublic FcChar8 * 823FcStrCopy (const FcChar8 *s); 824 825FcPublic FcChar8 * 826FcStrCopyFilename (const FcChar8 *s); 827 828FcPublic FcChar8 * 829FcStrPlus (const FcChar8 *s1, const FcChar8 *s2); 830 831FcPublic void 832FcStrFree (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 839FcPublic FcChar8 * 840FcStrDowncase (const FcChar8 *s); 841 842FcPublic int 843FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2); 844 845FcPublic int 846FcStrCmp (const FcChar8 *s1, const FcChar8 *s2); 847 848FcPublic const FcChar8 * 849FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2); 850 851FcPublic const FcChar8 * 852FcStrStr (const FcChar8 *s1, const FcChar8 *s2); 853 854FcPublic int 855FcUtf8ToUcs4 (const FcChar8 *src_orig, 856 FcChar32 *dst, 857 int len); 858 859FcPublic FcBool 860FcUtf8Len (const FcChar8 *string, 861 int len, 862 int *nchar, 863 int *wchar); 864 865#define FC_UTF8_MAX_LEN 6 866 867FcPublic int 868FcUcs4ToUtf8 (FcChar32 ucs4, 869 FcChar8 dest[FC_UTF8_MAX_LEN]); 870 871FcPublic int 872FcUtf16ToUcs4 (const FcChar8 *src_orig, 873 FcEndian endian, 874 FcChar32 *dst, 875 int len); /* in bytes */ 876 877FcPublic FcBool 878FcUtf16Len (const FcChar8 *string, 879 FcEndian endian, 880 int len, /* in bytes */ 881 int *nchar, 882 int *wchar); 883 884FcPublic FcChar8 * 885FcStrDirname (const FcChar8 *file); 886 887FcPublic FcChar8 * 888FcStrBasename (const FcChar8 *file); 889 890FcPublic FcStrSet * 891FcStrSetCreate (void); 892 893FcPublic FcBool 894FcStrSetMember (FcStrSet *set, const FcChar8 *s); 895 896FcPublic FcBool 897FcStrSetEqual (FcStrSet *sa, FcStrSet *sb); 898 899FcPublic FcBool 900FcStrSetAdd (FcStrSet *set, const FcChar8 *s); 901 902FcPublic FcBool 903FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s); 904 905FcPublic FcBool 906FcStrSetDel (FcStrSet *set, const FcChar8 *s); 907 908FcPublic void 909FcStrSetDestroy (FcStrSet *set); 910 911FcPublic FcStrList * 912FcStrListCreate (FcStrSet *set); 913 914FcPublic FcChar8 * 915FcStrListNext (FcStrList *list); 916 917FcPublic void 918FcStrListDone (FcStrList *list); 919 920/* fcxml.c */ 921FcPublic FcBool 922FcConfigParseAndLoad (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_ */ 942