#ifndef included_fontutils_h
#define included_fontutils_h 1
#include <xterm.h>
extern Bool xtermLoadDefaultFonts (XtermWidget );
extern Bool xtermOpenFont (XtermWidget , const char *, XTermFonts * , fontWarningTypes , Bool );
extern XTermFonts * xtermCloseFont (XtermWidget , XTermFonts * );
extern const VTFontNames * xtermFontName (const char *);
extern int lookupRelativeFontSize (XtermWidget , int , int );
extern int xtermGetFont(const char * );
extern int xtermLoadFont (XtermWidget , const VTFontNames *, Bool , int );
extern void HandleSetFont PROTO_XT_ACTIONS_ARGS;
extern void SetVTFont (XtermWidget , int , Bool , const VTFontNames *);
extern void xtermCloseFonts (XtermWidget , XTermFonts * );
extern void xtermComputeFontInfo (XtermWidget , VTwin *, XFontStruct *, int );
extern void xtermCopyFontInfo (XTermFonts * , XTermFonts * );
extern void xtermFreeFontInfo (XTermFonts * );
extern void xtermSaveFontInfo (TScreen * , XFontStruct *);
extern void xtermSetCursorBox (TScreen * );
extern void xtermUpdateFontInfo (XtermWidget , Bool );
#if OPT_DEC_CHRSET
extern char *xtermSpecialFont (TScreen *, unsigned , unsigned );
#endif
#if OPT_BOX_CHARS
#define FontIsIncomplete(font) \
((font)->fs != 0 \
&& (font)->fs->per_char != 0 \
&& !(font)->fs->all_chars_exist)
#define ForceBoxChars(screen,ch) \
(xtermIsDecGraphic(ch) \
&& (screen)->force_box_chars)
#if OPT_WIDE_CHARS
#define CharKnownMissing(font, ch) \
(((ch) < 256) && ((font)->known_missing[(Char)(ch)] > 1))
#else
#define CharKnownMissing(font, ch) \
((font)->known_missing[(Char)(ch)] > 1)
#endif
#define IsXtermMissingChar(screen, ch, font) \
(CharKnownMissing(font, ch) \
? ((font)->known_missing[(Char)(ch)] > 1) \
: ((FontIsIncomplete(font) && xtermMissingChar(ch, font)) \
|| ForceBoxChars(screen, ch)))
extern Bool xtermMissingChar (unsigned , XTermFonts *);
extern void xtermDrawBoxChar (XtermWidget , unsigned , unsigned , GC , int , int , int );
#else
#define IsXtermMissingChar(screen, ch, font) False
#endif
#if OPT_LOAD_VTFONTS
extern void HandleLoadVTFonts PROTO_XT_ACTIONS_ARGS;
#endif
#if OPT_LOAD_VTFONTS || OPT_WIDE_CHARS
extern Bool xtermLoadWideFonts (XtermWidget , Bool );
#endif
#define xtermIsDecGraphic(ch) ((ch) > 0 && (ch) < 32)
#if OPT_RENDERFONT
extern Bool xtermXftMissing (XtermWidget , XftFont * , unsigned );
extern void xtermCloseXft(TScreen * , XTermXftFonts * );
#endif
#if OPT_SHIFT_FONTS
extern String getFaceName(XtermWidget , Bool );
extern void HandleLargerFont PROTO_XT_ACTIONS_ARGS;
extern void HandleSmallerFont PROTO_XT_ACTIONS_ARGS;
extern void setFaceName(XtermWidget , const char * );
#endif
#if OPT_WIDE_CHARS
extern unsigned ucs2dec (unsigned);
extern unsigned dec2ucs (unsigned);
#endif
#endif