DviChar.h revision f80a6dcd
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/* $XFree86$ */
13f80a6dcdSmrg
14f80a6dcdSmrg#ifndef _DVICHAR_H_
15f80a6dcdSmrg#define _DVICHAR_H_
16f80a6dcdSmrg
17f80a6dcdSmrg#include "Dvi.h"
18f80a6dcdSmrg
19f80a6dcdSmrg# define DVI_MAX_SYNONYMS	10
20f80a6dcdSmrg# define DVI_MAP_SIZE		256
21f80a6dcdSmrg# define DVI_HASH_SIZE		256
22f80a6dcdSmrg# define DVI_MAX_LIGATURES	16
23f80a6dcdSmrg
24f80a6dcdSmrgtypedef struct _dviCharNameHash {
25f80a6dcdSmrg	struct _dviCharNameHash	*next;
26f80a6dcdSmrg	char			*name;
27f80a6dcdSmrg	int			position;
28f80a6dcdSmrg} DviCharNameHash;
29f80a6dcdSmrg
30f80a6dcdSmrgtypedef struct _dviCharNameMap {
31f80a6dcdSmrg    char		*encoding;
32f80a6dcdSmrg    int			special;
33f80a6dcdSmrg    char		*dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS];
34f80a6dcdSmrg    char		*ligatures[DVI_MAX_LIGATURES][2];
35f80a6dcdSmrg    DviCharNameHash	*buckets[DVI_HASH_SIZE];
36f80a6dcdSmrg} DviCharNameMap;
37f80a6dcdSmrg
38f80a6dcdSmrgextern DviCharNameMap	*DviFindMap (char *);
39f80a6dcdSmrgextern void		DviRegisterMap (DviCharNameMap *);
40f80a6dcdSmrg#ifdef NOTDEF
41f80a6dcdSmrgextern char		*DviCharName (DviCharNameMap *, int, int);
42f80a6dcdSmrg#else
43f80a6dcdSmrg#define DviCharName(map,index,synonym)	((map)->dvi_names[index][synonym])
44f80a6dcdSmrg#endif
45f80a6dcdSmrgextern int		DviCharIndex (DviCharNameMap *, char *);
46f80a6dcdSmrgextern unsigned char	*DviCharIsLigature (DviCharNameMap *, char *);
47f80a6dcdSmrgextern void		ResetFonts (DviWidget);
48f80a6dcdSmrg
49f80a6dcdSmrg#endif
50