1 /* 2 * DviChar.h 3 * 4 * descriptions for mapping dvi names to 5 * font indexes and back. Dvi fonts are all 6 * 256 elements (actually only 256-32 are usable). 7 * 8 * The encoding names are taken from X - 9 * case insensitive, a dash separating the 10 * CharSetRegistry from the CharSetEncoding 11 */ 12 13 #include "config.h" 14 15 # define DVI_MAX_SYNONYMS 10 16 # define DVI_MAP_SIZE 256 17 # define DVI_HASH_SIZE 256 18 19 typedef struct _dviCharNameHash { 20 struct _dviCharNameHash *next; 21 char *name; 22 int position; 23 } DviCharNameHash; 24 25 typedef struct _dviCharNameMap { 26 char *encoding; 27 int special; 28 #ifdef ENABLE_MULTIBYTE 29 void (*char2XChar2b)(/* int c, XChar2b *xc */); 30 int (*char_index)(/* struct _dviCharNameMap *map, char *name */); 31 #endif 32 char *dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS]; 33 DviCharNameHash *buckets[DVI_HASH_SIZE]; 34 } DviCharNameMap; 35 36 extern DviCharNameMap *DviFindMap ( /* char *encoding */ ); 37 extern void DviRegisterMap ( /* DviCharNameMap *map */ ); 38 #ifdef NOTDEF 39 extern char *DviCharName ( /* DviCharNameMap *map, int index, int synonym */ ); 40 #else 41 #define DviCharName(map,index,synonym) ((map)->dvi_names[index][synonym]) 42 #endif 43 extern int DviCharIndex ( /* DviCharNameMap *map, char *name */ ); 44