forked from minhngoc25a/freetype2
Formatting.
Fixing a bug in FT_Get_Kerning(). Moving FT_Get_Module_Interface() to ftoutln.c.
This commit is contained in:
parent
8cfcf6e057
commit
5aa646c565
|
@ -7,8 +7,8 @@
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
/* */
|
/* */
|
||||||
/* This file is part of the FreeType project, and may only be used */
|
/* This file is part of the FreeType project, and may only be used, */
|
||||||
/* modified and distributed under the terms of the FreeType project */
|
/* modified, and distributed under the terms of the FreeType project */
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||||
/* this file you indicate that you have read the license and */
|
/* this file you indicate that you have read the license and */
|
||||||
/* understand and accept it fully. */
|
/* understand and accept it fully. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* fterrors.h */
|
/* fterrors.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType error codes (specification). */
|
/* FreeType error codes (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftglyph.h */
|
/* ftglyph.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType convenience functions to handle glyphs.. */
|
/* FreeType convenience functions to handle glyphs (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,10 +2,11 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftimage.h */
|
/* ftimage.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType glyph image formats and default raster interface. */
|
/* FreeType glyph image formats and default raster interface */
|
||||||
|
/* (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
/* */
|
/* */
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
/* This file is part of the FreeType project, and may only be used, */
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
/* modified, and distributed under the terms of the FreeType project */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftmm.h */
|
/* ftmm.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType Multiple Master font interface. */
|
/* FreeType Multiple Master font interface (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
FT_String* name;
|
FT_String* name;
|
||||||
FT_Long minimum;
|
FT_Long minimum;
|
||||||
FT_Long maximum;
|
FT_Long maximum;
|
||||||
|
|
||||||
} FT_MM_Axis;
|
} FT_MM_Axis;
|
||||||
|
|
||||||
|
|
||||||
|
@ -75,13 +75,13 @@
|
||||||
FT_UInt num_axis;
|
FT_UInt num_axis;
|
||||||
FT_UInt num_designs;
|
FT_UInt num_designs;
|
||||||
FT_MM_Axis axis[T1_MAX_MM_AXIS];
|
FT_MM_Axis axis[T1_MAX_MM_AXIS];
|
||||||
|
|
||||||
} FT_Multi_Master;
|
} FT_Multi_Master;
|
||||||
|
|
||||||
|
|
||||||
typedef FT_Error (*FT_Get_MM_Func)( FT_Face face,
|
typedef FT_Error (*FT_Get_MM_Func)( FT_Face face,
|
||||||
FT_Multi_Master* master );
|
FT_Multi_Master* master );
|
||||||
|
|
||||||
typedef FT_Error (*FT_Set_MM_Design_Func)( FT_Face face,
|
typedef FT_Error (*FT_Set_MM_Design_Func)( FT_Face face,
|
||||||
FT_UInt num_coords,
|
FT_UInt num_coords,
|
||||||
FT_Long* coords );
|
FT_Long* coords );
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftmodule.h */
|
/* ftmodule.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType modules public interface. */
|
/* FreeType modules public interface (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
FT_Module_Constructor module_init;
|
FT_Module_Constructor module_init;
|
||||||
FT_Module_Destructor module_done;
|
FT_Module_Destructor module_done;
|
||||||
FT_Module_Requester get_interface;
|
FT_Module_Requester get_interface;
|
||||||
|
|
||||||
} FT_Module_Class;
|
} FT_Module_Class;
|
||||||
|
|
||||||
|
|
||||||
|
@ -151,32 +151,6 @@
|
||||||
const char* module_name );
|
const char* module_name );
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Module_Interface */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Finds a module and returns its specific interface as a typeless */
|
|
||||||
/* pointer. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to the library object. */
|
|
||||||
/* */
|
|
||||||
/* module_name :: The module's name (as an ASCII string). */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* A module-specific interface if available, 0 otherwise. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* You should better be familiar with FreeType internals to know */
|
|
||||||
/* which module to look for, and what its interface is :-) */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT_DEF( const void* ) FT_Get_Module_Interface(
|
|
||||||
FT_Library library,
|
|
||||||
const char* mod_name );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* <Function> */
|
/* <Function> */
|
||||||
|
@ -244,7 +218,7 @@
|
||||||
|
|
||||||
typedef void (*FT_DebugHook_Func)( void* arg );
|
typedef void (*FT_DebugHook_Func)( void* arg );
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* <Function> */
|
/* <Function> */
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftoutln.h */
|
/* ftoutln.h */
|
||||||
/* */
|
/* */
|
||||||
/* Support for the FT_Outline type (used to store glyph shapes of */
|
/* Support for the FT_Outline type used to store glyph shapes of */
|
||||||
/* most scalable font formats) */
|
/* most scalable font formats (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftrender.h */
|
/* ftrender.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType renderer modules public interface */
|
/* FreeType renderer modules public interface (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftsystem.h */
|
/* ftsystem.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType low-level system interface definition */
|
/* FreeType low-level system interface definition (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* fttypes.h */
|
/* fttypes.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType simple types definitions */
|
/* FreeType simple types definitions (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* autohint.h */
|
/* autohint.h */
|
||||||
/* */
|
/* */
|
||||||
/* High-level `autohint" module-specific interface (specification) */
|
/* High-level `autohint' module-specific interface (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
@ -13,159 +13,172 @@
|
||||||
/* this file you indicate that you have read the license and */
|
/* this file you indicate that you have read the license and */
|
||||||
/* understand and accept it fully. */
|
/* understand and accept it fully. */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
|
||||||
/* The auto-hinter is used to load and automatically hint glyphs */
|
|
||||||
/* when a format-specific hinter isn't available.. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* The auto-hinter is used to load and automatically hint glyphs if a */
|
||||||
|
/* format-specific hinter isn't available. */
|
||||||
|
/* */
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef AUTOHINT_H
|
#ifndef AUTOHINT_H
|
||||||
#define AUTOHINT_H
|
#define AUTOHINT_H
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
/*************************************************************************/
|
||||||
* A small technical note regarding automatic hinting in order to clarify
|
/* */
|
||||||
* this module interface.
|
/* A small technical note regarding automatic hinting in order to */
|
||||||
*
|
/* clarify this module interface. */
|
||||||
* An automatic hinter might compute two kinds of data for a given face:
|
/* */
|
||||||
*
|
/* An automatic hinter might compute two kinds of data for a given face: */
|
||||||
* - global hints: usually some metrics that describe global properties
|
/* */
|
||||||
* of the face. It is computed by scanning more or less
|
/* - global hints: Usually some metrics that describe global properties */
|
||||||
* agressively the glyphs in the face, and thus can be
|
/* of the face. It is computed by scanning more or less */
|
||||||
* very slow to compute (even if the size of global hints
|
/* agressively the glyphs in the face, and thus can be */
|
||||||
* is really small)
|
/* very slow to compute (even if the size of global */
|
||||||
*
|
/* hints is really small). */
|
||||||
* - glyph hints: these describe some important features of the glyph
|
/* */
|
||||||
* outline, as well as how to align them. They are generally
|
/* - glyph hints: These describe some important features of the glyph */
|
||||||
* much faster to compute than global hints.
|
/* outline, as well as how to align them. They are */
|
||||||
*
|
/* generally much faster to compute than global hints. */
|
||||||
* The current FreeType auto-hinter does a pretty good job while performing
|
/* */
|
||||||
* fast computations for both global and glyph hints. However, we might be
|
/* The current FreeType auto-hinter does a pretty good job while */
|
||||||
* interested in introducing more complex and powerful algorithms in the
|
/* performing fast computations for both global and glyph hints. */
|
||||||
* future, like the one described in the John D. Hobby paper, which
|
/* However, we might be interested in introducing more complex and */
|
||||||
* unfortunately require a lot more horsepower.
|
/* powerful algorithms in the future, like the one described in the John */
|
||||||
*
|
/* D. Hobby paper, which unfortunately requires a lot more horsepower. */
|
||||||
* Because a sufficiently sophisticated font management system would
|
/* */
|
||||||
* typically implement a LRU cache of opened face objects to reduce memory
|
/* Because a sufficiently sophisticated font management system would */
|
||||||
* usage, it is a good idea to be able to avoid recomputing global hints
|
/* typically implement an LRU cache of opened face objects to reduce */
|
||||||
* every time the same face is re-opened.
|
/* memory usage, it is a good idea to be able to avoid recomputing */
|
||||||
*
|
/* global hints every time the same face is re-opened. */
|
||||||
* We thus provide the ability to cache global hints outside of the face
|
/* */
|
||||||
* object, in order to speed up font re-opening time. Of course, this
|
/* We thus provide the ability to cache global hints outside of the face */
|
||||||
* feature is purely optional, so most client programs won't even notice
|
/* object, in order to speed up font re-opening time. Of course, this */
|
||||||
* it :o)
|
/* feature is purely optional, so most client programs won't even notice */
|
||||||
*
|
/* it. */
|
||||||
* I initially though that it'd be a good idea to cache the glyph hints too,
|
/* */
|
||||||
* however, if my general idea now is that if you really need to cache these
|
/* I initially thought that it would be a good idea to cache the glyph */
|
||||||
* too, you're simply in need of a new font format, where all this information
|
/* hints too. However, my general idea now is that if you really need */
|
||||||
* could be stored within the font file and decoded on the fly :-)
|
/* to cache these too, you are simply in need of a new font format, */
|
||||||
*
|
/* where all this information could be stored within the font file and */
|
||||||
*/
|
/* decoded on the fly. */
|
||||||
|
/* */
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <freetype/freetype.h>
|
#include <freetype/freetype.h>
|
||||||
|
|
||||||
|
|
||||||
typedef struct FT_AutoHinterRec_ *FT_AutoHinter;
|
typedef struct FT_AutoHinterRec_ *FT_AutoHinter;
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
*
|
|
||||||
* <FuncType>
|
|
||||||
* FT_AutoHinter_Get_Global_Func
|
|
||||||
*
|
|
||||||
* <Description>
|
|
||||||
* Retrieve the global hints computed for a given face object
|
|
||||||
* the resulting data is dissociated from the face and will survive
|
|
||||||
* a call to FT_Done_Face. It must be discarded through the API
|
|
||||||
* FT_AutoHinter_Done_Global_Func.
|
|
||||||
*
|
|
||||||
* <Input>
|
|
||||||
* hinter :: handle to source auto-hinter
|
|
||||||
* face :: handle to source face object
|
|
||||||
*
|
|
||||||
* <Output>
|
|
||||||
* global_hints :: typeless pointer to the global hints
|
|
||||||
* global_len :: size in bytes of global hints
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef void (*FT_AutoHinter_Get_Global_Func)( FT_AutoHinter hinter,
|
|
||||||
FT_Face face,
|
|
||||||
void* *global_hints,
|
|
||||||
long *global_len );
|
|
||||||
|
|
||||||
/***********************************************************************
|
/*************************************************************************/
|
||||||
*
|
/* */
|
||||||
* <FuncType>
|
/* <FuncType> */
|
||||||
* FT_AutoHinter_Done_Global_Func
|
/* FT_AutoHinter_Get_Global_Func */
|
||||||
*
|
/* */
|
||||||
* <Description>
|
/* <Description> */
|
||||||
* Discards the global hints retrieved through
|
/* Retrieves the global hints computed for a given face object the */
|
||||||
* FT_AutoHinter_Get_Global_Func. This is the only way these hints
|
/* resulting data is dissociated from the face and will survive a */
|
||||||
* are freed from memory.
|
/* call to FT_Done_Face(). It must be discarded through the API */
|
||||||
*
|
/* FT_AutoHinter_Done_Global_Func(). */
|
||||||
* <Input>
|
/* */
|
||||||
* hinter :: handle to auto-hinter module
|
/* <Input> */
|
||||||
* global :: pointer to retrieved global hints to discard
|
/* hinter :: A handle to the source auto-hinter. */
|
||||||
*/
|
/* */
|
||||||
typedef void (*FT_AutoHinter_Done_Global_Func)( FT_AutoHinter hinter,
|
/* face :: A handle to the source face object. */
|
||||||
void* global );
|
/* */
|
||||||
|
/* <Output> */
|
||||||
|
/* global_hints :: A typeless pointer to the global hints. */
|
||||||
|
/* */
|
||||||
|
/* global_len :: The size in bytes of the global hints. */
|
||||||
|
/* */
|
||||||
|
typedef void (*FT_AutoHinter_Get_Global_Func)(
|
||||||
|
FT_AutoHinter hinter,
|
||||||
|
FT_Face face,
|
||||||
|
void** global_hints,
|
||||||
|
long* global_len );
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
*
|
|
||||||
* <FuncType>
|
|
||||||
* FT_AutoHinter_Reset_Func
|
|
||||||
*
|
|
||||||
* <Description>
|
|
||||||
* This function is used to recompute the global metrics in a given
|
|
||||||
* font. This is useful when global font data changes (e.g. multiple
|
|
||||||
* masters fonts where blend coordinates change..)
|
|
||||||
*
|
|
||||||
* <Input>
|
|
||||||
* hinter :: handle to source auto-hinter
|
|
||||||
* face :: handle to the face.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef void (*FT_AutoHinter_Reset_Func)( FT_AutoHinter hinter,
|
|
||||||
FT_Face face );
|
|
||||||
|
|
||||||
/***********************************************************************
|
/*************************************************************************/
|
||||||
*
|
/* */
|
||||||
* <FuncType>
|
/* <FuncType> */
|
||||||
* FT_AutoHinter_Load_Func
|
/* FT_AutoHinter_Done_Global_Func */
|
||||||
*
|
/* */
|
||||||
* <Description>
|
/* <Description> */
|
||||||
* This function is used to load, scale and automatically hint a glyph
|
/* Discards the global hints retrieved through */
|
||||||
* from a given face.
|
/* FT_AutoHinter_Get_Global_Func(). This is the only way these hints */
|
||||||
*
|
/* are freed from memory. */
|
||||||
* <Input>
|
/* */
|
||||||
* face :: handle to the face.
|
/* <Input> */
|
||||||
* glyph_index :: glyph index
|
/* hinter :: A handle to the auto-hinter module. */
|
||||||
* load_flags :: load flags
|
/* */
|
||||||
*
|
/* global :: A pointer to retrieved global hints to discard. */
|
||||||
* <Note>
|
/* */
|
||||||
* This function is capable of loading composite glyphs by hinting
|
typedef void (*FT_AutoHinter_Done_Global_Func)( FT_AutoHinter hinter,
|
||||||
* each sub-glyph independently (which improves quality).
|
void* global );
|
||||||
*
|
|
||||||
* It will call the font driver with FT_Load_Glyph, with FT_LOAD_NO_SCALE
|
|
||||||
* set..
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef FT_Error (*FT_AutoHinter_Load_Func)(
|
|
||||||
FT_AutoHinter hinter,
|
|
||||||
FT_GlyphSlot slot,
|
|
||||||
FT_Size size,
|
|
||||||
FT_UInt glyph_index,
|
|
||||||
FT_ULong load_flags );
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
*
|
/*************************************************************************/
|
||||||
* <Struct>
|
/* */
|
||||||
* FT_AutoHinter_Interface
|
/* <FuncType> */
|
||||||
*
|
/* FT_AutoHinter_Reset_Func */
|
||||||
* <Description>
|
/* */
|
||||||
* The auto-hinter module's interface.
|
/* <Description> */
|
||||||
*
|
/* This function is used to recompute the global metrics in a given */
|
||||||
*/
|
/* font. This is useful when global font data changes (e.g. Multiple */
|
||||||
typedef struct FT_AutoHinter_Interface
|
/* Masters fonts where blend coordinates change). */
|
||||||
|
/* */
|
||||||
|
/* <Input> */
|
||||||
|
/* hinter :: A handle to the source auto-hinter. */
|
||||||
|
/* */
|
||||||
|
/* face :: A handle to the face. */
|
||||||
|
/* */
|
||||||
|
typedef void (*FT_AutoHinter_Reset_Func)( FT_AutoHinter hinter,
|
||||||
|
FT_Face face );
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <FuncType> */
|
||||||
|
/* FT_AutoHinter_Load_Func */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* This function is used to load, scale, and automatically hint a */
|
||||||
|
/* glyph from a given face. */
|
||||||
|
/* */
|
||||||
|
/* <Input> */
|
||||||
|
/* face :: A handle to the face. */
|
||||||
|
/* glyph_index :: The glyph index. */
|
||||||
|
/* load_flags :: The load flags. */
|
||||||
|
/* */
|
||||||
|
/* <Note> */
|
||||||
|
/* This function is capable of loading composite glyphs by hinting */
|
||||||
|
/* each sub-glyph independently (which improves quality). */
|
||||||
|
/* */
|
||||||
|
/* It will call the font driver with FT_Load_Glyph(), with */
|
||||||
|
/* FT_LOAD_NO_SCALE set. */
|
||||||
|
/* */
|
||||||
|
typedef FT_Error (*FT_AutoHinter_Load_Func)( FT_AutoHinter hinter,
|
||||||
|
FT_GlyphSlot slot,
|
||||||
|
FT_Size size,
|
||||||
|
FT_UInt glyph_index,
|
||||||
|
FT_ULong load_flags );
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <Struct> */
|
||||||
|
/* FT_AutoHinter_Interface */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* The auto-hinter module's interface. */
|
||||||
|
/* */
|
||||||
|
typedef struct FT_AutoHinter_Interface
|
||||||
{
|
{
|
||||||
FT_AutoHinter_Reset_Func reset_face;
|
FT_AutoHinter_Reset_Func reset_face;
|
||||||
FT_AutoHinter_Load_Func load_glyph;
|
FT_AutoHinter_Load_Func load_glyph;
|
||||||
|
@ -175,5 +188,8 @@
|
||||||
|
|
||||||
} FT_AutoHinter_Interface;
|
} FT_AutoHinter_Interface;
|
||||||
|
|
||||||
|
|
||||||
#endif /* AUTOHINT_H */
|
#endif /* AUTOHINT_H */
|
||||||
|
|
||||||
|
|
||||||
|
/* END */
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
/* The FreeType private base classes (specification). */
|
/* The FreeType private base classes (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
/* */
|
/* */
|
||||||
/* This file is part of the FreeType project, and may only be used */
|
/* This file is part of the FreeType project, and may only be used, */
|
||||||
/* modified and distributed under the terms of the FreeType project */
|
/* modified, and distributed under the terms of the FreeType project */
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||||
/* this file you indicate that you have read the license and */
|
/* this file you indicate that you have read the license and */
|
||||||
/* understand and accept it fully. */
|
/* understand and accept it fully. */
|
||||||
|
@ -142,6 +142,32 @@
|
||||||
#define FT_DRIVER_HAS_HINTER(x) (FT_MODULE_CLASS(x)->module_flags & \
|
#define FT_DRIVER_HAS_HINTER(x) (FT_MODULE_CLASS(x)->module_flags & \
|
||||||
ft_module_driver_has_hinter )
|
ft_module_driver_has_hinter )
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <Function> */
|
||||||
|
/* FT_Get_Module_Interface */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* Finds a module and returns its specific interface as a typeless */
|
||||||
|
/* pointer. */
|
||||||
|
/* */
|
||||||
|
/* <Input> */
|
||||||
|
/* library :: A handle to the library object. */
|
||||||
|
/* */
|
||||||
|
/* module_name :: The module's name (as an ASCII string). */
|
||||||
|
/* */
|
||||||
|
/* <Return> */
|
||||||
|
/* A module-specific interface if available, 0 otherwise. */
|
||||||
|
/* */
|
||||||
|
/* <Note> */
|
||||||
|
/* You should better be familiar with FreeType internals to know */
|
||||||
|
/* which module to look for, and what its interface is :-) */
|
||||||
|
/* */
|
||||||
|
BASE_DEF( const void* ) FT_Get_Module_Interface( FT_Library library,
|
||||||
|
const char* mod_name );
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
/* */
|
/* */
|
||||||
/* t1tables.h */
|
/* t1tables.h */
|
||||||
/* */
|
/* */
|
||||||
/* Basic Type 1/Type 2 tables definitions and interface */
|
/* Basic Type 1/Type 2 tables definitions and interface (specification */
|
||||||
|
/* only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
@ -139,7 +140,7 @@
|
||||||
|
|
||||||
/* maximum number of Multiple Masters designs, as defined in the spec */
|
/* maximum number of Multiple Masters designs, as defined in the spec */
|
||||||
#define T1_MAX_MM_DESIGNS 16
|
#define T1_MAX_MM_DESIGNS 16
|
||||||
|
|
||||||
/* maximum number of Multiple Masters axes, as defined in the spec */
|
/* maximum number of Multiple Masters axes, as defined in the spec */
|
||||||
#define T1_MAX_MM_AXIS 4
|
#define T1_MAX_MM_AXIS 4
|
||||||
|
|
||||||
|
@ -153,7 +154,7 @@
|
||||||
FT_Byte num_points;
|
FT_Byte num_points;
|
||||||
FT_Fixed* design_points;
|
FT_Fixed* design_points;
|
||||||
FT_Fixed* blend_points;
|
FT_Fixed* blend_points;
|
||||||
|
|
||||||
} T1_DesignMap;
|
} T1_DesignMap;
|
||||||
|
|
||||||
|
|
||||||
|
@ -161,19 +162,19 @@
|
||||||
{
|
{
|
||||||
FT_UInt num_designs;
|
FT_UInt num_designs;
|
||||||
FT_UInt num_axis;
|
FT_UInt num_axis;
|
||||||
|
|
||||||
FT_String* axis_names[T1_MAX_MM_AXIS];
|
FT_String* axis_names[T1_MAX_MM_AXIS];
|
||||||
FT_Fixed* design_pos[T1_MAX_MM_DESIGNS];
|
FT_Fixed* design_pos[T1_MAX_MM_DESIGNS];
|
||||||
T1_DesignMap design_map[T1_MAX_MM_AXIS];
|
T1_DesignMap design_map[T1_MAX_MM_AXIS];
|
||||||
|
|
||||||
FT_Fixed* weight_vector;
|
FT_Fixed* weight_vector;
|
||||||
FT_Fixed* default_weight_vector;
|
FT_Fixed* default_weight_vector;
|
||||||
|
|
||||||
T1_FontInfo* font_infos[T1_MAX_MM_DESIGNS + 1];
|
T1_FontInfo* font_infos[T1_MAX_MM_DESIGNS + 1];
|
||||||
T1_Private* privates [T1_MAX_MM_DESIGNS + 1];
|
T1_Private* privates [T1_MAX_MM_DESIGNS + 1];
|
||||||
|
|
||||||
FT_ULong blend_bitflags;
|
FT_ULong blend_bitflags;
|
||||||
|
|
||||||
} T1_Blend;
|
} T1_Blend;
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,7 +186,7 @@
|
||||||
FT_Fixed forcebold_threshold;
|
FT_Fixed forcebold_threshold;
|
||||||
FT_Pos stroke_width;
|
FT_Pos stroke_width;
|
||||||
FT_Fixed expansion_factor;
|
FT_Fixed expansion_factor;
|
||||||
|
|
||||||
FT_Byte paint_type;
|
FT_Byte paint_type;
|
||||||
FT_Byte font_type;
|
FT_Byte font_type;
|
||||||
FT_Matrix font_matrix;
|
FT_Matrix font_matrix;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ttmakeid.h */
|
/* ttmakeid.h */
|
||||||
/* */
|
/* */
|
||||||
/* TrueType name ID definitions */
|
/* TrueType name ID definitions (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
/* tttables.h */
|
/* tttables.h */
|
||||||
/* */
|
/* */
|
||||||
/* Basic SFNT/TrueType tables definitions and interface */
|
/* Basic SFNT/TrueType tables definitions and interface */
|
||||||
|
/* (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
@ -428,7 +429,7 @@
|
||||||
FT_Char WidthType;
|
FT_Char WidthType;
|
||||||
FT_Byte SerifStyle;
|
FT_Byte SerifStyle;
|
||||||
FT_Byte Reserved;
|
FT_Byte Reserved;
|
||||||
|
|
||||||
} TT_PCLT;
|
} TT_PCLT;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
/* This file is part of the FreeType project, and may only be used, */
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
/* modified, and distributed under the terms of the FreeType project */
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||||
/* this file you indicate that you have read the license and */
|
/* this file you indicate that you have read the license and */
|
||||||
/* understand and accept it fully. */
|
/* understand and accept it fully. */
|
||||||
/* */
|
/* */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftbase.c */
|
/* ftbase.c */
|
||||||
/* */
|
/* */
|
||||||
/* Single object library component. */
|
/* Single object library component (body only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftextend.h */
|
/* ftextend.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType extensions implementation (body). */
|
/* FreeType extensions implementation (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftinit.c */
|
/* ftinit.c */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType initialisation layer (body). */
|
/* FreeType initialization layer (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* ftobjs.c */
|
/* ftobjs.c */
|
||||||
/* */
|
/* */
|
||||||
/* The FreeType private base classes (base). */
|
/* The FreeType private base classes (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2000 by */
|
/* Copyright 1996-2000 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
|
@ -2088,32 +2088,30 @@
|
||||||
driver = face->driver;
|
driver = face->driver;
|
||||||
memory = driver->root.memory;
|
memory = driver->root.memory;
|
||||||
|
|
||||||
|
kerning->x = 0;
|
||||||
|
kerning->y = 0;
|
||||||
|
|
||||||
if ( driver->clazz->get_kerning )
|
if ( driver->clazz->get_kerning )
|
||||||
{
|
{
|
||||||
error = driver->clazz->get_kerning( face,
|
error = driver->clazz->get_kerning( face,
|
||||||
left_glyph,
|
left_glyph,
|
||||||
right_glyph,
|
right_glyph,
|
||||||
kerning );
|
kerning );
|
||||||
}
|
if ( !error )
|
||||||
if ( !error )
|
|
||||||
{
|
|
||||||
if ( kern_mode != ft_kerning_unscaled )
|
|
||||||
{
|
{
|
||||||
kerning->x = FT_MulFix( kerning->x, face->size->metrics.x_scale );
|
if ( kern_mode != ft_kerning_unscaled )
|
||||||
kerning->y = FT_MulFix( kerning->y, face->size->metrics.y_scale );
|
|
||||||
|
|
||||||
if ( kern_mode != ft_kerning_unfitted )
|
|
||||||
{
|
{
|
||||||
kerning->x = ( kerning->x + 32 ) & -64;
|
kerning->x = FT_MulFix( kerning->x, face->size->metrics.x_scale );
|
||||||
kerning->y = ( kerning->y + 32 ) & -64;
|
kerning->y = FT_MulFix( kerning->y, face->size->metrics.y_scale );
|
||||||
|
|
||||||
|
if ( kern_mode != ft_kerning_unfitted )
|
||||||
|
{
|
||||||
|
kerning->x = ( kerning->x + 32 ) & -64;
|
||||||
|
kerning->y = ( kerning->y + 32 ) & -64;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
kerning->x = 0;
|
|
||||||
kerning->y = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -2922,9 +2920,8 @@
|
||||||
/* You should better be familiar with FreeType internals to know */
|
/* You should better be familiar with FreeType internals to know */
|
||||||
/* which module to look for, and what its interface is :-) */
|
/* which module to look for, and what its interface is :-) */
|
||||||
/* */
|
/* */
|
||||||
FT_EXPORT_FUNC( const void* ) FT_Get_Module_Interface(
|
BASE_FUNC( const void* ) FT_Get_Module_Interface( FT_Library library,
|
||||||
FT_Library library,
|
const char* mod_name )
|
||||||
const char* mod_name )
|
|
||||||
{
|
{
|
||||||
FT_Module module;
|
FT_Module module;
|
||||||
|
|
||||||
|
|
|
@ -1264,7 +1264,7 @@
|
||||||
|
|
||||||
args = stack;
|
args = stack;
|
||||||
|
|
||||||
/* adding six more points; 4 control points, 2 on-curve point */
|
/* adding six more points; 4 control points, 2 on-curve points */
|
||||||
if ( start_point( builder, x, y ) ||
|
if ( start_point( builder, x, y ) ||
|
||||||
check_points ( builder, 6 ) )
|
check_points ( builder, 6 ) )
|
||||||
goto Memory_Error;
|
goto Memory_Error;
|
||||||
|
@ -1316,7 +1316,7 @@
|
||||||
|
|
||||||
FT_TRACE4(( " flex1" ));
|
FT_TRACE4(( " flex1" ));
|
||||||
|
|
||||||
/* adding five more points; 4 control points, 1 on-curve point */
|
/* adding six more points; 4 control points, 2 on-curve points */
|
||||||
if ( start_point( builder, x, y ) ||
|
if ( start_point( builder, x, y ) ||
|
||||||
check_points( builder, 6 ) )
|
check_points( builder, 6 ) )
|
||||||
goto Memory_Error;
|
goto Memory_Error;
|
||||||
|
@ -1355,7 +1355,7 @@
|
||||||
args += 2;
|
args += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* is last operand a x or y delta ? */
|
/* is last operand an x- or y-delta? */
|
||||||
if ( horizontal )
|
if ( horizontal )
|
||||||
{
|
{
|
||||||
x += args[0];
|
x += args[0];
|
||||||
|
@ -1389,7 +1389,8 @@
|
||||||
{
|
{
|
||||||
x += args[0];
|
x += args[0];
|
||||||
y += args[1];
|
y += args[1];
|
||||||
add_point( builder, x, y, (FT_Bool)( count == 3 || count == 0) );
|
add_point( builder, x, y,
|
||||||
|
(FT_Bool)( count == 3 || count == 0 ) );
|
||||||
args += 2;
|
args += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue