]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcint.h
Add filename-based accept/reject to ammend available fonts.
[fontconfig.git] / src / fcint.h
index d80e31243c7dc5325e380b373d0823561aaf317e..790f0ba0f05d07aee6a04416a18433009d5d4e90 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcint.h,v 1.16 2002/07/06 23:47:44 keithp Exp $
+ * $RCSId: xc/lib/fontconfig/src/fcint.h,v 1.27 2002/08/31 22:17:32 keithp Exp $
  *
- * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
+ * Copyright © 2000 Keith Packard
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -53,6 +53,12 @@ typedef struct _FcSymbolic {
 #define FC_FONT_FILE_INVALID   ((FcChar8 *) ".")
 #define FC_FONT_FILE_DIR       ((FcChar8 *) ".dir")
 
+#ifdef _WIN32
+#define FC_SEARCH_PATH_SEPARATOR ';'
+#else
+#define FC_SEARCH_PATH_SEPARATOR ':'
+#endif
+
 #define FC_DBG_MATCH   1
 #define FC_DBG_MATCHV  2
 #define FC_DBG_EDIT    4
@@ -65,7 +71,7 @@ typedef struct _FcSymbolic {
 #define FC_DBG_MEMORY  512
 
 #define FC_MEM_CHARSET     0
-#define FC_MEM_CHARNODE            1
+#define FC_MEM_CHARLEAF            1
 #define FC_MEM_FONTSET     2
 #define FC_MEM_FONTPTR     3
 #define FC_MEM_OBJECTSET    4
@@ -77,13 +83,27 @@ typedef struct _FcSymbolic {
 #define FC_MEM_SUBSTATE            10
 #define FC_MEM_STRING      11
 #define FC_MEM_LISTBUCK            12
-#define FC_MEM_NUM         13
-#define FC_MEM_STRSET      14
-#define FC_MEM_STRLIST     15
-#define FC_MEM_CONFIG      16
+#define FC_MEM_STRSET      13
+#define FC_MEM_STRLIST     14
+#define FC_MEM_CONFIG      15
+#define FC_MEM_LANGSET     16
+#define FC_MEM_ATOMIC      17
+#define FC_MEM_BLANKS      18
+#define FC_MEM_CACHE       19
+#define FC_MEM_STRBUF      20
+#define FC_MEM_SUBST       21
+#define FC_MEM_OBJECTTYPE   22
+#define FC_MEM_CONSTANT            23
+#define FC_MEM_TEST        24
+#define FC_MEM_EXPR        25
+#define FC_MEM_VSTACK      26
+#define FC_MEM_ATTR        27
+#define FC_MEM_PSTACK      28
+
+#define FC_MEM_NUM         29
 
 typedef enum _FcValueBinding {
-    FcValueBindingWeak, FcValueBindingStrong
+    FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame
 } FcValueBinding;
 
 typedef struct _FcValueList {
@@ -97,6 +117,7 @@ typedef struct _FcPatternElt {
     FcValueList            *values;
 } FcPatternElt;
 
+
 struct _FcPattern {
     int                    num;
     int                    size;
@@ -111,10 +132,11 @@ typedef enum _FcOp {
     FcOpAssign, FcOpAssignReplace, 
     FcOpPrependFirst, FcOpPrepend, FcOpAppend, FcOpAppendLast,
     FcOpQuest,
-    FcOpOr, FcOpAnd, FcOpEqual, FcOpNotEqual, FcOpContains,
+    FcOpOr, FcOpAnd, FcOpEqual, FcOpNotEqual, FcOpContains, FcOpNotContains,
     FcOpLess, FcOpLessEqual, FcOpMore, FcOpMoreEqual,
     FcOpPlus, FcOpMinus, FcOpTimes, FcOpDivide,
-    FcOpNot, FcOpComma, FcOpInvalid
+    FcOpNot, FcOpComma, FcOpFloor, FcOpCeil, FcOpRound, FcOpTrunc,
+    FcOpInvalid
 } FcOp;
 
 typedef struct _FcExpr {
@@ -138,8 +160,11 @@ typedef enum _FcQual {
     FcQualAny, FcQualAll, FcQualFirst, FcQualNotFirst
 } FcQual;
 
+#define FcMatchDefault ((FcMatchKind) -1)
+
 typedef struct _FcTest {
     struct _FcTest     *next;
+    FcMatchKind                kind;
     FcQual             qual;
     const char         *field;
     FcOp               op;
@@ -164,13 +189,10 @@ typedef struct _FcCharLeaf {
     FcChar32   map[256/32];
 } FcCharLeaf;
 
-typedef enum _FcLangResult {
-    FcLangEqual, FcLangDifferentCountry, FcLangDifferentLang
-} FcLangResult;
+#define FC_REF_CONSTANT            -1
 
 struct _FcCharSet {
     int                    ref;        /* reference count */
-    FcBool         constant;   /* in hash table constant */
     int                    num;        /* size of leaves and numbers arrays */
     FcCharLeaf     **leaves;
     FcChar16       *numbers;
@@ -197,7 +219,17 @@ typedef struct _FcStrBuf {
 } FcStrBuf;
 
 /*
- * The per-user ~/.fonts.cache file is loaded into
+ * To map adobe glyph names to unicode values, a precomputed hash
+ * table is used
+ */
+
+typedef struct _FcGlyphName {
+    FcChar32   ucs;            /* unicode value */
+    FcChar8    name[1];        /* name extends beyond struct */
+} FcGlyphName;
+
+/*
+ * The per-user ~/.fonts.cache-<version> file is loaded into
  * this data structure.  Each directory gets a substructure
  * which is validated by comparing the directory timestamp with
  * that saved in the cache.  When valid, the entire directory cache
@@ -223,18 +255,20 @@ typedef struct _FcGlobalCacheFile {
     FcChar8                    *name;
 } FcGlobalCacheFile;
 
+typedef struct _FcGlobalCacheDir FcGlobalCacheDir;
+
 typedef struct _FcGlobalCacheSubdir {
     struct _FcGlobalCacheSubdir        *next;
-    FcChar8                    *file;
+    FcGlobalCacheDir           *ent;
 } FcGlobalCacheSubdir;
 
-typedef struct _FcGlobalCacheDir {
+struct _FcGlobalCacheDir {
     struct _FcGlobalCacheDir   *next;
     FcGlobalCacheInfo          info;
     int                                len;
     FcGlobalCacheFile          *ents[FC_GLOBAL_CACHE_FILE_HASH_SIZE];
     FcGlobalCacheSubdir                *subdirs;
-} FcGlobalCacheDir;
+};
 
 typedef struct _FcGlobalCache {
     FcGlobalCacheDir           *ents[FC_GLOBAL_CACHE_DIR_HASH_SIZE];
@@ -289,6 +323,11 @@ struct _FcConfig {
     FcSubst    *substPattern;      /* substitutions for patterns */
     FcSubst    *substFont;         /* substitutions for fonts */
     int                maxObjects;         /* maximum number of tests in all substs */
+    /*
+     * List of patterns used to control font file selection
+     */
+    FcStrSet   *acceptGlobs;
+    FcStrSet   *rejectGlobs;
     /*
      * The set of fonts loaded from the listed directories; the
      * order within the set does not determine the font selection,
@@ -321,12 +360,16 @@ void
 FcGlobalCacheDestroy (FcGlobalCache *cache);
 
 FcBool
-FcGlobalCacheCheckTime (FcGlobalCacheInfo *info);
+FcGlobalCacheCheckTime (const FcChar8*file, FcGlobalCacheInfo *info);
 
 void
 FcGlobalCacheReferenced (FcGlobalCache     *cache,
                         FcGlobalCacheInfo  *info);
 
+void
+FcGlobalCacheReferenceSubdir (FcGlobalCache *cache,
+                             const FcChar8 *dir);
+
 FcGlobalCacheDir *
 FcGlobalCacheDirGet (FcGlobalCache  *cache,
                     const FcChar8  *dir,
@@ -337,7 +380,8 @@ FcBool
 FcGlobalCacheScanDir (FcFontSet                *set,
                      FcStrSet          *dirs,
                      FcGlobalCache     *cache,
-                     const FcChar8     *dir);
+                     const FcChar8     *dir,
+                     FcConfig          *config);
 
 FcGlobalCacheFile *
 FcGlobalCacheFileGet (FcGlobalCache *cache,
@@ -361,10 +405,10 @@ FcGlobalCacheSave (FcGlobalCache    *cache,
                   const FcChar8    *cache_file);
 
 FcBool
-FcDirCacheValid (const FcChar8 *cache_file);
-
-FcBool
-FcDirCacheReadDir (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
+FcDirCacheReadDir (FcFontSet       *set, 
+                  FcStrSet         *dirs,
+                  const FcChar8    *dir,
+                  FcConfig         *config);
 
 FcBool
 FcDirCacheWriteDir (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
@@ -411,6 +455,15 @@ FcConfigCompareValue (const FcValue m,
                      FcOp          op,
                      const FcValue v);
 
+FcBool
+FcConfigGlobAdd (FcConfig      *config,
+                const FcChar8  *glob,
+                FcBool         accept);
+
+FcBool
+FcConfigAcceptFilename (FcConfig       *config,
+                       const FcChar8   *filename);
+
 /* fccharset.c */
 FcCharSet *
 FcCharSetFreeze (FcCharSet *cs);
@@ -421,39 +474,54 @@ FcNameUnparseCharSet (FcStrBuf *buf, const FcCharSet *c);
 FcCharSet *
 FcNameParseCharSet (FcChar8 *string);
 
-FcChar32
-FcFreeTypeUcs4ToPrivate (FcChar32 ucs4, const FcCharMap *map);
+FcCharLeaf *
+FcCharSetFindLeafCreate (FcCharSet *fcs, FcChar32 ucs4);
 
-FcChar32
-FcFreeTypePrivateToUcs4 (FcChar32 private, const FcCharMap *map);
-
-const FcCharMap *
-FcFreeTypeGetPrivateMap (FT_Encoding encoding);
-    
 /* fcdbg.c */
 void
-FcValueListPrint (FcValueList *l);
+FcValueListPrint (const FcValueList *l);
+
+void
+FcLangSetPrint (const FcLangSet *ls);
 
 void
 FcOpPrint (FcOp op);
 
 void
-FcTestPrint (FcTest *test);
+FcTestPrint (const FcTest *test);
 
 void
-FcExprPrint (FcExpr *expr);
+FcExprPrint (const FcExpr *expr);
 
 void
-FcEditPrint (FcEdit *edit);
+FcEditPrint (const FcEdit *edit);
 
 void
-FcSubstPrint (FcSubst *subst);
+FcSubstPrint (const FcSubst *subst);
 
 int
 FcDebug (void);
 
 /* fcdir.c */
 
+FcBool
+FcFileScanConfig (FcFontSet    *set,
+                 FcStrSet      *dirs,
+                 FcFileCache   *cache,
+                 FcBlanks      *blanks,
+                 const FcChar8 *file,
+                 FcBool        force,
+                 FcConfig      *config);
+
+FcBool
+FcDirScanConfig (FcFontSet     *set,
+                FcStrSet       *dirs,
+                FcFileCache    *cache,
+                FcBlanks       *blanks,
+                const FcChar8  *dir,
+                FcBool         force,
+                FcConfig       *config);
+
 /* fcfont.c */
 int
 FcFontDebug (void);
@@ -465,6 +533,15 @@ FcFreeTypeIsExclusiveLang (const FcChar8  *lang);
 FcBool
 FcFreeTypeHasLang (FcPattern *pattern, const FcChar8 *lang);
 
+FcChar32
+FcFreeTypeUcs4ToPrivate (FcChar32 ucs4, const FcCharMap *map);
+
+FcChar32
+FcFreeTypePrivateToUcs4 (FcChar32 private, const FcCharMap *map);
+
+const FcCharMap *
+FcFreeTypeGetPrivateMap (FT_Encoding encoding);
+    
 /* fcfs.c */
 /* fcgram.y */
 int
@@ -480,7 +557,11 @@ char *
 FcConfigSaveField (const char *field);
 
 FcTest *
-FcTestCreate (FcQual qual, const FcChar8 *field, FcOp compare, FcExpr *expr);
+FcTestCreate (FcMatchKind   kind,
+             FcQual        qual,
+             const FcChar8 *field,
+             FcOp          compare,
+             FcExpr        *expr);
 
 void
 FcTestDestroy (FcTest *test);
@@ -533,9 +614,8 @@ void
 FcMemFree (int kind, int size);
 
 /* fclang.c */
-FcBool
-FcFreeTypeSetLang (FcPattern       *pattern, 
-                  FcCharSet        *charset, 
+FcLangSet *
+FcFreeTypeLangSet (const FcCharSet  *charset, 
                   const FcChar8    *exclusiveLang);
 
 FcLangResult
@@ -544,6 +624,15 @@ FcLangCompare (const FcChar8 *s1, const FcChar8 *s2);
 const FcCharSet *
 FcCharSetForLang (const FcChar8 *lang);
 
+FcLangSet *
+FcLangSetPromote (const FcChar8 *lang);
+
+FcLangSet *
+FcNameParseLangSet (const FcChar8 *string);
+
+FcBool
+FcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls);
+
 /* fclist.c */
 
 /* fcmatch.c */
@@ -570,6 +659,9 @@ FcPatternAddWithBinding  (FcPattern     *p,
                          FcValueBinding    binding,
                          FcBool            append);
 
+FcPattern *
+FcPatternFreeze (FcPattern *p);
+
 /* fcrender.c */
 
 /* fcmatrix.c */
@@ -607,4 +699,16 @@ FcStrBufData (FcStrBuf *buf, const FcChar8 *s, int len);
 int
 FcStrCmpIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2);
 
+const FcChar8 *
+FcStrContainsIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2);
+
+const FcChar8 *
+FcStrContainsIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
+
+FcBool
+FcStrUsesHome (const FcChar8 *s);
+
+FcChar8 *
+FcStrLastSlash (const FcChar8  *path);
+
 #endif /* _FC_INT_H_ */