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 -
98c7c3c7eSmrg * case insensitive, a dash separating the
10f80a6dcdSmrg * CharSetRegistry from the CharSetEncoding
11f80a6dcdSmrg */
12f80a6dcdSmrg
13f80a6dcdSmrg#ifndef _DVICHAR_H_
14f80a6dcdSmrg#define _DVICHAR_H_
15f80a6dcdSmrg
16f80a6dcdSmrg#include "Dvi.h"
17f80a6dcdSmrg
1800994698Smrg#define DVI_MAX_SYNONYMS	10
1900994698Smrg#define DVI_MAP_SIZE		256
2000994698Smrg#define DVI_HASH_SIZE		256
2100994698Smrg#define DVI_MAX_LIGATURES	16
22f80a6dcdSmrg
23f80a6dcdSmrgtypedef struct _dviCharNameHash {
2400994698Smrg    struct _dviCharNameHash *next;
2500994698Smrg    const char *name;
2600994698Smrg    int position;
27f80a6dcdSmrg} DviCharNameHash;
28f80a6dcdSmrg
29f80a6dcdSmrgtypedef struct _dviCharNameMap {
3000994698Smrg    const char *encoding;
3100994698Smrg    int special;
3200994698Smrg    const char *const dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS];
3300994698Smrg    const char *const ligatures[DVI_MAX_LIGATURES][2];
3400994698Smrg    DviCharNameHash *buckets[DVI_HASH_SIZE];
35f80a6dcdSmrg} DviCharNameMap;
36f80a6dcdSmrg
3700994698Smrgextern DviCharNameMap *DviFindMap(const char *);
3800994698Smrgextern void DviRegisterMap(DviCharNameMap *);
3900994698Smrg
40f80a6dcdSmrg#define DviCharName(map,index,synonym)	((map)->dvi_names[index][synonym])
4100994698Smrgextern int DviCharIndex(DviCharNameMap *, const char *);
4200994698Smrgextern unsigned char *DviCharIsLigature(DviCharNameMap *, const char *);
4300994698Smrgextern void ResetFonts(DviWidget);
44f80a6dcdSmrg
45f80a6dcdSmrg#endif
46