COpenFont Class Reference

#include <openfont.h>

Link against: fntstr.lib

class COpenFont : public CBase

Inherits from

  • COpenFont
    Protected Attributes
    TInt iFontCapitalAscent
    TInt iFontLineGap
    TInt iFontMaxAscent
    TInt iFontMaxDescent
    TInt iFontStandardDescent
    RHeap *iHeap
    TOpenFontMetrics iMetrics
    Public Member Functions
    COpenFont(RHeap *, COpenFontSessionCacheList *, COpenFontFile *)
    COpenFont(RHeap *, COpenFontSessionCacheList *, COpenFontFile *, TInt)
    ~COpenFont()
    TBool CharacterNeedsToBeRasterized(TInt, TInt)
    TInt DecrementCachedRefCount(TInt, TShapeHeader *, TBool)
    voidDeleteShaper()
    virtual IMPORT_C voidExtendedInterface(TUid, TAny *&)
    const TOpenFontFaceAttrib *FaceAttrib()
    TInt FaceIndex()
    COpenFontFile *File()
    TInt FontCapitalAscent()
    TInt FontLineGap()
    TInt FontMaxAscent()
    TInt FontMaxDescent()
    TInt FontMaxHeight()
    TInt FontStandardDescent()
    TInt FreeShaperCacheMemory(TInt)
    TBool GetCharacterData(TInt, TInt, const TOpenFontCharMetrics *&, const TUint8 *&)
    COpenFontGlyphCache *GetGlyphCache()
    TShapeHeader *GetShapedData(TInt, TFontShapeFunctionParameters *)
    CShaper *GetShaper()
    TBool HasCharacterL(TInt)
    TBool HasShaper()
    TShapeHeader *InsertShapedDataIntoCache(TInt, TFontShapeFunctionParameters *, TShapeHeader *)
    const TOpenFontMetrics &Metrics()
    voidOnFileDeleted()
    TBool Rasterize(TInt, TInt, TOpenFontGlyphData *)
    pure virtual voidRasterizeL(TInt, TOpenFontGlyphData *)
    voidSetShaper(CShaper *)
    IMPORT_C voidoperator delete(TAny *)
    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

    Open Font System font abstract base class.

    Derive a class from this class to represent an instance of a typeface at a particular size, provide bitmaps of the glyphs, and determine whether characters exist in the typeface.

    Writing derived classes construction:

    You must call the constructor of this class when creating your derived object, passing the arguments aHeap and aSessionCacheList supplied to COpenFontFile::GetNearestFontInPixelsL(), and the address of the COpenFontFile object that creates the object as aFile.

    The derived object must be created on the shared heap aHeap because it is shared by several processes: the font and bitmap server and its clients. To do this, use aHeap->AllocL() to obtain memory, then construct in place using a placement argument to new.

    Derived classes must implement the pure virtual function RasterizeL(). Information about this function is provided in the function definition below.

    Information about deriving from this class is also provided in the API guide.

    See also: COpenFontFile::GetNearestFontInPixelsL()

    Member Attribute Documentation

    iFontCapitalAscent

    TInt iFontCapitalAscent[protected]

    The positive distance in pixels from the baseline to the top of an ANSI capital (whether or not there are ANSI capitals in the font)

    iFontLineGap

    TInt iFontLineGap[protected]

    The recommended baseline to baseline gap for successive lines of text in the font

    iFontMaxAscent

    TInt iFontMaxAscent[protected]

    The positive distance in pixels from the baseline to the top of the highest pre-composed glyph in the font

    iFontMaxDescent

    TInt iFontMaxDescent[protected]

    The positive distance in pixels from the baseline to the bottom of the lowest pre-composed glyph in the font

    iFontStandardDescent

    TInt iFontStandardDescent[protected]

    The positive distance in pixels from the baseline to the bottom of the lowest ANSI descender (whether or not there are ANSI chars in the font)

    iHeap

    RHeap *iHeap[protected]

    iMetrics

    TOpenFontMetrics iMetrics[protected]

    Constructor & Destructor Documentation

    COpenFont ( RHeap *, COpenFontSessionCacheList *, COpenFontFile * )

    IMPORT_CCOpenFont(RHeap *aHeap,
    COpenFontSessionCacheList *aSessionCacheList,
    COpenFontFile *aFile
    )

    C++ constructor taking shared heap, session cache list and font file as parameters.

    You must either use this, or the other constructor, when creating your derived object. This constructor might be used, in preference to the other, if there is only a single typeface in the font file.

    ParameterDescription
    aHeapThe shared heap.
    aSessionCacheListThe session cache list.
    aFileA pointer to the COpenFontFile object creating this COpenFont. e.g. when creating a COpenFont the COpenFontFile derived object would pass it this.

    COpenFont ( RHeap *, COpenFontSessionCacheList *, COpenFontFile *, TInt )

    IMPORT_CCOpenFont(RHeap *aHeap,
    COpenFontSessionCacheList *aSessionCacheList,
    COpenFontFile *aFile,
    TIntaFaceIndex
    )

    C++ constructor taking shared heap, session cache list, font file and face index as parameters.

    You must either use this, or the other constructor, when creating your derived object. This constructor would be used if the font file contains more than one typeface.

    ParameterDescription
    aHeapThe shared heap.
    aSessionCacheListThe session cache list.
    aFileA pointer to the COpenFontFile object creating this COpenFont. e.g. when creating a COpenFont the COpenFontFile derived object would pass it this.
    aFaceIndexThe index of the typeface within the font file aFile.

    ~COpenFont ( )

    IMPORT_C~COpenFont()

    Destructor

    This function frees all memory owned by the object, including the session cache list and the glyph list, prior to its destruction.

    Member Function Documentation

    CharacterNeedsToBeRasterized ( TInt, TInt )

    TBool CharacterNeedsToBeRasterized(TIntaSessionHandle,
    TIntaCode
    )const [inline]

    Tests whether or not a character needs to be rasterized.

    Characters that have been rasterized are cached there is no need to regenerate the character bitmap. This function should only be called by the Font and Bitmap server.

    ParameterDescription
    aSessionHandleA handle to the font and bitmap server session.
    aCodeThe code for the Unicode character.

    Returns: ETrue if the character needs to be rasterized, otherwise EFalse.

    DecrementCachedRefCount ( TInt, TShapeHeader *, TBool )

    TInt DecrementCachedRefCount(TIntaSessionHandle,
    TShapeHeader *aShapeHeader,
    TBoolaResetAll = EFalse
    )

    DeleteShaper ( )

    voidDeleteShaper()const

    ExtendedInterface ( TUid, TAny *& )

    IMPORT_C voidExtendedInterface(TUidaUid,
    TAny *&aParam
    )[virtual]

    FaceAttrib ( )

    const TOpenFontFaceAttrib *FaceAttrib()const [inline]

    Gets the typeface attributes.

    These are the attributes of the font represented by this object.

    Returns: The typeface attributes.

    FaceIndex ( )

    TInt FaceIndex()const [inline]

    Gets the index of this typeface within the font file.

    Returns: The index of this typeface within the font file.

    File ( )

    COpenFontFile *File()const [inline]

    Gets a pointer to the COpenFontFile which created this object.

    This is the COpenFontFile which owns the file that contains the definition of the typeface. It can be used to get information about the typeface, or to access the rasterizer context (engine).

    Returns: The COpenFontFile which created this object.

    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.

    See also: AscentInPixels()

    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.

    The value may be affected by the TLanguage value set by SetScriptTypeForMetrics().

    See also: AscentInPixels() SetScriptTypeForMetrics()

    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.

    The value may be affected by the TLanguage value set by SetScriptTypeForMetrics().

    See also: DescentInPixels() SetScriptTypeForMetrics()

    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 maximum height for the font. This is the sum of the max ascent of the font and the max descent of the font.

    The value may be affected by the TLanguage value set by SetScriptTypeForMetrics().

    See also: HeightInPixels() SetScriptTypeForMetrics()

    Returns: The positive maximum height of the font

    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.

    The value may be affected by the TLanguage value set by SetScriptTypeForMetrics().

    See also: DescentInPixels() SetScriptTypeForMetrics()

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

    FreeShaperCacheMemory ( TInt )

    TInt FreeShaperCacheMemory(TIntaBytesNeeded)

    GetCharacterData ( TInt, TInt, const TOpenFontCharMetrics *&, const TUint8 *& )

    TBool GetCharacterData(TIntaSessionHandle,
    TIntaCode,
    const TOpenFontCharMetrics *&aMetrics,
    const TUint8 *&aBitmap
    )const

    GetGlyphCache ( )

    COpenFontGlyphCache *GetGlyphCache()

    GetShapedData ( TInt, TFontShapeFunctionParameters * )

    TShapeHeader *GetShapedData(TIntaSessionHandle,
    TFontShapeFunctionParameters *aParams
    )

    GetShaper ( )

    CShaper *GetShaper()

    HasCharacterL ( TInt )

    TBool HasCharacterL(TIntaCode)const

    Is the specified character present in the font?

    HasShaper ( )

    TBool HasShaper()const

    InsertShapedDataIntoCache ( TInt, TFontShapeFunctionParameters *, TShapeHeader * )

    TShapeHeader *InsertShapedDataIntoCache(TIntaSessionHandle,
    TFontShapeFunctionParameters *aParams,
    TShapeHeader *aShapeHeader
    )

    Metrics ( )

    const TOpenFontMetrics &Metrics()const [inline]

    Gets the character metrics for this font.

    Returns: The character metrics for this font.

    OnFileDeleted ( )

    voidOnFileDeleted()

    Rasterize ( TInt, TInt, TOpenFontGlyphData * )

    TBool Rasterize(TIntaSessionHandle,
    TIntaCode,
    TOpenFontGlyphData *aGlyphData
    )

    Rasterize a glyph

    This function may only be called via an FBSERV message.

    ParameterDescription
    aSessionHandleSession handle of the calling session
    aCodeUnicode value or glyph code if top bit is set
    aGlyphDataOutput data. May be null, in which case output may be obtained through a call to GetCharacterData.

    Returns: ETrue if aGlyphData contains valid data (that is, if aGlyphData->Bitmap() and aGlyphData->Metrics() are valid), EFalse otherwise.

    RasterizeL ( TInt, TOpenFontGlyphData * )

    voidRasterizeL(TIntaCode,
    TOpenFontGlyphData *aGlyphData
    )[pure virtual]

    Creates a bitmap for the specified Unicode character.

    Implementations of this function should put the bitmap in aGlyphData->iBitmapBuffer, and the character metrics are placed in aGlyphData->iMetricsBuffer. The other parts of aGlyphData should be left alone.

    There are a number of strategies for achieving this, e.g. pass the rasterization task all the way up to the rasterizer engine. These are discussed in the API guide.

    At present you must write the bitmap in the Symbian platform's run-length-encoded format. This is a packed binary format starting on a byte boundary and made up of a number of sections. Each section starts with a five-bit header. If the first bit of the header is 0 the next four bits are a repeat count, starting with the least significant bit, and a single row of bits (the number of bits in a row is specified by aGlyphData->iMetricsBuffer.Width()) follows. If the first bit of the header is 1 the next four bits are a count of non-repeating rows, again starting with the least significant bit, and that many rows of bits follow.

    ParameterDescription
    aCodeThe character code of the Unicode character for which the bitmap is required.
    aGlyphDataOn return, contains a pointer to a TOpenFontGlyphData containing the character's bitmap and metrics.

    SetShaper ( CShaper * )

    voidSetShaper(CShaper *aShaper)

    operator delete ( TAny * )

    IMPORT_C voidoperator delete(TAny *)