fcint.h revision 0d39df38
12c393a42Smrg/* 20d39df38Smrg * fontconfig/src/fcint.h 32c393a42Smrg * 42c393a42Smrg * Copyright © 2000 Keith Packard 52c393a42Smrg * 62c393a42Smrg * Permission to use, copy, modify, distribute, and sell this software and its 72c393a42Smrg * documentation for any purpose is hereby granted without fee, provided that 82c393a42Smrg * the above copyright notice appear in all copies and that both that 92c393a42Smrg * copyright notice and this permission notice appear in supporting 102c393a42Smrg * documentation, and that the name of Keith Packard not be used in 112c393a42Smrg * advertising or publicity pertaining to distribution of the software without 122c393a42Smrg * specific, written prior permission. Keith Packard makes no 132c393a42Smrg * representations about the suitability of this software for any purpose. It 142c393a42Smrg * is provided "as is" without express or implied warranty. 152c393a42Smrg * 160d39df38Smrg * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 172c393a42Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 180d39df38Smrg * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR 192c393a42Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 202c393a42Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 212c393a42Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 222c393a42Smrg * PERFORMANCE OF THIS SOFTWARE. 232c393a42Smrg */ 242c393a42Smrg 252c393a42Smrg#ifndef _FCINT_H_ 262c393a42Smrg#define _FCINT_H_ 272c393a42Smrg 282c393a42Smrg#ifdef HAVE_CONFIG_H 292c393a42Smrg#include <config.h> 302c393a42Smrg#endif 312c393a42Smrg 322c393a42Smrg#include <stdlib.h> 332c393a42Smrg#include <stdio.h> 342c393a42Smrg#ifdef HAVE_INTTYPES_H 352c393a42Smrg#include <inttypes.h> 362c393a42Smrg#elif defined(HAVE_STDINT_H) 372c393a42Smrg#include <stdint.h> 385d887b24Smrg#elif defined(__INTERIX) 395d887b24Smrg 405d887b24Smrg/* limits.h has a definition for ALIGN() that conflicts with the one below */ 415d887b24Smrg# include <limits.h> 425d887b24Smrg# undef ALIGN 435d887b24Smrg/* Interix 3.x has a gcc that shadows this. */ 445d887b24Smrg# ifndef _INTPTR_T_DEFINED 455d887b24Smrg typedef long intptr_t; 465d887b24Smrg# define _INTPTR_T_DEFINED 475d887b24Smrg# endif 485d887b24Smrg# ifndef _UINTPTR_T_DEFINED 495d887b24Smrg typedef unsigned long uintptr_t; 505d887b24Smrg# define _UINTPTR_T_DEFINED 515d887b24Smrg# endif 525d887b24Smrg 532c393a42Smrg#else 542c393a42Smrg#error missing C99 integer data types 552c393a42Smrg#endif 562c393a42Smrg#include <string.h> 572c393a42Smrg#include <ctype.h> 582c393a42Smrg#include <errno.h> 592c393a42Smrg#include <unistd.h> 602c393a42Smrg#include <stddef.h> 612c393a42Smrg#include <sys/types.h> 622c393a42Smrg#include <sys/stat.h> 632c393a42Smrg#include <time.h> 642c393a42Smrg#include <fontconfig/fontconfig.h> 652c393a42Smrg#include <fontconfig/fcprivate.h> 662c393a42Smrg#include "fcdeprecate.h" 672c393a42Smrg 682c393a42Smrg#ifndef FC_CONFIG_PATH 692c393a42Smrg#define FC_CONFIG_PATH "fonts.conf" 702c393a42Smrg#endif 712c393a42Smrg 722c393a42Smrg#ifdef _WIN32 732c393a42Smrg#define FC_SEARCH_PATH_SEPARATOR ';' 742c393a42Smrg#else 752c393a42Smrg#define FC_SEARCH_PATH_SEPARATOR ':' 762c393a42Smrg#endif 772c393a42Smrg 782c393a42Smrg#define FC_DBG_MATCH 1 792c393a42Smrg#define FC_DBG_MATCHV 2 802c393a42Smrg#define FC_DBG_EDIT 4 812c393a42Smrg#define FC_DBG_FONTSET 8 822c393a42Smrg#define FC_DBG_CACHE 16 832c393a42Smrg#define FC_DBG_CACHEV 32 842c393a42Smrg#define FC_DBG_PARSE 64 852c393a42Smrg#define FC_DBG_SCAN 128 862c393a42Smrg#define FC_DBG_SCANV 256 872c393a42Smrg#define FC_DBG_MEMORY 512 882c393a42Smrg#define FC_DBG_CONFIG 1024 892c393a42Smrg#define FC_DBG_LANGSET 2048 902c393a42Smrg#define FC_DBG_OBJTYPES 4096 912c393a42Smrg 922c393a42Smrg#define FC_MEM_CHARSET 0 932c393a42Smrg#define FC_MEM_CHARLEAF 1 942c393a42Smrg#define FC_MEM_FONTSET 2 952c393a42Smrg#define FC_MEM_FONTPTR 3 962c393a42Smrg#define FC_MEM_OBJECTSET 4 972c393a42Smrg#define FC_MEM_OBJECTPTR 5 982c393a42Smrg#define FC_MEM_MATRIX 6 992c393a42Smrg#define FC_MEM_PATTERN 7 1002c393a42Smrg#define FC_MEM_PATELT 8 1012c393a42Smrg#define FC_MEM_VALLIST 9 1022c393a42Smrg#define FC_MEM_SUBSTATE 10 1032c393a42Smrg#define FC_MEM_STRING 11 1042c393a42Smrg#define FC_MEM_LISTBUCK 12 1052c393a42Smrg#define FC_MEM_STRSET 13 1062c393a42Smrg#define FC_MEM_STRLIST 14 1072c393a42Smrg#define FC_MEM_CONFIG 15 1082c393a42Smrg#define FC_MEM_LANGSET 16 1092c393a42Smrg#define FC_MEM_ATOMIC 17 1102c393a42Smrg#define FC_MEM_BLANKS 18 1112c393a42Smrg#define FC_MEM_CACHE 19 1122c393a42Smrg#define FC_MEM_STRBUF 20 1132c393a42Smrg#define FC_MEM_SUBST 21 1142c393a42Smrg#define FC_MEM_OBJECTTYPE 22 1152c393a42Smrg#define FC_MEM_CONSTANT 23 1162c393a42Smrg#define FC_MEM_TEST 24 1172c393a42Smrg#define FC_MEM_EXPR 25 1182c393a42Smrg#define FC_MEM_VSTACK 26 1192c393a42Smrg#define FC_MEM_ATTR 27 1202c393a42Smrg#define FC_MEM_PSTACK 28 1212c393a42Smrg#define FC_MEM_STATICSTR 29 1222c393a42Smrg 1232c393a42Smrg#define FC_MEM_NUM 30 1242c393a42Smrg 1250d39df38Smrg#define FC_MIN(a,b) ((a) < (b) ? (a) : (b)) 1260d39df38Smrg#define FC_MAX(a,b) ((a) > (b) ? (a) : (b)) 1270d39df38Smrg#define FC_ABS(a) ((a) < 0 ? -(a) : (a)) 1282c393a42Smrg 1292c393a42Smrg/* slim_internal.h */ 1302c393a42Smrg#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) && !defined(__sun) 1312c393a42Smrg#define FcPrivate __attribute__((__visibility__("hidden"))) 1322c393a42Smrg#define HAVE_GNUC_ATTRIBUTE 1 1332c393a42Smrg#include "fcalias.h" 1342c393a42Smrg#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) 1352c393a42Smrg#define FcPrivate __hidden 1362c393a42Smrg#else /* not gcc >= 3.3 and not Sun Studio >= 8 */ 1372c393a42Smrg#define FcPrivate 1382c393a42Smrg#endif 1392c393a42Smrg 1402c393a42Smrgtypedef enum _FcValueBinding { 1412c393a42Smrg FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame 1422c393a42Smrg} FcValueBinding; 1432c393a42Smrg 1442c393a42Smrg/* 1452c393a42Smrg * Serialized data structures use only offsets instead of pointers 1462c393a42Smrg * A low bit of 1 indicates an offset. 1472c393a42Smrg */ 1482c393a42Smrg 1492c393a42Smrg/* Is the provided pointer actually an offset? */ 1502c393a42Smrg#define FcIsEncodedOffset(p) ((((intptr_t) (p)) & 1) != 0) 1512c393a42Smrg 1522c393a42Smrg/* Encode offset in a pointer of type t */ 1532c393a42Smrg#define FcOffsetEncode(o,t) ((t *) ((o) | 1)) 1542c393a42Smrg 1552c393a42Smrg/* Decode a pointer into an offset */ 1562c393a42Smrg#define FcOffsetDecode(p) (((intptr_t) (p)) & ~1) 1572c393a42Smrg 1582c393a42Smrg/* Compute pointer offset */ 1592c393a42Smrg#define FcPtrToOffset(b,p) ((intptr_t) (p) - (intptr_t) (b)) 1602c393a42Smrg 1612c393a42Smrg/* Given base address, offset and type, return a pointer */ 1622c393a42Smrg#define FcOffsetToPtr(b,o,t) ((t *) ((intptr_t) (b) + (o))) 1632c393a42Smrg 1642c393a42Smrg/* Given base address, encoded offset and type, return a pointer */ 1652c393a42Smrg#define FcEncodedOffsetToPtr(b,p,t) FcOffsetToPtr(b,FcOffsetDecode(p),t) 1662c393a42Smrg 1672c393a42Smrg/* Given base address, pointer and type, return an encoded offset */ 1682c393a42Smrg#define FcPtrToEncodedOffset(b,p,t) FcOffsetEncode(FcPtrToOffset(b,p),t) 1692c393a42Smrg 1702c393a42Smrg/* Given a structure, offset member and type, return pointer */ 1712c393a42Smrg#define FcOffsetMember(s,m,t) FcOffsetToPtr(s,(s)->m,t) 1722c393a42Smrg 1732c393a42Smrg/* Given a structure, encoded offset member and type, return pointer to member */ 1742c393a42Smrg#define FcEncodedOffsetMember(s,m,t) FcOffsetToPtr(s,FcOffsetDecode((s)->m), t) 1752c393a42Smrg 1762c393a42Smrg/* Given a structure, member and type, convert the member to a pointer */ 1772c393a42Smrg#define FcPointerMember(s,m,t) (FcIsEncodedOffset((s)->m) ? \ 1782c393a42Smrg FcEncodedOffsetMember (s,m,t) : \ 1792c393a42Smrg (s)->m) 1802c393a42Smrg 1812c393a42Smrg/* 1822c393a42Smrg * Serialized values may hold strings, charsets and langsets as pointers, 1832c393a42Smrg * unfortunately FcValue is an exposed type so we can't just always use 1842c393a42Smrg * offsets 1852c393a42Smrg */ 1862c393a42Smrg#define FcValueString(v) FcPointerMember(v,u.s,FcChar8) 1872c393a42Smrg#define FcValueCharSet(v) FcPointerMember(v,u.c,const FcCharSet) 1882c393a42Smrg#define FcValueLangSet(v) FcPointerMember(v,u.l,const FcLangSet) 1892c393a42Smrg 1902c393a42Smrgtypedef struct _FcValueList *FcValueListPtr; 1912c393a42Smrg 1922c393a42Smrgtypedef struct _FcValueList { 1932c393a42Smrg struct _FcValueList *next; 1942c393a42Smrg FcValue value; 1952c393a42Smrg FcValueBinding binding; 1962c393a42Smrg} FcValueList; 1972c393a42Smrg 1982c393a42Smrg#define FcValueListNext(vl) FcPointerMember(vl,next,FcValueList) 1992c393a42Smrg 2002c393a42Smrgtypedef int FcObject; 2012c393a42Smrg 2022c393a42Smrgtypedef struct _FcPatternElt *FcPatternEltPtr; 2032c393a42Smrg 2042c393a42Smrg/* 2052c393a42Smrg * Pattern elts are stuck in a structure connected to the pattern, 2062c393a42Smrg * so they get moved around when the pattern is resized. Hence, the 2072c393a42Smrg * values field must be a pointer/offset instead of just an offset 2082c393a42Smrg */ 2092c393a42Smrgtypedef struct _FcPatternElt { 2102c393a42Smrg FcObject object; 2112c393a42Smrg FcValueList *values; 2122c393a42Smrg} FcPatternElt; 2132c393a42Smrg 2142c393a42Smrg#define FcPatternEltValues(pe) FcPointerMember(pe,values,FcValueList) 2152c393a42Smrg 2162c393a42Smrgstruct _FcPattern { 2172c393a42Smrg int num; 2182c393a42Smrg int size; 2192c393a42Smrg intptr_t elts_offset; 2202c393a42Smrg int ref; 2212c393a42Smrg}; 2222c393a42Smrg 2232c393a42Smrg#define FcPatternElts(p) FcOffsetMember(p,elts_offset,FcPatternElt) 2242c393a42Smrg 2252c393a42Smrg#define FcFontSetFonts(fs) FcPointerMember(fs,fonts,FcPattern *) 2262c393a42Smrg 2272c393a42Smrg#define FcFontSetFont(fs,i) (FcIsEncodedOffset((fs)->fonts) ? \ 2282c393a42Smrg FcEncodedOffsetToPtr(fs, \ 2292c393a42Smrg FcFontSetFonts(fs)[i], \ 2302c393a42Smrg FcPattern) : \ 2312c393a42Smrg fs->fonts[i]) 2322c393a42Smrg 2332c393a42Smrgtypedef enum _FcOp { 2342c393a42Smrg FcOpInteger, FcOpDouble, FcOpString, FcOpMatrix, FcOpBool, FcOpCharSet, 2352c393a42Smrg FcOpNil, 2362c393a42Smrg FcOpField, FcOpConst, 2372c393a42Smrg FcOpAssign, FcOpAssignReplace, 2382c393a42Smrg FcOpPrependFirst, FcOpPrepend, FcOpAppend, FcOpAppendLast, 2392c393a42Smrg FcOpQuest, 2402c393a42Smrg FcOpOr, FcOpAnd, FcOpEqual, FcOpNotEqual, 2412c393a42Smrg FcOpContains, FcOpListing, FcOpNotContains, 2422c393a42Smrg FcOpLess, FcOpLessEqual, FcOpMore, FcOpMoreEqual, 2432c393a42Smrg FcOpPlus, FcOpMinus, FcOpTimes, FcOpDivide, 2442c393a42Smrg FcOpNot, FcOpComma, FcOpFloor, FcOpCeil, FcOpRound, FcOpTrunc, 2452c393a42Smrg FcOpInvalid 2462c393a42Smrg} FcOp; 2472c393a42Smrg 2482c393a42Smrgtypedef struct _FcExpr { 2492c393a42Smrg FcOp op; 2502c393a42Smrg union { 2512c393a42Smrg int ival; 2522c393a42Smrg double dval; 2532c393a42Smrg FcChar8 *sval; 2542c393a42Smrg FcMatrix *mval; 2552c393a42Smrg FcBool bval; 2562c393a42Smrg FcCharSet *cval; 2572c393a42Smrg FcObject object; 2582c393a42Smrg FcChar8 *constant; 2592c393a42Smrg struct { 2602c393a42Smrg struct _FcExpr *left, *right; 2612c393a42Smrg } tree; 2622c393a42Smrg } u; 2632c393a42Smrg} FcExpr; 2642c393a42Smrg 2650d39df38Smrgtypedef struct _FcExprPage FcExprPage; 2660d39df38Smrg 2670d39df38Smrgstruct _FcExprPage { 2680d39df38Smrg FcExprPage *next_page; 2690d39df38Smrg FcExpr *next; 2700d39df38Smrg FcExpr exprs[(1024 - 2/* two pointers */ - 2/* malloc overhead */) * sizeof (void *) / sizeof (FcExpr)]; 2710d39df38Smrg FcExpr end[0]; 2720d39df38Smrg}; 2730d39df38Smrg 2742c393a42Smrgtypedef enum _FcQual { 2752c393a42Smrg FcQualAny, FcQualAll, FcQualFirst, FcQualNotFirst 2762c393a42Smrg} FcQual; 2772c393a42Smrg 2782c393a42Smrg#define FcMatchDefault ((FcMatchKind) -1) 2792c393a42Smrg 2802c393a42Smrgtypedef struct _FcTest { 2812c393a42Smrg struct _FcTest *next; 2822c393a42Smrg FcMatchKind kind; 2832c393a42Smrg FcQual qual; 2842c393a42Smrg FcObject object; 2852c393a42Smrg FcOp op; 2862c393a42Smrg FcExpr *expr; 2872c393a42Smrg} FcTest; 2882c393a42Smrg 2892c393a42Smrgtypedef struct _FcEdit { 2902c393a42Smrg struct _FcEdit *next; 2912c393a42Smrg FcObject object; 2922c393a42Smrg FcOp op; 2932c393a42Smrg FcExpr *expr; 2942c393a42Smrg FcValueBinding binding; 2952c393a42Smrg} FcEdit; 2962c393a42Smrg 2972c393a42Smrgtypedef struct _FcSubst { 2982c393a42Smrg struct _FcSubst *next; 2992c393a42Smrg FcTest *test; 3002c393a42Smrg FcEdit *edit; 3012c393a42Smrg} FcSubst; 3022c393a42Smrg 3032c393a42Smrgtypedef struct _FcCharLeaf { 3042c393a42Smrg FcChar32 map[256/32]; 3052c393a42Smrg} FcCharLeaf; 3062c393a42Smrg 3072c393a42Smrg#define FC_REF_CONSTANT -1 3082c393a42Smrg 3092c393a42Smrgstruct _FcCharSet { 3102c393a42Smrg int ref; /* reference count */ 3112c393a42Smrg int num; /* size of leaves and numbers arrays */ 3122c393a42Smrg intptr_t leaves_offset; 3132c393a42Smrg intptr_t numbers_offset; 3142c393a42Smrg}; 3152c393a42Smrg 3162c393a42Smrg#define FcCharSetLeaves(c) FcOffsetMember(c,leaves_offset,intptr_t) 3172c393a42Smrg#define FcCharSetLeaf(c,i) (FcOffsetToPtr(FcCharSetLeaves(c), \ 3182c393a42Smrg FcCharSetLeaves(c)[i], \ 3192c393a42Smrg FcCharLeaf)) 3202c393a42Smrg#define FcCharSetNumbers(c) FcOffsetMember(c,numbers_offset,FcChar16) 3212c393a42Smrg 3222c393a42Smrgstruct _FcStrSet { 3232c393a42Smrg int ref; /* reference count */ 3242c393a42Smrg int num; 3252c393a42Smrg int size; 3262c393a42Smrg FcChar8 **strs; 3272c393a42Smrg}; 3282c393a42Smrg 3292c393a42Smrgstruct _FcStrList { 3302c393a42Smrg FcStrSet *set; 3312c393a42Smrg int n; 3322c393a42Smrg}; 3332c393a42Smrg 3342c393a42Smrgtypedef struct _FcStrBuf { 3352c393a42Smrg FcChar8 *buf; 3362c393a42Smrg FcBool allocated; 3372c393a42Smrg FcBool failed; 3382c393a42Smrg int len; 3392c393a42Smrg int size; 3400d39df38Smrg FcChar8 buf_static[16 * sizeof (void *)]; 3412c393a42Smrg} FcStrBuf; 3422c393a42Smrg 3432c393a42Smrgstruct _FcCache { 3442c393a42Smrg int magic; /* FC_CACHE_MAGIC_MMAP or FC_CACHE_ALLOC */ 3452c393a42Smrg int version; /* FC_CACHE_CONTENT_VERSION */ 3462c393a42Smrg intptr_t size; /* size of file */ 3472c393a42Smrg intptr_t dir; /* offset to dir name */ 3482c393a42Smrg intptr_t dirs; /* offset to subdirs */ 3492c393a42Smrg int dirs_count; /* number of subdir strings */ 3502c393a42Smrg intptr_t set; /* offset to font set */ 3512c393a42Smrg int mtime; /* low bits of directory mtime */ 3522c393a42Smrg}; 3532c393a42Smrg 3542c393a42Smrg#undef FcCacheDir 3552c393a42Smrg#undef FcCacheSubdir 3562c393a42Smrg#define FcCacheDir(c) FcOffsetMember(c,dir,FcChar8) 3572c393a42Smrg#define FcCacheDirs(c) FcOffsetMember(c,dirs,intptr_t) 3582c393a42Smrg#define FcCacheSet(c) FcOffsetMember(c,set,FcFontSet) 3592c393a42Smrg#define FcCacheSubdir(c,i) FcOffsetToPtr (FcCacheDirs(c),\ 3602c393a42Smrg FcCacheDirs(c)[i], \ 3612c393a42Smrg FcChar8) 3622c393a42Smrg 3632c393a42Smrg/* 3642c393a42Smrg * Used while constructing a directory cache object 3652c393a42Smrg */ 3662c393a42Smrg 3672c393a42Smrg#define FC_SERIALIZE_HASH_SIZE 8191 3682c393a42Smrg 3690d39df38Smrgtypedef union _FcAlign { 3700d39df38Smrg double d; 3710d39df38Smrg int i; 3720d39df38Smrg intptr_t ip; 3730d39df38Smrg FcBool b; 3740d39df38Smrg void *p; 3750d39df38Smrg} FcAlign; 3760d39df38Smrg 3772c393a42Smrgtypedef struct _FcSerializeBucket { 3782c393a42Smrg struct _FcSerializeBucket *next; 3792c393a42Smrg const void *object; 3802c393a42Smrg intptr_t offset; 3812c393a42Smrg} FcSerializeBucket; 3822c393a42Smrg 3832c393a42Smrgtypedef struct _FcCharSetFreezer FcCharSetFreezer; 3842c393a42Smrg 3852c393a42Smrgtypedef struct _FcSerialize { 3862c393a42Smrg intptr_t size; 3872c393a42Smrg FcCharSetFreezer *cs_freezer; 3882c393a42Smrg void *linear; 3892c393a42Smrg FcSerializeBucket *buckets[FC_SERIALIZE_HASH_SIZE]; 3902c393a42Smrg} FcSerialize; 3912c393a42Smrg 3922c393a42Smrg/* 3932c393a42Smrg * To map adobe glyph names to unicode values, a precomputed hash 3942c393a42Smrg * table is used 3952c393a42Smrg */ 3962c393a42Smrg 3972c393a42Smrgtypedef struct _FcGlyphName { 3982c393a42Smrg FcChar32 ucs; /* unicode value */ 3992c393a42Smrg FcChar8 name[1]; /* name extends beyond struct */ 4002c393a42Smrg} FcGlyphName; 4012c393a42Smrg 4022c393a42Smrg/* 4032c393a42Smrg * To perform case-insensitive string comparisons, a table 4042c393a42Smrg * is used which holds three different kinds of folding data. 4052c393a42Smrg * 4062c393a42Smrg * The first is a range of upper case values mapping to a range 4072c393a42Smrg * of their lower case equivalents. Within each range, the offset 4082c393a42Smrg * between upper and lower case is constant. 4092c393a42Smrg * 4102c393a42Smrg * The second is a range of upper case values which are interleaved 4112c393a42Smrg * with their lower case equivalents. 4122c393a42Smrg * 4132c393a42Smrg * The third is a set of raw unicode values mapping to a list 4142c393a42Smrg * of unicode values for comparison purposes. This allows conversion 4152c393a42Smrg * of ß to "ss" so that SS, ss and ß all match. A separate array 4162c393a42Smrg * holds the list of unicode values for each entry. 4172c393a42Smrg * 4182c393a42Smrg * These are packed into a single table. Using a binary search, 4192c393a42Smrg * the appropriate entry can be located. 4202c393a42Smrg */ 4212c393a42Smrg 4222c393a42Smrg#define FC_CASE_FOLD_RANGE 0 4232c393a42Smrg#define FC_CASE_FOLD_EVEN_ODD 1 4242c393a42Smrg#define FC_CASE_FOLD_FULL 2 4252c393a42Smrg 4262c393a42Smrgtypedef struct _FcCaseFold { 4272c393a42Smrg FcChar32 upper; 4282c393a42Smrg FcChar16 method : 2; 4292c393a42Smrg FcChar16 count : 14; 4302c393a42Smrg short offset; /* lower - upper for RANGE, table id for FULL */ 4312c393a42Smrg} FcCaseFold; 4322c393a42Smrg 4332c393a42Smrg#define FC_MAX_FILE_LEN 4096 4342c393a42Smrg 4352c393a42Smrg#define FC_CACHE_MAGIC_MMAP 0xFC02FC04 4362c393a42Smrg#define FC_CACHE_MAGIC_ALLOC 0xFC02FC05 4370d39df38Smrg#define FC_CACHE_CONTENT_VERSION 3 /* also check FC_CACHE_VERSION */ 4382c393a42Smrg 4392c393a42Smrgstruct _FcAtomic { 4402c393a42Smrg FcChar8 *file; /* original file name */ 4412c393a42Smrg FcChar8 *new; /* temp file name -- write data here */ 4422c393a42Smrg FcChar8 *lck; /* lockfile name (used for locking) */ 4432c393a42Smrg FcChar8 *tmp; /* tmpfile name (used for locking) */ 4442c393a42Smrg}; 4452c393a42Smrg 4462c393a42Smrgstruct _FcBlanks { 4472c393a42Smrg int nblank; 4482c393a42Smrg int sblank; 4492c393a42Smrg FcChar32 *blanks; 4502c393a42Smrg}; 4512c393a42Smrg 4522c393a42Smrgstruct _FcConfig { 4532c393a42Smrg /* 4542c393a42Smrg * File names loaded from the configuration -- saved here as the 4552c393a42Smrg * cache file must be consulted before the directories are scanned, 4562c393a42Smrg * and those directives may occur in any order 4572c393a42Smrg */ 4582c393a42Smrg FcStrSet *configDirs; /* directories to scan for fonts */ 4592c393a42Smrg /* 4602c393a42Smrg * Set of allowed blank chars -- used to 4612c393a42Smrg * trim fonts of bogus glyphs 4622c393a42Smrg */ 4632c393a42Smrg FcBlanks *blanks; 4642c393a42Smrg /* 4652c393a42Smrg * List of directories containing fonts, 4662c393a42Smrg * built by recursively scanning the set 4672c393a42Smrg * of configured directories 4682c393a42Smrg */ 4692c393a42Smrg FcStrSet *fontDirs; 4702c393a42Smrg /* 4712c393a42Smrg * List of directories containing cache files. 4722c393a42Smrg */ 4732c393a42Smrg FcStrSet *cacheDirs; 4742c393a42Smrg /* 4752c393a42Smrg * Names of all of the configuration files used 4762c393a42Smrg * to create this configuration 4772c393a42Smrg */ 4782c393a42Smrg FcStrSet *configFiles; /* config files loaded */ 4792c393a42Smrg /* 4802c393a42Smrg * Substitution instructions for patterns and fonts; 4812c393a42Smrg * maxObjects is used to allocate appropriate intermediate storage 4822c393a42Smrg * while performing a whole set of substitutions 4832c393a42Smrg */ 4842c393a42Smrg FcSubst *substPattern; /* substitutions for patterns */ 4852c393a42Smrg FcSubst *substFont; /* substitutions for fonts */ 4862c393a42Smrg FcSubst *substScan; /* substitutions for scanned fonts */ 4872c393a42Smrg int maxObjects; /* maximum number of tests in all substs */ 4882c393a42Smrg /* 4892c393a42Smrg * List of patterns used to control font file selection 4902c393a42Smrg */ 4912c393a42Smrg FcStrSet *acceptGlobs; 4922c393a42Smrg FcStrSet *rejectGlobs; 4932c393a42Smrg FcFontSet *acceptPatterns; 4942c393a42Smrg FcFontSet *rejectPatterns; 4952c393a42Smrg /* 4962c393a42Smrg * The set of fonts loaded from the listed directories; the 4972c393a42Smrg * order within the set does not determine the font selection, 4982c393a42Smrg * except in the case of identical matches in which case earlier fonts 4992c393a42Smrg * match preferrentially 5002c393a42Smrg */ 5012c393a42Smrg FcFontSet *fonts[FcSetApplication + 1]; 5022c393a42Smrg /* 5032c393a42Smrg * Fontconfig can periodically rescan the system configuration 5042c393a42Smrg * and font directories. This rescanning occurs when font 5052c393a42Smrg * listing requests are made, but no more often than rescanInterval 5062c393a42Smrg * seconds apart. 5072c393a42Smrg */ 5082c393a42Smrg time_t rescanTime; /* last time information was scanned */ 5092c393a42Smrg int rescanInterval; /* interval between scans */ 5100d39df38Smrg 5110d39df38Smrg int ref; /* reference count */ 5120d39df38Smrg 5130d39df38Smrg FcExprPage *expr_pool; /* pool of FcExpr's */ 5142c393a42Smrg}; 5152c393a42Smrg 5162c393a42Smrgextern FcPrivate FcConfig *_fcConfig; 5172c393a42Smrg 5182c393a42Smrgtypedef struct _FcFileTime { 5192c393a42Smrg time_t time; 5202c393a42Smrg FcBool set; 5212c393a42Smrg} FcFileTime; 5222c393a42Smrg 5232c393a42Smrgtypedef struct _FcCharMap FcCharMap; 5242c393a42Smrg 5252c393a42Smrg/* fcblanks.c */ 5262c393a42Smrg 5272c393a42Smrg/* fccache.c */ 5282c393a42Smrg 5292c393a42SmrgFcPrivate FcCache * 5302c393a42SmrgFcDirCacheScan (const FcChar8 *dir, FcConfig *config); 5312c393a42Smrg 5322c393a42SmrgFcPrivate FcCache * 5332c393a42SmrgFcDirCacheBuild (FcFontSet *set, const FcChar8 *dir, struct stat *dir_stat, FcStrSet *dirs); 5342c393a42Smrg 5352c393a42SmrgFcPrivate FcBool 5362c393a42SmrgFcDirCacheWrite (FcCache *cache, FcConfig *config); 5372c393a42Smrg 5382c393a42SmrgFcPrivate void 5392c393a42SmrgFcCacheObjectReference (void *object); 5402c393a42Smrg 5412c393a42SmrgFcPrivate void 5422c393a42SmrgFcCacheObjectDereference (void *object); 5432c393a42Smrg 5442c393a42SmrgFcPrivate void 5452c393a42SmrgFcCacheFini (void); 5462c393a42Smrg 5472c393a42SmrgFcPrivate void 5482c393a42SmrgFcDirCacheReference (FcCache *cache, int nref); 5492c393a42Smrg 5500d39df38Smrg#ifdef _WIN32 5510d39df38SmrgFcPrivate int 5520d39df38SmrgFcStat (const char *file, struct stat *statb); 5530d39df38Smrg#else 5540d39df38Smrg#define FcStat stat 5550d39df38Smrg#endif 5560d39df38Smrg 5572c393a42Smrg/* fccfg.c */ 5582c393a42Smrg 5590d39df38SmrgFcPrivate FcExpr * 5600d39df38SmrgFcConfigAllocExpr (FcConfig *config); 5610d39df38Smrg 5622c393a42SmrgFcPrivate FcBool 5632c393a42SmrgFcConfigAddConfigDir (FcConfig *config, 5642c393a42Smrg const FcChar8 *d); 5652c393a42Smrg 5662c393a42SmrgFcPrivate FcBool 5672c393a42SmrgFcConfigAddFontDir (FcConfig *config, 5682c393a42Smrg const FcChar8 *d); 5692c393a42Smrg 5702c393a42SmrgFcPrivate FcBool 5712c393a42SmrgFcConfigAddDir (FcConfig *config, 5722c393a42Smrg const FcChar8 *d); 5732c393a42Smrg 5742c393a42SmrgFcPrivate FcBool 5752c393a42SmrgFcConfigAddCacheDir (FcConfig *config, 5762c393a42Smrg const FcChar8 *d); 5772c393a42Smrg 5782c393a42SmrgFcPrivate FcBool 5792c393a42SmrgFcConfigAddConfigFile (FcConfig *config, 5802c393a42Smrg const FcChar8 *f); 5812c393a42Smrg 5822c393a42SmrgFcPrivate FcBool 5832c393a42SmrgFcConfigAddBlank (FcConfig *config, 5842c393a42Smrg FcChar32 blank); 5852c393a42Smrg 5862c393a42SmrgFcPrivate FcBool 5872c393a42SmrgFcConfigAddEdit (FcConfig *config, 5882c393a42Smrg FcTest *test, 5892c393a42Smrg FcEdit *edit, 5902c393a42Smrg FcMatchKind kind); 5912c393a42Smrg 5922c393a42SmrgFcPrivate void 5932c393a42SmrgFcConfigSetFonts (FcConfig *config, 5942c393a42Smrg FcFontSet *fonts, 5952c393a42Smrg FcSetName set); 5962c393a42Smrg 5972c393a42SmrgFcPrivate FcBool 5982c393a42SmrgFcConfigCompareValue (const FcValue *m, 5992c393a42Smrg FcOp op, 6002c393a42Smrg const FcValue *v); 6012c393a42Smrg 6022c393a42SmrgFcPrivate FcBool 6032c393a42SmrgFcConfigGlobAdd (FcConfig *config, 6042c393a42Smrg const FcChar8 *glob, 6052c393a42Smrg FcBool accept); 6062c393a42Smrg 6072c393a42SmrgFcPrivate FcBool 6082c393a42SmrgFcConfigAcceptFilename (FcConfig *config, 6092c393a42Smrg const FcChar8 *filename); 6102c393a42Smrg 6112c393a42SmrgFcPrivate FcBool 6122c393a42SmrgFcConfigPatternsAdd (FcConfig *config, 6132c393a42Smrg FcPattern *pattern, 6142c393a42Smrg FcBool accept); 6152c393a42Smrg 6162c393a42SmrgFcPrivate FcBool 6172c393a42SmrgFcConfigAcceptFont (FcConfig *config, 6182c393a42Smrg const FcPattern *font); 6192c393a42Smrg 6202c393a42SmrgFcPrivate FcFileTime 6212c393a42SmrgFcConfigModifiedTime (FcConfig *config); 6222c393a42Smrg 6232c393a42SmrgFcPrivate FcBool 6242c393a42SmrgFcConfigAddCache (FcConfig *config, FcCache *cache, 6252c393a42Smrg FcSetName set, FcStrSet *dirSet); 6262c393a42Smrg 6272c393a42Smrg/* fcserialize.c */ 6282c393a42SmrgFcPrivate intptr_t 6292c393a42SmrgFcAlignSize (intptr_t size); 6302c393a42Smrg 6312c393a42SmrgFcPrivate FcSerialize * 6322c393a42SmrgFcSerializeCreate (void); 6332c393a42Smrg 6342c393a42SmrgFcPrivate void 6352c393a42SmrgFcSerializeDestroy (FcSerialize *serialize); 6362c393a42Smrg 6372c393a42SmrgFcPrivate FcBool 6382c393a42SmrgFcSerializeAlloc (FcSerialize *serialize, const void *object, int size); 6392c393a42Smrg 6402c393a42SmrgFcPrivate intptr_t 6412c393a42SmrgFcSerializeReserve (FcSerialize *serialize, int size); 6422c393a42Smrg 6432c393a42SmrgFcPrivate intptr_t 6442c393a42SmrgFcSerializeOffset (FcSerialize *serialize, const void *object); 6452c393a42Smrg 6462c393a42SmrgFcPrivate void * 6472c393a42SmrgFcSerializePtr (FcSerialize *serialize, const void *object); 6482c393a42Smrg 6492c393a42SmrgFcPrivate FcBool 6502c393a42SmrgFcLangSetSerializeAlloc (FcSerialize *serialize, const FcLangSet *l); 6512c393a42Smrg 6522c393a42SmrgFcPrivate FcLangSet * 6532c393a42SmrgFcLangSetSerialize(FcSerialize *serialize, const FcLangSet *l); 6542c393a42Smrg 6552c393a42Smrg/* fccharset.c */ 6562c393a42SmrgFcPrivate void 6572c393a42SmrgFcLangCharSetPopulate (void); 6582c393a42Smrg 6592c393a42SmrgFcPrivate FcCharSetFreezer * 6602c393a42SmrgFcCharSetFreezerCreate (void); 6612c393a42Smrg 6622c393a42SmrgFcPrivate const FcCharSet * 6632c393a42SmrgFcCharSetFreeze (FcCharSetFreezer *freezer, const FcCharSet *fcs); 6642c393a42Smrg 6652c393a42SmrgFcPrivate void 6662c393a42SmrgFcCharSetFreezerDestroy (FcCharSetFreezer *freezer); 6672c393a42Smrg 6682c393a42SmrgFcPrivate FcBool 6692c393a42SmrgFcNameUnparseCharSet (FcStrBuf *buf, const FcCharSet *c); 6702c393a42Smrg 6712c393a42SmrgFcPrivate FcCharSet * 6722c393a42SmrgFcNameParseCharSet (FcChar8 *string); 6732c393a42Smrg 6740d39df38SmrgFcPrivate FcBool 6750d39df38SmrgFcNameUnparseValue (FcStrBuf *buf, 6760d39df38Smrg FcValue *v0, 6770d39df38Smrg FcChar8 *escape); 6780d39df38Smrg 6790d39df38SmrgFcPrivate FcBool 6800d39df38SmrgFcNameUnparseValueList (FcStrBuf *buf, 6810d39df38Smrg FcValueListPtr v, 6820d39df38Smrg FcChar8 *escape); 6830d39df38Smrg 6842c393a42SmrgFcPrivate FcCharLeaf * 6852c393a42SmrgFcCharSetFindLeafCreate (FcCharSet *fcs, FcChar32 ucs4); 6862c393a42Smrg 6872c393a42SmrgFcPrivate FcBool 6882c393a42SmrgFcCharSetSerializeAlloc(FcSerialize *serialize, const FcCharSet *cs); 6892c393a42Smrg 6902c393a42SmrgFcPrivate FcCharSet * 6912c393a42SmrgFcCharSetSerialize(FcSerialize *serialize, const FcCharSet *cs); 6922c393a42Smrg 6932c393a42SmrgFcPrivate FcChar16 * 6942c393a42SmrgFcCharSetGetNumbers(const FcCharSet *c); 6952c393a42Smrg 6962c393a42Smrg/* fcdbg.c */ 6972c393a42SmrgFcPrivate void 6982c393a42SmrgFcValueListPrint (const FcValueListPtr l); 6992c393a42Smrg 7002c393a42SmrgFcPrivate void 7012c393a42SmrgFcLangSetPrint (const FcLangSet *ls); 7022c393a42Smrg 7032c393a42SmrgFcPrivate void 7042c393a42SmrgFcOpPrint (FcOp op); 7052c393a42Smrg 7062c393a42SmrgFcPrivate void 7072c393a42SmrgFcTestPrint (const FcTest *test); 7082c393a42Smrg 7092c393a42SmrgFcPrivate void 7102c393a42SmrgFcExprPrint (const FcExpr *expr); 7112c393a42Smrg 7122c393a42SmrgFcPrivate void 7132c393a42SmrgFcEditPrint (const FcEdit *edit); 7142c393a42Smrg 7152c393a42SmrgFcPrivate void 7162c393a42SmrgFcSubstPrint (const FcSubst *subst); 7172c393a42Smrg 7182c393a42SmrgFcPrivate void 7192c393a42SmrgFcCharSetPrint (const FcCharSet *c); 7202c393a42Smrg 7212c393a42Smrgextern FcPrivate int FcDebugVal; 7222c393a42Smrg 7232c393a42Smrg#define FcDebug() (FcDebugVal) 7242c393a42Smrg 7252c393a42SmrgFcPrivate void 7262c393a42SmrgFcInitDebug (void); 7272c393a42Smrg 7282c393a42Smrg/* fcdefault.c */ 7292c393a42SmrgFcPrivate FcChar8 * 7302c393a42SmrgFcGetDefaultLang (void); 7312c393a42Smrg 7322c393a42Smrg/* fcdir.c */ 7332c393a42Smrg 7342c393a42SmrgFcPrivate FcBool 7352c393a42SmrgFcFileScanConfig (FcFontSet *set, 7362c393a42Smrg FcStrSet *dirs, 7372c393a42Smrg FcBlanks *blanks, 7382c393a42Smrg const FcChar8 *file, 7392c393a42Smrg FcConfig *config); 7402c393a42Smrg 7412c393a42SmrgFcPrivate FcBool 7422c393a42SmrgFcDirScanConfig (FcFontSet *set, 7432c393a42Smrg FcStrSet *dirs, 7442c393a42Smrg FcBlanks *blanks, 7452c393a42Smrg const FcChar8 *dir, 7462c393a42Smrg FcBool force, 7472c393a42Smrg FcConfig *config); 7482c393a42Smrg 7492c393a42Smrg/* fcfont.c */ 7502c393a42SmrgFcPrivate int 7512c393a42SmrgFcFontDebug (void); 7520d39df38Smrg 7532c393a42Smrg/* fcfs.c */ 7542c393a42Smrg 7552c393a42SmrgFcPrivate FcBool 7562c393a42SmrgFcFontSetSerializeAlloc (FcSerialize *serialize, const FcFontSet *s); 7572c393a42Smrg 7582c393a42SmrgFcPrivate FcFontSet * 7592c393a42SmrgFcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s); 7602c393a42Smrg 7610d39df38Smrg/* fcxml.c */ 7622c393a42SmrgFcPrivate void 7632c393a42SmrgFcTestDestroy (FcTest *test); 7642c393a42Smrg 7652c393a42SmrgFcPrivate void 7662c393a42SmrgFcEditDestroy (FcEdit *e); 7672c393a42Smrg 7682c393a42Smrg/* fcinit.c */ 7692c393a42Smrg 7702c393a42SmrgFcPrivate void 7712c393a42SmrgFcMemReport (void); 7722c393a42Smrg 7732c393a42SmrgFcPrivate void 7742c393a42SmrgFcMemAlloc (int kind, int size); 7752c393a42Smrg 7762c393a42SmrgFcPrivate void 7772c393a42SmrgFcMemFree (int kind, int size); 7782c393a42Smrg 7792c393a42Smrg/* fclang.c */ 7802c393a42SmrgFcPrivate FcLangSet * 7812c393a42SmrgFcFreeTypeLangSet (const FcCharSet *charset, 7822c393a42Smrg const FcChar8 *exclusiveLang); 7832c393a42Smrg 7842c393a42SmrgFcPrivate FcLangResult 7852c393a42SmrgFcLangCompare (const FcChar8 *s1, const FcChar8 *s2); 7862c393a42Smrg 7872c393a42SmrgFcPrivate FcLangSet * 7882c393a42SmrgFcLangSetPromote (const FcChar8 *lang); 7892c393a42Smrg 7902c393a42SmrgFcPrivate FcLangSet * 7912c393a42SmrgFcNameParseLangSet (const FcChar8 *string); 7922c393a42Smrg 7932c393a42SmrgFcPrivate FcBool 7942c393a42SmrgFcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls); 7952c393a42Smrg 7962c393a42SmrgFcPrivate FcChar8 * 7972c393a42SmrgFcNameUnparseEscaped (FcPattern *pat, FcBool escape); 7982c393a42Smrg 7992c393a42Smrg/* fclist.c */ 8002c393a42Smrg 8012c393a42SmrgFcPrivate FcBool 8022c393a42SmrgFcListPatternMatchAny (const FcPattern *p, 8032c393a42Smrg const FcPattern *font); 8042c393a42Smrg 8052c393a42Smrg/* fcmatch.c */ 8062c393a42Smrg 8072c393a42Smrg/* fcname.c */ 8082c393a42Smrg 8092c393a42Smrg/* 8102c393a42Smrg * NOTE -- this ordering is part of the cache file format. 8112c393a42Smrg * It must also match the ordering in fcname.c 8122c393a42Smrg */ 8132c393a42Smrg 8142c393a42Smrg#define FC_FAMILY_OBJECT 1 8152c393a42Smrg#define FC_FAMILYLANG_OBJECT 2 8162c393a42Smrg#define FC_STYLE_OBJECT 3 8172c393a42Smrg#define FC_STYLELANG_OBJECT 4 8182c393a42Smrg#define FC_FULLNAME_OBJECT 5 8192c393a42Smrg#define FC_FULLNAMELANG_OBJECT 6 8202c393a42Smrg#define FC_SLANT_OBJECT 7 8212c393a42Smrg#define FC_WEIGHT_OBJECT 8 8222c393a42Smrg#define FC_WIDTH_OBJECT 9 8232c393a42Smrg#define FC_SIZE_OBJECT 10 8242c393a42Smrg#define FC_ASPECT_OBJECT 11 8252c393a42Smrg#define FC_PIXEL_SIZE_OBJECT 12 8262c393a42Smrg#define FC_SPACING_OBJECT 13 8272c393a42Smrg#define FC_FOUNDRY_OBJECT 14 8282c393a42Smrg#define FC_ANTIALIAS_OBJECT 15 8292c393a42Smrg#define FC_HINT_STYLE_OBJECT 16 8302c393a42Smrg#define FC_HINTING_OBJECT 17 8312c393a42Smrg#define FC_VERTICAL_LAYOUT_OBJECT 18 8322c393a42Smrg#define FC_AUTOHINT_OBJECT 19 8332c393a42Smrg#define FC_GLOBAL_ADVANCE_OBJECT 20 8342c393a42Smrg#define FC_FILE_OBJECT 21 8352c393a42Smrg#define FC_INDEX_OBJECT 22 8362c393a42Smrg#define FC_RASTERIZER_OBJECT 23 8372c393a42Smrg#define FC_OUTLINE_OBJECT 24 8382c393a42Smrg#define FC_SCALABLE_OBJECT 25 8392c393a42Smrg#define FC_DPI_OBJECT 26 8402c393a42Smrg#define FC_RGBA_OBJECT 27 8412c393a42Smrg#define FC_SCALE_OBJECT 28 8422c393a42Smrg#define FC_MINSPACE_OBJECT 29 8432c393a42Smrg#define FC_CHAR_WIDTH_OBJECT 30 8442c393a42Smrg#define FC_CHAR_HEIGHT_OBJECT 31 8452c393a42Smrg#define FC_MATRIX_OBJECT 32 8462c393a42Smrg#define FC_CHARSET_OBJECT 33 8472c393a42Smrg#define FC_LANG_OBJECT 34 8482c393a42Smrg#define FC_FONTVERSION_OBJECT 35 8492c393a42Smrg#define FC_CAPABILITY_OBJECT 36 8502c393a42Smrg#define FC_FONTFORMAT_OBJECT 37 8512c393a42Smrg#define FC_EMBOLDEN_OBJECT 38 8522c393a42Smrg#define FC_EMBEDDED_BITMAP_OBJECT 39 8532c393a42Smrg#define FC_DECORATIVE_OBJECT 40 8542c393a42Smrg#define FC_LCD_FILTER_OBJECT 41 8552c393a42Smrg#define FC_MAX_BASE_OBJECT FC_LCD_FILTER_OBJECT 8562c393a42Smrg 8572c393a42SmrgFcPrivate FcBool 8582c393a42SmrgFcNameBool (const FcChar8 *v, FcBool *result); 8592c393a42Smrg 8602c393a42SmrgFcPrivate FcBool 8612c393a42SmrgFcObjectValidType (FcObject object, FcType type); 8622c393a42Smrg 8632c393a42SmrgFcPrivate FcObject 8642c393a42SmrgFcObjectFromName (const char * name); 8652c393a42Smrg 8662c393a42SmrgFcPrivate const char * 8672c393a42SmrgFcObjectName (FcObject object); 8682c393a42Smrg 8690d39df38SmrgFcPrivate FcObjectSet * 8700d39df38SmrgFcObjectGetSet (void); 8710d39df38Smrg 8722c393a42SmrgFcPrivate FcBool 8732c393a42SmrgFcObjectInit (void); 8742c393a42Smrg 8752c393a42SmrgFcPrivate void 8762c393a42SmrgFcObjectFini (void); 8772c393a42Smrg 8782c393a42Smrg#define FcObjectCompare(a, b) ((int) a - (int) b) 8792c393a42Smrg 8802c393a42Smrg/* fcpat.c */ 8812c393a42Smrg 8822c393a42SmrgFcPrivate FcValue 8832c393a42SmrgFcValueCanonicalize (const FcValue *v); 8842c393a42Smrg 8852c393a42SmrgFcPrivate void 8862c393a42SmrgFcValueListDestroy (FcValueListPtr l); 8872c393a42Smrg 8882c393a42SmrgFcPrivate FcPatternElt * 8892c393a42SmrgFcPatternObjectFindElt (const FcPattern *p, FcObject object); 8902c393a42Smrg 8912c393a42SmrgFcPrivate FcPatternElt * 8922c393a42SmrgFcPatternObjectInsertElt (FcPattern *p, FcObject object); 8932c393a42Smrg 8942c393a42SmrgFcPrivate FcBool 8952c393a42SmrgFcPatternObjectAddWithBinding (FcPattern *p, 8962c393a42Smrg FcObject object, 8972c393a42Smrg FcValue value, 8982c393a42Smrg FcValueBinding binding, 8992c393a42Smrg FcBool append); 9002c393a42Smrg 9012c393a42SmrgFcPrivate FcBool 9022c393a42SmrgFcPatternObjectAdd (FcPattern *p, FcObject object, FcValue value, FcBool append); 9032c393a42Smrg 9042c393a42SmrgFcPrivate FcBool 9052c393a42SmrgFcPatternObjectAddWeak (FcPattern *p, FcObject object, FcValue value, FcBool append); 9062c393a42Smrg 9072c393a42SmrgFcPrivate FcResult 9082c393a42SmrgFcPatternObjectGet (const FcPattern *p, FcObject object, int id, FcValue *v); 9092c393a42Smrg 9102c393a42SmrgFcPrivate FcBool 9112c393a42SmrgFcPatternObjectDel (FcPattern *p, FcObject object); 9122c393a42Smrg 9132c393a42SmrgFcPrivate FcBool 9142c393a42SmrgFcPatternObjectRemove (FcPattern *p, FcObject object, int id); 9152c393a42Smrg 9162c393a42SmrgFcPrivate FcBool 9172c393a42SmrgFcPatternObjectAddInteger (FcPattern *p, FcObject object, int i); 9182c393a42Smrg 9192c393a42SmrgFcPrivate FcBool 9202c393a42SmrgFcPatternObjectAddDouble (FcPattern *p, FcObject object, double d); 9212c393a42Smrg 9222c393a42SmrgFcPrivate FcBool 9232c393a42SmrgFcPatternObjectAddString (FcPattern *p, FcObject object, const FcChar8 *s); 9242c393a42Smrg 9252c393a42SmrgFcPrivate FcBool 9262c393a42SmrgFcPatternObjectAddMatrix (FcPattern *p, FcObject object, const FcMatrix *s); 9272c393a42Smrg 9282c393a42SmrgFcPrivate FcBool 9292c393a42SmrgFcPatternObjectAddCharSet (FcPattern *p, FcObject object, const FcCharSet *c); 9302c393a42Smrg 9312c393a42SmrgFcPrivate FcBool 9322c393a42SmrgFcPatternObjectAddBool (FcPattern *p, FcObject object, FcBool b); 9332c393a42Smrg 9342c393a42SmrgFcPrivate FcBool 9352c393a42SmrgFcPatternObjectAddLangSet (FcPattern *p, FcObject object, const FcLangSet *ls); 9362c393a42Smrg 9372c393a42SmrgFcPrivate FcResult 9382c393a42SmrgFcPatternObjectGetInteger (const FcPattern *p, FcObject object, int n, int *i); 9392c393a42Smrg 9402c393a42SmrgFcPrivate FcResult 9412c393a42SmrgFcPatternObjectGetDouble (const FcPattern *p, FcObject object, int n, double *d); 9422c393a42Smrg 9432c393a42SmrgFcPrivate FcResult 9442c393a42SmrgFcPatternObjectGetString (const FcPattern *p, FcObject object, int n, FcChar8 ** s); 9452c393a42Smrg 9462c393a42SmrgFcPrivate FcResult 9472c393a42SmrgFcPatternObjectGetMatrix (const FcPattern *p, FcObject object, int n, FcMatrix **s); 9482c393a42Smrg 9492c393a42SmrgFcPrivate FcResult 9502c393a42SmrgFcPatternObjectGetCharSet (const FcPattern *p, FcObject object, int n, FcCharSet **c); 9512c393a42Smrg 9522c393a42SmrgFcPrivate FcResult 9532c393a42SmrgFcPatternObjectGetBool (const FcPattern *p, FcObject object, int n, FcBool *b); 9542c393a42Smrg 9552c393a42SmrgFcPrivate FcResult 9562c393a42SmrgFcPatternObjectGetLangSet (const FcPattern *p, FcObject object, int n, FcLangSet **ls); 9572c393a42Smrg 9582c393a42SmrgFcPrivate void 9592c393a42SmrgFcPatternFini (void); 9602c393a42Smrg 9612c393a42SmrgFcPrivate FcBool 9622c393a42SmrgFcPatternAppend (FcPattern *p, FcPattern *s); 9632c393a42Smrg 9642c393a42SmrgFcPrivate const FcChar8 * 9652c393a42SmrgFcStrStaticName (const FcChar8 *name); 9662c393a42Smrg 9672c393a42SmrgFcPrivate FcChar32 9682c393a42SmrgFcStringHash (const FcChar8 *s); 9692c393a42Smrg 9702c393a42SmrgFcPrivate FcBool 9712c393a42SmrgFcPatternSerializeAlloc (FcSerialize *serialize, const FcPattern *pat); 9722c393a42Smrg 9732c393a42SmrgFcPrivate FcPattern * 9742c393a42SmrgFcPatternSerialize (FcSerialize *serialize, const FcPattern *pat); 9752c393a42Smrg 9762c393a42SmrgFcPrivate FcBool 9772c393a42SmrgFcValueListSerializeAlloc (FcSerialize *serialize, const FcValueList *pat); 9782c393a42Smrg 9792c393a42SmrgFcPrivate FcValueList * 9802c393a42SmrgFcValueListSerialize (FcSerialize *serialize, const FcValueList *pat); 9812c393a42Smrg 9822c393a42Smrg/* fcrender.c */ 9832c393a42Smrg 9842c393a42Smrg/* fcmatrix.c */ 9852c393a42Smrg 9862c393a42Smrgextern FcPrivate const FcMatrix FcIdentityMatrix; 9872c393a42Smrg 9882c393a42SmrgFcPrivate void 9892c393a42SmrgFcMatrixFree (FcMatrix *mat); 9902c393a42Smrg 9912c393a42Smrg/* fcstr.c */ 9922c393a42SmrgFcPrivate void 9932c393a42SmrgFcStrSetSort (FcStrSet * set); 9942c393a42Smrg 9952c393a42SmrgFcPrivate void 9962c393a42SmrgFcStrBufInit (FcStrBuf *buf, FcChar8 *init, int size); 9972c393a42Smrg 9982c393a42SmrgFcPrivate void 9992c393a42SmrgFcStrBufDestroy (FcStrBuf *buf); 10002c393a42Smrg 10012c393a42SmrgFcPrivate FcChar8 * 10022c393a42SmrgFcStrBufDone (FcStrBuf *buf); 10032c393a42Smrg 10040d39df38SmrgFcPrivate FcChar8 * 10050d39df38SmrgFcStrBufDoneStatic (FcStrBuf *buf); 10060d39df38Smrg 10072c393a42SmrgFcPrivate FcBool 10082c393a42SmrgFcStrBufChar (FcStrBuf *buf, FcChar8 c); 10092c393a42Smrg 10102c393a42SmrgFcPrivate FcBool 10112c393a42SmrgFcStrBufString (FcStrBuf *buf, const FcChar8 *s); 10122c393a42Smrg 10132c393a42SmrgFcPrivate FcBool 10142c393a42SmrgFcStrBufData (FcStrBuf *buf, const FcChar8 *s, int len); 10152c393a42Smrg 10162c393a42SmrgFcPrivate int 10172c393a42SmrgFcStrCmpIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2); 10182c393a42Smrg 10192c393a42SmrgFcPrivate const FcChar8 * 10202c393a42SmrgFcStrContainsIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2); 10212c393a42Smrg 10222c393a42SmrgFcPrivate const FcChar8 * 10232c393a42SmrgFcStrContainsIgnoreCase (const FcChar8 *s1, const FcChar8 *s2); 10242c393a42Smrg 10252c393a42SmrgFcPrivate const FcChar8 * 10262c393a42SmrgFcStrContainsWord (const FcChar8 *s1, const FcChar8 *s2); 10272c393a42Smrg 10282c393a42SmrgFcPrivate FcBool 10292c393a42SmrgFcStrUsesHome (const FcChar8 *s); 10302c393a42Smrg 10312c393a42SmrgFcPrivate FcChar8 * 10322c393a42SmrgFcStrLastSlash (const FcChar8 *path); 10332c393a42Smrg 10342c393a42SmrgFcPrivate FcChar32 10352c393a42SmrgFcStrHashIgnoreCase (const FcChar8 *s); 10362c393a42Smrg 10372c393a42SmrgFcPrivate FcChar8 * 10382c393a42SmrgFcStrCanonFilename (const FcChar8 *s); 10392c393a42Smrg 10402c393a42SmrgFcPrivate FcBool 10412c393a42SmrgFcStrSerializeAlloc (FcSerialize *serialize, const FcChar8 *str); 10422c393a42Smrg 10432c393a42SmrgFcPrivate FcChar8 * 10442c393a42SmrgFcStrSerialize (FcSerialize *serialize, const FcChar8 *str); 10452c393a42Smrg 10462c393a42Smrg#endif /* _FC_INT_H_ */ 1047