1/* 2 3Copyright 1991, 1998 The Open Group 4 5Permission to use, copy, modify, distribute, and sell this software and its 6documentation for any purpose is hereby granted without fee, provided that 7the above copyright notice appear in all copies and that both that 8copyright notice and this permission notice appear in supporting 9documentation. 10 11The above copyright notice and this permission notice shall be included in 12all copies or substantial portions of the Software. 13 14THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 18AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 21Except as contained in this notice, the name of The Open Group shall not be 22used in advertising or otherwise to promote the sale, use or other dealings 23in this Software without prior written authorization from The Open Group. 24 25*/ 26 27/* 28 * Author: Keith Packard, MIT X Consortium 29 */ 30 31#ifndef _FONTFILEST_H_ 32#define _FONTFILEST_H_ 33 34#include <X11/Xos.h> 35#ifndef XP_PSTEXT 36#include "fontmisc.h" 37#endif 38#include <X11/fonts/fontstruct.h> 39#include "fontxlfd.h" 40#include "fntfil.h" 41 42typedef struct _FontName { 43 char *name; 44 short length; 45 short ndashes; 46} FontNameRec; 47 48typedef struct _FontScaled { 49 FontScalableRec vals; 50 FontEntryPtr bitmap; 51 FontPtr pFont; 52} FontScaledRec; 53 54typedef struct _FontScalableExtra { 55 FontScalableRec defaults; 56 int numScaled; 57 int sizeScaled; 58 FontScaledPtr scaled; 59 pointer private; 60} FontScalableExtraRec; 61 62typedef struct _FontScalableEntry { 63 FontRendererPtr renderer; 64 char *fileName; 65 FontScalableExtraPtr extra; 66} FontScalableEntryRec; 67 68/* 69 * This "can't" work yet - the returned alias string must be permanent, 70 * but this layer would need to generate the appropriate name from the 71 * resolved scalable + the XLFD values passed in. XXX 72 */ 73 74typedef struct _FontScaleAliasEntry { 75 char *resolved; 76} FontScaleAliasEntryRec; 77 78typedef struct _FontBitmapEntry { 79 FontRendererPtr renderer; 80 char *fileName; 81 FontPtr pFont; 82} FontBitmapEntryRec; 83 84typedef struct _FontAliasEntry { 85 char *resolved; 86} FontAliasEntryRec; 87 88typedef struct _FontBCEntry { 89 FontScalableRec vals; 90 FontEntryPtr entry; 91} FontBCEntryRec; 92 93typedef struct _FontEntry { 94 FontNameRec name; 95 int type; 96 union _FontEntryParts { 97 FontScalableEntryRec scalable; 98 FontBitmapEntryRec bitmap; 99 FontAliasEntryRec alias; 100 FontBCEntryRec bc; 101 } u; 102} FontEntryRec; 103 104typedef struct _FontTable { 105 int used; 106 int size; 107 FontEntryPtr entries; 108 Bool sorted; 109} FontTableRec; 110 111typedef struct _FontDirectory { 112 char *directory; 113 unsigned long dir_mtime; 114 unsigned long alias_mtime; 115 FontTableRec scalable; 116 FontTableRec nonScalable; 117 char *attributes; 118} FontDirectoryRec; 119 120/* Capability bits: for definition of capabilities bitmap in the 121 FontRendererRec to indicate support of XLFD enhancements */ 122 123#define CAP_MATRIX 0x1 124#define CAP_CHARSUBSETTING 0x2 125 126typedef struct _FontRenderer { 127 const char *fileSuffix; 128 int fileSuffixLen; 129 int (*OpenBitmap)(FontPathElementPtr /* fpe */, 130 FontPtr * /* pFont */, 131 int /* flags */, 132 FontEntryPtr /* entry */, 133 char * /* fileName */, 134 fsBitmapFormat /* format */, 135 fsBitmapFormatMask /* mask */, 136 FontPtr /* non_cachable_font */); 137 int (*OpenScalable)(FontPathElementPtr /* fpe */, 138 FontPtr * /* pFont */, 139 int /* flags */, 140 FontEntryPtr /* entry */, 141 char * /* fileName */, 142 FontScalablePtr /* vals */, 143 fsBitmapFormat /* format */, 144 fsBitmapFormatMask /* fmask */, 145 FontPtr /* non_cachable_font */); 146 int (*GetInfoBitmap)(FontPathElementPtr /* fpe */, 147 FontInfoPtr /* pFontInfo */, 148 FontEntryPtr /* entry */, 149 char * /*fileName */); 150 int (*GetInfoScalable)(FontPathElementPtr /* fpe */, 151 FontInfoPtr /* pFontInfo */, 152 FontEntryPtr /* entry */, 153 FontNamePtr /* fontName */, 154 char * /* fileName */, 155 FontScalablePtr /* vals */); 156 int number; 157 int capabilities; /* Bitmap components defined above */ 158} FontRendererRec; 159 160typedef struct _FontRenders { 161 int number; 162 struct _FontRenderersElement { 163 /* In order to preserve backward compatibility, the 164 priority field is made invisible to renderers */ 165 FontRendererPtr renderer; 166 int priority; 167 } *renderers; 168} FontRenderersRec, *FontRenderersPtr; 169 170typedef struct _BitmapInstance { 171 FontScalableRec vals; 172 FontBitmapEntryPtr bitmap; 173} BitmapInstanceRec, *BitmapInstancePtr; 174 175typedef struct _BitmapScalablePrivate { 176 int numInstances; 177 BitmapInstancePtr instances; 178} BitmapScalablePrivateRec, *BitmapScalablePrivatePtr; 179 180typedef struct _BitmapSources { 181 FontPathElementPtr *fpe; 182 int size; 183 int count; 184} BitmapSourcesRec, *BitmapSourcesPtr; 185 186extern BitmapSourcesRec FontFileBitmapSources; 187 188/* Defines for FontFileFindNamesInScalableDir() behavior */ 189#define NORMAL_ALIAS_BEHAVIOR 0 190#define LIST_ALIASES_AND_TARGET_NAMES (1<<0) 191#define IGNORE_SCALABLE_ALIASES (1<<1) 192 193#endif /* _FONTFILEST_H_ */ 194