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 # define DVI_MAX_SYNONYMS	10
14 # define DVI_MAP_SIZE		256
15 # define DVI_HASH_SIZE		256
16 
17 typedef struct _dviCharNameHash {
18 	struct _dviCharNameHash	*next;
19 	const char		*name;
20 	int			position;
21 } DviCharNameHash;
22 
23 typedef struct _dviCharNameMap {
24     const char		*encoding;
25     int			special;
26     const char		*dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS];
27     DviCharNameHash	*buckets[DVI_HASH_SIZE];
28 } DviCharNameMap;
29 
30 DviCharNameMap		*DviFindMap (char *);
31 void			DviRegisterMap (DviCharNameMap *);
32 #ifdef NOTDEF
33 char			*DviCharName (DviCharNameMap *, int, int);
34 #else
35 #define DviCharName(map,index,synonym)	((map)->dvi_names[index][synonym])
36 #endif
37 int			DviCharIndex (DviCharNameMap *, const char *);
38