PAL - Quickreference: Hfn



External font routines

These are functions that enable you to use more than the built-in fonts. You can load multiple fonts in memory and use them all at the same time. There is a set of Unified font support functions also available in PAL which allow the user to control both internal and external fonts with the same set of functions. See the Unified font routines section for more details.

Available functions:


LoadHfn : Load a font in memory.
InitHfn : Initialize a given font.
WriteHfn : Writes a string using one of the loaded fonts.
TextExtHfn : Compute text extent of a string in a given font.
FontHeightHfn : Returns height of a given font.
DiscardHfn : Discard a loaded font.


LoadHfn

NAME
      LoadHfn
DESCRIPTION
      This function loads an external font in memory, and returns a pointer
      to it. This function is similar to the LoadFont() function of the
      Unified-font support routines.
SYNOPSIS
      #include "pal.h"
      FONTDESC *LoadHfn(char *FileName);
INPUTS
      Filename - The filename of the font you wish to load.
RETURN VALUE
      Pointer to the font in memory (FONTDESC structure).
      Null if an error occurred.
NOTE
      There are a few .HFN fonts available for PAL, ready to use.
      There's also a set of Unified-font support functions
      available in PAL. See the Unified font routines section for
      more details.

      The FONTDESC structure is defined in PAL.H as follows:

        /* Header of a GetImg bitmap  */
        typedef struct {
           int Planes; /* on HP100/200, always 1 */
           int Bits;   /* on HP100/200, always 1 */
           int Width;
           int Depth;
        } IMGHDR;

        /* Font File Header */
        typedef struct {
           int  FontType;         /* Type (ID) of font           */
           int  MinChar;          /* First ASCII character       */
           int  MaxChar;          /* Last ASCII character        */
           int  MaxWidth;         /* Width of widest bitmap      */
        int  MaxHeight;           /* Height of highest bitmap    */
        } FNTFHDR;

        /* Font Descriptor */
        typedef struct {
           int     Discardable;   /* Flag: can be freed, non-resident  */
           IMGHDR  *pChar[256];   /* font character pointer table      */
           FNTFHDR FontHeader;    /* 6-byte header followed by bitmaps */
        } FONTDESC;               /* font descriptor                   */
SAMPLE
   FONTDESC *pFont;        /* pointer to a new font */
   int Width;              /* Stores the width of the displayed text */

   GraphMode();      /* Set graphics mode */

   /* Load font in memory */
   if(!(pFont = LoadFont("span0015.hfn"))) FatalExit("Load Font failed", 1);

   /* Initialize the font and set it as Discardable */
   InitHfn(pFont, 1);

   /* Display some text with the new font */
   Width = WriteHfn(pFont, 10, 20, "This is another font.");
SEE ALSO
LoadFont InitHfn DiscardHfn WriteHfn TextExtHfn FontHeightHfn

InitHfn

NAME
      InitHfn
DESCRIPTION
      This function initializes a font by computing the IMGHDR
      pointer table for the characters that make up the font, and by
      setting up the 'Discardable' flag passed by the user.
      This routine is used both to initialize resident fonts as well
      as transient ones.
SYNOPSIS
      #include "pal.h"
      void InitHfn(FONTDESC *pFnt, int Discardable);
INPUTS
      pFnt        - Pointer to the font.
      Discardable - Flag that indicates if the font is to be discardable
                    or resident. (NULL = resident).
RETURN VALUE
      None
NOTE
      There is a set of Unified-font support functions available in PAL.
      See the Unified font routines section for more details.
SAMPLE
   FONTDESC *pFont;        /* pointer to a new font */
   int Width;              /* Stores the width of the displayed text */

   GraphMode();      /* Set graphics mode */

   /* Load font in memory */
   if(!(pFont = LoadFont("span0015.hfn"))) FatalExit("Load Font failed", 1);

   /* Initialize the font and set it as Discardable */
   InitHfn(pFont, 1);

   /* Display some text with the new font */
   Width = WriteHfn(pFont, 10, 20, "This is another font.");
SEE ALSO
LoadHfn DiscardHfn WriteHfn TextExtHfn FontHeightHfn

WriteHfn

NAME
      WriteHfn
DESCRIPTION
      This function writes a given string on the graphics screen by
      using one of the loaded fonts. This function is similar to
      the TextOut() function from the Unified-font support routines.
SYNOPSIS
      #include "pal.h"
      int WriteHfn(FONTDESC *pFont, int x, int y, char *s);
INPUTS
      pFnt  - Pointer to the loaded font.
      x     - X coordinate of the text position (0-639).
      y     - Y coordinate of the text position (0-199).
      s     - String of text to be displayed using the loaded font.
RETURN VALUE
      Returns the width (in pixels) of the given string.
NOTE
      There is a set of Unified-font support functions available in PAL.
      See the Unified font routines section for more details.
SAMPLE
   FONTDESC *pFont;        /* pointer to a new font */
   int Width;              /* Stores the width of the displayed text */

   GraphMode();            /* Set graphics mode */

   /* Load font in memory */
   if(!(pFont = LoadFont("span0015.hfn"))) FatalExit("Load Font failed", 1);

   /* Initialize the font and set it as Discardable */
   InitHfn(pFont, 1);

   /* Display some text with the new font */
   Width = WriteHfn(pFont, 10, 20, "This is another font.");
SEE ALSO
TextOut LoadHfn DiscardHfn InitHfn TextExtHfn FontHeightHfn

TextExtHfn

NAME
      TextExtHfn
DESCRIPTION
      This function computes text extent of a string in a given font. The
      returned value is the number of horizontal pixels that the string
      occupies on the graphics screen. This function is useful to compute
      the horizontal image size of the string before displaying it.
      This function is similar to the TextExt() function of the Unified-font
      support routines.
SYNOPSIS
      #include "pal.h"
      int TextExtHfn(FONTDESC *pFont, char *s);
INPUTS
      pFnt  - Pointer to the loaded font.
      s     - String of text to be displayed using the loaded font.
RETURN VALUE
      Returns the width (in pixels) of the given string.
NOTE
      There is a set of Unified-font support functions available in PAL.
      See the Unified font routines section for more details.
SAMPLE
   FONTDESC *pFont;        /* pointer to a new font */
   int Width;              /* Stores the width of the displayed text */

   GraphMode();      /* Set graphics mode */

   /* Load font in memory */
   if(!(pFont = LoadFont("span0015.hfn"))) FatalExit("Load Font failed", 1);

   /* Initialize the font and set it as Discardable */
   InitHfn(pFont, 1);

   /* Compute width before displaying the string */
   Width = TextExtHfn(pFont, "This is another font.");

   /* Display some text with the new font */
   WriteHfn(pFont, 10, 20, "This is another font.");
SEE ALSO
TextExt LoadHfn DiscardHfn InitHfn FontHeightHfn WriteHfn

FontHeightHfn

NAME
      FontHeightHfn
DESCRIPTION
      This function returns the height (number of pixels) of a loaded
      font. This is useful for determining the line spacing between
      each line of the displayed text. This function is similar to the
      FontHeight() function of the Unified-font support routines.
SYNOPSIS
      #include "pal.h"
      int FontHeightHfn(FONTDESC *pFont);
INPUTS
      pFnt  - Pointer to the loaded font.
RETURN VALUE
      Returns the height (in pixels) of the given font.
NOTE
      There is a set of Unified-font support functions available in PAL.
      See the Unified font routines section for more details.
SAMPLE
   FONTDESC *pFont;        /* pointer to a new font */
   int Height;             /* Stores the height of the loaded font */

   GraphMode();      /* Set graphics mode */

   /* Load font in memory */
   if(!(pFont = LoadFont("span0015.hfn"))) FatalExit("Load Font failed", 1);

   /* Initialize the font and set it as Discardable */
   InitHfn(pFont, 1);

   /* Compute height of the font */
   Height = FontHeightHfn(pFont);

   /* Display the first line of text */
   WriteHfn(pFont, 10, 20, "This is the first line.");

   /* Now display another line below the first one */
   WriteHfn(pFont, 10, 20 + Height, "This is another line.");
SEE ALSO
FontHeight LoadHfn DiscardHfn InitHfn TextExtHfn WriteHfn

DiscardHfn

NAME
      DiscardHfn
DESCRIPTION
      This function discards a previously loaded font and frees up the
      memory it occupied. The Discardable flag of the font must be
      set in order for the font to be discarded. If the flag is set
      to Resident, the function will ignore the request. This function
      is similar to the DiscardFont() function of the Unified-font
      support routines.
SYNOPSIS
      #include "pal.h"
      void DiscardHfn(FONTDESC *pFont);
INPUTS
      pFnt  - Pointer to the loaded font that needs to be discarded.
RETURN VALUE
      None.
NOTE
      See LoadHfn() function for details on the Discardable flag.
      There is a set of Unified-font support functions available to PAL.
      See the Unified font routines section for more details.
SAMPLE
   FONTDESC *pFont;        /* pointer to a new font */

   GraphMode();      /* Set graphics mode */

   /* Load font in memory */
   if(!(pFont = LoadFont("span0015.hfn"))) FatalExit("Load Font failed", 1);

   /* Initialize the font and set it as Discardable */
   InitHfn(pFont, 1);

   /* Display a line of text */
   WriteHfn(pFont, 10, 20, "This is the first line.");

   /* Now discard the font and free up some memory */
   DiscardHfn(pFont);
SEE ALSO
DiscardFont LoadHfn InitHfn TextExtHfn WriteHfn FontHeightHfn