1999-12-17 00:11:37 +01:00
|
|
|
/***************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* sfnt.h */
|
|
|
|
/* */
|
|
|
|
/* High-level `sfnt' driver interface (specification). */
|
|
|
|
/* */
|
2000-01-07 15:07:21 +01:00
|
|
|
/* Copyright 1996-2000 by */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
|
|
/* */
|
|
|
|
/* This file is part of the FreeType project, and may only be used, */
|
|
|
|
/* modified, and distributed under the terms of the FreeType project */
|
|
|
|
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
|
|
/* this file you indicate that you have read the license and */
|
|
|
|
/* understand and accept it fully. */
|
|
|
|
/* */
|
|
|
|
/***************************************************************************/
|
|
|
|
|
|
|
|
|
2000-12-01 00:12:33 +01:00
|
|
|
#ifndef __SFNT_H__
|
|
|
|
#define __SFNT_H__
|
1999-12-17 00:11:37 +01:00
|
|
|
|
2000-12-09 01:45:38 +01:00
|
|
|
|
|
|
|
#include <ft2build.h>
|
|
|
|
#include FT_INTERNAL_DRIVER_H
|
|
|
|
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
|
|
|
|
2000-08-01 15:17:04 +02:00
|
|
|
|
2000-12-01 00:12:33 +01:00
|
|
|
FT_BEGIN_HEADER
|
2000-08-01 15:17:04 +02:00
|
|
|
|
2000-12-09 01:45:38 +01:00
|
|
|
|
2000-05-27 00:13:17 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_Init_Face_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* First part of the SFNT face object initialization. This will find */
|
|
|
|
/* the face in a SFNT file or collection, and load its format tag in */
|
|
|
|
/* face->format_tag. */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* stream :: The input stream. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* face :: A handle to the target face object. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
|
|
|
/* face_index :: The index of the TrueType font, if we are opening a */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* collection. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
|
|
|
/* num_params :: The number of additional parameters. */
|
|
|
|
/* */
|
|
|
|
/* params :: Optional additional parameters. */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
/* <Return> */
|
|
|
|
/* FreeType error code. 0 means success. */
|
|
|
|
/* */
|
|
|
|
/* <Note> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* The stream cursor must be at the font file's origin. */
|
|
|
|
/* */
|
|
|
|
/* This function recognizes fonts embedded in a `TrueType */
|
|
|
|
/* collection'. */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
/* Once the format tag has been validated by the font driver, it */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* should then call the TT_Load_Face_Func() callback to read the rest */
|
|
|
|
/* of the SFNT tables in the object. */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
typedef
|
|
|
|
FT_Error (*TT_Init_Face_Func)( FT_Stream stream,
|
|
|
|
TT_Face face,
|
|
|
|
FT_Int face_index,
|
|
|
|
FT_Int num_params,
|
|
|
|
FT_Parameter* params );
|
|
|
|
|
2000-07-19 04:59:31 +02:00
|
|
|
|
2000-05-27 00:13:17 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_Load_Face_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* Second part of the SFNT face object initialization. This will */
|
|
|
|
/* load the common SFNT tables (head, OS/2, maxp, metrics, etc.) in */
|
|
|
|
/* the face object. */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* stream :: The input stream. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* face :: A handle to the target face object. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
|
|
|
/* face_index :: The index of the TrueType font, if we are opening a */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* collection. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
|
|
|
/* num_params :: The number of additional parameters. */
|
|
|
|
/* */
|
|
|
|
/* params :: Optional additional parameters. */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
/* <Return> */
|
|
|
|
/* FreeType error code. 0 means success. */
|
|
|
|
/* */
|
|
|
|
/* <Note> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* This function must be called after TT_Init_Face_Func(). */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
typedef
|
|
|
|
FT_Error (*TT_Load_Face_Func)( FT_Stream stream,
|
|
|
|
TT_Face face,
|
|
|
|
FT_Int face_index,
|
|
|
|
FT_Int num_params,
|
|
|
|
FT_Parameter* params );
|
|
|
|
|
2000-07-19 04:59:31 +02:00
|
|
|
|
2000-05-27 00:13:17 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_Done_Face_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* A callback used to delete the common SFNT data from a face. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* face :: A handle to the target face object. */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
/* <Note> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* This function does NOT destroy the face object. */
|
2000-05-27 00:13:17 +02:00
|
|
|
/* */
|
|
|
|
typedef
|
2000-07-19 04:59:31 +02:00
|
|
|
void (*TT_Done_Face_Func)( TT_Face face );
|
2000-05-27 00:13:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
typedef
|
- MAJOR INTERNAL REDESIGN:
A lot of internal modifications have been performed lately on the
source in order to provide the following enhancements:
- more generic module support:
The FT_Module type is now defined to represent a handle to a given
module. The file <freetype/ftmodule.h> contains the FT_Module_Class
definition, as well as the module-loading public API
The FT_Driver type is still defined, and still represents a pointer
to a font driver. Note that FT_Add_Driver is replaced by FT_Add_Module,
FT_Get_Driver by FT_Get_Module, etc..
- support for generic glyph image types:
The FT_Renderer type is a pointer to a module used to perform various
operations on glyph image.
Each renderer is capable of handling images in a single format
(e.g. ft_glyph_format_outline). Its functions are used to:
- transform an glyph image
- render a glyph image into a bitmap
- return the control box (dimensions) of a given glyph image
The scan converters "ftraster.c" and "ftgrays.c" have been moved
to the new directory "src/renderer", and are used to provide two
default renderer modules.
One corresponds to the "standard" scan-converter, the other to the
"smooth" one.
The current renderer can be set through the new function
FT_Set_Renderer.
The old raster-related function FT_Set_Raster, FT_Get_Raster and
FT_Set_Raster_Mode have now disappeared, in favor of the new:
FT_Get_Renderer
FT_Set_Renderer
see the file <freetype/ftrender.h> for more details..
These changes were necessary to properly support different scalable
formats in the future, like bi-color glyphs, etc..
- glyph loader object:
A new internal object, called a 'glyph loader' has been introduced
in the base layer. It is used by all scalable format font drivers
to load glyphs and composites.
This object has been created to reduce the code size of each driver,
as each one of them basically re-implemented its functionality.
See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
more information..
- FT_GlyphSlot had new fields:
In order to support extended features (see below), the FT_GlyphSlot
structure has a few new fields:
linearHoriAdvance: this field gives the linearly scaled (i.e.
scaled but unhinted) advance width for the glyph,
expressed as a 16.16 fixed pixel value. This
is useful to perform WYSIWYG text.
linearVertAdvance: this field gives the linearly scaled advance
height for the glyph (relevant in vertical glyph
layouts only). This is useful to perform
WYSIWYG text.
Note that the two above field replace the removed "metrics2" field
in the glyph slot.
advance: this field is a vector that gives the transformed
advance for the glyph. By default, it corresponds
to the advance width, unless FT_LOAD_VERTICAL_LAYOUT
was specified when calling FT_Load_Glyph or FT_Load_Char
bitmap_left: this field gives the distance in integer pixels from
the current pen position to the left-most pixel of
a glyph image WHEN IT IS A BITMAP. It is only valid
when the "format" field is set to
"ft_glyph_format_bitmap", for example, after calling
the new function FT_Render_Glyph.
bitmap_top: this field gives the distance in integer pixels from
the current pen position (located on the baseline) to
the top-most pixel of the glyph image WHEN IT IS A
BITMAP. Positive values correspond to upwards Y.
loader: this is a new private field for the glyph slot. Client
applications should not touch it..
- support for transforms and direct rendering in FT_Load_Glyph:
Most of the functionality found in <freetype/ftglyph.h> has been
moved to the core library. Hence, the following:
- a transform can be specified for a face through FT_Set_Transform.
this transform is applied by FT_Load_Glyph to scalable glyph images
(i.e. NOT TO BITMAPS) before the function returns, unless the
bit flag FT_LOAD_IGNORE_TRANSFORM was set in the load flags..
- once a glyph image has been loaded, it can be directly converted to
a bitmap by using the new FT_Render_Glyph function. Note that this
function takes the glyph image from the glyph slot, and converts
it to a bitmap whose properties are returned in "face.glyph.bitmap",
"face.glyph.bitmap_left" and "face.glyph.bitmap_top". The original
native image might be lost after the conversion.
- when using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
and FT_Load_Char functions will call FT_Render_Glyph automatically
when needed.
2000-06-22 02:17:42 +02:00
|
|
|
FT_Module_Interface (*SFNT_Get_Interface_Func)( FT_Module module,
|
|
|
|
const char* interface );
|
2000-05-27 00:13:17 +02:00
|
|
|
|
|
|
|
|
2000-01-27 14:56:02 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* TT_Load_SFNT_Header_Func */
|
2000-01-27 14:56:02 +01:00
|
|
|
/* */
|
|
|
|
/* <Description> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* Loads the header of a SFNT font file. Supports collections. */
|
2000-01-27 14:56:02 +01:00
|
|
|
/* */
|
|
|
|
/* <Input> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* face :: A handle to the target face object. */
|
|
|
|
/* */
|
|
|
|
/* stream :: The input stream. */
|
|
|
|
/* */
|
|
|
|
/* face_index :: The index of the TrueType font, if we are opening a */
|
|
|
|
/* collection. */
|
2000-05-29 22:37:41 +02:00
|
|
|
/* */
|
2000-01-27 14:56:02 +01:00
|
|
|
/* <Output> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* sfnt :: The SFNT header. */
|
2000-01-27 14:56:02 +01:00
|
|
|
/* */
|
|
|
|
/* <Return> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* FreeType error code. 0 means success. */
|
2000-01-27 14:56:02 +01:00
|
|
|
/* */
|
|
|
|
/* <Note> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* The stream cursor must be at the font file's origin. */
|
|
|
|
/* */
|
|
|
|
/* This function recognizes fonts embedded in a `TrueType */
|
|
|
|
/* collection'. */
|
2000-01-27 14:56:02 +01:00
|
|
|
/* */
|
2000-05-29 22:37:41 +02:00
|
|
|
/* This function checks that the header is valid by looking at the */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* values of `search_range', `entry_selector', and `range_shift'. */
|
2000-05-29 22:37:41 +02:00
|
|
|
/* */
|
2000-01-27 14:56:02 +01:00
|
|
|
typedef
|
2000-07-19 04:59:31 +02:00
|
|
|
FT_Error (*TT_Load_SFNT_Header_Func)( TT_Face face,
|
|
|
|
FT_Stream stream,
|
|
|
|
FT_Long face_index,
|
|
|
|
SFNT_Header* sfnt );
|
|
|
|
|
2000-01-27 14:56:02 +01:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_Load_Directory_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* Loads the table directory into a face object. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* face :: A handle to the target face object. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* stream :: The input stream. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
|
|
|
/* sfnt :: The SFNT header. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Return> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* FreeType error code. 0 means success. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Note> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* The stream cursor must be on the first byte after the 4-byte font */
|
|
|
|
/* format tag. This is the case just after a call to */
|
|
|
|
/* TT_Load_Format_Tag(). */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
typedef
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Error (*TT_Load_Directory_Func)( TT_Face face,
|
2000-05-29 22:37:41 +02:00
|
|
|
FT_Stream stream,
|
|
|
|
SFNT_Header* sfnt );
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_Load_Any_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* Loads any font table into client memory. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* face :: The face object to look for. */
|
|
|
|
/* */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* tag :: The tag of table to load. Use the value 0 if you want */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* to access the whole font file, else set this parameter */
|
|
|
|
/* to a valid TrueType table tag that you can forge with */
|
|
|
|
/* the MAKE_TT_TAG macro. */
|
|
|
|
/* */
|
|
|
|
/* offset :: The starting offset in the table (or the file if */
|
|
|
|
/* tag == 0). */
|
|
|
|
/* */
|
|
|
|
/* length :: The address of the decision variable: */
|
|
|
|
/* */
|
|
|
|
/* If length == NULL: */
|
|
|
|
/* Loads the whole table. Returns an error if */
|
|
|
|
/* `offset' == 0! */
|
|
|
|
/* */
|
|
|
|
/* If *length == 0: */
|
|
|
|
/* Exits immediately; returning the length of the given */
|
|
|
|
/* table or of the font file, depending on the value of */
|
|
|
|
/* `tag'. */
|
|
|
|
/* */
|
|
|
|
/* If *length != 0: */
|
|
|
|
/* Loads the next `length' bytes of table or font, */
|
|
|
|
/* starting at offset `offset' (in table or font too). */
|
|
|
|
/* */
|
|
|
|
/* <Output> */
|
|
|
|
/* buffer :: The address of target buffer. */
|
|
|
|
/* */
|
|
|
|
/* <Return> */
|
|
|
|
/* TrueType error code. 0 means success. */
|
|
|
|
/* */
|
|
|
|
typedef
|
2000-07-05 06:32:02 +02:00
|
|
|
FT_Error (*TT_Load_Any_Func)( TT_Face face,
|
|
|
|
FT_ULong tag,
|
|
|
|
FT_Long offset,
|
2000-11-07 07:30:29 +01:00
|
|
|
FT_Byte *buffer,
|
2000-07-05 06:32:02 +02:00
|
|
|
FT_ULong* length );
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_Load_SBit_Image_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* Loads a given glyph sbit image from the font resource. This also */
|
|
|
|
/* returns its metrics. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* face :: The target face object. */
|
|
|
|
/* */
|
|
|
|
/* x_ppem :: The horizontal resolution in points per EM. */
|
|
|
|
/* */
|
|
|
|
/* y_ppem :: The vertical resolution in points per EM. */
|
|
|
|
/* */
|
|
|
|
/* glyph_index :: The current glyph index. */
|
|
|
|
/* */
|
|
|
|
/* stream :: The input stream. */
|
|
|
|
/* */
|
|
|
|
/* <Output> */
|
2000-11-07 07:30:29 +01:00
|
|
|
/* amap :: The target pixmap. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
2000-11-07 07:30:29 +01:00
|
|
|
/* ametrics :: A big sbit metrics structure for the glyph image. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Return> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* FreeType error code. 0 means success. Returns an error if no */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* glyph sbit exists for the index. */
|
|
|
|
/* */
|
|
|
|
/* <Note> */
|
|
|
|
/* The `map.buffer' field is always freed before the glyph is loaded. */
|
|
|
|
/* */
|
2000-05-17 01:44:38 +02:00
|
|
|
typedef
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Error (*TT_Load_SBit_Image_Func)( TT_Face face,
|
2000-11-07 07:30:29 +01:00
|
|
|
FT_ULong strike_index,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_UInt glyph_index,
|
|
|
|
FT_UInt load_flags,
|
1999-12-17 00:11:37 +01:00
|
|
|
FT_Stream stream,
|
2000-11-07 07:30:29 +01:00
|
|
|
FT_Bitmap *amap,
|
|
|
|
TT_SBit_Metrics *ametrics );
|
1999-12-17 00:11:37 +01:00
|
|
|
|
2000-11-07 07:30:29 +01:00
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_Set_SBit_Strike_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* Selects an sbit strike for given horizontal and vertical ppem */
|
|
|
|
/* values. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* face :: The target face object. */
|
|
|
|
/* */
|
|
|
|
/* x_ppem :: The horizontal resolution in points per EM. */
|
|
|
|
/* */
|
|
|
|
/* y_ppem :: The vertical resolution in points per EM. */
|
|
|
|
/* */
|
|
|
|
/* <Output> */
|
|
|
|
/* astrike_index :: The index of the sbit strike. */
|
|
|
|
/* */
|
|
|
|
/* <Return> */
|
|
|
|
/* FreeType error code. 0 means success. Returns an error if no */
|
|
|
|
/* sbit strike exists for the selected ppem values. */
|
|
|
|
/* */
|
2000-11-07 00:07:51 +01:00
|
|
|
typedef
|
2000-11-07 07:30:29 +01:00
|
|
|
FT_Error (*TT_Set_SBit_Strike_Func)( TT_Face face,
|
|
|
|
FT_Int x_ppem,
|
|
|
|
FT_Int y_ppem,
|
|
|
|
FT_ULong *astrike_index );
|
|
|
|
|
2000-07-19 04:59:31 +02:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_Get_PS_Name_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* Gets the PostScript glyph name of a glyph. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* index :: The glyph index. */
|
|
|
|
/* */
|
|
|
|
/* PSname :: The address of a string pointer. Will be NULL in case */
|
|
|
|
/* of error, otherwise it is a pointer to the glyph name. */
|
|
|
|
/* */
|
|
|
|
/* You must not modify the returned string! */
|
|
|
|
/* */
|
|
|
|
/* <Output> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* FreeType error code. 0 means success. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
typedef
|
2000-07-19 04:59:31 +02:00
|
|
|
FT_Error (*TT_Get_PS_Name_Func)( TT_Face face,
|
|
|
|
FT_UInt index,
|
|
|
|
FT_String** PSname );
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* TT_Load_Metrics_Func */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* Loads the horizontal or vertical header in a face object. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* face :: A handle to the target face object. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* stream :: The input stream. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* vertical :: A boolean flag. If set, load vertical metrics. */
|
|
|
|
/* */
|
|
|
|
/* <Return> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* FreeType error code. 0 means success. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
typedef
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Error (*TT_Load_Metrics_Func)( TT_Face face,
|
1999-12-17 00:11:37 +01:00
|
|
|
FT_Stream stream,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Bool vertical );
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_CharMap_Load_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* Loads a given TrueType character map into memory. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* face :: A handle to the parent face object. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* stream :: A handle to the current stream object. */
|
|
|
|
/* */
|
|
|
|
/* <InOut> */
|
|
|
|
/* cmap :: A pointer to a cmap object. */
|
|
|
|
/* */
|
|
|
|
/* <Return> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* FreeType error code. 0 means success. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Note> */
|
|
|
|
/* The function assumes that the stream is already in use (i.e., */
|
|
|
|
/* opened). In case of error, all partially allocated tables are */
|
|
|
|
/* released. */
|
|
|
|
/* */
|
|
|
|
typedef
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Error (*TT_CharMap_Load_Func)( TT_Face face,
|
1999-12-17 00:11:37 +01:00
|
|
|
TT_CMapTable* cmap,
|
|
|
|
FT_Stream input );
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
|
|
|
/* TT_CharMap_Free_Func */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* Destroys a character mapping table. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* face :: A handle to the parent face object. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* cmap :: A handle to a cmap object. */
|
|
|
|
/* */
|
|
|
|
/* <Return> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* FreeType error code. 0 means success. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
typedef
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Error (*TT_CharMap_Free_Func)( TT_Face face,
|
1999-12-17 00:11:37 +01:00
|
|
|
TT_CMapTable* cmap );
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* TT_Load_Table_Func */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Description> */
|
|
|
|
/* Loads a given TrueType table. */
|
|
|
|
/* */
|
|
|
|
/* <Input> */
|
|
|
|
/* face :: A handle to the target face object. */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* stream :: The input stream. */
|
|
|
|
/* */
|
|
|
|
/* <Return> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* FreeType error code. 0 means success. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Note> */
|
|
|
|
/* The function will use `face->goto_table' to seek the stream to */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* the start of the table. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
typedef
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Error (*TT_Load_Table_Func)( TT_Face face,
|
1999-12-17 00:11:37 +01:00
|
|
|
FT_Stream stream );
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <FuncType> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* TT_Free_Table_Func */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Description> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* Frees a given TrueType table. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/* <Input> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* face :: A handle to the target face object. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
typedef
|
|
|
|
void (*TT_Free_Table_Func)( TT_Face face );
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* <Struct> */
|
|
|
|
/* SFNT_Interface */
|
|
|
|
/* */
|
|
|
|
/* <Description> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* This structure holds pointers to the functions used to load and */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* free the basic tables that are required in a `sfnt' font file. */
|
|
|
|
/* */
|
|
|
|
/* <Fields> */
|
2000-07-19 04:59:31 +02:00
|
|
|
/* Check the various xxx_Func() descriptions for details. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
typedef struct SFNT_Interface_
|
|
|
|
{
|
2000-07-19 04:59:31 +02:00
|
|
|
TT_Goto_Table_Func goto_table;
|
2000-05-17 01:44:38 +02:00
|
|
|
|
2000-07-19 04:59:31 +02:00
|
|
|
TT_Init_Face_Func init_face;
|
|
|
|
TT_Load_Face_Func load_face;
|
|
|
|
TT_Done_Face_Func done_face;
|
|
|
|
SFNT_Get_Interface_Func get_interface;
|
2000-10-31 21:42:18 +01:00
|
|
|
|
2000-07-19 04:59:31 +02:00
|
|
|
TT_Load_Any_Func load_any;
|
|
|
|
TT_Load_SFNT_Header_Func load_sfnt_header;
|
|
|
|
TT_Load_Directory_Func load_directory;
|
|
|
|
|
|
|
|
/* these functions are called by `load_face' but they can also */
|
|
|
|
/* be called from external modules, if there is a need to do so */
|
|
|
|
TT_Load_Table_Func load_header;
|
|
|
|
TT_Load_Metrics_Func load_metrics;
|
|
|
|
TT_Load_Table_Func load_charmaps;
|
|
|
|
TT_Load_Table_Func load_max_profile;
|
|
|
|
TT_Load_Table_Func load_os2;
|
|
|
|
TT_Load_Table_Func load_psnames;
|
|
|
|
|
|
|
|
TT_Load_Table_Func load_names;
|
|
|
|
TT_Free_Table_Func free_names;
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
/* optional tables */
|
2000-07-19 04:59:31 +02:00
|
|
|
TT_Load_Table_Func load_hdmx;
|
|
|
|
TT_Free_Table_Func free_hdmx;
|
1999-12-17 00:11:37 +01:00
|
|
|
|
2000-07-19 04:59:31 +02:00
|
|
|
TT_Load_Table_Func load_kerning;
|
|
|
|
TT_Load_Table_Func load_gasp;
|
2000-11-07 00:07:51 +01:00
|
|
|
TT_Load_Table_Func load_pclt;
|
1999-12-17 00:11:37 +01:00
|
|
|
|
2000-11-07 07:30:29 +01:00
|
|
|
/* see `ttload.h' */
|
2000-11-07 00:07:51 +01:00
|
|
|
TT_Load_Table_Func load_bitmap_header;
|
2000-11-07 07:30:29 +01:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
/* see `ttsbit.h' */
|
2000-11-07 07:30:29 +01:00
|
|
|
TT_Set_SBit_Strike_Func set_sbit_strike;
|
2000-07-19 04:59:31 +02:00
|
|
|
TT_Load_Table_Func load_sbits;
|
|
|
|
TT_Load_SBit_Image_Func load_sbit_image;
|
|
|
|
TT_Free_Table_Func free_sbits;
|
2000-05-17 01:44:38 +02:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
/* see `ttpost.h' */
|
2000-07-19 04:59:31 +02:00
|
|
|
TT_Get_PS_Name_Func get_psname;
|
|
|
|
TT_Free_Table_Func free_psnames;
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
/* see `ttcmap.h' */
|
2000-07-19 04:59:31 +02:00
|
|
|
TT_CharMap_Load_Func load_charmap;
|
|
|
|
TT_CharMap_Free_Func free_charmap;
|
2000-05-17 01:44:38 +02:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
} SFNT_Interface;
|
|
|
|
|
2000-07-19 04:59:31 +02:00
|
|
|
|
2000-12-01 00:12:33 +01:00
|
|
|
FT_END_HEADER
|
2000-08-01 15:17:04 +02:00
|
|
|
|
2000-12-01 00:12:33 +01:00
|
|
|
#endif /* __SFNT_H__ */
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
/* END */
|