DviChar.h revision 8c7c3c7e
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 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