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