Font Store Component Overview

The Font Store contains all of the fonts and typefaces on a phone. It is encapsulated by the Font and Bitmap server which provides a client-side class that applications use to find which fonts are available and to find fonts to match their requirements.

The Font Store component is sometimes called the Open Font System or Open Font Framework.

Required background

  • You require no background knowledge or experience use the Font Store using the Font and Bitmap Server interfaces.

  • You require no background knowledge or experience to add new font files to the Font Store. You must simply copy the files to the appropriate location.

  • To create a font file or a font rasterizer, you require an in-depth knowledge of fonts and Symbian programming.

Architectural relationships

The Font Store can contain three types of font: bitmap fonts, which are stored as fixed-size pixel definitions; open fonts, which may be stored in any format; and linked fonts, which use characters from two or more other fonts. Open fonts must be converted into bitmaps (rasterized) before they can be used so the Font Store must also contain a font rasterizer for each format of open font.

Fonts are stored on Symbian phones as files. The Font Store maintains a list of font files along with specifications for each font that the file contains. When an application requests a font the Font Store searches its list for the best match. If the font is a bitmap font the Font Store loads it into the Font and Bitmap Server's shared heap (unless the font is in eXecute In Place (XIP) ROM, in which case it is accessed directly from ROM). If the font is an open font the Font Store uses the associated open font rasterizer to rasterize glyphs into the heap as they are required. Font rasterizers are ECOM plugins.

Figure 1. Font Store relationships

Font Store API summary

The Font Store contains APIs for specifying and selecting fonts and for rasterizing open fonts.

API Description

CBitmapFont

Bitmap-based font object

CFontStore

Central font storage class

CLinkedTypefaceGroup

Linked fonts typeface group

CLinkedTypefaceSpecification

Linked font creation

CLinkedTypefaceElementSpec

Linked font typeface element spec

COpenFont

Generic outline font object

COpenFontFile

Open font file

COpenFontRasterizer

Open font rasterizer

COpenFontRasterizerContext

Open font rasterizer context

TAlgStyle

Algorithmic style attributes

TCharacterMetrics

Character information

TLinkedTypeface

Linked fonts

TOpenFontAttachment

Diacritic attachment point information

TOpenFontCharMetrics

Open font character metrics

TOpenFontFaceAttrib

Open font typeface information

TOpenFontFaceAttribBase

Basic open font typeface information

TOpenFontGlyphData

Open font glyph information

TOpenFontMetrics

Open font information

TOpenFontSpec

Open font specification

Font Store tasks

The following functionality is provided by the fntstore subsystem component:

  • Font loading

    Font file loading using plug-in font rasterizers if required.

  • Font request matching

    Closest-fit matching of font requests.

  • Font linking

    The creation and use of Linked Fonts – virtual fonts that are made out of one or (usually) more physical fonts. These can be used to:

    • Combine multiple character ranges from individual fonts into a single font.

    • Allow an existing font containing a particular script to be customized to use regional variant characters.

    • Allow a comprehensive range of scripts to be built into a device ROM and multiple possible subsets to be defined and used by software configuration.

    Linked fonts are primarily used for system fonts. The fact that a font is a linked font is invisible to the user.

Platform security information

Font data files are installed in the read-only folder \resource\fonts.