summaryrefslogtreecommitdiff
path: root/third_party/freetype-py/freetype/ft_structs.py
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/freetype-py/freetype/ft_structs.py')
-rw-r--r--third_party/freetype-py/freetype/ft_structs.py944
1 files changed, 0 insertions, 944 deletions
diff --git a/third_party/freetype-py/freetype/ft_structs.py b/third_party/freetype-py/freetype/ft_structs.py
deleted file mode 100644
index c669c92..0000000
--- a/third_party/freetype-py/freetype/ft_structs.py
+++ /dev/null
@@ -1,944 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# -----------------------------------------------------------------------------
-#
-# FreeType high-level python API - Copyright 2011 Nicolas P. Rougier
-# Distributed under the terms of the new BSD license.
-#
-# -----------------------------------------------------------------------------
-'''
-Freetype structured types
--------------------------
-
-FT_Library: A handle to a FreeType library instance.
-
-FT_Vector: A simple structure used to store a 2D vector.
-
-FT_BBox: A structure used to hold an outline's bounding box.
-
-FT_Matrix: A simple structure used to store a 2x2 matrix.
-
-FT_UnitVector: A simple structure used to store a 2D vector unit vector.
-
-FT_Bitmap: A structure used to describe a bitmap or pixmap to the raster.
-
-FT_Data: Read-only binary data represented as a pointer and a length.
-
-FT_Generic: Client applications generic data.
-
-FT_Bitmap_Size: Metrics of a bitmap strike.
-
-FT_Charmap: The base charmap structure.
-
-FT_Glyph_Metrics:A structure used to model the metrics of a single glyph.
-
-FT_Outline: This structure is used to describe an outline to the scan-line
- converter.
-
-FT_GlyphSlot: FreeType root glyph slot class structure.
-
-FT_Glyph: The root glyph structure contains a given glyph image plus its
- advance width in 16.16 fixed float format.
-
-FT_Size_Metrics: The size metrics structure gives the metrics of a size object.
-
-FT_Size: FreeType root size class structure.
-
-FT_Face: FreeType root face class structure.
-
-FT_Parameter: A simple structure used to pass more or less generic parameters
- to FT_Open_Face.
-
-FT_Open_Args: A structure used to indicate how to open a new font file or
- stream.
-
-FT_SfntName: A structure used to model an SFNT 'name' table entry.
-
-FT_Stroker: Opaque handler to a path stroker object.
-
-FT_BitmapGlyph: A structure used for bitmap glyph images.
-'''
-from freetype.ft_types import *
-
-
-# -----------------------------------------------------------------------------
-# A handle to a FreeType library instance. Each 'library' is completely
-# independent from the others; it is the 'root' of a set of objects like fonts,
-# faces, sizes, etc.
-class FT_LibraryRec(Structure):
- '''
- A handle to a FreeType library instance. Each 'library' is completely
- independent from the others; it is the 'root' of a set of objects like
- fonts, faces, sizes, etc.
- '''
- _fields_ = [ ]
-FT_Library = POINTER(FT_LibraryRec)
-
-
-
-# -----------------------------------------------------------------------------
-# A simple structure used to store a 2D vector; coordinates are of the FT_Pos
-# type.
-class FT_Vector(Structure):
- '''
- A simple structure used to store a 2D vector; coordinates are of the FT_Pos
- type.
-
- x: The horizontal coordinate.
- y: The vertical coordinate.
- '''
- _fields_ = [('x', FT_Pos),
- ('y', FT_Pos)]
-
-
-
-# -----------------------------------------------------------------------------
-# A structure used to hold an outline's bounding box, i.e., the coordinates of
-# its extrema in the horizontal and vertical directions.
-#
-# The bounding box is specified with the coordinates of the lower left and the
-# upper right corner. In PostScript, those values are often called (llx,lly)
-# and (urx,ury), respectively.
-#
-# If 'yMin' is negative, this value gives the glyph's descender. Otherwise, the
-# glyph doesn't descend below the baseline. Similarly, if 'ymax' is positive,
-# this value gives the glyph's ascender.
-#
-# 'xMin' gives the horizontal distance from the glyph's origin to the left edge
-# of the glyph's bounding box. If 'xMin' is negative, the glyph extends to the
-# left of the origin.
-class FT_BBox(Structure):
- '''
- A structure used to hold an outline's bounding box, i.e., the coordinates
- of its extrema in the horizontal and vertical directions.
-
- The bounding box is specified with the coordinates of the lower left and
- the upper right corner. In PostScript, those values are often called
- (llx,lly) and (urx,ury), respectively.
-
- If 'yMin' is negative, this value gives the glyph's descender. Otherwise,
- the glyph doesn't descend below the baseline. Similarly, if 'ymax' is
- positive, this value gives the glyph's ascender.
-
- 'xMin' gives the horizontal distance from the glyph's origin to the left
- edge of the glyph's bounding box. If 'xMin' is negative, the glyph extends
- to the left of the origin.
-
- xMin: The horizontal minimum (left-most).
- yMin: The vertical minimum (bottom-most).
- xMax: The horizontal maximum (right-most).
- yMax: The vertical maximum (top-most).
- '''
- _fields_ = [('xMin', FT_Pos),
- ('yMin', FT_Pos),
- ('xMax', FT_Pos),
- ('yMax', FT_Pos)]
-
-
-
-# -----------------------------------------------------------------------------
-# A simple structure used to store a 2x2 matrix. Coefficients are in 16.16
-# fixed float format. The computation performed is:
-# x' = x*xx + y*xy
-# y' = x*yx + y*yy
-class FT_Matrix(Structure):
- '''
- A simple structure used to store a 2x2 matrix. Coefficients are in 16.16
- fixed float format. The computation performed is:
-
- x' = x*xx + y*xy
- y' = x*yx + y*yy
-
- xx: Matrix coefficient.
- xy: Matrix coefficient.
- yx: Matrix coefficient.
- yy: Matrix coefficient.
- '''
- _fields_ = [('xx', FT_Fixed),
- ('xy', FT_Fixed),
- ('yx', FT_Fixed),
- ('yy', FT_Fixed)]
-
-
-
-# -----------------------------------------------------------------------------
-# A simple structure used to store a 2D vector unit vector. Uses FT_F2Dot14
-# types.
-class FT_UnitVector(Structure):
- '''
- A simple structure used to store a 2D vector unit vector. Uses FT_F2Dot14
- types.
-
- x: The horizontal coordinate.
- y: The vertical coordinate.
- '''
- _fields_ = [('x', FT_F2Dot14),
- ('y', FT_F2Dot14)]
-
-
-
-# -----------------------------------------------------------------------------
-# A structure used to describe a bitmap or pixmap to the raster. Note that we
-# now manage pixmaps of various depths through the 'pixel_mode' field.
-class FT_Bitmap(Structure):
- '''
- A structure used to describe a bitmap or pixmap to the raster. Note that we
- now manage pixmaps of various depths through the 'pixel_mode' field.
-
- rows: The number of bitmap rows.
-
- width: The number of pixels in bitmap row.
-
- pitch: The pitch's absolute value is the number of bytes taken by one
- bitmap row, including padding. However, the pitch is positive when
- the bitmap has a 'down' flow, and negative when it has an 'up'
- flow. In all cases, the pitch is an offset to add to a bitmap
- pointer in order to go down one row.
-
- Note that 'padding' means the alignment of a bitmap to a byte
- border, and FreeType functions normally align to the smallest
- possible integer value.
-
- For the B/W rasterizer, 'pitch' is always an even number.
-
- To change the pitch of a bitmap (say, to make it a multiple of 4),
- use FT_Bitmap_Convert. Alternatively, you might use callback
- functions to directly render to the application's surface; see the
- file 'example2.py' in the tutorial for a demonstration.
-
- buffer: A typeless pointer to the bitmap buffer. This value should be
- aligned on 32-bit boundaries in most cases.
-
- num_grays: This field is only used with FT_PIXEL_MODE_GRAY; it gives the
- number of gray levels used in the bitmap.
-
- pixel_mode: The pixel mode, i.e., how pixel bits are stored. See
- FT_Pixel_Mode for possible values.
-
- palette_mode: This field is intended for paletted pixel modes; it indicates
- how the palette is stored. Not used currently.
-
- palette: A typeless pointer to the bitmap palette; this field is intended
- for paletted pixel modes. Not used currently.
- '''
- _fields_ = [
- ('rows', c_int),
- ('width', c_int),
- ('pitch', c_int),
- # declaring buffer as c_char_p confuses ctypes
- ('buffer', POINTER(c_ubyte)),
- ('num_grays', c_short),
- ('pixel_mode', c_ubyte),
- ('palette_mode', c_char),
- ('palette', c_void_p) ]
-
-
-
-# -----------------------------------------------------------------------------
-# Read-only binary data represented as a pointer and a length.
-class FT_Data(Structure):
- '''
- Read-only binary data represented as a pointer and a length.
-
- pointer: The data.
- length: The length of the data in bytes.
- '''
- _fields_ = [('pointer', POINTER(FT_Byte)),
- ('y', FT_Int)]
-
-
-
-# -----------------------------------------------------------------------------
-# Client applications often need to associate their own data to a variety of
-# FreeType core objects. For example, a text layout API might want to associate
-# a glyph cache to a given size object.
-#
-# Most FreeType object contains a 'generic' field, of type FT_Generic, which
-# usage is left to client applications and font servers.
-#
-# It can be used to store a pointer to client-specific data, as well as the
-# address of a 'finalizer' function, which will be called by FreeType when the
-# object is destroyed (for example, the previous client example would put the
-# address of the glyph cache destructor in the 'finalizer' field).
-class FT_Generic(Structure):
- '''
- Client applications often need to associate their own data to a variety of
- FreeType core objects. For example, a text layout API might want to
- associate a glyph cache to a given size object.
-
- Most FreeType object contains a 'generic' field, of type FT_Generic, which
- usage is left to client applications and font servers.
-
- It can be used to store a pointer to client-specific data, as well as the
- address of a 'finalizer' function, which will be called by FreeType when
- the object is destroyed (for example, the previous client example would put
- the address of the glyph cache destructor in the 'finalizer' field).
-
- data: A typeless pointer to any client-specified data. This field is
- completely ignored by the FreeType library.
- finalizer: A pointer to a 'generic finalizer' function, which will be
- called when the object is destroyed. If this field is set to
- NULL, no code will be called.
- '''
- _fields_ = [('data', c_void_p),
- ('finalizer', FT_Generic_Finalizer)]
-
-
-
-
-# -----------------------------------------------------------------------------
-# This structure models the metrics of a bitmap strike (i.e., a set of glyphs
-# for a given point size and resolution) in a bitmap font. It is used for the
-# 'available_sizes' field of FT_Face.
-class FT_Bitmap_Size(Structure):
- '''
- This structure models the metrics of a bitmap strike (i.e., a set of glyphs
- for a given point size and resolution) in a bitmap font. It is used for the
- 'available_sizes' field of FT_Face.
-
- height: The vertical distance, in pixels, between two consecutive
- baselines. It is always positive.
-
- width: The average width, in pixels, of all glyphs in the strike.
-
- size: The nominal size of the strike in 26.6 fractional points. This field
- is not very useful.
-
- x_ppem: The horizontal ppem (nominal width) in 26.6 fractional pixels.
-
- y_ppem: The vertical ppem (nominal height) in 26.6 fractional pixels.
- '''
- _fields_ = [
- ('height', FT_Short),
- ('width', FT_Short),
- ('size', FT_Pos),
- ('x_ppem', FT_Pos),
- ('y_ppem', FT_Pos) ]
-
-
-
-# -----------------------------------------------------------------------------
-# The base charmap structure.
-class FT_CharmapRec(Structure):
- '''
- The base charmap structure.
-
- face : A handle to the parent face object.
-
- encoding : An FT_Encoding tag identifying the charmap. Use this with
- FT_Select_Charmap.
-
- platform_id: An ID number describing the platform for the following
- encoding ID. This comes directly from the TrueType
- specification and should be emulated for other formats.
-
- encoding_id: A platform specific encoding number. This also comes from the
- TrueType specification and should be emulated similarly.
- '''
- _fields_ = [
- ('face', c_void_p), # Shoudl be FT_Face
- ('encoding', FT_Encoding),
- ('platform_id', FT_UShort),
- ('encoding_id', FT_UShort),
- ]
-FT_Charmap = POINTER(FT_CharmapRec)
-
-
-
-# -----------------------------------------------------------------------------
-# A structure used to model the metrics of a single glyph. The values are
-# expressed in 26.6 fractional pixel format; if the flag FT_LOAD_NO_SCALE has
-# been used while loading the glyph, values are expressed in font units
-# instead.
-class FT_Glyph_Metrics(Structure):
- '''
- A structure used to model the metrics of a single glyph. The values are
- expressed in 26.6 fractional pixel format; if the flag FT_LOAD_NO_SCALE has
- been used while loading the glyph, values are expressed in font units
- instead.
-
- width: The glyph's width.
-
- height: The glyph's height.
-
- horiBearingX: Left side bearing for horizontal layout.
-
- horiBearingY: Top side bearing for horizontal layout.
-
- horiAdvance: Advance width for horizontal layout.
-
- vertBearingX: Left side bearing for vertical layout.
-
- vertBearingY: Top side bearing for vertical layout.
-
- vertAdvance: Advance height for vertical layout.
- '''
- _fields_ = [
- ('width', FT_Pos),
- ('height', FT_Pos),
- ('horiBearingX', FT_Pos),
- ('horiBearingY', FT_Pos),
- ('horiAdvance', FT_Pos),
- ('vertBearingX', FT_Pos),
- ('vertBearingY', FT_Pos),
- ('vertAdvance', FT_Pos),
- ]
-
-
-
-# -----------------------------------------------------------------------------
-# This structure is used to describe an outline to the scan-line converter.
-class FT_Outline(Structure):
- '''
- This structure is used to describe an outline to the scan-line converter.
-
- n_contours: The number of contours in the outline.
-
- n_points: The number of points in the outline.
-
- points: A pointer to an array of 'n_points' FT_Vector elements, giving the
- outline's point coordinates.
-
- tags: A pointer to an array of 'n_points' chars, giving each outline
- point's type.
-
- If bit 0 is unset, the point is 'off' the curve, i.e., a Bezier
- control point, while it is 'on' if set.
-
- Bit 1 is meaningful for 'off' points only. If set, it indicates a
- third-order Bezier arc control point; and a second-order control
- point if unset.
-
- If bit 2 is set, bits 5-7 contain the drop-out mode (as defined in
- the OpenType specification; the value is the same as the argument to
- the SCANMODE instruction).
-
- Bits 3 and 4 are reserved for internal purposes.
-
- contours: An array of 'n_contours' shorts, giving the end point of each
- contour within the outline. For example, the first contour is
- defined by the points '0' to 'contours[0]', the second one is
- defined by the points 'contours[0]+1' to 'contours[1]', etc.
-
- flags: A set of bit flags used to characterize the outline and give hints
- to the scan-converter and hinter on how to convert/grid-fit it. See
- FT_OUTLINE_FLAGS.
- '''
- _fields_ = [
- ('n_contours', c_short),
- ('n_points', c_short),
- ('points', POINTER(FT_Vector)),
- # declaring buffer as c_char_p would prevent us to acces all tags
- ('tags', POINTER(c_ubyte)),
- ('contours', POINTER(c_short)),
- ('flags', c_int),
- ]
-
-
-# -----------------------------------------------------------------------------
-# The root glyph structure contains a given glyph image plus its advance width
-# in 16.16 fixed float format.
-
-class FT_GlyphRec(Structure):
- '''
- The root glyph structure contains a given glyph image plus its advance
- width in 16.16 fixed float format.
-
- library: A handle to the FreeType library object.
-
- clazz: A pointer to the glyph's class. Private.
-
- format: The format of the glyph's image.
-
- advance: A 16.16 vector that gives the glyph's advance width.
- '''
- _fields_ = [
- ('library', FT_Library),
- ('clazz', c_void_p),
- ('format', FT_Glyph_Format),
- ('advance', FT_Vector)
- ]
-FT_Glyph = POINTER(FT_GlyphRec)
-
-
-
-# -----------------------------------------------------------------------------
-# FreeType root glyph slot class structure. A glyph slot is a container where
-# individual glyphs can be loaded, be they in outline or bitmap format.
-class FT_GlyphSlotRec(Structure):
- '''
- FreeType root glyph slot class structure. A glyph slot is a container where
- individual glyphs can be loaded, be they in outline or bitmap format.
-
- library: A handle to the FreeType library instance this slot belongs to.
-
- face: A handle to the parent face object.
-
- next: In some cases (like some font tools), several glyph slots per face
- object can be a good thing. As this is rare, the glyph slots are
- listed through a direct, single-linked list using its 'next' field.
-
- generic: A typeless pointer which is unused by the FreeType library or any
- of its drivers. It can be used by client applications to link
- their own data to each glyph slot object.
-
- metrics: The metrics of the last loaded glyph in the slot. The returned
- values depend on the last load flags (see the FT_Load_Glyph API
- function) and can be expressed either in 26.6 fractional pixels or
- font units.
-
- Note that even when the glyph image is transformed, the metrics
- are not.
-
- linearHoriAdvance: The advance width of the unhinted glyph. Its value is
- expressed in 16.16 fractional pixels, unless
- FT_LOAD_LINEAR_DESIGN is set when loading the
- glyph. This field can be important to perform correct
- WYSIWYG layout. Only relevant for outline glyphs.
-
- linearVertAdvance: The advance height of the unhinted glyph. Its value is
- expressed in 16.16 fractional pixels, unless
- FT_LOAD_LINEAR_DESIGN is set when loading the
- glyph. This field can be important to perform correct
- WYSIWYG layout. Only relevant for outline glyphs.
-
- advance: This shorthand is, depending on FT_LOAD_IGNORE_TRANSFORM, the
- transformed advance width for the glyph (in 26.6 fractional pixel
- format). As specified with FT_LOAD_VERTICAL_LAYOUT, it uses either
- the 'horiAdvance' or the 'vertAdvance' value of 'metrics' field.
-
- format: This field indicates the format of the image contained in the glyph
- slot. Typically FT_GLYPH_FORMAT_BITMAP, FT_GLYPH_FORMAT_OUTLINE, or
- FT_GLYPH_FORMAT_COMPOSITE, but others are possible.
-
- bitmap: This field is used as a bitmap descriptor when the slot format is
- FT_GLYPH_FORMAT_BITMAP. Note that the address and content of the
- bitmap buffer can change between calls of FT_Load_Glyph and a few
- other functions.
-
- bitmap_left: This is the bitmap's left bearing expressed in integer
- pixels. Of course, this is only valid if the format is
- FT_GLYPH_FORMAT_BITMAP.
-
- bitmap_top: This is the bitmap's top bearing expressed in integer
- pixels. Remember that this is the distance from the baseline to
- the top-most glyph scanline, upwards y coordinates being
- positive.
-
- outline: The outline descriptor for the current glyph image if its format
- is FT_GLYPH_FORMAT_OUTLINE. Once a glyph is loaded, 'outline' can
- be transformed, distorted, embolded, etc. However, it must not be
- freed.
-
- num_subglyphs: The number of subglyphs in a composite glyph. This field is
- only valid for the composite glyph format that should
- normally only be loaded with the FT_LOAD_NO_RECURSE
- flag. For now this is internal to FreeType.
-
- subglyphs: An array of subglyph descriptors for composite glyphs. There are
- 'num_subglyphs' elements in there. Currently internal to
- FreeType.
-
- control_data: Certain font drivers can also return the control data for a
- given glyph image (e.g. TrueType bytecode, Type 1
- charstrings, etc.). This field is a pointer to such data.
-
- control_len: This is the length in bytes of the control data.
-
- other: Really wicked formats can use this pointer to present their own
- glyph image to client applications. Note that the application needs
- to know about the image format.
-
- lsb_delta: The difference between hinted and unhinted left side bearing
- while autohinting is active. Zero otherwise.
-
- rsb_delta: The difference between hinted and unhinted right side bearing
- while autohinting is active. Zero otherwise.
- '''
- _fields_ = [
- ('library', FT_Library),
- ('face', c_void_p),
- ('next', c_void_p),
- ('reserved', c_uint),
- ('generic', FT_Generic),
-
- ('metrics', FT_Glyph_Metrics),
- ('linearHoriAdvance', FT_Fixed),
- ('linearVertAdvance', FT_Fixed),
- ('advance', FT_Vector),
-
- ('format', FT_Glyph_Format),
-
- ('bitmap', FT_Bitmap),
- ('bitmap_left', FT_Int),
- ('bitmap_top', FT_Int),
-
- ('outline', FT_Outline),
- ('num_subglyphs', FT_UInt),
- ('subglyphs', c_void_p),
-
- ('control_data', c_void_p),
- ('control_len', c_long),
-
- ('lsb_delta', FT_Pos),
- ('rsb_delta', FT_Pos),
- ('other', c_void_p),
- ('internal', c_void_p),
- ]
-FT_GlyphSlot = POINTER(FT_GlyphSlotRec)
-
-
-
-# -----------------------------------------------------------------------------
-# The size metrics structure gives the metrics of a size object.
-class FT_Size_Metrics(Structure):
- '''
- The size metrics structure gives the metrics of a size object.
-
- x_ppem: The width of the scaled EM square in pixels, hence the term 'ppem'
- (pixels per EM). It is also referred to as 'nominal width'.
-
- y_ppem: The height of the scaled EM square in pixels, hence the term 'ppem'
- (pixels per EM). It is also referred to as 'nominal height'.
-
- x_scale: A 16.16 fractional scaling value used to convert horizontal
- metrics from font units to 26.6 fractional pixels. Only relevant
- for scalable font formats.
-
- y_scale: A 16.16 fractional scaling value used to convert vertical metrics
- from font units to 26.6 fractional pixels. Only relevant for
- scalable font formats.
-
- ascender: The ascender in 26.6 fractional pixels. See FT_FaceRec for the
- details.
-
- descender: The descender in 26.6 fractional pixels. See FT_FaceRec for the
- details.
-
- height: The height in 26.6 fractional pixels. See FT_FaceRec for the
- details.
-
- max_advance: The maximal advance width in 26.6 fractional pixels. See
- FT_FaceRec for the details.
- '''
- _fields_ = [
- ('x_ppem', FT_UShort),
- ('y_ppem', FT_UShort),
-
- ('x_scale', FT_Fixed),
- ('y_scale', FT_Fixed),
-
- ('ascender', FT_Pos),
- ('descender', FT_Pos),
- ('height', FT_Pos),
- ('max_advance', FT_Pos),
- ]
-
-
-
-# -----------------------------------------------------------------------------
-# FreeType root size class structure. A size object models a face object at a
-# given size.
-class FT_SizeRec(Structure):
- '''
- FreeType root size class structure. A size object models a face object at a
- given size.
-
- face: Handle to the parent face object.
-
- generic: A typeless pointer, which is unused by the FreeType library or any
- of its drivers. It can be used by client applications to link
- their own data to each size object.
-
- metrics: Metrics for this size object. This field is read-only.
- '''
- _fields_ = [
- ('face', c_void_p),
- ('generic', FT_Generic),
- ('metrics', FT_Size_Metrics),
- ('internal', c_void_p),
- ]
-FT_Size = POINTER(FT_SizeRec)
-
-
-
-# -----------------------------------------------------------------------------
-# FreeType root face class structure. A face object models a typeface in a font
-# file.
-class FT_FaceRec(Structure):
- '''
- FreeType root face class structure. A face object models a typeface in a
- font file.
-
- num_faces: The number of faces in the font file. Some font formats can have
- multiple faces in a font file.
-
- face_index: The index of the face in the font file. It is set to 0 if there
- is only one face in the font file.
-
- face_flags: A set of bit flags that give important information about the
- face; see FT_FACE_FLAG_XXX for the details.
-
- style_flags: A set of bit flags indicating the style of the face; see
- FT_STYLE_FLAG_XXX for the details.
-
- num_glyphs: The number of glyphs in the face. If the face is scalable and
- has sbits (see 'num_fixed_sizes'), it is set to the number of
- outline glyphs.
-
- For CID-keyed fonts, this value gives the highest CID used in
- the font.
-
- family_name: The face's family name. This is an ASCII string, usually in
- English, which describes the typeface's family (like 'Times
- New Roman', 'Bodoni', 'Garamond', etc). This is a least common
- denominator used to list fonts. Some formats (TrueType &
- OpenType) provide localized and Unicode versions of this
- string. Applications should use the format specific interface
- to access them. Can be NULL (e.g., in fonts embedded in a PDF
- file).
-
- style_name: The face's style name. This is an ASCII string, usually in
- English, which describes the typeface's style (like 'Italic',
- 'Bold', 'Condensed', etc). Not all font formats provide a style
- name, so this field is optional, and can be set to NULL. As for
- 'family_name', some formats provide localized and Unicode
- versions of this string. Applications should use the format
- specific interface to access them.
-
- num_fixed_sizes: The number of bitmap strikes in the face. Even if the face
- is scalable, there might still be bitmap strikes, which
- are called 'sbits' in that case.
-
- available_sizes: An array of FT_Bitmap_Size for all bitmap strikes in the
- face. It is set to NULL if there is no bitmap strike.
-
- num_charmaps: The number of charmaps in the face.
-
- charmaps: An array of the charmaps of the face.
-
- generic: A field reserved for client uses. See the FT_Generic type
- description.
-
- bbox: The font bounding box. Coordinates are expressed in font units (see
- 'units_per_EM'). The box is large enough to contain any glyph from
- the font. Thus, 'bbox.yMax' can be seen as the 'maximal ascender',
- and 'bbox.yMin' as the 'minimal descender'. Only relevant for
- scalable formats.
-
- Note that the bounding box might be off by (at least) one pixel for
- hinted fonts. See FT_Size_Metrics for further discussion.
-
- units_per_EM: The number of font units per EM square for this face. This is
- typically 2048 for TrueType fonts, and 1000 for Type 1
- fonts. Only relevant for scalable formats.
-
- ascender: The typographic ascender of the face, expressed in font
- units. For font formats not having this information, it is set to
- 'bbox.yMax'. Only relevant for scalable formats.
-
- descender: The typographic descender of the face, expressed in font
- units. For font formats not having this information, it is set
- to 'bbox.yMin'. Note that this field is usually negative. Only
- relevant for scalable formats.
-
- height: The height is the vertical distance between two consecutive
- baselines, expressed in font units. It is always positive. Only
- relevant for scalable formats.
-
- max_advance_width: The maximal advance width, in font units, for all glyphs
- in this face. This can be used to make word wrapping
- computations faster. Only relevant for scalable formats.
-
- max_advance_height: The maximal advance height, in font units, for all
- glyphs in this face. This is only relevant for vertical
- layouts, and is set to 'height' for fonts that do not
- provide vertical metrics. Only relevant for scalable
- formats.
-
- underline_position: The position, in font units, of the underline line for
- this face. It is the center of the underlining
- stem. Only relevant for scalable formats.
-
- underline_thickness: The thickness, in font units, of the underline for
- this face. Only relevant for scalable formats.
-
- glyph: The face's associated glyph slot(s).
-
- size: The current active size for this face.
-
- charmap: The current active charmap for this face.
- '''
- _fields_ = [
- ('num_faces', FT_Long),
- ('face_index', FT_Long),
-
- ('face_flags', FT_Long),
- ('style_flags', FT_Long),
-
- ('num_glyphs', FT_Long),
-
- ('family_name', FT_String_p),
- ('style_name', FT_String_p),
-
- ('num_fixed_sizes', FT_Int),
- ('available_sizes', POINTER(FT_Bitmap_Size)),
-
- ('num_charmaps', c_int),
- ('charmaps', POINTER(FT_Charmap)),
-
- ('generic', FT_Generic),
-
- # The following member variables (down to `underline_thickness')
- # are only relevant to scalable outlines; cf. @FT_Bitmap_Size
- # for bitmap fonts.
- ('bbox', FT_BBox),
-
- ('units_per_EM', FT_UShort),
- ('ascender', FT_Short),
- ('descender', FT_Short),
- ('height', FT_Short),
-
- ('max_advance_width', FT_Short),
- ('max_advance_height', FT_Short),
-
- ('underline_position', FT_Short),
- ('underline_thickness', FT_Short),
-
- ('glyph', FT_GlyphSlot),
- ('size', FT_Size),
- ('charmap', FT_Charmap),
-
- # private
- ('driver', c_void_p),
- ('memory', c_void_p),
- ('stream', c_void_p),
- ('sizes_list_head', c_void_p),
- ('sizes_list_tail', c_void_p),
- ('autohint', FT_Generic),
- ('extensions', c_void_p),
- ('internal', c_void_p),
- ]
-FT_Face = POINTER(FT_FaceRec)
-
-
-
-# -----------------------------------------------------------------------------
-# A simple structure used to pass more or less generic parameters to
-# FT_Open_Face.
-class FT_Parameter(Structure):
- '''
- A simple structure used to pass more or less generic parameters to
- FT_Open_Face.
-
- tag: A four-byte identification tag.
-
- data: A pointer to the parameter data
- '''
- _fields_ = [
- ('tag', FT_ULong),
- ('data', FT_Pointer) ]
-FT_Parameter_p = POINTER(FT_Parameter)
-
-
-
-# -----------------------------------------------------------------------------
-# A structure used to indicate how to open a new font file or stream. A pointer
-# to such a structure can be used as a parameter for the functions FT_Open_Face
-# and FT_Attach_Stream.
-class FT_Open_Args(Structure):
- '''
- A structure used to indicate how to open a new font file or stream. A pointer
- to such a structure can be used as a parameter for the functions FT_Open_Face
- and FT_Attach_Stream.
-
- flags: A set of bit flags indicating how to use the structure.
-
- memory_base: The first byte of the file in memory.
-
- memory_size: The size in bytes of the file in memory.
-
- pathname: A pointer to an 8-bit file pathname.
-
- stream: A handle to a source stream object.
-
- driver: This field is exclusively used by FT_Open_Face; it simply specifies
- the font driver to use to open the face. If set to 0, FreeType
- tries to load the face with each one of the drivers in its list.
-
- num_params: The number of extra parameters.
-
- params: Extra parameters passed to the font driver when opening a new face.
- '''
- _fields_ = [
- ('flags', FT_UInt),
- ('memory_base', POINTER(FT_Byte)),
- ('memory_size', FT_Long),
- ('pathname', FT_String_p),
- ('stream', c_void_p),
- ('driver', c_void_p),
- ('num_params', FT_Int),
- ('params', FT_Parameter_p) ]
-
-
-
-# -----------------------------------------------------------------------------
-# A structure used to model an SFNT 'name' table entry.
-
-class FT_SfntName(Structure):
- '''
- platform_id: The platform ID for 'string'.
-
- encoding_id: The encoding ID for 'string'.
-
- language_id: The language ID for 'string'
-
- name_id: An identifier for 'string'
-
- string: The 'name' string. Note that its format differs depending on the
- (platform,encoding) pair. It can be a Pascal String, a UTF-16 one,
- etc.
-
- Generally speaking, the string is not zero-terminated. Please refer
- to the TrueType specification for details.
-
- string_len: The length of 'string' in bytes.
- '''
-
- _fields_ = [
- ('platform_id', FT_UShort),
- ('encoding_id', FT_UShort),
- ('language_id', FT_UShort),
- ('name_id', FT_UShort),
- # this string is *not* null-terminated!
- ('string', POINTER(FT_Byte)),
- ('string_len', FT_UInt) ]
-
-
-
-# -----------------------------------------------------------------------------
-# Opaque handler to a path stroker object.
-class FT_StrokerRec(Structure):
- '''
- Opaque handler to a path stroker object.
- '''
- _fields_ = [ ]
-FT_Stroker = POINTER(FT_StrokerRec)
-
-
-# -----------------------------------------------------------------------------
-# A structure used for bitmap glyph images. This really is a 'sub-class' of
-# FT_GlyphRec.
-#
-class FT_BitmapGlyphRec(Structure):
- '''
- A structure used for bitmap glyph images. This really is a 'sub-class' of
- FT_GlyphRec.
- '''
- _fields_ = [
- ('root' , FT_GlyphRec),
- ('left', FT_Int),
- ('top', FT_Int),
- ('bitmap', FT_Bitmap)
- ]
-FT_BitmapGlyph = POINTER(FT_BitmapGlyphRec)