2000-02-29 17:56:18 +01:00
|
|
|
/***************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* ftoption.h */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* User-selectable configuration macros (specification only). */
|
2000-02-29 17:56:18 +01:00
|
|
|
/* */
|
|
|
|
/* Copyright 1996-2000 by */
|
|
|
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* This file is part of the FreeType project, and may only be used, */
|
|
|
|
/* modified, and distributed under the terms of the FreeType project */
|
2000-02-29 17:56:18 +01:00
|
|
|
/* 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-07-19 18:17:55 +02:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
#ifndef FTOPTION_H
|
|
|
|
#define FTOPTION_H
|
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
|
2000-08-01 15:17:04 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* USER-SELECTABLE CONFIGURATION MACROS */
|
|
|
|
/* */
|
|
|
|
/* These macros can be toggled by developers to enable or disable */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* certain aspects of FreeType. This is a default file, where all major */
|
2000-02-29 17:56:18 +01:00
|
|
|
/* options are enabled. */
|
|
|
|
/* */
|
|
|
|
/* Note that if some modifications are required for your build, we */
|
|
|
|
/* advise you to put a modified copy of this file in your build */
|
|
|
|
/* directory, rather than modifying it in-place. */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* The build directory is normally `freetype/builds/<system>' and */
|
2000-02-29 17:56:18 +01:00
|
|
|
/* contains build or system-specific files that are included in */
|
|
|
|
/* priority when building the library. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
/*************************************************************************/
|
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
|
2000-03-13 13:12:46 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/**** ****/
|
|
|
|
/**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/
|
|
|
|
/**** ****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
1999-12-17 00:11:37 +01:00
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
|
2000-03-28 13:22:31 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Convenience functions support */
|
|
|
|
/* */
|
|
|
|
/* Some functions of the FreeType 2 API are provided as a convenience */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* for client applications and developers. However, they are not */
|
2000-03-28 13:22:31 +02:00
|
|
|
/* required to build and run the library itself. */
|
|
|
|
/* */
|
|
|
|
/* By defining this configuration macro, you'll disable the */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* compilation of these functions at build time. This can be useful */
|
2000-03-28 13:22:31 +02:00
|
|
|
/* to reduce the library's code size when you don't need any of */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* these functions. */
|
2000-03-28 13:22:31 +02:00
|
|
|
/* */
|
|
|
|
/* All convenience functions are declared as such in their */
|
|
|
|
/* documentation. */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
#undef FT_CONFIG_OPTION_NO_CONVENIENCE_FUNCS
|
|
|
|
|
2000-03-28 13:22:31 +02:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Alternate Glyph Image Format support */
|
|
|
|
/* */
|
|
|
|
/* By default, the glyph images returned by the FreeType glyph loader */
|
|
|
|
/* can either be a pixmap or a vectorial outline defined through */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* Bezier control points. When defining the following configuration */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* macro, some font drivers will be able to register alternate */
|
|
|
|
/* glyph image formats. */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* Unset this macro if you are sure that you will never use a font */
|
|
|
|
/* driver with an alternate glyph format; this will reduce the size of */
|
|
|
|
/* the base layer code. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* Note that a few Type 1 fonts, as well as Windows `vector' fonts */
|
|
|
|
/* use a vector `plotter' format that isn't supported when this */
|
|
|
|
/* macro is undefined. */
|
2000-02-29 17:56:18 +01:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS
|
|
|
|
|
2000-02-29 17:56:18 +01:00
|
|
|
|
2000-02-28 12:32:17 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Glyph Postscript Names handling */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* By default, FreeType 2 is compiled with the `PSNames' module. This */
|
|
|
|
/* This module is in charge of converting a glyph name string into a */
|
|
|
|
/* Unicode value, or return a Macintosh standard glyph name for the */
|
|
|
|
/* use with the TrueType `post' table. */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* Undefine this macro if you do not want `PSNames' compiled in your */
|
|
|
|
/* build of FreeType. This has the following effects: */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* - The TrueType driver will provide its own set of glyph names, */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* if you build it to support postscript names in the TrueType */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* `post' table. */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* - The Type 1 driver will not be able to synthetize a Unicode */
|
|
|
|
/* charmap out of the glyphs found in the fonts. */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* You would normally undefine this configuration macro when building */
|
|
|
|
/* a version of FreeType that doesn't contain a Type 1 or CFF driver. */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* */
|
|
|
|
#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
|
|
|
|
|
2000-02-29 17:56:18 +01:00
|
|
|
|
2000-02-28 12:32:17 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Postscript Names to Unicode Values support */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* By default, FreeType 2 is built with the `PSNames' module compiled */
|
|
|
|
/* in. Among other things, the module is used to convert a glyph name */
|
|
|
|
/* into a Unicode value. This is especially useful in order to */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* through a big table named the `Adobe Glyph List' (AGL). */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* */
|
|
|
|
/* Undefine this macro if you do not want the Adobe Glyph List */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* compiled in your `PSNames' module. The Type 1 driver will not be */
|
|
|
|
/* able to synthetize a Unicode charmap out of the glyphs found in the */
|
|
|
|
/* fonts. */
|
2000-02-28 12:32:17 +01:00
|
|
|
/* */
|
|
|
|
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
|
|
|
|
|
2000-02-29 17:56:18 +01:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* Many compilers provide the non-ANSI `long long' 64-bit type. You can */
|
|
|
|
/* activate it by defining the FTCALC_USE_LONG_LONG macro. Note that */
|
|
|
|
/* this will produce many -ansi warnings during library compilation, and */
|
|
|
|
/* that in many cases the generated code will not be smaller or faster! */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
|
|
|
#undef FTCALC_USE_LONG_LONG
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* DLL export compilation */
|
2000-05-17 00:37:30 +02:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* When compiling FreeType as a DLL, some systems/compilers need a */
|
|
|
|
/* special keyword in front OR after the return type of function */
|
|
|
|
/* declarations. */
|
2000-05-17 00:37:30 +02:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* Two macros are used within the FreeType source code to define */
|
|
|
|
/* exported library functions: FT_EXPORT_DEF and FT_EXPORT_FUNC. */
|
2000-05-17 00:37:30 +02:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* FT_EXPORT_DEF( return_type ) */
|
2000-05-17 00:37:30 +02:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* is used in a function declaration, as in */
|
2000-05-17 00:37:30 +02:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* FT_EXPORT_DEF( FT_Error ) */
|
|
|
|
/* FT_Init_FreeType( FT_Library* alibrary ); */
|
2000-05-17 00:37:30 +02:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* FT_EXPORT_FUNC( return_type ) */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* is used in a function definition, as in */
|
2000-05-17 00:37:30 +02:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* FT_EXPORT_FUNC( FT_Error ) */
|
|
|
|
/* FT_Init_FreeType( FT_Library* alibrary ) */
|
|
|
|
/* { */
|
|
|
|
/* ... some code ... */
|
|
|
|
/* return FT_Err_Ok; */
|
|
|
|
/* } */
|
2000-05-17 00:37:30 +02:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* You can provide your own implementation of FT_EXPORT_DEF and */
|
|
|
|
/* FT_EXPORT_FUNC here if you want. If you leave them undefined, they */
|
|
|
|
/* will be later automatically defined as `extern return_type' to */
|
|
|
|
/* allow normal compilation. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-05-24 02:31:14 +02:00
|
|
|
#undef FT_EXPORT_DEF
|
|
|
|
#undef FT_EXPORT_FUNC
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Debug level */
|
|
|
|
/* */
|
|
|
|
/* FreeType can be compiled in debug or trace mode. In debug mode, */
|
|
|
|
/* errors are reported through the `ftdebug' component. In trace */
|
|
|
|
/* mode, additional messages are sent to the standard output during */
|
|
|
|
/* execution. */
|
|
|
|
/* */
|
|
|
|
/* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */
|
|
|
|
/* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* Don't define any of these macros to compile in `release' mode! */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
A complete revision of FreeType 2's GNU makefiles (of the library):
Tons of unnecessary stuff have been removed; only the essential rules
have been retained.
The source files now depend on all header files in include/freetype,
include/freetype/config, and include/freetype/internal. This is not
optimal, I know, and I'll try to improve this, but it is better than
before (namely no dependencies on `internal').
FTDEBUG_SRC has been added (similar to FTSYS_SRC) -- I don't know
exactly whether this is really useful, but it doesn't harm.
There is now more documentation in the makefiles itself.
io-frames.html: Use of <th>, <code>, and <var> for better tagging.
Reactivating of FT_DEBUG_LEVEL_xxx macros.
Added a lot of #include directives to make `multi' builds possible -- note
that currently the modules cid, t1, and t1z have clashing structures and
functions which means that you can only use one of these three modules for a
multi build.
Added some missing function declarations to (local) header files.
Renamed some T1_Open_Face() to CID_Open_Face() in the cid module -- a lot
of other functions should be renamed also...
Replaced many FT_xxx stuff with T1_xxx in t1z driver -- this isn't finished
yet...
Fixed FT_Free() to allow a NULL pointer without an assertion (this has
always been a valid assumption in FreeType, at least in FT 1.x).
A lot of other, minor fixes (mostly documentation).
2000-06-11 05:46:57 +02:00
|
|
|
#define FT_DEBUG_LEVEL_ERROR
|
|
|
|
#define FT_DEBUG_LEVEL_TRACE
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
2000-05-02 13:04:18 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Computation Algorithms */
|
|
|
|
/* */
|
|
|
|
/* Used for debugging, this configuration macro should disappear */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* soon. */
|
2000-05-02 13:04:18 +02:00
|
|
|
/* */
|
|
|
|
#define FT_CONFIG_OPTION_OLD_CALCS
|
|
|
|
|
2000-05-17 00:37:30 +02:00
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* The size in bytes of the render pool used by the scan-line converter */
|
|
|
|
/* to do all of its work. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* This must be greater than 4kByte. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
#define FT_RENDER_POOL_SIZE 16384
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* FT_MAX_MODULES */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* The maximum number of modules that can be registered in a single */
|
|
|
|
/* FreeType library object. 16 is the default. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
- 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
|
|
|
#define FT_MAX_MODULES 16
|
1999-12-17 00:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* FT_MAX_EXTENSIONS */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* The maximum number of extensions that can be registered in a single */
|
|
|
|
/* font driver. 8 is the default. */
|
1999-12-17 00:11:37 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* If you don't know what this means, you certainly do not need to */
|
|
|
|
/* change this value. */
|
2000-02-29 17:56:18 +01:00
|
|
|
/* */
|
1999-12-17 00:11:37 +01:00
|
|
|
#define FT_MAX_EXTENSIONS 8
|
|
|
|
|
|
|
|
|
2000-03-13 13:12:46 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/**** ****/
|
|
|
|
/**** S F N T D R I V E R C O N F I G U R A T I O N ****/
|
|
|
|
/**** ****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
|
2000-03-13 13:12:46 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */
|
|
|
|
/* embedded bitmaps in all formats using the SFNT module (namely */
|
|
|
|
/* TrueType & OpenType). */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
2000-03-13 13:12:46 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */
|
|
|
|
/* load and enumerate the glyph Postscript names in a TrueType or */
|
|
|
|
/* OpenType file. */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* Note that when you do not compile the `PSNames' module by undefining */
|
|
|
|
/* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */
|
2000-03-13 13:12:46 +01:00
|
|
|
/* contain additional code used to read the PS Names table from a font. */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* (By default, the module uses `PSNames' to extract glyph names.) */
|
2000-03-13 13:12:46 +01:00
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
|
2000-03-13 13:12:46 +01:00
|
|
|
|
|
|
|
|
2000-07-19 19:13:03 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */
|
|
|
|
/* access the internal name table in a SFNT-based format like TrueType */
|
2000-07-20 08:57:41 +02:00
|
|
|
/* or OpenType. The name table contains various strings used to */
|
|
|
|
/* describe the font, like family name, copyright, version, etc. It */
|
|
|
|
/* does not contain any glyph name though. */
|
2000-07-19 19:13:03 +02:00
|
|
|
/* */
|
2000-07-20 08:57:41 +02:00
|
|
|
/* Accessing SFNT names is done through the functions declared in */
|
|
|
|
/* `freetype/ftnames.h'. */
|
2000-07-19 19:13:03 +02:00
|
|
|
/* */
|
2000-07-20 08:57:41 +02:00
|
|
|
#define TT_CONFIG_OPTION_SFNT_NAMES
|
|
|
|
|
2000-07-19 19:13:03 +02:00
|
|
|
|
2000-03-13 13:12:46 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/**** ****/
|
|
|
|
/**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/
|
|
|
|
/**** ****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* a bytecode interpreter in the TrueType driver. Note that there are */
|
2000-03-13 13:12:46 +01:00
|
|
|
/* important patent issues related to the use of the interpreter. */
|
|
|
|
/* */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* By undefining this, you will only compile the code necessary to load */
|
|
|
|
/* TrueType glyphs without hinting. */
|
2000-03-13 13:12:46 +01:00
|
|
|
/* */
|
2000-07-26 21:04:08 +02:00
|
|
|
#undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
2000-07-19 18:17:55 +02:00
|
|
|
|
2000-03-13 13:12:46 +01:00
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* bytecode interpreter with a huge switch statement, rather than a call */
|
|
|
|
/* table. This results in smaller and faster code for a number of */
|
2000-03-13 13:12:46 +01:00
|
|
|
/* architectures. */
|
|
|
|
/* */
|
|
|
|
/* Note however that on some compiler/processor combinations, undefining */
|
2000-07-19 18:17:55 +02:00
|
|
|
/* this macro will generate faster, though larger, code. */
|
2000-03-13 13:12:46 +01:00
|
|
|
/* */
|
|
|
|
#define TT_CONFIG_OPTION_INTERPRETER_SWITCH
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/**** ****/
|
|
|
|
/**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/
|
|
|
|
/**** ****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* T1_MAX_STACK_DEPTH is the maximal depth of the token stack used by */
|
|
|
|
/* the Type 1 parser (see t1load.c). A minimum of 16 is required. */
|
|
|
|
/* */
|
2000-03-13 13:12:46 +01:00
|
|
|
#define T1_MAX_STACK_DEPTH 16
|
|
|
|
|
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */
|
|
|
|
/* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */
|
|
|
|
/* required. */
|
|
|
|
/* */
|
|
|
|
#define T1_MAX_DICT_DEPTH 5
|
|
|
|
|
2000-03-13 13:12:46 +01:00
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */
|
|
|
|
/* calls during glyph loading. */
|
|
|
|
/* */
|
|
|
|
#define T1_MAX_SUBRS_CALLS 8
|
|
|
|
|
2000-07-20 08:57:41 +02:00
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. */
|
|
|
|
/* */
|
2000-03-13 13:12:46 +01:00
|
|
|
#define T1_MAX_CHARSTRINGS_OPERANDS 32
|
|
|
|
|
2000-07-20 08:57:41 +02:00
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Define T1_CONFIG_OPTION_DISABLE_HINTER if you want to generate a */
|
|
|
|
/* driver with no hinter. This can be useful to debug the parser. */
|
|
|
|
/* */
|
|
|
|
#undef T1_CONFIG_OPTION_DISABLE_HINTER
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Define this configuration macro if you want to prevent the */
|
|
|
|
/* compilation of `t1afm', which is in charge of reading Type 1 AFM */
|
|
|
|
/* files into an existing face. Note that if set, the T1 driver will be */
|
|
|
|
/* unable to produce kerning distances. */
|
|
|
|
/* */
|
|
|
|
#undef T1_CONFIG_OPTION_NO_AFM
|
|
|
|
|
2000-07-20 08:57:41 +02:00
|
|
|
|
2000-07-19 18:17:55 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Define this configuration macro if you want to prevent the */
|
|
|
|
/* compilation of the Multiple Masters font support in the Type 1 */
|
|
|
|
/* driver. */
|
|
|
|
/* */
|
|
|
|
#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
|
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
|
2000-08-01 15:17:04 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
1999-12-17 00:11:37 +01:00
|
|
|
#endif /* FTOPTION_H */
|
2000-07-19 18:17:55 +02:00
|
|
|
|
|
|
|
|
|
|
|
/* END */
|