CFont: A font component. This is a rendering-specific entity which is paired with a glyph index to uniquely indentify a glyph. Each abstract Font maps to one or more CFonts; the method for obtaining CFonts from Fonts is also rendering system specific. Cluster: A cluster is a small portion of text that is rendered as typographically intertwined glyphs. A number of properties are associated with clusters and cluster boundaries. 1) Clusters are the smallest unit of text that is guaranteed to progress in reading order. Within a cluster, reordering of glyphs may occur. 2) At the boundaries of clusters, character boundaries and glyph boundaries are guaranteed to coincide. 3) There will be a cursor position between every two clusters. There may not be a cursor position at some positions inside a cluster. 4) The cluster boundary is the only place where information about the correspondence between character position and screen position is conveyed from the shape-engine to the layers above. Engine: A script-specific object that is responsible for converting Unicode text into glyphs or resolving the properties of the text. Engines may be rendering-system specific or independent of rendering system. Font: An abstract font. The method in which a font is created is dependent on the rendering system. Item: An item is a portion of text in a single script, handled by a single shaping engine, and with a single directional level. g_script_itemize() returns a list of items. Module: A dynamically loaded shared object containing one or more Engines. Range: A subportion of an item. You pass a range into g_script_shape() by passing in the analysis structure for the item and some subportion of the text.