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