[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

TABLE OF CONTENTS

diskfont.library/AvailFonts
diskfont.library/DisposeFontContents
diskfont.library/NewFontContents
diskfont.library/NewScaledDiskFont
diskfont.library/OpenDiskFont
diskfont.library/AvailFonts                       diskfont.library/AvailFonts

   NAME
        AvailFonts -- Inquire available memory & disk fonts.

   SYNOPSIS
        error = AvailFonts(buffer, bufBytes, flags);
                           A0      D0        D1

        LONG AvailFonts( struct AvailFontsHeader *buffer, LONG bufBytes,
                ULONG flags );

   FUNCTION
        AvailFonts fills a user supplied buffer with the structure,
        described below, that contains information about all the
        fonts available in memory and/or on disk.  Those fonts
        available on disk need to be loaded into memory and opened
        via OpenDiskFont, those already in memory are accessed via
        OpenFont.  The TextAttr structure required by the open calls
        is part of the information AvailFonts supplies.

        When AvailFonts fails, it returns the number of extra bytes
        it needed to complete the command.  Add this number to your
        current buffer size, allocate a new buffer, and try again.

   INPUTS
        buffer - memory to be filled with struct AvailFontsHeader
                followed by an array of AvailFonts elements, which
                contains entries for the available fonts and their
                names.

        bufBytes - the number of bytes in the buffer
        flags - AFF_MEMORY is set to search memory for fonts to fill
                the structure, AFF_DISK is set to search the disk for
                fonts to fill the structure.  AFF_SCALED is set to
                not filter out memory fonts that are not designed.
                Any combination may be specified.  AFF_TAGGED is set
                to fill the buffer with TAvailFonts elements instead
                of AvailFonts elements.

   RESULTS
        buffer - filled with struct AvailFontsHeader followed by the
                [T]AvailFonts elements, There will be duplicate entries
                for fonts found both in memory and on disk, differing
                only by type.  The existence of a disk font in the
                buffer indicates that it exists as an entry in a font
                contents file -- the underlying font file has not been
                checked for validity, thus an OpenDiskFont of it may
                fail.
        error - if non-zero, this indicates the number of bytes needed
                for AvailFonts in addition to those supplied.  Thus
                structure elements were not returned because of
                insufficient bufBytes.

   EXAMPLE
        int afShortage, afSize;
        struct AvailFontsHeader *afh;

        ...

        afSize = 400;
        do {
            afh = (struct AvailFontsHeader *) AllocMem(afSize, 0);
            if (afh) {
                afShortage = AvailFonts(afh, afSize, AFF_MEMORY|AFF_DISK);
                if (afShortage) {
                    FreeMem(afh, afSize);
                    afSize += afShortage;
                }
            }
            else {
                fail("AllocMem of AvailFonts buffer afh failed\n");
                break;
            }
        }
            while (afShortage);

        /*
         * if (afh) non-zero here, then:
         * 1. it points to a valid AvailFontsHeader
         * 2. it must have FreeMem(afh, afSize) called for it after use
         */

diskfont.library/DisposeFontContents     diskfont.library/DisposeFontContents

   NAME
        DisposeFontContents -- Free the result from NewFontContents. (V34)

   SYNOPSIS
        DisposeFontContents(fontContentsHeader)
                            A1

        VOID DisposeFontContents( struct FontContentsHeader * );

   FUNCTION
        This function frees the array of FontContents entries
        returned by NewFontContents.

   INPUTS
        fontContentsHeader - a struct FontContentsHeader pointer
            returned by NewFontContents.

   EXCEPTIONS
        This command was first made available as of version 34.

        A fontContentsHeader other than one acquired by a call
        NewFontContents will crash.

   SEE ALSO
        NewFontContents to get structure freed here.

diskfont.library/NewFontContents             diskfont.library/NewFontContents

   NAME
        NewFontContents -- Create a FontContents image for a font. (V34)

   SYNOPSIS
        fontContentsHeader = NewFontContents(fontsLock,fontName)
       D0                                   A0        A1

        struct FontContentsHeader *NewFontContents( BPTR, char * );

   FUNCTION
        This function creates a new array of FontContents entries
        that describe all the fonts associated with the fontName,
        specifically, all those in the font directory whose name
        is that of the font sans the ".font" suffix.

   INPUTS
        fontsLock - a DOS lock on the FONTS: directory (or other
            directory where the font contents file and associated
            font directory resides).
        fontName - the font name, with the ".font" suffix, which
            is also the name of the font contents file.

   RESULT
        fontContentsHeader - a struct FontContentsHeader pointer.

   EXCEPTIONS
        This command was first made available as of version 34.

        D0 is zero if the fontName is does not have a ".font" suffix,
        if the fontName is too long, if a DOS error occurred, or if
        memory could not be allocated for the fontContentsHeader.

   SEE ALSO
        DisposeFontContents to free the structure acquired here.

diskfont.library/NewScaledDiskFont         diskfont.library/NewScaledDiskFont

   NAME
        NewScaledDiskFont -- Create a DiskFont scaled from another. (V36)

   SYNOPSIS
        header = NewScaledDiskFont(srcFont, destTextAttr)
        D0                         A0       A1

        struct DiskFontHeader *NewScaledDiskFont( struct TextFont *,
                struct TTextAttr * );

   INPUTS
        srcFont - the font from which the scaled font is to be
            constructed.
        destTextAttr - the desired attributes for the new scaled
            font.  This may be a structure of type TextAttr or
            TTextAttr.

   RESULT
        header - a pointer to a DiskFontHeader structure.  This is not
                being managed by the diskfont.library, however.

   NOTES
        o   This function may use the blitter.
        o   Fonts containing characters that render wholly outside
            the character advance cell are currently not scalable.
        o   The font, and memory allocated for the scaled font can
            can be freed by calling StripFont() on the font,
            and then calling UnLoadSeg() on the segment created
            by this function.

            Both the TextFont structure, and segment pointer are contained
            within the DiskFontHeader struct.  The DiskFontHeader structure
            will also be freed as part of the UnLoadSeg() call.
            StripFont() is a new graphics.library call as of V36.

diskfont.library/OpenDiskFont                   diskfont.library/OpenDiskFont

   NAME
       OpenDiskFont - load and get a pointer to a disk font.

   SYNOPSIS
       font = OpenDiskFont(textAttr)
       D0                  A0

   FUNCTION
       This function finds the font with the specified textAttr on
       disk, loads it into memory, and returns a pointer to the font
       that can be used in subsequent SetFont and CloseFont calls.
       It is important to match this call with a corresponding
       CloseFont call for effective management of font memory.

       If the font is already in memory, the copy in memory is used.
       The disk copy is not reloaded.

   INPUTS
       textAttr - a TextAttr structure that describes the text font
               attributes desired.

   RESULTS
       D0 is zero if the desired font cannot be found.

   NOTES
       As of V36, OpenDiskFont() will automatically attempt to
       construct a font for you if:

               You have requested a font size which does not exist
               as a designed font, and

               You have not set the DESIGNED bit in the ta_Flags
               field of the TextAttr, or TTextAttr struct.

       Constructed fonts are created by scaling a designed font.
       A designed font is one which typically resides on disk,
       or in ROM (e.g., a font which has been designed by hand
       using a drawing tool).  Designed fonts generally look better
       than fonts constructed by the font scaler, but designed
       fonts also require disk space for each font size.

       Always set the DESIGNED bit if you do not want constructed fonts,
       or use AvailFonts() to find out which font sizes already exist.

   BUGS
       This routine will not work well with font names whose file
       name components are longer than the maximum allowed
       (30 characters).