DviChar.h revision c166fba9
1f80a6dcdSmrg/*
2f80a6dcdSmrg * DviChar.h
3f80a6dcdSmrg *
4f80a6dcdSmrg * descriptions for mapping dvi names to
5f80a6dcdSmrg * font indexes and back.  Dvi fonts are all
6f80a6dcdSmrg * 256 elements (actually only 256-32 are usable).
7f80a6dcdSmrg *
8f80a6dcdSmrg * The encoding names are taken from X -
9f80a6dcdSmrg * case insensitive, a dash seperating the
10f80a6dcdSmrg * CharSetRegistry from the CharSetEncoding
11f80a6dcdSmrg */
12f80a6dcdSmrg
13f80a6dcdSmrg#ifndef _DVICHAR_H_
14f80a6dcdSmrg#define _DVICHAR_H_
15f80a6dcdSmrg
16f80a6dcdSmrg#include "Dvi.h"
17f80a6dcdSmrg
18f80a6dcdSmrg# define DVI_MAX_SYNONYMS	10
19f80a6dcdSmrg# define DVI_MAP_SIZE		256
20f80a6dcdSmrg# define DVI_HASH_SIZE		256
21f80a6dcdSmrg# define DVI_MAX_LIGATURES	16
22f80a6dcdSmrg
23f80a6dcdSmrgtypedef struct _dviCharNameHash {
24f80a6dcdSmrg	struct _dviCharNameHash	*next;
25c166fba9Smrg	const char		*name;
26f80a6dcdSmrg	int			position;
27f80a6dcdSmrg} DviCharNameHash;
28f80a6dcdSmrg
29f80a6dcdSmrgtypedef struct _dviCharNameMap {
30c166fba9Smrg    const char *	encoding;
31f80a6dcdSmrg    int			special;
32c166fba9Smrg    const char * const	dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS];
33c166fba9Smrg    const char * const	ligatures[DVI_MAX_LIGATURES][2];
34f80a6dcdSmrg    DviCharNameHash	*buckets[DVI_HASH_SIZE];
35f80a6dcdSmrg} DviCharNameMap;
36f80a6dcdSmrg
37c166fba9Smrgextern DviCharNameMap	*DviFindMap (const char *);
38f80a6dcdSmrgextern void		DviRegisterMap (DviCharNameMap *);
39f80a6dcdSmrg#define DviCharName(map,index,synonym)	((map)->dvi_names[index][synonym])
40c166fba9Smrgextern int		DviCharIndex (DviCharNameMap *, const char *);
41c166fba9Smrgextern unsigned char	*DviCharIsLigature (DviCharNameMap *, const char *);
42f80a6dcdSmrgextern void		ResetFonts (DviWidget);
43f80a6dcdSmrg
44f80a6dcdSmrg#endif
45