text: /*++
  
  Copyright (c) 1989  Microsoft Corporation
  
  Module Name:
  
      font.h
  
  Abstract:
  
      This module contains the data structures, data types,
      and procedures related to fonts.
  
  Author:
  
      Therese Stowell (thereses) 15-Jan-1991
  
  Revision History:
  
  --*/
  
  #ifndef FONT_H
  #define FONT_H
  
  #define INITIAL_FONTS 20
  #define FONT_INCREMENT 3
  #define CONSOLE_MAX_FONT_NAME_LENGTH 256
  
  #define EF_NEW         0x0001 // a newly available face
  #define EF_OLD         0x0002 // a previously available face
  #define EF_ENUMERATED  0x0004 // all sizes have been enumerated
  #define EF_OEMFONT     0x0008 // an OEM face
  #define EF_TTFONT      0x0010 // a TT face
  #define EF_DEFFACE     0x0020 // the default face
  #if defined(FE_SB)
  #define EF_DBCSFONT    0x0040 // the DBCS font
  #endif
  
  /*
   * FONT_INFO
   *
   * The distinction between the desired and actual font dimensions obtained
   * is important in the case of TrueType fonts, in which there is no guarantee
   * that what you ask for is what you will get.
   *
   * Note that the correspondence between "Desired" and "Actual" is broken
   * whenever the user changes his display driver, because GDI uses driver
   * parameters to control the font rasterization.
   *
   * The SizeDesired is {0, 0} if the font is a raster font.
   */
  typedef struct _FONT_INFO {
      HFONT hFont;
      COORD Size;      // font size obtained
      COORD SizeWant;  // 0;0 if Raster font
      LONG  Weight;
      LPTSTR FaceName;
      BYTE  Family;
  #if defined(FE_SB)
      BYTE  tmCharSet;
  #endif
  } FONT_INFO, *PFONT_INFO;
  
  typedef struct tagFACENODE {
       struct tagFACENODE *pNext;
       DWORD  dwFlag;
       TCHAR  atch[];
  } FACENODE, *PFACENODE;
  
  #define TM_IS_TT_FONT(x)     (((x) & TMPF_TRUETYPE) == TMPF_TRUETYPE)
  #define IS_BOLD(w)           ((w) >= FW_SEMIBOLD)
  #define SIZE_EQUAL(s1, s2)   (((s1).X == (s2).X) && ((s1).Y == (s2).Y))
  #define POINTS_PER_INCH 72
  #define MIN_PIXEL_HEIGHT 5
  #define MAX_PIXEL_HEIGHT 72
  
  
  //
  // Function prototypes
  //
  
  VOID
  InitializeFonts(VOID);
  
  VOID
  DestroyFonts(VOID);
  
  NTSTATUS
  EnumerateFonts(DWORD Flags);
  
  #if !defined(FE_SB)
  int
  FindCreateFont(
      DWORD Family,
      LPTSTR ptszFace,
      COORD Size,
      LONG Weight);
  #else
  int
  FindCreateFont(
      DWORD Family,
      LPTSTR ptszFace,
      COORD Size,
      LONG Weight,
      UINT CodePage);
  #endif
  
  BOOL
  DoFontEnum(
      HDC hDC,
      LPTSTR ptszFace,
      PSHORT pTTPoints,
      UINT nTTPoints);
  
  #endif /* !FONT_H */
  