CFont Class Reference

#include <gdi.h>

Link against: gdi.lib

class CFont : public CBase

Inherits from

  • CFont
    Public Member Enumerations
    enumTCharacterDataAvailability { ENoCharacterData, ECharacterWidthOnly, EAllCharacterData }
    enumTTextDirection { EHorizontal, EVertical }
    Public Member Functions
    IMPORT_C TIntAscentInPixels()
    IMPORT_C TIntBaselineOffsetInPixels()
    IMPORT_C TIntCharWidthInPixels(TChar)
    IMPORT_C TBoolCharactersJoin(TInt, TInt)
    IMPORT_C TIntDescentInPixels()
    IMPORT_C TIntExtendedFunction(TUid, TAny *)
    TInt FontCapitalAscent()
    TInt FontLineGap()
    TInt FontMaxAscent()
    TInt FontMaxDescent()
    TInt FontMaxHeight()
    IMPORT_C TFontSpecFontSpecInTwips()
    TInt FontStandardDescent()
    IMPORT_C TCharacterDataAvailabilityGetCharacterData(TUint, TOpenFontCharMetrics &, const TUint8 *&, TSize &)
    IMPORT_C TBoolGetCharacterPosition(TPositionParam &)
    IMPORT_C TBoolGetCharacterPosition2(TPositionParam &, RShapeInfo &)
    IMPORT_C TIntHeightInPixels()
    IMPORT_C TIntMaxCharWidthInPixels()
    IMPORT_C TIntMaxNormalCharWidthInPixels()
    IMPORT_C TIntMeasureText(const TDesC &, const TMeasureTextInput *, TMeasureTextOutput *)
    IMPORT_C TIntTextCount(const TDesC &, TInt)
    IMPORT_C TIntTextCount(const TDesC &, TInt, TInt &)
    IMPORT_C TIntTextWidthInPixels(const TDesC &)
    IMPORT_C TIntTextWidthInPixels(const TDesC &, const TMeasureTextInput *)
    IMPORT_C TUidTypeUid()
    IMPORT_C TIntWidthZeroInPixels()
    Protected Member Functions
    virtual ~CFont()
    virtual IMPORT_C TIntDoExtendedFunction(TUid, TAny *)
    virtual IMPORT_C TCharacterDataAvailabilityDoGetCharacterData(TUint, TOpenFontCharMetrics &, const TUint8 *&, TSize &)
    virtual IMPORT_C TBoolDoGetCharacterPosition(TPositionParam &)
    Inherited Functions
    CBase::CBase()
    CBase::Delete(CBase *)
    CBase::Extension_(TUint,TAny *&,TAny *)
    CBase::operator new(TUint)
    CBase::operator new(TUint,TAny *)
    CBase::operator new(TUint,TLeave)
    CBase::operator new(TUint,TLeave,TUint)
    CBase::operator new(TUint,TUint)
    CBase::~CBase()

    Detailed Description

    Abstract font interface.

    The CFont class provides a device-independent interface to a device-dependent font usually obtained from a call to GetNearestFont...() on a graphics device. It is used as a handle in CGraphicsContext::UseFont() and to obtain device-dependent information about the font - notably the pixel width of a text string.

    See also: CFbsFont CGraphicsContext::UseFont()

    Member Enumeration Documentation

    Enum TCharacterDataAvailability

    Data availability flags.

    Some fonts like printer fonts may only have width information and can return ECharacterWidthOnly to show this: the text drawing routines in CFont synthesize the rest of the data if necessary.

    See also: GetCharacterData()

    EnumeratorValueDescription
    ENoCharacterData

    No font information available.

    ECharacterWidthOnly

    Width information only is available.

    EAllCharacterData

    All character data is available.

    Enum TTextDirection

    Text direction flags.

    This enum is used in TMeasureTextInput and determines whether the text is drawn horizontally or vertically. Note: text is drawn vertically in some styles of Japanese, etc.

    See also: TMeasureTextInput

    EnumeratorValueDescription
    EHorizontal

    Text is drawn horizontally. Text is drawn horizontally.

    EVertical

    Text is drawn vertically.

    Constructor & Destructor Documentation

    ~CFont ( )

    IMPORT_C~CFont()[protected, virtual]

    Default destructor.

    Member Function Documentation

    AscentInPixels ( )

    IMPORT_C TIntAscentInPixels()const

    Gets the font ascent in pixels. Note that this deprecated function is replaced by the new FontMaxAscent() or in some cases FontCapitalAscent().

    See also: FontCapitalAscent() FontMaxAscent()

    Deprecated

    Returns: The font ascent in pixels.

    BaselineOffsetInPixels ( )

    IMPORT_C TIntBaselineOffsetInPixels()const

    Gets the baseline offset in pixels.

    The baseline offset is how far a font is raised or lowered from its normal baseline.

    Returns: Offset from normal baseline, in pixels.

    CharWidthInPixels ( TChar )

    IMPORT_C TIntCharWidthInPixels(TCharaChar)const

    Gets the width in pixels in this font of the specified character.

    Note: For OpenType fonts this function returns the horizontal advance of the character, which may be different from the actual width.

    ParameterDescription
    aCharThe character whose width should be determined.

    Returns: The width in pixels of the specified character in this font.

    CharactersJoin ( TInt, TInt )

    IMPORT_C TBoolCharactersJoin(TIntaLeftCharacter,
    TIntaRightCharacter
    )[static]

    Determines if aLeftCharacter and aRightCharacter affect each other's contextual glyph form if placed next to each other. If either character is a combining character, EFalse will be returned, which is not generally useful information. Pass in base characters ignoring intervening combining characters.

    ParameterDescription
    aLeftCharacterUnicode code for the character that stands on the left.
    aRightCharacterUnicode code for the character that stands on the right.

    Returns: EFalse if the characters do not affect the contextual glyphs that are be chosen when the two are rendered together, compared to being separated (for example by a space).

    DescentInPixels ( )

    IMPORT_C TIntDescentInPixels()const

    Gets the font descent in pixels. Note that this deprecated function is replaced by the new FontMaxDescent() or in some cases FontStandardDescent().

    See also: FontStandardDescent() FontMaxDescent()

    Deprecated

    Returns: The font descent in pixels.

    DoExtendedFunction ( TUid, TAny * )

    IMPORT_C TIntDoExtendedFunction(TUidaFunctionId,
    TAny *aParam = NULL
    )const [protected, virtual]

    API extension system that enables the caller to access a particular API extension function. N.B. Any overload of this function in a derived class should call its immediate parent implementation for any extension function Uid that it does not recognize and handle.

    ParameterDescription
    aParamPointer to an arbitrary parameter block that can be used to provide and/or return information to/from the particular extension function, defaults to NULL.

    Returns: Integer return value from extension function

    DoGetCharacterData ( TUint, TOpenFontCharMetrics &, const TUint8 *&, TSize & )

    IMPORT_C TCharacterDataAvailabilityDoGetCharacterData(TUintaCode,
    TOpenFontCharMetrics &aMetrics,
    const TUint8 *&aBitmap,
    TSize &aBitmapSize
    )const [protected, virtual]

    Gets the character metrics for a character.

    ParameterDescription
    aCodeThe character code.
    aMetricsOn return, contains the character bitmap.
    aBitmapOn return, this points to NULL.
    aBitmapSizeOn return, this has a size of (0,0).

    Returns: ECharacterWidthOnly

    DoGetCharacterPosition ( TPositionParam & )

    IMPORT_C TBoolDoGetCharacterPosition(TPositionParam &aParam)const [protected, virtual]

    Overridable function innards of GetCharacterPosition and GetCharacterPosition2. It is generally not useful to override this function.

    See also: GetCharacterPosition GetCharacterPosition2

    ExtendedFunction ( TUid, TAny * )

    IMPORT_C TIntExtendedFunction(TUidaFunctionId,
    TAny *aParam = NULL
    )const

    Enables the caller to access a particular API extension function. N.B. Any overload of this function in a derived class should call its immediate parent implementation for any extension function UID that it does not recognize and handle.

    ParameterDescription
    aFunctionIdUID of the required extension function
    aParamPointer to an arbitrary parameter block that can be used to provide and/or return information to/from the particular extension function, defaults to NULL.

    Returns: Integer return value from extension function

    FontCapitalAscent ( )

    TInt FontCapitalAscent()const [inline]

    Gets the ascent of an ANSI capital letter in the font whether or not there are any ANSI capitals in the font.

    Returns: The positive distance from the font baseline to the top of a standard ANSI capital letter

    FontLineGap ( )

    TInt FontLineGap()const [inline]

    Gets the suggested line gap for the font. This is the recommended baseline to baseline distance between successive lines of text in the font.

    Returns: The positive recommended gap between successive lines

    FontMaxAscent ( )

    TInt FontMaxAscent()const [inline]

    Gets the max ascent of any pre-composed glyph in the font. This will include accents or diacritics that form part of pre-composed glyphs. It is not guaranteed to cover the max ascent of composite glyphs that have to be created by a layout engine. This is also the recommended distance between the top of a text box and the baseline of the first line of text.

    Returns: The positive distance from the font baseline to the top of the highest pre-composed glyph (including accents) above the baseline

    FontMaxDescent ( )

    TInt FontMaxDescent()const [inline]

    Gets the max descent of any pre-composed glyph in the font. This will include accents or diacritics that form part of pre-composed glyphs. It is not guaranteed to cover the max descent of composite glyphs that have to be created by a layout engine.

    Returns: The positive distance from the font baseline to the bottom of the lowest pre-composed glyph (including accents) below the baseline

    FontMaxHeight ( )

    TInt FontMaxHeight()const [inline]

    Gets the (positive) maximum height in pixels of the font. This may differ from the design height.

    Returns: The maximum height of the font.

    FontSpecInTwips ( )

    IMPORT_C TFontSpecFontSpecInTwips()const

    Gets the font specification of this font in twips.

    Returns: The font specification of this font (in twips).

    FontStandardDescent ( )

    TInt FontStandardDescent()const [inline]

    Gets the descent of an ANSI descending character in the font. Whether or not there are any ANSI descenders in the font.

    Returns: The positive distance from the font baseline to the bottom of the lowest ANSI descender

    GetCharacterData ( TUint, TOpenFontCharMetrics &, const TUint8 *&, TSize & )

    IMPORT_C TCharacterDataAvailabilityGetCharacterData(TUintaCode,
    TOpenFontCharMetrics &aMetrics,
    const TUint8 *&aBitmap,
    TSize &aBitmapSize
    )const

    Gets the character metrics for a character.

    ParameterDescription
    aCodeThe character code.
    aMetricsOn return, contains the character bitmap.
    aBitmapOn return, this points to NULL.
    aBitmapSizeOn return, this has a size of (0,0).

    Returns: ECharacterWidthOnly

    GetCharacterPosition ( TPositionParam & )

    IMPORT_C TBoolGetCharacterPosition(TPositionParam &aParam)const

    Transforms one cluster of characters (base character plus combining marks, ligature or indic syllable) into one cluster of glyphs together with their positions. Repeated calls of this function (for the same input text) are considerably slower than repeated calls of GetCharacterPosition2 for Indic text (such as Hindi), as GetCharacterPosition2 can cache information between calls.

    See also: GetCharacterPosition2

    ParameterDescription
    aParamInput and output parameters

    Returns: True for success

    GetCharacterPosition2 ( TPositionParam &, RShapeInfo & )

    IMPORT_C TBoolGetCharacterPosition2(TPositionParam &aParam,
    RShapeInfo &aShapeInfo
    )const

    Takes Unicode text and produces the glyph cluster for the first character in that text plus any combining mark characters, or for the first indic syllable. It is responsible for contextual glyph selection, ligature creation and diacritic placement.

    See also: CFont::TPositionParam

    ParameterDescription
    aParamThe input/output parameter of the text/glyph data for the algorithm.
    aShapeInfoThe function will cache "shaped" text (e.g. complex scripts such as Devanagari) here. aShapeInfo must be freshly-constructed or closed for each new piece of text in aParam.iText. If aParam.iText is unchanged between calls, aShapeInfo should be passed back in unchanged as well.

    Returns: ETrue if glyphs for supplied text have been produced, EFalse in failure.

    HeightInPixels ( )

    IMPORT_C TIntHeightInPixels()const

    Gets the font height in pixels. Note that this deprecated function is replaced by the new FontMaxHeight().

    See also: FontMaxHeight()

    Deprecated

    Returns: The font height in pixels.

    MaxCharWidthInPixels ( )

    IMPORT_C TIntMaxCharWidthInPixels()const

    Gets the width in pixels of the widest character in this font.

    Returns: The width of the maximum width character, in pixels.

    MaxNormalCharWidthInPixels ( )

    IMPORT_C TIntMaxNormalCharWidthInPixels()const

    Gets the width in pixels of the widest normal character in this font.

    Normal characters include all character in a character set except non-alphabetic characters (e.g. the copyright symbol, or a block graphics symbol, for example).

    Returns: The width of the maximum width normal character, in pixels.

    MeasureText ( const TDesC &, const TMeasureTextInput *, TMeasureTextOutput * )

    IMPORT_C TIntMeasureText(const TDesC &aText,
    const TMeasureTextInput *aInput = NULL,
    TMeasureTextOutput *aOutput = NULL
    )const

    Text measurement function.

    This is a powerful text measurement function underlying all the other text measurement functions. It takes optional input and output parameter blocks, which may be null, and returns the advance width (change in pen position when drawn horizontally) of the text, or the advance height, if the text is drawn vertically.

    Some of the functions that can be performed using this function are listed below. Many of them are used by the Text Views API to do its typographic layout.
    panic
    GDI 1 In debug builds only, if TMeasureTextInput::iStartInputChar is negative.
    ParameterDescription
    aTextThe text to be measured.
    aInputThe input block. This may be NULL.
    aOutputThe output block. This may be NULL.

    Returns: The advance width if the text is drawn horizontally or the advance height if the text is drawn vertically.

    TextCount ( const TDesC &, TInt )

    IMPORT_C TIntTextCount(const TDesC &aText,
    TIntaWidthInPixels
    )const

    Gets how much of the specified descriptor can be displayed in this font without exceeding the specified width.

    Note:

    This function does not display any of the descriptor itself - it is used before display, to test whether the whole descriptor can be displayed.

    ParameterDescription
    aTextThe descriptor.
    aWidthInPixelsThe available width for character display.

    Returns: The number of characters which will be able to be displayed without exceeding the specified width. The count starts from the beginning of the descriptor.

    TextCount ( const TDesC &, TInt, TInt & )

    IMPORT_C TIntTextCount(const TDesC &aText,
    TIntaWidthInPixels,
    TInt &aExcessWidthInPixels
    )const

    Gets how much of the specified descriptor can be displayed in this font without exceeding the specified width.

    It also returns the excess width - defined as the specified available width minus the width of the portion of the descriptor which can be displayed without exceeding the available width.

    ParameterDescription
    aTextThe descriptor.
    aWidthInPixelsThe available width for character display.
    aExcessWidthInPixelsThe excess width after displaying the portion of the descriptor, in pixels.

    Returns: The number of characters which will be able to be displayed without exceeding the specified width. The count starts from the beginning of the descriptor.

    TextWidthInPixels ( const TDesC & )

    IMPORT_C TIntTextWidthInPixels(const TDesC &aText)const

    Gets the width in pixels of the specified descriptor when displayed in this font.

    ParameterDescription
    aTextThe descriptor whose width should be determined.

    Returns: The width of the specified descriptor when displayed in this font, in pixels.

    TextWidthInPixels ( const TDesC &, const TMeasureTextInput * )

    IMPORT_C TIntTextWidthInPixels(const TDesC &aText,
    const TMeasureTextInput *aParam
    )const

    Gets the width in pixels of the specified descriptor when displayed in this font.

    ParameterDescription
    aTextThe descriptor whose width should be determined.
    aParamParameter block that controls how much of aText is measured

    Returns: The width of the specified descriptor when displayed in this font, in pixels.

    TypeUid ( )

    IMPORT_C TUidTypeUid()const

    Gets run-time identity of the actual font type. This enables safe casting to a derived type.

    For example, if the derived type is a CFbsFont, the return value is KCFbsFontUid. You would need to cast to a CFbsFont to get a character bounding box. Similarly, a CBitmapFont returns KCBitmapFontUidVal.

    Returns: The font-type identifier.

    WidthZeroInPixels ( )

    IMPORT_C TIntWidthZeroInPixels()const

    Gets the width of the zero character of this font in pixels.

    This function is provided as the "0" character is roughly the average width of the characters of any font.

    Returns: The width of the "0" character, in pixels.