updated freetype to 2.3.8
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28932 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* ANSI-specific configuration file (specification only). */
|
/* ANSI-specific configuration file (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 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, */
|
||||||
@@ -43,6 +43,7 @@
|
|||||||
#include FT_CONFIG_OPTIONS_H
|
#include FT_CONFIG_OPTIONS_H
|
||||||
#include FT_CONFIG_STANDARD_LIBRARY_H
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
|
|
||||||
@@ -134,6 +135,14 @@ FT_BEGIN_HEADER
|
|||||||
#else
|
#else
|
||||||
#define FT_MACINTOSH 1
|
#define FT_MACINTOSH 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#elif defined( __SC__ ) || defined( __MRC__ )
|
||||||
|
/* Classic MacOS compilers */
|
||||||
|
#include "ConditionalMacros.h"
|
||||||
|
#if TARGET_OS_MAC
|
||||||
|
#define FT_MACINTOSH 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -212,6 +221,7 @@ FT_BEGIN_HEADER
|
|||||||
#error "no 32bit type found -- please check your configuration files"
|
#error "no 32bit type found -- please check your configuration files"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* look up an integer type that is at least 32 bits */
|
/* look up an integer type that is at least 32 bits */
|
||||||
#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT)
|
#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT)
|
||||||
|
|
||||||
@@ -267,17 +277,12 @@ FT_BEGIN_HEADER
|
|||||||
#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
|
#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
|
||||||
|
|
||||||
|
|
||||||
#define FT_BEGIN_STMNT do {
|
|
||||||
#define FT_END_STMNT } while ( 0 )
|
|
||||||
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* A 64-bit data type will create compilation problems if you compile */
|
/* A 64-bit data type will create compilation problems if you compile */
|
||||||
/* in strict ANSI mode. To avoid them, we disable their use if */
|
/* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */
|
||||||
/* __STDC__ is defined. You can however ignore this rule by */
|
/* is defined. You can however ignore this rule by defining the */
|
||||||
/* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */
|
/* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */
|
||||||
/* */
|
/* */
|
||||||
#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 )
|
#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 )
|
||||||
|
|
||||||
@@ -292,6 +297,86 @@ FT_BEGIN_HEADER
|
|||||||
#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */
|
#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */
|
||||||
|
|
||||||
|
|
||||||
|
#define FT_BEGIN_STMNT do {
|
||||||
|
#define FT_END_STMNT } while ( 0 )
|
||||||
|
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER
|
||||||
|
/* Provide assembler fragments for performance-critical functions. */
|
||||||
|
/* These must be defined `static __inline__' with GCC. */
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
|
||||||
|
#if defined( __arm__ ) && !defined( __thumb__ )
|
||||||
|
#define FT_MULFIX_ASSEMBLER FT_MulFix_arm
|
||||||
|
|
||||||
|
/* documentation is in freetype.h */
|
||||||
|
|
||||||
|
static __inline__ FT_Int32
|
||||||
|
FT_MulFix_arm( FT_Int32 a,
|
||||||
|
FT_Int32 b )
|
||||||
|
{
|
||||||
|
register FT_Int32 t, t2;
|
||||||
|
|
||||||
|
|
||||||
|
asm __volatile__ (
|
||||||
|
"smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */
|
||||||
|
"mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */
|
||||||
|
"add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */
|
||||||
|
"adds %1, %1, %0\n\t" /* %1 += %0 */
|
||||||
|
"adc %2, %2, #0\n\t" /* %2 += carry */
|
||||||
|
"mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */
|
||||||
|
"orr %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */
|
||||||
|
: "=r"(a), "=&r"(t2), "=&r"(t)
|
||||||
|
: "r"(a), "r"(b) );
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __arm__ && !__thumb__ */
|
||||||
|
|
||||||
|
#if defined( i386 )
|
||||||
|
#define FT_MULFIX_ASSEMBLER FT_MulFix_i386
|
||||||
|
|
||||||
|
/* documentation is in freetype.h */
|
||||||
|
|
||||||
|
static __inline__ FT_Int32
|
||||||
|
FT_MulFix_i386( FT_Int32 a,
|
||||||
|
FT_Int32 b )
|
||||||
|
{
|
||||||
|
register FT_Int32 result;
|
||||||
|
|
||||||
|
|
||||||
|
__asm__ __volatile__ (
|
||||||
|
"imul %%edx\n"
|
||||||
|
"movl %%edx, %%ecx\n"
|
||||||
|
"sarl $31, %%ecx\n"
|
||||||
|
"addl $0x8000, %%ecx\n"
|
||||||
|
"addl %%ecx, %%eax\n"
|
||||||
|
"adcl $0, %%edx\n"
|
||||||
|
"shrl $16, %%eax\n"
|
||||||
|
"shll $16, %%edx\n"
|
||||||
|
"addl %%edx, %%eax\n"
|
||||||
|
: "=a"(result), "+d"(b)
|
||||||
|
: "a"(a)
|
||||||
|
: "%ecx" );
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* i386 */
|
||||||
|
|
||||||
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
|
#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FT_CONFIG_OPTION_INLINE_MULFIX
|
||||||
|
#ifdef FT_MULFIX_ASSEMBLER
|
||||||
|
#define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
|
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
|
||||||
|
|
||||||
#define FT_LOCAL( x ) static x
|
#define FT_LOCAL( x ) static x
|
||||||
|
|||||||
@@ -729,6 +729,18 @@
|
|||||||
#define FT_GASP_H <freetype/ftgasp.h>
|
#define FT_GASP_H <freetype/ftgasp.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_ADVANCES_H
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro used in #include statements to name the file containing the
|
||||||
|
* FreeType~2 API which returns individual and ranged glyph advances.
|
||||||
|
*/
|
||||||
|
#define FT_ADVANCES_H <freetype/ftadvanc.h>
|
||||||
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
|
#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
|
||||||
|
|||||||
@@ -10,23 +10,23 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
FT_USE_MODULE(autofit_module_class)
|
FT_USE_MODULE( FT_Module_Class, autofit_module_class )
|
||||||
FT_USE_MODULE(tt_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class )
|
||||||
FT_USE_MODULE(t1_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class )
|
||||||
FT_USE_MODULE(cff_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class )
|
||||||
FT_USE_MODULE(t1cid_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class )
|
||||||
FT_USE_MODULE(pfr_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class )
|
||||||
FT_USE_MODULE(t42_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class )
|
||||||
FT_USE_MODULE(winfnt_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )
|
||||||
FT_USE_MODULE(pcf_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class )
|
||||||
FT_USE_MODULE(psaux_module_class)
|
FT_USE_MODULE( FT_Module_Class, psaux_module_class )
|
||||||
FT_USE_MODULE(psnames_module_class)
|
FT_USE_MODULE( FT_Module_Class, psnames_module_class )
|
||||||
FT_USE_MODULE(pshinter_module_class)
|
FT_USE_MODULE( FT_Module_Class, pshinter_module_class )
|
||||||
FT_USE_MODULE(ft_raster1_renderer_class)
|
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
|
||||||
FT_USE_MODULE(sfnt_module_class)
|
FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
|
||||||
FT_USE_MODULE(ft_smooth_renderer_class)
|
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
|
||||||
FT_USE_MODULE(ft_smooth_lcd_renderer_class)
|
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class )
|
||||||
FT_USE_MODULE(ft_smooth_lcdv_renderer_class)
|
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class )
|
||||||
FT_USE_MODULE(bdf_driver_class)
|
FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|||||||
@@ -112,7 +112,28 @@ FT_BEGIN_HEADER
|
|||||||
/* file `ftconfig.h' either statically or through the */
|
/* file `ftconfig.h' either statically or through the */
|
||||||
/* `configure' script on supported platforms. */
|
/* `configure' script on supported platforms. */
|
||||||
/* */
|
/* */
|
||||||
#undef FT_CONFIG_OPTION_FORCE_INT64
|
#undef FT_CONFIG_OPTION_FORCE_INT64
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* If this macro is defined, do not try to use an assembler version of */
|
||||||
|
/* performance-critical functions (e.g. FT_MulFix). You should only do */
|
||||||
|
/* that to verify that the assembler function works properly, or to */
|
||||||
|
/* execute benchmark tests of the various implementations. */
|
||||||
|
/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* If this macro is defined, try to use an inlined assembler version of */
|
||||||
|
/* the `FT_MulFix' function, which is a `hotspot' when loading and */
|
||||||
|
/* hinting glyphs, and which should be executed as fast as possible. */
|
||||||
|
/* */
|
||||||
|
/* Note that if your compiler or CPU is not supported, this will default */
|
||||||
|
/* to the standard and portable implementation found in `ftcalc.c'. */
|
||||||
|
/* */
|
||||||
|
#define FT_CONFIG_OPTION_INLINE_MULFIX
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
@@ -163,7 +184,7 @@ FT_BEGIN_HEADER
|
|||||||
/* Do not #undef this macro here since the build system might define */
|
/* Do not #undef this macro here since the build system might define */
|
||||||
/* it for certain configurations only. */
|
/* it for certain configurations only. */
|
||||||
/* */
|
/* */
|
||||||
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
|
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
@@ -204,27 +225,27 @@ FT_BEGIN_HEADER
|
|||||||
/* Do not #undef these macros here since the build system might define */
|
/* Do not #undef these macros here since the build system might define */
|
||||||
/* them for certain configurations only. */
|
/* them for certain configurations only. */
|
||||||
/* */
|
/* */
|
||||||
/* #define FT_EXPORT(x) extern x */
|
/* #define FT_EXPORT(x) extern x */
|
||||||
/* #define FT_EXPORT_DEF(x) x */
|
/* #define FT_EXPORT_DEF(x) x */
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* Glyph Postscript Names handling */
|
/* Glyph Postscript Names handling */
|
||||||
/* */
|
/* */
|
||||||
/* By default, FreeType 2 is compiled with the `PSNames' module. This */
|
/* By default, FreeType 2 is compiled with the `psnames' module. This */
|
||||||
/* module is in charge of converting a glyph name string into a */
|
/* module is in charge of converting a glyph name string into a */
|
||||||
/* Unicode value, or return a Macintosh standard glyph name for the */
|
/* Unicode value, or return a Macintosh standard glyph name for the */
|
||||||
/* use with the TrueType `post' table. */
|
/* use with the TrueType `post' table. */
|
||||||
/* */
|
/* */
|
||||||
/* Undefine this macro if you do not want `PSNames' compiled in your */
|
/* Undefine this macro if you do not want `psnames' compiled in your */
|
||||||
/* build of FreeType. This has the following effects: */
|
/* build of FreeType. This has the following effects: */
|
||||||
/* */
|
/* */
|
||||||
/* - The TrueType driver will provide its own set of glyph names, */
|
/* - The TrueType driver will provide its own set of glyph names, */
|
||||||
/* if you build it to support postscript names in the TrueType */
|
/* if you build it to support postscript names in the TrueType */
|
||||||
/* `post' table. */
|
/* `post' table. */
|
||||||
/* */
|
/* */
|
||||||
/* - The Type 1 driver will not be able to synthetize a Unicode */
|
/* - The Type 1 driver will not be able to synthesize a Unicode */
|
||||||
/* charmap out of the glyphs found in the fonts. */
|
/* charmap out of the glyphs found in the fonts. */
|
||||||
/* */
|
/* */
|
||||||
/* You would normally undefine this configuration macro when building */
|
/* You would normally undefine this configuration macro when building */
|
||||||
@@ -240,12 +261,12 @@ FT_BEGIN_HEADER
|
|||||||
/* By default, FreeType 2 is built with the `PSNames' module compiled */
|
/* By default, FreeType 2 is built with the `PSNames' module compiled */
|
||||||
/* in. Among other things, the module is used to convert a glyph name */
|
/* in. Among other things, the module is used to convert a glyph name */
|
||||||
/* into a Unicode value. This is especially useful in order to */
|
/* into a Unicode value. This is especially useful in order to */
|
||||||
/* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */
|
/* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */
|
||||||
/* through a big table named the `Adobe Glyph List' (AGL). */
|
/* through a big table named the `Adobe Glyph List' (AGL). */
|
||||||
/* */
|
/* */
|
||||||
/* Undefine this macro if you do not want the Adobe Glyph List */
|
/* Undefine this macro if you do not want the Adobe Glyph List */
|
||||||
/* compiled in your `PSNames' module. The Type 1 driver will not be */
|
/* 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 */
|
/* able to synthesize a Unicode charmap out of the glyphs found in the */
|
||||||
/* fonts. */
|
/* fonts. */
|
||||||
/* */
|
/* */
|
||||||
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
|
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
|
||||||
@@ -467,9 +488,9 @@ FT_BEGIN_HEADER
|
|||||||
/* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */
|
/* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */
|
||||||
/* of the TrueType bytecode interpreter is used that doesn't implement */
|
/* of the TrueType bytecode interpreter is used that doesn't implement */
|
||||||
/* any of the patented opcodes and algorithms. Note that the */
|
/* any of the patented opcodes and algorithms. Note that the */
|
||||||
/* the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you */
|
/* TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you define */
|
||||||
/* define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; with other words, */
|
/* TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, either define */
|
||||||
/* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */
|
/* TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */
|
||||||
/* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */
|
/* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */
|
||||||
/* */
|
/* */
|
||||||
/* This macro is only useful for a small number of font files (mostly */
|
/* This macro is only useful for a small number of font files (mostly */
|
||||||
@@ -653,11 +674,12 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This variable is defined if either unpatented or native TrueType
|
* This macro is defined if either unpatented or native TrueType
|
||||||
* hinting is requested by the definitions above.
|
* hinting is requested by the definitions above.
|
||||||
*/
|
*/
|
||||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||||
#define TT_USE_BYTECODE_INTERPRETER
|
#define TT_USE_BYTECODE_INTERPRETER
|
||||||
|
#undef TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||||
#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING
|
#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||||
#define TT_USE_BYTECODE_INTERPRETER
|
#define TT_USE_BYTECODE_INTERPRETER
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
/* ANSI-specific library and header configuration file (specification */
|
/* ANSI-specific library and header configuration file (specification */
|
||||||
/* only). */
|
/* only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 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, */
|
||||||
@@ -54,12 +54,6 @@
|
|||||||
/* In these case, `ftconfig.h' will refuse to compile anyway with a */
|
/* In these case, `ftconfig.h' will refuse to compile anyway with a */
|
||||||
/* message like `couldn't find 32-bit type' or something similar. */
|
/* message like `couldn't find 32-bit type' or something similar. */
|
||||||
/* */
|
/* */
|
||||||
/* IMPORTANT NOTE: We do not define aliases for heap management and */
|
|
||||||
/* i/o routines (i.e. malloc/free/fopen/fread/...) */
|
|
||||||
/* since these functions should all be encapsulated */
|
|
||||||
/* by platform-specific implementations of */
|
|
||||||
/* `ftsystem.c'. */
|
|
||||||
/* */
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
@@ -124,8 +118,6 @@
|
|||||||
|
|
||||||
#define ft_qsort qsort
|
#define ft_qsort qsort
|
||||||
|
|
||||||
#define ft_exit exit /* only used to exit from unhandled exceptions */
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
/* */
|
/* */
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType high-level API and common types (specification only). */
|
/* FreeType high-level API and common types (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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, */
|
||||||
@@ -60,8 +60,8 @@ FT_BEGIN_HEADER
|
|||||||
/* */
|
/* */
|
||||||
/* <Description> */
|
/* <Description> */
|
||||||
/* FreeType assumes that structures allocated by the user and passed */
|
/* FreeType assumes that structures allocated by the user and passed */
|
||||||
/* as arguments are zeroed out except for the actual data. With */
|
/* as arguments are zeroed out except for the actual data. In other */
|
||||||
/* other words, it is recommended to use `calloc' (or variants of it) */
|
/* words, it is recommended to use `calloc' (or variants of it) */
|
||||||
/* instead of `malloc' for allocation. */
|
/* instead of `malloc' for allocation. */
|
||||||
/* */
|
/* */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
@@ -191,6 +191,15 @@ FT_BEGIN_HEADER
|
|||||||
/* FT_Set_Charmap */
|
/* FT_Set_Charmap */
|
||||||
/* FT_Get_Charmap_Index */
|
/* FT_Get_Charmap_Index */
|
||||||
/* */
|
/* */
|
||||||
|
/* FT_FSTYPE_INSTALLABLE_EMBEDDING */
|
||||||
|
/* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING */
|
||||||
|
/* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING */
|
||||||
|
/* FT_FSTYPE_EDITABLE_EMBEDDING */
|
||||||
|
/* FT_FSTYPE_NO_SUBSETTING */
|
||||||
|
/* FT_FSTYPE_BITMAP_EMBEDDING_ONLY */
|
||||||
|
/* */
|
||||||
|
/* FT_Get_FSType_Flags */
|
||||||
|
/* */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
@@ -606,7 +615,7 @@ FT_BEGIN_HEADER
|
|||||||
/* Same as FT_ENCODING_JOHAB. Deprecated. */
|
/* Same as FT_ENCODING_JOHAB. Deprecated. */
|
||||||
/* */
|
/* */
|
||||||
/* <Note> */
|
/* <Note> */
|
||||||
/* By default, FreeType automatically synthetizes a Unicode charmap */
|
/* By default, FreeType automatically synthesizes a Unicode charmap */
|
||||||
/* for PostScript fonts, using their glyph names dictionaries. */
|
/* for PostScript fonts, using their glyph names dictionaries. */
|
||||||
/* However, it also reports the encodings defined explicitly in the */
|
/* However, it also reports the encodings defined explicitly in the */
|
||||||
/* font file, for the cases when they are needed, with the Adobe */
|
/* font file, for the cases when they are needed, with the Adobe */
|
||||||
@@ -883,7 +892,7 @@ FT_BEGIN_HEADER
|
|||||||
/* scalable formats. */
|
/* scalable formats. */
|
||||||
/* */
|
/* */
|
||||||
/* underline_position :: The position, in font units, of the */
|
/* underline_position :: The position, in font units, of the */
|
||||||
/* underline line for this face. It's the */
|
/* underline line for this face. It is the */
|
||||||
/* center of the underlining stem. Only */
|
/* center of the underlining stem. Only */
|
||||||
/* relevant for scalable formats. */
|
/* relevant for scalable formats. */
|
||||||
/* */
|
/* */
|
||||||
@@ -1037,6 +1046,27 @@ FT_BEGIN_HEADER
|
|||||||
/* exist make FT_Load_Glyph return successfully; in all other cases */
|
/* exist make FT_Load_Glyph return successfully; in all other cases */
|
||||||
/* you get an `FT_Err_Invalid_Argument' error. */
|
/* you get an `FT_Err_Invalid_Argument' error. */
|
||||||
/* */
|
/* */
|
||||||
|
/* Note that CID-keyed fonts which are in an SFNT wrapper don't */
|
||||||
|
/* have this flag set since the glyphs are accessed in the normal */
|
||||||
|
/* way (using contiguous indices); the `CID-ness' isn't visible to */
|
||||||
|
/* the application. */
|
||||||
|
/* */
|
||||||
|
/* FT_FACE_FLAG_TRICKY :: */
|
||||||
|
/* Set if the font is `tricky', this is, it always needs the */
|
||||||
|
/* font format's native hinting engine to get a reasonable result. */
|
||||||
|
/* A typical example is the Chinese font `mingli.ttf' which uses */
|
||||||
|
/* TrueType bytecode instructions to move and scale all of its */
|
||||||
|
/* subglyphs. */
|
||||||
|
/* */
|
||||||
|
/* It is not possible to autohint such fonts using */
|
||||||
|
/* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */
|
||||||
|
/* @FT_LOAD_NO_HINTING. You have to set both FT_LOAD_NO_HINTING */
|
||||||
|
/* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */
|
||||||
|
/* probably never want this except for demonstration purposes. */
|
||||||
|
/* */
|
||||||
|
/* Currently, there are six TrueType fonts in the list of tricky */
|
||||||
|
/* fonts; they are hard-coded in file `ttobjs.c'. */
|
||||||
|
/* */
|
||||||
#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
|
#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
|
||||||
#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
|
#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
|
||||||
#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 )
|
#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 )
|
||||||
@@ -1050,8 +1080,7 @@ FT_BEGIN_HEADER
|
|||||||
#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 )
|
#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 )
|
||||||
#define FT_FACE_FLAG_HINTER ( 1L << 11 )
|
#define FT_FACE_FLAG_HINTER ( 1L << 11 )
|
||||||
#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 )
|
#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 )
|
||||||
|
#define FT_FACE_FLAG_TRICKY ( 1L << 13 )
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -1162,8 +1191,6 @@ FT_BEGIN_HEADER
|
|||||||
#define FT_HAS_FIXED_SIZES( face ) \
|
#define FT_HAS_FIXED_SIZES( face ) \
|
||||||
( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
|
( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
*
|
*
|
||||||
@@ -1224,9 +1251,23 @@ FT_BEGIN_HEADER
|
|||||||
( face->face_flags & FT_FACE_FLAG_CID_KEYED )
|
( face->face_flags & FT_FACE_FLAG_CID_KEYED )
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_IS_TRICKY( face )
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro that returns true whenever a face represents a `tricky' font.
|
||||||
|
* See the discussion of @FT_FACE_FLAG_TRICKY for more details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define FT_IS_TRICKY( face ) \
|
||||||
|
( face->face_flags & FT_FACE_FLAG_TRICKY )
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* <Constant> */
|
/* <Const> */
|
||||||
/* FT_STYLE_FLAG_XXX */
|
/* FT_STYLE_FLAG_XXX */
|
||||||
/* */
|
/* */
|
||||||
/* <Description> */
|
/* <Description> */
|
||||||
@@ -1518,10 +1559,10 @@ FT_BEGIN_HEADER
|
|||||||
/* */
|
/* */
|
||||||
/* This image can later be converted into a bitmap by calling */
|
/* This image can later be converted into a bitmap by calling */
|
||||||
/* @FT_Render_Glyph. This function finds the current renderer for */
|
/* @FT_Render_Glyph. This function finds the current renderer for */
|
||||||
/* the native image's format then invokes it. */
|
/* the native image's format, then invokes it. */
|
||||||
/* */
|
/* */
|
||||||
/* The renderer is in charge of transforming the native image through */
|
/* The renderer is in charge of transforming the native image through */
|
||||||
/* the slot's face transformation fields, then convert it into a */
|
/* the slot's face transformation fields, then converting it into a */
|
||||||
/* bitmap that is returned in `slot->bitmap'. */
|
/* bitmap that is returned in `slot->bitmap'. */
|
||||||
/* */
|
/* */
|
||||||
/* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */
|
/* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */
|
||||||
@@ -1769,7 +1810,7 @@ FT_BEGIN_HEADER
|
|||||||
/* `num_params' and `params' is used. They are ignored otherwise. */
|
/* `num_params' and `params' is used. They are ignored otherwise. */
|
||||||
/* */
|
/* */
|
||||||
/* Ideally, both the `pathname' and `params' fields should be tagged */
|
/* Ideally, both the `pathname' and `params' fields should be tagged */
|
||||||
/* as `const'; this is missing for API backwards compatibility. With */
|
/* as `const'; this is missing for API backwards compatibility. In */
|
||||||
/* other words, applications should treat them as read-only. */
|
/* other words, applications should treat them as read-only. */
|
||||||
/* */
|
/* */
|
||||||
typedef struct FT_Open_Args_
|
typedef struct FT_Open_Args_
|
||||||
@@ -2174,7 +2215,8 @@ FT_BEGIN_HEADER
|
|||||||
/* A character width or height smaller than 1pt is set to 1pt; if */
|
/* A character width or height smaller than 1pt is set to 1pt; if */
|
||||||
/* both resolution values are zero, they are set to 72dpi. */
|
/* both resolution values are zero, they are set to 72dpi. */
|
||||||
/* */
|
/* */
|
||||||
|
/* Don't use this function if you are using the FreeType cache API. */
|
||||||
|
/* */
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
FT_Set_Char_Size( FT_Face face,
|
FT_Set_Char_Size( FT_Face face,
|
||||||
FT_F26Dot6 char_width,
|
FT_F26Dot6 char_width,
|
||||||
@@ -2390,7 +2432,7 @@ FT_BEGIN_HEADER
|
|||||||
* 8~pixels packed into each byte of the bitmap data.
|
* 8~pixels packed into each byte of the bitmap data.
|
||||||
*
|
*
|
||||||
* Note that this has no effect on the hinting algorithm used. You
|
* Note that this has no effect on the hinting algorithm used. You
|
||||||
* should use @FT_LOAD_TARGET_MONO instead so that the
|
* should rather use @FT_LOAD_TARGET_MONO so that the
|
||||||
* monochrome-optimized hinting algorithm is used.
|
* monochrome-optimized hinting algorithm is used.
|
||||||
*
|
*
|
||||||
* FT_LOAD_LINEAR_DESIGN ::
|
* FT_LOAD_LINEAR_DESIGN ::
|
||||||
@@ -2409,6 +2451,9 @@ FT_BEGIN_HEADER
|
|||||||
* @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be
|
* @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be
|
||||||
* used at all.
|
* used at all.
|
||||||
*
|
*
|
||||||
|
* See the description of @FT_FACE_FLAG_TRICKY for a special exception
|
||||||
|
* (affecting only a handful of Asian fonts).
|
||||||
|
*
|
||||||
* Besides deciding which hinter to use, you can also decide which
|
* Besides deciding which hinter to use, you can also decide which
|
||||||
* hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details.
|
* hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details.
|
||||||
*/
|
*/
|
||||||
@@ -2426,11 +2471,14 @@ FT_BEGIN_HEADER
|
|||||||
#define FT_LOAD_IGNORE_TRANSFORM 0x800
|
#define FT_LOAD_IGNORE_TRANSFORM 0x800
|
||||||
#define FT_LOAD_MONOCHROME 0x1000
|
#define FT_LOAD_MONOCHROME 0x1000
|
||||||
#define FT_LOAD_LINEAR_DESIGN 0x2000
|
#define FT_LOAD_LINEAR_DESIGN 0x2000
|
||||||
#define FT_LOAD_SBITS_ONLY 0x4000 /* temporary hack! */
|
|
||||||
#define FT_LOAD_NO_AUTOHINT 0x8000U
|
#define FT_LOAD_NO_AUTOHINT 0x8000U
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
|
/* used internally only by certain font drivers! */
|
||||||
|
#define FT_LOAD_ADVANCE_ONLY 0x100
|
||||||
|
#define FT_LOAD_SBITS_ONLY 0x4000
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
@@ -3156,6 +3204,88 @@ FT_BEGIN_HEADER
|
|||||||
FT_Matrix *p_transform );
|
FT_Matrix *p_transform );
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <Enum> */
|
||||||
|
/* FT_FSTYPE_XXX */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* A list of bit flags used in the `fsType' field of the OS/2 table */
|
||||||
|
/* in a TrueType or OpenType font and the `FSType' entry in a */
|
||||||
|
/* PostScript font. These bit flags are returned by */
|
||||||
|
/* @FT_Get_FSType_Flags; they inform client applications of embedding */
|
||||||
|
/* and subsetting restrictions associated with a font. */
|
||||||
|
/* */
|
||||||
|
/* See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for */
|
||||||
|
/* more details. */
|
||||||
|
/* */
|
||||||
|
/* <Values> */
|
||||||
|
/* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */
|
||||||
|
/* Fonts with no fsType bit set may be embedded and permanently */
|
||||||
|
/* installed on the remote system by an application. */
|
||||||
|
/* */
|
||||||
|
/* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */
|
||||||
|
/* Fonts that have only this bit set must not be modified, embedded */
|
||||||
|
/* or exchanged in any manner without first obtaining permission of */
|
||||||
|
/* the font software copyright owner. */
|
||||||
|
/* */
|
||||||
|
/* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */
|
||||||
|
/* If this bit is set, the font may be embedded and temporarily */
|
||||||
|
/* loaded on the remote system. Documents containing Preview & */
|
||||||
|
/* Print fonts must be opened `read-only'; no edits can be applied */
|
||||||
|
/* to the document. */
|
||||||
|
/* */
|
||||||
|
/* FT_FSTYPE_EDITABLE_EMBEDDING :: */
|
||||||
|
/* If this bit is set, the font may be embedded but must only be */
|
||||||
|
/* installed temporarily on other systems. In contrast to Preview */
|
||||||
|
/* & Print fonts, documents containing editable fonts may be opened */
|
||||||
|
/* for reading, editing is permitted, and changes may be saved. */
|
||||||
|
/* */
|
||||||
|
/* FT_FSTYPE_NO_SUBSETTING :: */
|
||||||
|
/* If this bit is set, the font may not be subsetted prior to */
|
||||||
|
/* embedding. */
|
||||||
|
/* */
|
||||||
|
/* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */
|
||||||
|
/* If this bit is set, only bitmaps contained in the font may be */
|
||||||
|
/* embedded; no outline data may be embedded. If there are no */
|
||||||
|
/* bitmaps available in the font, then the font is unembeddable. */
|
||||||
|
/* */
|
||||||
|
/* <Note> */
|
||||||
|
/* While the fsType flags can indicate that a font may be embedded, a */
|
||||||
|
/* license with the font vendor may be separately required to use the */
|
||||||
|
/* font in this way. */
|
||||||
|
/* */
|
||||||
|
#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000
|
||||||
|
#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002
|
||||||
|
#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004
|
||||||
|
#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008
|
||||||
|
#define FT_FSTYPE_NO_SUBSETTING 0x0100
|
||||||
|
#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <Function> */
|
||||||
|
/* FT_Get_FSType_Flags */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* Return the fsType flags for a font. */
|
||||||
|
/* */
|
||||||
|
/* <Input> */
|
||||||
|
/* face :: A handle to the source face object. */
|
||||||
|
/* */
|
||||||
|
/* <Return> */
|
||||||
|
/* The fsType flags, @FT_FSTYPE_XXX. */
|
||||||
|
/* */
|
||||||
|
/* <Note> */
|
||||||
|
/* Use this function rather than directly reading the `fs_type' field */
|
||||||
|
/* in the @PS_FontInfoRec structure which is only guaranteed to */
|
||||||
|
/* return the correct results for Type~1 fonts. */
|
||||||
|
/* */
|
||||||
|
FT_EXPORT( FT_UShort )
|
||||||
|
FT_Get_FSType_Flags( FT_Face face );
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* <Section> */
|
/* <Section> */
|
||||||
@@ -3431,6 +3561,12 @@ FT_BEGIN_HEADER
|
|||||||
FT_Long c );
|
FT_Long c );
|
||||||
|
|
||||||
|
|
||||||
|
/* */
|
||||||
|
|
||||||
|
/* The following #if 0 ... #endif is for the documentation formatter, */
|
||||||
|
/* hiding the internal `FT_MULFIX_INLINED' macro. */
|
||||||
|
|
||||||
|
#if 0
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* <Function> */
|
/* <Function> */
|
||||||
@@ -3464,6 +3600,17 @@ FT_BEGIN_HEADER
|
|||||||
FT_MulFix( FT_Long a,
|
FT_MulFix( FT_Long a,
|
||||||
FT_Long b );
|
FT_Long b );
|
||||||
|
|
||||||
|
/* */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FT_MULFIX_INLINED
|
||||||
|
#define FT_MulFix( a, b ) FT_MULFIX_INLINED( a, b )
|
||||||
|
#else
|
||||||
|
FT_EXPORT( FT_Long )
|
||||||
|
FT_MulFix( FT_Long a,
|
||||||
|
FT_Long b );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
@@ -3611,7 +3758,7 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
#define FREETYPE_MAJOR 2
|
#define FREETYPE_MAJOR 2
|
||||||
#define FREETYPE_MINOR 3
|
#define FREETYPE_MINOR 3
|
||||||
#define FREETYPE_PATCH 7
|
#define FREETYPE_PATCH 8
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
@@ -3695,7 +3842,7 @@ FT_BEGIN_HEADER
|
|||||||
/* */
|
/* */
|
||||||
/* <Return> */
|
/* <Return> */
|
||||||
/* The old setting value. This will always be false if this is not */
|
/* The old setting value. This will always be false if this is not */
|
||||||
/* a SFNT font, or if the unpatented hinter is not compiled in this */
|
/* an SFNT font, or if the unpatented hinter is not compiled in this */
|
||||||
/* instance of the library. */
|
/* instance of the library. */
|
||||||
/* */
|
/* */
|
||||||
/* <Since> */
|
/* <Since> */
|
||||||
|
|||||||
@@ -0,0 +1,179 @@
|
|||||||
|
/***************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* ftadvanc.h */
|
||||||
|
/* */
|
||||||
|
/* Quick computation of advance widths (specification only). */
|
||||||
|
/* */
|
||||||
|
/* Copyright 2008 by */
|
||||||
|
/* 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. */
|
||||||
|
/* */
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __FTADVANC_H__
|
||||||
|
#define __FTADVANC_H__
|
||||||
|
|
||||||
|
|
||||||
|
#include <ft2build.h>
|
||||||
|
#include FT_FREETYPE_H
|
||||||
|
|
||||||
|
#ifdef FREETYPE_H
|
||||||
|
#error "freetype.h of FreeType 1 has been loaded!"
|
||||||
|
#error "Please fix the directory search order for header files"
|
||||||
|
#error "so that freetype.h of FreeType 2 is found first."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @section:
|
||||||
|
* quick_advance
|
||||||
|
*
|
||||||
|
* @title:
|
||||||
|
* Quick retrieval of advance values
|
||||||
|
*
|
||||||
|
* @abstract:
|
||||||
|
* Retrieve horizontal and vertical advance values without processing
|
||||||
|
* glyph outlines, if possible.
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* This section contains functions to quickly extract advance values
|
||||||
|
* without handling glyph outlines, if possible.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <Const> */
|
||||||
|
/* FT_ADVANCE_FLAG_FAST_ONLY */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* A bit-flag to be OR-ed with the `flags' parameter of the */
|
||||||
|
/* @FT_Get_Advance and @FT_Get_Advances functions. */
|
||||||
|
/* */
|
||||||
|
/* If set, it indicates that you want these functions to fail if the */
|
||||||
|
/* corresponding hinting mode or font driver doesn't allow for very */
|
||||||
|
/* quick advance computation. */
|
||||||
|
/* */
|
||||||
|
/* Typically, glyphs which are either unscaled, unhinted, bitmapped, */
|
||||||
|
/* or light-hinted can have their advance width computed very */
|
||||||
|
/* quickly. */
|
||||||
|
/* */
|
||||||
|
/* Normal and bytecode hinted modes, which require loading, scaling, */
|
||||||
|
/* and hinting of the glyph outline, are extremely slow by */
|
||||||
|
/* comparison. */
|
||||||
|
/* */
|
||||||
|
#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000UL
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <Function> */
|
||||||
|
/* FT_Get_Advance */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* Retrieve the advance value of a given glyph outline in an */
|
||||||
|
/* @FT_Face. By default, the unhinted advance is returned in font */
|
||||||
|
/* units. */
|
||||||
|
/* */
|
||||||
|
/* <Input> */
|
||||||
|
/* face :: The source @FT_Face handle. */
|
||||||
|
/* */
|
||||||
|
/* gindex :: The glyph index. */
|
||||||
|
/* */
|
||||||
|
/* load_flags :: A set of bit flags similar to those used when */
|
||||||
|
/* calling @FT_Load_Glyph, used to determine what kind */
|
||||||
|
/* of advances you need. */
|
||||||
|
/* <Output> */
|
||||||
|
/* padvance :: The advance value, in either font units or 16.16 */
|
||||||
|
/* format. */
|
||||||
|
/* */
|
||||||
|
/* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */
|
||||||
|
/* vertical advance corresponding to a vertical layout. */
|
||||||
|
/* Otherwise, it is the horizontal advance in a */
|
||||||
|
/* horizontal layout. */
|
||||||
|
/* */
|
||||||
|
/* <Return> */
|
||||||
|
/* FreeType error code. 0 means success. */
|
||||||
|
/* */
|
||||||
|
/* <Note> */
|
||||||
|
/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */
|
||||||
|
/* if the corresponding font backend doesn't have a quick way to */
|
||||||
|
/* retrieve the advances. */
|
||||||
|
/* */
|
||||||
|
/* A scaled advance is returned in 16.16 format but isn't transformed */
|
||||||
|
/* by the affine transformation specified by @FT_Set_Transform. */
|
||||||
|
/* */
|
||||||
|
FT_EXPORT( FT_Error )
|
||||||
|
FT_Get_Advance( FT_Face face,
|
||||||
|
FT_UInt gindex,
|
||||||
|
FT_Int32 load_flags,
|
||||||
|
FT_Fixed *padvance );
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <Function> */
|
||||||
|
/* FT_Get_Advances */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* Retrieve the advance values of several glyph outlines in an */
|
||||||
|
/* @FT_Face. By default, the unhinted advances are returned in font */
|
||||||
|
/* units. */
|
||||||
|
/* */
|
||||||
|
/* <Input> */
|
||||||
|
/* face :: The source @FT_Face handle. */
|
||||||
|
/* */
|
||||||
|
/* start :: The first glyph index. */
|
||||||
|
/* */
|
||||||
|
/* count :: The number of advance values you want to retrieve. */
|
||||||
|
/* */
|
||||||
|
/* load_flags :: A set of bit flags similar to those used when */
|
||||||
|
/* calling @FT_Load_Glyph. */
|
||||||
|
/* */
|
||||||
|
/* <Output> */
|
||||||
|
/* padvance :: The advances, in either font units or 16.16 format. */
|
||||||
|
/* This array must contain at least `count' elements. */
|
||||||
|
/* */
|
||||||
|
/* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */
|
||||||
|
/* vertical advances corresponding to a vertical layout. */
|
||||||
|
/* Otherwise, they are the horizontal advances in a */
|
||||||
|
/* horizontal layout. */
|
||||||
|
/* */
|
||||||
|
/* <Return> */
|
||||||
|
/* FreeType error code. 0 means success. */
|
||||||
|
/* */
|
||||||
|
/* <Note> */
|
||||||
|
/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */
|
||||||
|
/* if the corresponding font backend doesn't have a quick way to */
|
||||||
|
/* retrieve the advances. */
|
||||||
|
/* */
|
||||||
|
/* Scaled advances are returned in 16.16 format but aren't */
|
||||||
|
/* transformed by the affine transformation specified by */
|
||||||
|
/* @FT_Set_Transform. */
|
||||||
|
/* */
|
||||||
|
FT_EXPORT( FT_Error )
|
||||||
|
FT_Get_Advances( FT_Face face,
|
||||||
|
FT_UInt start,
|
||||||
|
FT_UInt count,
|
||||||
|
FT_Int32 load_flags,
|
||||||
|
FT_Fixed *padvances );
|
||||||
|
|
||||||
|
/* */
|
||||||
|
|
||||||
|
|
||||||
|
FT_END_HEADER
|
||||||
|
|
||||||
|
#endif /* __FTADVANC_H__ */
|
||||||
|
|
||||||
|
|
||||||
|
/* END */
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType API for accessing BDF-specific strings (specification). */
|
/* FreeType API for accessing BDF-specific strings (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2002, 2003, 2004, 2006 by */
|
/* Copyright 2002, 2003, 2004, 2006, 2009 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, */
|
||||||
@@ -183,6 +183,14 @@ FT_BEGIN_HEADER
|
|||||||
* otherwise. It also returns an error if the property is not in the
|
* otherwise. It also returns an error if the property is not in the
|
||||||
* font.
|
* font.
|
||||||
*
|
*
|
||||||
|
* A `property' is a either key-value pair within the STARTPROPERTIES
|
||||||
|
* ... ENDPROPERTIES block of a BDF font or a key-value pair from the
|
||||||
|
* `info->props' array within a `FontRec' structure of a PCF font.
|
||||||
|
*
|
||||||
|
* Integer properties are always stored as `signed' within PCF fonts;
|
||||||
|
* consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
|
||||||
|
* for BDF fonts only.
|
||||||
|
*
|
||||||
* In case of error, `aproperty->type' is always set to
|
* In case of error, `aproperty->type' is always set to
|
||||||
* @BDF_PROPERTY_TYPE_NONE.
|
* @BDF_PROPERTY_TYPE_NONE.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2,10 +2,9 @@
|
|||||||
/* */
|
/* */
|
||||||
/* ftbitmap.h */
|
/* ftbitmap.h */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */
|
/* FreeType utility functions for bitmaps (specification). */
|
||||||
/* bitmaps into 8bpp format (specification). */
|
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2004, 2005, 2006 by */
|
/* Copyright 2004, 2005, 2006, 2008 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, */
|
||||||
@@ -121,7 +120,7 @@ FT_BEGIN_HEADER
|
|||||||
/* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */
|
/* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */
|
||||||
/* */
|
/* */
|
||||||
/* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */
|
/* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */
|
||||||
/* you should call `FT_GlyphSlot_Own_Bitmap' on the slot first. */
|
/* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */
|
||||||
/* */
|
/* */
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
FT_Bitmap_Embolden( FT_Library library,
|
FT_Bitmap_Embolden( FT_Library library,
|
||||||
@@ -170,6 +169,28 @@ FT_BEGIN_HEADER
|
|||||||
FT_Int alignment );
|
FT_Int alignment );
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* <Function> */
|
||||||
|
/* FT_GlyphSlot_Own_Bitmap */
|
||||||
|
/* */
|
||||||
|
/* <Description> */
|
||||||
|
/* Make sure that a glyph slot owns `slot->bitmap'. */
|
||||||
|
/* */
|
||||||
|
/* <Input> */
|
||||||
|
/* slot :: The glyph slot. */
|
||||||
|
/* */
|
||||||
|
/* <Return> */
|
||||||
|
/* FreeType error code. 0~means success. */
|
||||||
|
/* */
|
||||||
|
/* <Note> */
|
||||||
|
/* This function is to be used in combination with */
|
||||||
|
/* @FT_Bitmap_Embolden. */
|
||||||
|
/* */
|
||||||
|
FT_EXPORT( FT_Error )
|
||||||
|
FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot );
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* <Function> */
|
/* <Function> */
|
||||||
|
|||||||
@@ -609,7 +609,8 @@ FT_BEGIN_HEADER
|
|||||||
* The source face ID.
|
* The source face ID.
|
||||||
*
|
*
|
||||||
* cmap_index ::
|
* cmap_index ::
|
||||||
* The index of the charmap in the source face.
|
* The index of the charmap in the source face. Any negative value
|
||||||
|
* means to use the cache @FT_Face's default charmap.
|
||||||
*
|
*
|
||||||
* char_code ::
|
* char_code ::
|
||||||
* The character code (in the corresponding charmap).
|
* The character code (in the corresponding charmap).
|
||||||
@@ -832,6 +833,9 @@ FT_BEGIN_HEADER
|
|||||||
/* call to one of the caching sub-system APIs. Don't assume that it */
|
/* call to one of the caching sub-system APIs. Don't assume that it */
|
||||||
/* is persistent! */
|
/* is persistent! */
|
||||||
/* */
|
/* */
|
||||||
|
/* Calls to @FT_Set_Char_Size and friends have no effect on cached */
|
||||||
|
/* glyphs; you should always use the FreeType cache API instead. */
|
||||||
|
/* */
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
FTC_ImageCache_LookupScaler( FTC_ImageCache cache,
|
FTC_ImageCache_LookupScaler( FTC_ImageCache cache,
|
||||||
FTC_Scaler scaler,
|
FTC_Scaler scaler,
|
||||||
|
|||||||
@@ -90,6 +90,7 @@
|
|||||||
/* computations */
|
/* computations */
|
||||||
/* list_processing */
|
/* list_processing */
|
||||||
/* outline_processing */
|
/* outline_processing */
|
||||||
|
/* quick_advance */
|
||||||
/* bitmap_handling */
|
/* bitmap_handling */
|
||||||
/* raster */
|
/* raster */
|
||||||
/* glyph_stroker */
|
/* glyph_stroker */
|
||||||
|
|||||||
@@ -22,6 +22,13 @@
|
|||||||
#include <ft2build.h>
|
#include <ft2build.h>
|
||||||
#include FT_FREETYPE_H
|
#include FT_FREETYPE_H
|
||||||
|
|
||||||
|
#ifdef FREETYPE_H
|
||||||
|
#error "freetype.h of FreeType 1 has been loaded!"
|
||||||
|
#error "Please fix the directory search order for header files"
|
||||||
|
#error "so that freetype.h of FreeType 2 is found first."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
*
|
*
|
||||||
* @section:
|
* @section:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType convenience functions to handle glyphs (specification). */
|
/* FreeType convenience functions to handle glyphs (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2006 by */
|
/* Copyright 1996-2001, 2002, 2003, 2006, 2008 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, */
|
||||||
@@ -219,7 +219,8 @@ FT_BEGIN_HEADER
|
|||||||
/* FT_Get_Glyph */
|
/* FT_Get_Glyph */
|
||||||
/* */
|
/* */
|
||||||
/* <Description> */
|
/* <Description> */
|
||||||
/* A function used to extract a glyph image from a slot. */
|
/* A function used to extract a glyph image from a slot. Note that */
|
||||||
|
/* the created @FT_Glyph object must be released with @FT_Done_Glyph. */
|
||||||
/* */
|
/* */
|
||||||
/* <Input> */
|
/* <Input> */
|
||||||
/* slot :: A handle to the source glyph slot. */
|
/* slot :: A handle to the source glyph slot. */
|
||||||
@@ -427,7 +428,7 @@ FT_BEGIN_HEADER
|
|||||||
/* the_glyph :: A pointer to a handle to the target glyph. */
|
/* the_glyph :: A pointer to a handle to the target glyph. */
|
||||||
/* */
|
/* */
|
||||||
/* <Input> */
|
/* <Input> */
|
||||||
/* render_mode :: An enumeration that describe how the data is */
|
/* render_mode :: An enumeration that describes how the data is */
|
||||||
/* rendered. */
|
/* rendered. */
|
||||||
/* */
|
/* */
|
||||||
/* origin :: A pointer to a vector used to translate the glyph */
|
/* origin :: A pointer to a vector used to translate the glyph */
|
||||||
@@ -443,12 +444,14 @@ FT_BEGIN_HEADER
|
|||||||
/* FreeType error code. 0~means success. */
|
/* FreeType error code. 0~means success. */
|
||||||
/* */
|
/* */
|
||||||
/* <Note> */
|
/* <Note> */
|
||||||
|
/* This function does nothing if the glyph format isn't scalable. */
|
||||||
|
/* */
|
||||||
/* The glyph image is translated with the `origin' vector before */
|
/* The glyph image is translated with the `origin' vector before */
|
||||||
/* rendering. */
|
/* rendering. */
|
||||||
/* */
|
/* */
|
||||||
/* The first parameter is a pointer to an @FT_Glyph handle, that will */
|
/* The first parameter is a pointer to an @FT_Glyph handle, that will */
|
||||||
/* be replaced by this function. Typically, you would use (omitting */
|
/* be _replaced_ by this function (with newly allocated data). */
|
||||||
/* error handling): */
|
/* Typically, you would use (omitting error handling): */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* { */
|
/* { */
|
||||||
@@ -462,12 +465,12 @@ FT_BEGIN_HEADER
|
|||||||
/* // extract glyph image */
|
/* // extract glyph image */
|
||||||
/* error = FT_Get_Glyph( face->glyph, &glyph ); */
|
/* error = FT_Get_Glyph( face->glyph, &glyph ); */
|
||||||
/* */
|
/* */
|
||||||
/* // convert to a bitmap (default render mode + destroy old) */
|
/* // convert to a bitmap (default render mode + destroying old) */
|
||||||
/* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */
|
/* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */
|
||||||
/* { */
|
/* { */
|
||||||
/* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, */
|
/* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, */
|
||||||
/* 0, 1 ); */
|
/* 0, 1 ); */
|
||||||
/* if ( error ) // glyph unchanged */
|
/* if ( error ) // `glyph' unchanged */
|
||||||
/* ... */
|
/* ... */
|
||||||
/* } */
|
/* } */
|
||||||
/* */
|
/* */
|
||||||
@@ -482,7 +485,42 @@ FT_BEGIN_HEADER
|
|||||||
/* } */
|
/* } */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* This function does nothing if the glyph format isn't scalable. */
|
/* Here another example, again without error handling: */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* { */
|
||||||
|
/* FT_Glyph glyphs[MAX_GLYPHS] */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* ... */
|
||||||
|
/* */
|
||||||
|
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
||||||
|
/* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */
|
||||||
|
/* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */
|
||||||
|
/* */
|
||||||
|
/* ... */
|
||||||
|
/* */
|
||||||
|
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
||||||
|
/* { */
|
||||||
|
/* FT_Glyph bitmap = glyphs[idx]; */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* ... */
|
||||||
|
/* */
|
||||||
|
/* // after this call, `bitmap' no longer points into */
|
||||||
|
/* // the `glyphs' array (and the old value isn't destroyed) */
|
||||||
|
/* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */
|
||||||
|
/* */
|
||||||
|
/* ... */
|
||||||
|
/* */
|
||||||
|
/* FT_Done_Glyph( bitmap ); */
|
||||||
|
/* } */
|
||||||
|
/* */
|
||||||
|
/* ... */
|
||||||
|
/* */
|
||||||
|
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
||||||
|
/* FT_Done_Glyph( glyphs[idx] ); */
|
||||||
|
/* } */
|
||||||
/* */
|
/* */
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
|
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
|
||||||
|
|||||||
@@ -129,29 +129,30 @@ FT_BEGIN_HEADER
|
|||||||
/* FT_PIXEL_MODE_GRAY :: */
|
/* FT_PIXEL_MODE_GRAY :: */
|
||||||
/* An 8-bit bitmap, generally used to represent anti-aliased glyph */
|
/* An 8-bit bitmap, generally used to represent anti-aliased glyph */
|
||||||
/* images. Each pixel is stored in one byte. Note that the number */
|
/* images. Each pixel is stored in one byte. Note that the number */
|
||||||
/* of value `gray' levels is stored in the `num_grays' field of */
|
/* of `gray' levels is stored in the `num_grays' field of the */
|
||||||
/* the @FT_Bitmap structure (it generally is 256). */
|
/* @FT_Bitmap structure (it generally is 256). */
|
||||||
/* */
|
/* */
|
||||||
/* FT_PIXEL_MODE_GRAY2 :: */
|
/* FT_PIXEL_MODE_GRAY2 :: */
|
||||||
/* A 2-bit/pixel bitmap, used to represent embedded anti-aliased */
|
/* A 2-bit per pixel bitmap, used to represent embedded */
|
||||||
/* bitmaps in font files according to the OpenType specification. */
|
/* anti-aliased bitmaps in font files according to the OpenType */
|
||||||
/* We haven't found a single font using this format, however. */
|
/* specification. We haven't found a single font using this */
|
||||||
|
/* format, however. */
|
||||||
/* */
|
/* */
|
||||||
/* FT_PIXEL_MODE_GRAY4 :: */
|
/* FT_PIXEL_MODE_GRAY4 :: */
|
||||||
/* A 4-bit/pixel bitmap, used to represent embedded anti-aliased */
|
/* A 4-bit per pixel bitmap, representing embedded anti-aliased */
|
||||||
/* bitmaps in font files according to the OpenType specification. */
|
/* bitmaps in font files according to the OpenType specification. */
|
||||||
/* We haven't found a single font using this format, however. */
|
/* We haven't found a single font using this format, however. */
|
||||||
/* */
|
/* */
|
||||||
/* FT_PIXEL_MODE_LCD :: */
|
/* FT_PIXEL_MODE_LCD :: */
|
||||||
/* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */
|
/* An 8-bit bitmap, representing RGB or BGR decimated glyph images */
|
||||||
/* images used for display on LCD displays; the bitmap is three */
|
/* used for display on LCD displays; the bitmap is three times */
|
||||||
/* times wider than the original glyph image. See also */
|
/* wider than the original glyph image. See also */
|
||||||
/* @FT_RENDER_MODE_LCD. */
|
/* @FT_RENDER_MODE_LCD. */
|
||||||
/* */
|
/* */
|
||||||
/* FT_PIXEL_MODE_LCD_V :: */
|
/* FT_PIXEL_MODE_LCD_V :: */
|
||||||
/* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */
|
/* An 8-bit bitmap, representing RGB or BGR decimated glyph images */
|
||||||
/* images used for display on rotated LCD displays; the bitmap */
|
/* used for display on rotated LCD displays; the bitmap is three */
|
||||||
/* is three times taller than the original glyph image. See also */
|
/* times taller than the original glyph image. See also */
|
||||||
/* @FT_RENDER_MODE_LCD_V. */
|
/* @FT_RENDER_MODE_LCD_V. */
|
||||||
/* */
|
/* */
|
||||||
typedef enum FT_Pixel_Mode_
|
typedef enum FT_Pixel_Mode_
|
||||||
|
|||||||
@@ -23,6 +23,12 @@
|
|||||||
#include <ft2build.h>
|
#include <ft2build.h>
|
||||||
#include FT_FREETYPE_H
|
#include FT_FREETYPE_H
|
||||||
|
|
||||||
|
#ifdef FREETYPE_H
|
||||||
|
#error "freetype.h of FreeType 1 has been loaded!"
|
||||||
|
#error "Please fix the directory search order for header files"
|
||||||
|
#error "so that freetype.h of FreeType 2 is found first."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
|
|||||||
@@ -412,7 +412,7 @@ FT_BEGIN_HEADER
|
|||||||
* FT_Get_TrueType_Engine_Type
|
* FT_Get_TrueType_Engine_Type
|
||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* Return a @FT_TrueTypeEngineType value to indicate which level of
|
* Return an @FT_TrueTypeEngineType value to indicate which level of
|
||||||
* the TrueType virtual machine a given library instance supports.
|
* the TrueType virtual machine a given library instance supports.
|
||||||
*
|
*
|
||||||
* @input:
|
* @input:
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ FT_BEGIN_HEADER
|
|||||||
/* <Input> */
|
/* <Input> */
|
||||||
/* outline :: A pointer to the source target. */
|
/* outline :: A pointer to the source target. */
|
||||||
/* */
|
/* */
|
||||||
/* func_interface :: A table of `emitters', i.e,. function pointers */
|
/* func_interface :: A table of `emitters', i.e., function pointers */
|
||||||
/* called during decomposition to indicate path */
|
/* called during decomposition to indicate path */
|
||||||
/* operations. */
|
/* operations. */
|
||||||
/* */
|
/* */
|
||||||
@@ -333,6 +333,9 @@ FT_BEGIN_HEADER
|
|||||||
/* situations like acute angles or intersections are sometimes */
|
/* situations like acute angles or intersections are sometimes */
|
||||||
/* handled incorrectly. */
|
/* handled incorrectly. */
|
||||||
/* */
|
/* */
|
||||||
|
/* If you need `better' metrics values you should call */
|
||||||
|
/* @FT_Outline_Get_CBox ot @FT_Outline_Get_BBox. */
|
||||||
|
/* */
|
||||||
/* Example call: */
|
/* Example call: */
|
||||||
/* */
|
/* */
|
||||||
/* { */
|
/* { */
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType API for accessing PFR-specific data (specification only). */
|
/* FreeType API for accessing PFR-specific data (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2002, 2003, 2004, 2006 by */
|
/* Copyright 2002, 2003, 2004, 2006, 2008 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, */
|
||||||
@@ -73,11 +73,11 @@ FT_BEGIN_HEADER
|
|||||||
* A 16.16 fixed-point number used to scale distance expressed
|
* A 16.16 fixed-point number used to scale distance expressed
|
||||||
* in metrics units to device sub-pixels. This is equivalent to
|
* in metrics units to device sub-pixels. This is equivalent to
|
||||||
* `face->size->x_scale', but for metrics only. Optional (parameter
|
* `face->size->x_scale', but for metrics only. Optional (parameter
|
||||||
* can be NULL)
|
* can be NULL).
|
||||||
*
|
*
|
||||||
* ametrics_y_scale ::
|
* ametrics_y_scale ::
|
||||||
* Same as `ametrics_x_scale' but for the vertical direction.
|
* Same as `ametrics_x_scale' but for the vertical direction.
|
||||||
* optional (parameter can be NULL)
|
* optional (parameter can be NULL).
|
||||||
*
|
*
|
||||||
* @return:
|
* @return:
|
||||||
* FreeType error code. 0~means success.
|
* FreeType error code. 0~means success.
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ FT_BEGIN_HEADER
|
|||||||
* expressed as 16.16 fixed point value.
|
* expressed as 16.16 fixed point value.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* The radius is expressed in the same units that the outline
|
* The radius is expressed in the same units as the outline
|
||||||
* coordinates.
|
* coordinates.
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( void )
|
FT_EXPORT( void )
|
||||||
@@ -305,10 +305,10 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* If `opened' is~0 (the default), the outline is treated as a closed
|
* If `opened' is~0 (the default), the outline is treated as a closed
|
||||||
* path, and the stroker will generate two distinct `border' outlines.
|
* path, and the stroker generates two distinct `border' outlines.
|
||||||
*
|
*
|
||||||
* If `opened' is~1, the outline is processed as an open path, and the
|
* If `opened' is~1, the outline is processed as an open path, and the
|
||||||
* stroker will generate a single `stroke' outline.
|
* stroker generates a single `stroke' outline.
|
||||||
*
|
*
|
||||||
* This function calls @FT_Stroker_Rewind automatically.
|
* This function calls @FT_Stroker_Rewind automatically.
|
||||||
*/
|
*/
|
||||||
@@ -366,7 +366,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* You should call this function after @FT_Stroker_BeginSubPath.
|
* You should call this function after @FT_Stroker_BeginSubPath.
|
||||||
* If the subpath was not `opened', this function will `draw' a
|
* If the subpath was not `opened', this function `draws' a
|
||||||
* single line segment to the start position when needed.
|
* single line segment to the start position when needed.
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
@@ -476,7 +476,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* Call this function once you have finished parsing your paths
|
* Call this function once you have finished parsing your paths
|
||||||
* with the stroker. It will return the number of points and
|
* with the stroker. It returns the number of points and
|
||||||
* contours necessary to export one of the `border' or `stroke'
|
* contours necessary to export one of the `border' or `stroke'
|
||||||
* outlines generated by the stroker.
|
* outlines generated by the stroker.
|
||||||
*
|
*
|
||||||
@@ -525,8 +525,8 @@ FT_BEGIN_HEADER
|
|||||||
* export the corresponding border to your own @FT_Outline
|
* export the corresponding border to your own @FT_Outline
|
||||||
* structure.
|
* structure.
|
||||||
*
|
*
|
||||||
* Note that this function will append the border points and
|
* Note that this function appends the border points and
|
||||||
* contours to your outline, but will not try to resize its
|
* contours to your outline, but does not try to resize its
|
||||||
* arrays.
|
* arrays.
|
||||||
*
|
*
|
||||||
* @input:
|
* @input:
|
||||||
@@ -600,8 +600,8 @@ FT_BEGIN_HEADER
|
|||||||
* Call this function after @FT_Stroker_GetBorderCounts to
|
* Call this function after @FT_Stroker_GetBorderCounts to
|
||||||
* export the all borders to your own @FT_Outline structure.
|
* export the all borders to your own @FT_Outline structure.
|
||||||
*
|
*
|
||||||
* Note that this function will append the border points and
|
* Note that this function appends the border points and
|
||||||
* contours to your outline, but will not try to resize its
|
* contours to your outline, but does not try to resize its
|
||||||
* arrays.
|
* arrays.
|
||||||
*
|
*
|
||||||
* @input:
|
* @input:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
/* FreeType synthesizing code for emboldening and slanting */
|
/* FreeType synthesizing code for emboldening and slanting */
|
||||||
/* (specification). */
|
/* (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2000-2001, 2003, 2006 by */
|
/* Copyright 2000-2001, 2003, 2006, 2008 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, */
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/********* *********/
|
/********* *********/
|
||||||
/********* WARNING, THIS IS ALPHA CODE, THIS API *********/
|
/********* WARNING, THIS IS ALPHA CODE! THIS API *********/
|
||||||
/********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/
|
/********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/
|
||||||
/********* FREETYPE DEVELOPMENT TEAM *********/
|
/********* FREETYPE DEVELOPMENT TEAM *********/
|
||||||
/********* *********/
|
/********* *********/
|
||||||
@@ -34,6 +34,13 @@
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/* Main reason for not lifting the functions in this module to a */
|
||||||
|
/* `standard' API is that the used parameters for emboldening and */
|
||||||
|
/* slanting are not configurable. Consider the functions as a */
|
||||||
|
/* code resource which should be copied into the application and */
|
||||||
|
/* adapted to the particular needs. */
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTSYNTH_H__
|
#ifndef __FTSYNTH_H__
|
||||||
#define __FTSYNTH_H__
|
#define __FTSYNTH_H__
|
||||||
|
|
||||||
@@ -50,20 +57,20 @@
|
|||||||
|
|
||||||
FT_BEGIN_HEADER
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
/* Make sure slot owns slot->bitmap. */
|
/* Embolden a glyph by a `reasonable' value (which is highly a matter of */
|
||||||
FT_EXPORT( FT_Error )
|
/* taste). This function is actually a convenience function, providing */
|
||||||
FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot );
|
/* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */
|
||||||
|
/* */
|
||||||
/* Do not use this function directly! Copy the code to */
|
/* For emboldened outlines the metrics are estimates only; if you need */
|
||||||
/* your application and modify it to suit your need. */
|
/* precise values you should call @FT_Outline_Get_CBox. */
|
||||||
FT_EXPORT( void )
|
FT_EXPORT( void )
|
||||||
FT_GlyphSlot_Embolden( FT_GlyphSlot slot );
|
FT_GlyphSlot_Embolden( FT_GlyphSlot slot );
|
||||||
|
|
||||||
|
/* Slant an outline glyph to the right by about 12 degrees. */
|
||||||
FT_EXPORT( void )
|
FT_EXPORT( void )
|
||||||
FT_GlyphSlot_Oblique( FT_GlyphSlot slot );
|
FT_GlyphSlot_Oblique( FT_GlyphSlot slot );
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
FT_END_HEADER
|
FT_END_HEADER
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Debugging and logging component (specification). */
|
/* Debugging and logging component (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008 by */
|
/* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008, 2009 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, */
|
||||||
@@ -92,7 +92,7 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
#else /* !FT_DEBUG_LEVEL_TRACE */
|
#else /* !FT_DEBUG_LEVEL_TRACE */
|
||||||
|
|
||||||
#define FT_TRACE( level, varformat ) do ; while ( 0 ) /* nothing */
|
#define FT_TRACE( level, varformat ) do { } while ( 0 ) /* nothing */
|
||||||
|
|
||||||
#endif /* !FT_DEBUG_LEVEL_TRACE */
|
#endif /* !FT_DEBUG_LEVEL_TRACE */
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
#else /* !FT_DEBUG_LEVEL_ERROR */
|
#else /* !FT_DEBUG_LEVEL_ERROR */
|
||||||
|
|
||||||
#define FT_ERROR( varformat ) do ; while ( 0 ) /* nothing */
|
#define FT_ERROR( varformat ) do { } while ( 0 ) /* nothing */
|
||||||
|
|
||||||
#endif /* !FT_DEBUG_LEVEL_ERROR */
|
#endif /* !FT_DEBUG_LEVEL_ERROR */
|
||||||
|
|
||||||
@@ -201,7 +201,7 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
#else /* !FT_DEBUG_LEVEL_ERROR */
|
#else /* !FT_DEBUG_LEVEL_ERROR */
|
||||||
|
|
||||||
#define FT_ASSERT( condition ) do ; while ( 0 )
|
#define FT_ASSERT( condition ) do { } while ( 0 )
|
||||||
|
|
||||||
#endif /* !FT_DEBUG_LEVEL_ERROR */
|
#endif /* !FT_DEBUG_LEVEL_ERROR */
|
||||||
|
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ FT_BEGIN_HEADER
|
|||||||
(*FT_CharMap_CharNextFunc)( FT_CharMap charmap,
|
(*FT_CharMap_CharNextFunc)( FT_CharMap charmap,
|
||||||
FT_Long charcode );
|
FT_Long charcode );
|
||||||
|
|
||||||
|
|
||||||
typedef FT_Error
|
typedef FT_Error
|
||||||
(*FT_Face_GetKerningFunc)( FT_Face face,
|
(*FT_Face_GetKerningFunc)( FT_Face face,
|
||||||
FT_UInt left_glyph,
|
FT_UInt left_glyph,
|
||||||
@@ -104,11 +105,11 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
|
|
||||||
typedef FT_Error
|
typedef FT_Error
|
||||||
(*FT_Face_GetAdvancesFunc)( FT_Face face,
|
(*FT_Face_GetAdvancesFunc)( FT_Face face,
|
||||||
FT_UInt first,
|
FT_UInt first,
|
||||||
FT_UInt count,
|
FT_UInt count,
|
||||||
FT_Bool vertical,
|
FT_Int32 flags,
|
||||||
FT_UShort* advances );
|
FT_Fixed* advances );
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
/* Auxiliary functions and data structures related to PostScript fonts */
|
/* Auxiliary functions and data structures related to PostScript fonts */
|
||||||
/* (specification). */
|
/* (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 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, */
|
||||||
@@ -227,7 +227,11 @@ FT_BEGIN_HEADER
|
|||||||
FT_UInt array_max; /* maximal number of elements for */
|
FT_UInt array_max; /* maximal number of elements for */
|
||||||
/* array */
|
/* array */
|
||||||
FT_UInt count_offset; /* offset of element count for */
|
FT_UInt count_offset; /* offset of element count for */
|
||||||
/* arrays */
|
/* arrays; must not be zero if in */
|
||||||
|
/* use -- in other words, a */
|
||||||
|
/* `num_FOO' element must not */
|
||||||
|
/* start the used structure if we */
|
||||||
|
/* parse a `FOO' array */
|
||||||
FT_UInt dict; /* where we expect it */
|
FT_UInt dict; /* where we expect it */
|
||||||
} T1_FieldRec;
|
} T1_FieldRec;
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/* Copyright 2003 by */
|
/* Copyright 2003 by */
|
||||||
/* Masatake YAMATO, Redhat K.K. */
|
/* Masatake YAMATO, Redhat K.K. */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2003 by */
|
/* Copyright 2003, 2008 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, */
|
||||||
@@ -49,6 +49,13 @@ FT_BEGIN_HEADER
|
|||||||
/* The language ID used in Mac fonts. Definitions of values are in */
|
/* The language ID used in Mac fonts. Definitions of values are in */
|
||||||
/* freetype/ttnameid.h. */
|
/* freetype/ttnameid.h. */
|
||||||
/* */
|
/* */
|
||||||
|
/* format :: */
|
||||||
|
/* The cmap format. OpenType 1.5 defines the formats 0 (byte */
|
||||||
|
/* encoding table), 2~(high-byte mapping through table), 4~(segment */
|
||||||
|
/* mapping to delta values), 6~(trimmed table mapping), 8~(mixed */
|
||||||
|
/* 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented */
|
||||||
|
/* coverage), and 14 (Unicode Variation Sequences). */
|
||||||
|
/* */
|
||||||
typedef struct TT_CMapInfo_
|
typedef struct TT_CMapInfo_
|
||||||
{
|
{
|
||||||
FT_ULong language;
|
FT_ULong language;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
/* Basic Type1/Type2 type definitions and interface (specification */
|
/* Basic Type1/Type2 type definitions and interface (specification */
|
||||||
/* only). */
|
/* only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 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, */
|
||||||
@@ -231,7 +231,9 @@ FT_BEGIN_HEADER
|
|||||||
void* psnames;
|
void* psnames;
|
||||||
void* psaux;
|
void* psaux;
|
||||||
CID_FaceInfoRec cid;
|
CID_FaceInfoRec cid;
|
||||||
|
#if 0
|
||||||
void* afm_data;
|
void* afm_data;
|
||||||
|
#endif
|
||||||
CID_Subrs subrs;
|
CID_Subrs subrs;
|
||||||
|
|
||||||
/* since version 2.1 - interface to PostScript hinter */
|
/* since version 2.1 - interface to PostScript hinter */
|
||||||
|
|||||||
@@ -78,6 +78,10 @@ FT_BEGIN_HEADER
|
|||||||
FT_Short underline_position;
|
FT_Short underline_position;
|
||||||
FT_UShort underline_thickness;
|
FT_UShort underline_thickness;
|
||||||
|
|
||||||
|
/* since 2.3.8 */
|
||||||
|
|
||||||
|
FT_UShort fs_type;
|
||||||
|
|
||||||
} PS_FontInfoRec;
|
} PS_FontInfoRec;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -835,16 +835,18 @@ FT_BEGIN_HEADER
|
|||||||
/* This is new in OpenType 1.3 */
|
/* This is new in OpenType 1.3 */
|
||||||
#define TT_NAME_ID_CID_FINDFONT_NAME 20
|
#define TT_NAME_ID_CID_FINDFONT_NAME 20
|
||||||
|
|
||||||
|
/* This is new in OpenType 1.5 */
|
||||||
|
#define TT_NAME_ID_WWS_FAMILY 21
|
||||||
|
#define TT_NAME_ID_WWS_SUBFAMILY 22
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */
|
/* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */
|
||||||
/* */
|
/* */
|
||||||
/* Updated 02-Jul-2000. */
|
/* Updated 08-Nov-2008. */
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
/* General Scripts Area */
|
|
||||||
|
|
||||||
/* Bit 0 Basic Latin */
|
/* Bit 0 Basic Latin */
|
||||||
#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */
|
#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */
|
||||||
/* Bit 1 C1 Controls and Latin-1 Supplement */
|
/* Bit 1 C1 Controls and Latin-1 Supplement */
|
||||||
@@ -853,27 +855,44 @@ FT_BEGIN_HEADER
|
|||||||
#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */
|
#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */
|
||||||
/* Bit 3 Latin Extended-B */
|
/* Bit 3 Latin Extended-B */
|
||||||
#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */
|
#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */
|
||||||
/* Bit 4 IPA Extensions */
|
/* Bit 4 IPA Extensions */
|
||||||
|
/* Phonetic Extensions */
|
||||||
|
/* Phonetic Extensions Supplement */
|
||||||
#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */
|
#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */
|
||||||
|
/* U+1D00-U+1D7F */
|
||||||
|
/* U+1D80-U+1DBF */
|
||||||
/* Bit 5 Spacing Modifier Letters */
|
/* Bit 5 Spacing Modifier Letters */
|
||||||
|
/* Modifier Tone Letters */
|
||||||
#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */
|
#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */
|
||||||
/* Bit 6 Combining Diacritical Marks */
|
/* U+A700-U+A71F */
|
||||||
|
/* Bit 6 Combining Diacritical Marks */
|
||||||
|
/* Combining Diacritical Marks Supplement */
|
||||||
#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */
|
#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */
|
||||||
|
/* U+1DC0-U+1DFF */
|
||||||
/* Bit 7 Greek and Coptic */
|
/* Bit 7 Greek and Coptic */
|
||||||
#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */
|
#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */
|
||||||
/* Bit 8 is reserved (was: Greek Symbols and Coptic) */
|
/* Bit 8 Coptic */
|
||||||
/* Bit 9 Cyrillic + */
|
#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */
|
||||||
/* Cyrillic Supplementary */
|
/* Bit 9 Cyrillic */
|
||||||
|
/* Cyrillic Supplement */
|
||||||
|
/* Cyrillic Extended-A */
|
||||||
|
/* Cyrillic Extended-B */
|
||||||
#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */
|
#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */
|
||||||
/* U+0500-U+052F */
|
/* U+0500-U+052F */
|
||||||
|
/* U+2DE0-U+2DFF */
|
||||||
|
/* U+A640-U+A69F */
|
||||||
/* Bit 10 Armenian */
|
/* Bit 10 Armenian */
|
||||||
#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */
|
#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */
|
||||||
/* Bit 11 Hebrew */
|
/* Bit 11 Hebrew */
|
||||||
#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */
|
#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */
|
||||||
/* Bit 12 is reserved (was: Hebrew Extended) */
|
/* Bit 12 Vai */
|
||||||
/* Bit 13 Arabic */
|
#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */
|
||||||
|
/* Bit 13 Arabic */
|
||||||
|
/* Arabic Supplement */
|
||||||
#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */
|
#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */
|
||||||
/* Bit 14 is reserved (was: Arabic Extended) */
|
/* U+0750-U+077F */
|
||||||
|
/* Bit 14 NKo */
|
||||||
|
#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */
|
||||||
/* Bit 15 Devanagari */
|
/* Bit 15 Devanagari */
|
||||||
#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */
|
#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */
|
||||||
/* Bit 16 Bengali */
|
/* Bit 16 Bengali */
|
||||||
@@ -896,20 +915,26 @@ FT_BEGIN_HEADER
|
|||||||
#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */
|
#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */
|
||||||
/* Bit 25 Lao */
|
/* Bit 25 Lao */
|
||||||
#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */
|
#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */
|
||||||
/* Bit 26 Georgian */
|
/* Bit 26 Georgian */
|
||||||
|
/* Georgian Supplement */
|
||||||
#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */
|
#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */
|
||||||
/* Bit 27 is reserved (was Georgian Extended) */
|
/* U+2D00-U+2D2F */
|
||||||
|
/* Bit 27 Balinese */
|
||||||
|
#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */
|
||||||
/* Bit 28 Hangul Jamo */
|
/* Bit 28 Hangul Jamo */
|
||||||
#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */
|
#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */
|
||||||
/* Bit 29 Latin Extended Additional */
|
/* Bit 29 Latin Extended Additional */
|
||||||
|
/* Latin Extended-C */
|
||||||
|
/* Latin Extended-D */
|
||||||
#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */
|
#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */
|
||||||
|
/* U+2C60-U+2C7F */
|
||||||
|
/* U+A720-U+A7FF */
|
||||||
/* Bit 30 Greek Extended */
|
/* Bit 30 Greek Extended */
|
||||||
#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */
|
#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */
|
||||||
|
/* Bit 31 General Punctuation */
|
||||||
/* Symbols Area */
|
/* Supplemental Punctuation */
|
||||||
|
|
||||||
/* Bit 31 General Punctuation */
|
|
||||||
#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */
|
#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */
|
||||||
|
/* U+2E00-U+2E7F */
|
||||||
/* Bit 32 Superscripts And Subscripts */
|
/* Bit 32 Superscripts And Subscripts */
|
||||||
#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */
|
#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */
|
||||||
/* Bit 33 Currency Symbols */
|
/* Bit 33 Currency Symbols */
|
||||||
@@ -920,16 +945,18 @@ FT_BEGIN_HEADER
|
|||||||
#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */
|
#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */
|
||||||
/* Bit 36 Number Forms */
|
/* Bit 36 Number Forms */
|
||||||
#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */
|
#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */
|
||||||
/* Bit 37 Arrows + */
|
/* Bit 37 Arrows */
|
||||||
/* Supplemental Arrows-A + */
|
/* Supplemental Arrows-A */
|
||||||
/* Supplemental Arrows-B */
|
/* Supplemental Arrows-B */
|
||||||
|
/* Miscellaneous Symbols and Arrows */
|
||||||
#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */
|
#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */
|
||||||
/* U+27F0-U+27FF */
|
/* U+27F0-U+27FF */
|
||||||
/* U+2900-U+297F */
|
/* U+2900-U+297F */
|
||||||
/* Bit 38 Mathematical Operators + */
|
/* U+2B00-U+2BFF */
|
||||||
/* Supplemental Mathematical Operators + */
|
/* Bit 38 Mathematical Operators */
|
||||||
/* Miscellaneous Mathematical Symbols-A + */
|
/* Supplemental Mathematical Operators */
|
||||||
/* Miscellaneous Mathematical Symbols-B */
|
/* Miscellaneous Mathematical Symbols-A */
|
||||||
|
/* Miscellaneous Mathematical Symbols-B */
|
||||||
#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */
|
#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */
|
||||||
/* U+2A00-U+2AFF */
|
/* U+2A00-U+2AFF */
|
||||||
/* U+27C0-U+27EF */
|
/* U+27C0-U+27EF */
|
||||||
@@ -952,60 +979,53 @@ FT_BEGIN_HEADER
|
|||||||
#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */
|
#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */
|
||||||
/* Bit 47 Dingbats */
|
/* Bit 47 Dingbats */
|
||||||
#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */
|
#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */
|
||||||
|
|
||||||
/* CJK Phonetics and Symbols Area */
|
|
||||||
|
|
||||||
/* Bit 48 CJK Symbols and Punctuation */
|
/* Bit 48 CJK Symbols and Punctuation */
|
||||||
#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */
|
#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */
|
||||||
/* Bit 49 Hiragana */
|
/* Bit 49 Hiragana */
|
||||||
#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */
|
#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */
|
||||||
/* Bit 50 Katakana + */
|
/* Bit 50 Katakana */
|
||||||
/* Katakana Phonetic Extensions */
|
/* Katakana Phonetic Extensions */
|
||||||
#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */
|
#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */
|
||||||
/* U+31F0-U+31FF */
|
/* U+31F0-U+31FF */
|
||||||
/* Bit 51 Bopomofo + */
|
/* Bit 51 Bopomofo */
|
||||||
/* Bopomofo Extended */
|
/* Bopomofo Extended */
|
||||||
#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */
|
#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */
|
||||||
/* U+31A0-U+31BF */
|
/* U+31A0-U+31BF */
|
||||||
/* Bit 52 Hangul Compatibility Jamo */
|
/* Bit 52 Hangul Compatibility Jamo */
|
||||||
#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */
|
#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */
|
||||||
/* Bit 53 Kanbun */
|
/* Bit 53 Phags-Pa */
|
||||||
#define TT_UCR_CJK_MISC (1L << 21) /* U+3190-U+319F */
|
#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */
|
||||||
#define TT_UCR_KANBUN TT_UCR_CJK_MISC
|
#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */
|
||||||
|
#define TT_UCR_PHAGSPA
|
||||||
/* Bit 54 Enclosed CJK Letters and Months */
|
/* Bit 54 Enclosed CJK Letters and Months */
|
||||||
#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */
|
#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */
|
||||||
/* Bit 55 CJK Compatibility */
|
/* Bit 55 CJK Compatibility */
|
||||||
#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */
|
#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */
|
||||||
|
/* Bit 56 Hangul Syllables */
|
||||||
/* Hangul Syllables Area */
|
|
||||||
|
|
||||||
/* Bit 56 Hangul */
|
|
||||||
#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */
|
#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */
|
||||||
|
/* Bit 57 High Surrogates */
|
||||||
/* Surrogates Area */
|
/* High Private Use Surrogates */
|
||||||
|
/* Low Surrogates */
|
||||||
/* Bit 57 High Surrogates + */
|
/* */
|
||||||
/* High Private Use Surrogates + */
|
/* According to OpenType specs v.1.3+, */
|
||||||
/* Low Surrogates */
|
/* setting bit 57 implies that there is */
|
||||||
|
/* at least one codepoint beyond the */
|
||||||
|
/* Basic Multilingual Plane that is */
|
||||||
|
/* supported by this font. So it really */
|
||||||
|
/* means >= U+10000 */
|
||||||
#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */
|
#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */
|
||||||
/* U+DB80-U+DBFF */
|
/* U+DB80-U+DBFF */
|
||||||
/* U+DC00-U+DFFF */
|
/* U+DC00-U+DFFF */
|
||||||
/* According to OpenType specs v.1.3+, setting bit 57 implies that there */
|
#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES
|
||||||
/* is at least one codepoint beyond the Basic Multilingual Plane that is */
|
/* Bit 58 Phoenician */
|
||||||
/* supported by this font. So it really means: >= U+10000 */
|
#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/
|
||||||
|
/* Bit 59 CJK Unified Ideographs */
|
||||||
/* Bit 58 is reserved for Unicode SubRanges */
|
/* CJK Radicals Supplement */
|
||||||
|
/* Kangxi Radicals */
|
||||||
/* CJK Ideographs Area */
|
/* Ideographic Description Characters */
|
||||||
|
/* CJK Unified Ideographs Extension A */
|
||||||
/* Bit 59 CJK Unified Ideographs + */
|
/* CJK Unified Ideographs Extension B */
|
||||||
/* CJK Radicals Supplement + */
|
/* Kanbun */
|
||||||
/* Kangxi Radicals + */
|
|
||||||
/* Ideographic Description Characters + */
|
|
||||||
/* CJK Unified Ideographs Extension A */
|
|
||||||
/* CJK Unified Ideographs Extension A + */
|
|
||||||
/* CJK Unified Ideographs Extension B + */
|
|
||||||
/* Kanbun */
|
|
||||||
#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */
|
#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */
|
||||||
/* U+2E80-U+2EFF */
|
/* U+2E80-U+2EFF */
|
||||||
/* U+2F00-U+2FDF */
|
/* U+2F00-U+2FDF */
|
||||||
@@ -1013,17 +1033,13 @@ FT_BEGIN_HEADER
|
|||||||
/* U+3400-U+4DB5 */
|
/* U+3400-U+4DB5 */
|
||||||
/*U+20000-U+2A6DF*/
|
/*U+20000-U+2A6DF*/
|
||||||
/* U+3190-U+319F */
|
/* U+3190-U+319F */
|
||||||
|
|
||||||
/* Private Use Area */
|
|
||||||
|
|
||||||
/* Bit 60 Private Use */
|
/* Bit 60 Private Use */
|
||||||
#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */
|
#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */
|
||||||
|
/* Bit 61 CJK Strokes */
|
||||||
/* Compatibility Area and Specials */
|
/* CJK Compatibility Ideographs */
|
||||||
|
/* CJK Compatibility Ideographs Supplement */
|
||||||
/* Bit 61 CJK Compatibility Ideographs + */
|
#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */
|
||||||
/* CJK Compatibility Ideographs Supplement */
|
/* U+F900-U+FAFF */
|
||||||
#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+F900-U+FAFF */
|
|
||||||
/*U+2F800-U+2FA1F*/
|
/*U+2F800-U+2FA1F*/
|
||||||
/* Bit 62 Alphabetic Presentation Forms */
|
/* Bit 62 Alphabetic Presentation Forms */
|
||||||
#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */
|
#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */
|
||||||
@@ -1031,8 +1047,10 @@ FT_BEGIN_HEADER
|
|||||||
#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */
|
#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */
|
||||||
/* Bit 64 Combining Half Marks */
|
/* Bit 64 Combining Half Marks */
|
||||||
#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */
|
#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */
|
||||||
/* Bit 65 CJK Compatibility Forms */
|
/* Bit 65 Vertical forms */
|
||||||
#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE30-U+FE4F */
|
/* CJK Compatibility Forms */
|
||||||
|
#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */
|
||||||
|
/* U+FE30-U+FE4F */
|
||||||
/* Bit 66 Small Form Variants */
|
/* Bit 66 Small Form Variants */
|
||||||
#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */
|
#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */
|
||||||
/* Bit 67 Arabic Presentation Forms-B */
|
/* Bit 67 Arabic Presentation Forms-B */
|
||||||
@@ -1051,8 +1069,12 @@ FT_BEGIN_HEADER
|
|||||||
#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */
|
#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */
|
||||||
/* Bit 74 Myanmar */
|
/* Bit 74 Myanmar */
|
||||||
#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */
|
#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */
|
||||||
/* Bit 75 Ethiopic */
|
/* Bit 75 Ethiopic */
|
||||||
|
/* Ethiopic Supplement */
|
||||||
|
/* Ethiopic Extended */
|
||||||
#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */
|
#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */
|
||||||
|
/* U+1380-U+139F */
|
||||||
|
/* U+2D80-U+2DDF */
|
||||||
/* Bit 76 Cherokee */
|
/* Bit 76 Cherokee */
|
||||||
#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */
|
#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */
|
||||||
/* Bit 77 Unified Canadian Aboriginal Syllabics */
|
/* Bit 77 Unified Canadian Aboriginal Syllabics */
|
||||||
@@ -1061,20 +1083,22 @@ FT_BEGIN_HEADER
|
|||||||
#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */
|
#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */
|
||||||
/* Bit 79 Runic */
|
/* Bit 79 Runic */
|
||||||
#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */
|
#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */
|
||||||
/* Bit 80 Khmer */
|
/* Bit 80 Khmer */
|
||||||
|
/* Khmer Symbols */
|
||||||
#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */
|
#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */
|
||||||
|
/* U+19E0-U+19FF */
|
||||||
/* Bit 81 Mongolian */
|
/* Bit 81 Mongolian */
|
||||||
#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */
|
#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */
|
||||||
/* Bit 82 Braille Patterns */
|
/* Bit 82 Braille Patterns */
|
||||||
#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */
|
#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */
|
||||||
/* Bit 83 Yi Syllables + */
|
/* Bit 83 Yi Syllables */
|
||||||
/* Yi Radicals */
|
/* Yi Radicals */
|
||||||
#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */
|
#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */
|
||||||
/* U+A490-U+A4CF */
|
/* U+A490-U+A4CF */
|
||||||
/* Bit 84 Tagalog + */
|
/* Bit 84 Tagalog */
|
||||||
/* Hanunoo + */
|
/* Hanunoo */
|
||||||
/* Buhid + */
|
/* Buhid */
|
||||||
/* Tagbanwa */
|
/* Tagbanwa */
|
||||||
#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */
|
#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */
|
||||||
/* U+1720-U+173F */
|
/* U+1720-U+173F */
|
||||||
/* U+1740-U+175F */
|
/* U+1740-U+175F */
|
||||||
@@ -1085,20 +1109,97 @@ FT_BEGIN_HEADER
|
|||||||
#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/
|
#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/
|
||||||
/* Bit 87 Deseret */
|
/* Bit 87 Deseret */
|
||||||
#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/
|
#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/
|
||||||
/* Bit 88 Byzantine Musical Symbols + */
|
/* Bit 88 Byzantine Musical Symbols */
|
||||||
/* Musical Symbols */
|
/* Musical Symbols */
|
||||||
|
/* Ancient Greek Musical Notation */
|
||||||
#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/
|
#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/
|
||||||
/*U+1D100-U+1D1FF*/
|
/*U+1D100-U+1D1FF*/
|
||||||
|
/*U+1D200-U+1D24F*/
|
||||||
/* Bit 89 Mathematical Alphanumeric Symbols */
|
/* Bit 89 Mathematical Alphanumeric Symbols */
|
||||||
#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/
|
#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/
|
||||||
/* Bit 90 Private Use (plane 15) + */
|
/* Bit 90 Private Use (plane 15) */
|
||||||
/* Private Use (plane 16) */
|
/* Private Use (plane 16) */
|
||||||
#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/
|
#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/
|
||||||
/*U+100000-U+10FFFD*/
|
/*U+100000-U+10FFFD*/
|
||||||
/* Bit 91 Variation Selectors */
|
/* Bit 91 Variation Selectors */
|
||||||
|
/* Variation Selectors Supplement */
|
||||||
#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */
|
#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */
|
||||||
|
/*U+E0100-U+E01EF*/
|
||||||
/* Bit 92 Tags */
|
/* Bit 92 Tags */
|
||||||
#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/
|
#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/
|
||||||
|
/* Bit 93 Limbu */
|
||||||
|
#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */
|
||||||
|
/* Bit 94 Tai Le */
|
||||||
|
#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */
|
||||||
|
/* Bit 95 New Tai Lue */
|
||||||
|
#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */
|
||||||
|
/* Bit 96 Buginese */
|
||||||
|
#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */
|
||||||
|
/* Bit 97 Glagolitic */
|
||||||
|
#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */
|
||||||
|
/* Bit 98 Tifinagh */
|
||||||
|
#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */
|
||||||
|
/* Bit 99 Yijing Hexagram Symbols */
|
||||||
|
#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */
|
||||||
|
/* Bit 100 Syloti Nagri */
|
||||||
|
#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */
|
||||||
|
/* Bit 101 Linear B Syllabary */
|
||||||
|
/* Linear B Ideograms */
|
||||||
|
/* Aegean Numbers */
|
||||||
|
#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/
|
||||||
|
/*U+10080-U+100FF*/
|
||||||
|
/*U+10100-U+1013F*/
|
||||||
|
/* Bit 102 Ancient Greek Numbers */
|
||||||
|
#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/
|
||||||
|
/* Bit 103 Ugaritic */
|
||||||
|
#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/
|
||||||
|
/* Bit 104 Old Persian */
|
||||||
|
#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/
|
||||||
|
/* Bit 105 Shavian */
|
||||||
|
#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/
|
||||||
|
/* Bit 106 Osmanya */
|
||||||
|
#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/
|
||||||
|
/* Bit 107 Cypriot Syllabary */
|
||||||
|
#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/
|
||||||
|
/* Bit 108 Kharoshthi */
|
||||||
|
#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/
|
||||||
|
/* Bit 109 Tai Xuan Jing Symbols */
|
||||||
|
#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/
|
||||||
|
/* Bit 110 Cuneiform */
|
||||||
|
/* Cuneiform Numbers and Punctuation */
|
||||||
|
#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/
|
||||||
|
/*U+12400-U+1247F*/
|
||||||
|
/* Bit 111 Counting Rod Numerals */
|
||||||
|
#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/
|
||||||
|
/* Bit 112 Sundanese */
|
||||||
|
#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */
|
||||||
|
/* Bit 113 Lepcha */
|
||||||
|
#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */
|
||||||
|
/* Bit 114 Ol Chiki */
|
||||||
|
#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */
|
||||||
|
/* Bit 115 Saurashtra */
|
||||||
|
#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */
|
||||||
|
/* Bit 116 Kayah Li */
|
||||||
|
#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */
|
||||||
|
/* Bit 117 Rejang */
|
||||||
|
#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */
|
||||||
|
/* Bit 118 Cham */
|
||||||
|
#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */
|
||||||
|
/* Bit 119 Ancient Symbols */
|
||||||
|
#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/
|
||||||
|
/* Bit 120 Phaistos Disc */
|
||||||
|
#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/
|
||||||
|
/* Bit 121 Carian */
|
||||||
|
/* Lycian */
|
||||||
|
/* Lydian */
|
||||||
|
#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/
|
||||||
|
/*U+10280-U+1029F*/
|
||||||
|
/*U+10920-U+1093F*/
|
||||||
|
/* Bit 122 Domino Tiles */
|
||||||
|
/* Mahjong Tiles */
|
||||||
|
#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/
|
||||||
|
/*U+1F000-U+1F02F*/
|
||||||
|
/* Bit 123-127 Reserved for process-internal usage */
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Tags for TrueType and OpenType tables (specification only). */
|
/* Tags for TrueType and OpenType tables (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2004, 2005, 2007 by */
|
/* Copyright 1996-2001, 2004, 2005, 2007, 2008 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, */
|
||||||
@@ -41,6 +41,7 @@ FT_BEGIN_HEADER
|
|||||||
#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' )
|
#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' )
|
||||||
#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' )
|
#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' )
|
||||||
#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' )
|
#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' )
|
||||||
|
#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' )
|
||||||
#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
|
#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
|
||||||
#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' )
|
#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' )
|
||||||
#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' )
|
#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' )
|
||||||
@@ -49,6 +50,7 @@ FT_BEGIN_HEADER
|
|||||||
#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' )
|
#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' )
|
||||||
#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' )
|
#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' )
|
||||||
#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' )
|
#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' )
|
||||||
|
#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' )
|
||||||
#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' )
|
#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' )
|
||||||
#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' )
|
#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' )
|
||||||
#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' )
|
#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' )
|
||||||
@@ -67,6 +69,7 @@ FT_BEGIN_HEADER
|
|||||||
#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' )
|
#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' )
|
||||||
#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' )
|
#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' )
|
||||||
#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' )
|
#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' )
|
||||||
|
#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' )
|
||||||
#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' )
|
#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' )
|
||||||
#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' )
|
#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' )
|
||||||
#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' )
|
#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' )
|
||||||
@@ -79,14 +82,18 @@ FT_BEGIN_HEADER
|
|||||||
#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' )
|
#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' )
|
||||||
#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' )
|
#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' )
|
||||||
#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' )
|
#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' )
|
||||||
|
#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' )
|
||||||
#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' )
|
#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' )
|
||||||
#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' )
|
#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' )
|
||||||
#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' )
|
#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' )
|
||||||
|
#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' )
|
||||||
#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' )
|
#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' )
|
||||||
#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' )
|
#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' )
|
||||||
#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' )
|
#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' )
|
||||||
#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' )
|
#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' )
|
||||||
#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' )
|
#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' )
|
||||||
|
#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' )
|
||||||
|
#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' )
|
||||||
#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' )
|
#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' )
|
||||||
#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' )
|
#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' )
|
||||||
#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' )
|
#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' )
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Auto-fitter hinting routines for CJK script (body). */
|
/* Auto-fitter hinting routines for CJK script (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2006, 2007 by */
|
/* Copyright 2006, 2007, 2008 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, */
|
||||||
@@ -1253,10 +1253,15 @@
|
|||||||
else if ( after >= edge_limit )
|
else if ( after >= edge_limit )
|
||||||
af_cjk_align_serif_edge( hints, before, edge );
|
af_cjk_align_serif_edge( hints, before, edge );
|
||||||
else
|
else
|
||||||
edge->pos = before->pos +
|
{
|
||||||
FT_MulDiv( edge->fpos - before->fpos,
|
if ( after->fpos == before->fpos )
|
||||||
after->pos - before->pos,
|
edge->pos = before->pos;
|
||||||
after->fpos - before->fpos );
|
else
|
||||||
|
edge->pos = before->pos +
|
||||||
|
FT_MulDiv( edge->fpos - before->fpos,
|
||||||
|
after->pos - before->pos,
|
||||||
|
after->fpos - before->fpos );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1436,29 +1441,29 @@
|
|||||||
static const AF_Script_UniRangeRec af_cjk_uniranges[] =
|
static const AF_Script_UniRangeRec af_cjk_uniranges[] =
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
{ 0x0100, 0xFFFF }, /* why this? */
|
{ 0x0100UL, 0xFFFFUL }, /* why this? */
|
||||||
#endif
|
#endif
|
||||||
{ 0x2E80, 0x2EFF }, /* CJK Radicals Supplement */
|
{ 0x2E80UL, 0x2EFFUL }, /* CJK Radicals Supplement */
|
||||||
{ 0x2F00, 0x2FDF }, /* Kangxi Radicals */
|
{ 0x2F00UL, 0x2FDFUL }, /* Kangxi Radicals */
|
||||||
{ 0x3000, 0x303F }, /* CJK Symbols and Punctuation */
|
{ 0x3000UL, 0x303FUL }, /* CJK Symbols and Punctuation */
|
||||||
{ 0x3040, 0x309F }, /* Hiragana */
|
{ 0x3040UL, 0x309FUL }, /* Hiragana */
|
||||||
{ 0x30A0, 0x30FF }, /* Katakana */
|
{ 0x30A0UL, 0x30FFUL }, /* Katakana */
|
||||||
{ 0x3100, 0x312F }, /* Bopomofo */
|
{ 0x3100UL, 0x312FUL }, /* Bopomofo */
|
||||||
{ 0x3130, 0x318F }, /* Hangul Compatibility Jamo */
|
{ 0x3130UL, 0x318FUL }, /* Hangul Compatibility Jamo */
|
||||||
{ 0x31A0, 0x31BF }, /* Bopomofo Extended */
|
{ 0x31A0UL, 0x31BFUL }, /* Bopomofo Extended */
|
||||||
{ 0x31C0, 0x31EF }, /* CJK Strokes */
|
{ 0x31C0UL, 0x31EFUL }, /* CJK Strokes */
|
||||||
{ 0x31F0, 0x31FF }, /* Katakana Phonetic Extensions */
|
{ 0x31F0UL, 0x31FFUL }, /* Katakana Phonetic Extensions */
|
||||||
{ 0x3200, 0x32FF }, /* Enclosed CJK Letters and Months */
|
{ 0x3200UL, 0x32FFUL }, /* Enclosed CJK Letters and Months */
|
||||||
{ 0x3300, 0x33FF }, /* CJK Compatibility */
|
{ 0x3300UL, 0x33FFUL }, /* CJK Compatibility */
|
||||||
{ 0x3400, 0x4DBF }, /* CJK Unified Ideographs Extension A */
|
{ 0x3400UL, 0x4DBFUL }, /* CJK Unified Ideographs Extension A */
|
||||||
{ 0x4DC0, 0x4DFF }, /* Yijing Hexagram Symbols */
|
{ 0x4DC0UL, 0x4DFFUL }, /* Yijing Hexagram Symbols */
|
||||||
{ 0x4E00, 0x9FFF }, /* CJK Unified Ideographs */
|
{ 0x4E00UL, 0x9FFFUL }, /* CJK Unified Ideographs */
|
||||||
{ 0xF900, 0xFAFF }, /* CJK Compatibility Ideographs */
|
{ 0xF900UL, 0xFAFFUL }, /* CJK Compatibility Ideographs */
|
||||||
{ 0xFE30, 0xFE4F }, /* CJK Compatibility Forms */
|
{ 0xFE30UL, 0xFE4FUL }, /* CJK Compatibility Forms */
|
||||||
{ 0xFF00, 0xFFEF }, /* Halfwidth and Fullwidth Forms */
|
{ 0xFF00UL, 0xFFEFUL }, /* Halfwidth and Fullwidth Forms */
|
||||||
{ 0x20000, 0x2A6DF }, /* CJK Unified Ideographs Extension B */
|
{ 0x20000UL, 0x2A6DFUL }, /* CJK Unified Ideographs Extension B */
|
||||||
{ 0x2F800, 0x2FA1F }, /* CJK Compatibility Ideographs Supplement */
|
{ 0x2F800UL, 0x2FA1FUL }, /* CJK Compatibility Ideographs Supplement */
|
||||||
{ 0, 0 }
|
{ 0UL, 0UL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Auto-fitter hinting routines (body). */
|
/* Auto-fitter hinting routines (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 2003, 2004, 2005, 2006, 2007, 2009 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, */
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
|
|
||||||
#ifdef AF_DEBUG
|
#ifdef AF_DEBUG
|
||||||
|
|
||||||
#include <stdio.h>
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||||
|
|
||||||
static const char*
|
static const char*
|
||||||
af_dir_str( AF_Direction dir )
|
af_dir_str( AF_Direction dir )
|
||||||
@@ -203,14 +203,14 @@
|
|||||||
|
|
||||||
if ( flags & AF_EDGE_ROUND )
|
if ( flags & AF_EDGE_ROUND )
|
||||||
{
|
{
|
||||||
memcpy( temp + pos, "round", 5 );
|
ft_memcpy( temp + pos, "round", 5 );
|
||||||
pos += 5;
|
pos += 5;
|
||||||
}
|
}
|
||||||
if ( flags & AF_EDGE_SERIF )
|
if ( flags & AF_EDGE_SERIF )
|
||||||
{
|
{
|
||||||
if ( pos > 0 )
|
if ( pos > 0 )
|
||||||
temp[pos++] = ' ';
|
temp[pos++] = ' ';
|
||||||
memcpy( temp + pos, "serif", 5 );
|
ft_memcpy( temp + pos, "serif", 5 );
|
||||||
pos += 5;
|
pos += 5;
|
||||||
}
|
}
|
||||||
if ( pos == 0 )
|
if ( pos == 0 )
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Auto-fitter hinting routines for latin script (body). */
|
/* Auto-fitter hinting routines for latin script (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 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, */
|
||||||
@@ -2008,7 +2008,10 @@
|
|||||||
if ( before >= edges && before < edge &&
|
if ( before >= edges && before < edge &&
|
||||||
after < edge_limit && after > edge )
|
after < edge_limit && after > edge )
|
||||||
{
|
{
|
||||||
edge->pos = before->pos +
|
if ( after->opos == before->opos )
|
||||||
|
edge->pos = before->pos;
|
||||||
|
else
|
||||||
|
edge->pos = before->pos +
|
||||||
FT_MulDiv( edge->opos - before->opos,
|
FT_MulDiv( edge->opos - before->opos,
|
||||||
after->pos - before->pos,
|
after->pos - before->pos,
|
||||||
after->opos - before->opos );
|
after->opos - before->opos );
|
||||||
@@ -2124,27 +2127,33 @@
|
|||||||
|
|
||||||
static const AF_Script_UniRangeRec af_latin_uniranges[] =
|
static const AF_Script_UniRangeRec af_latin_uniranges[] =
|
||||||
{
|
{
|
||||||
{ 0x0020, 0x007F }, /* Basic Latin (no control characters) */
|
{ 0x0020 , 0x007F }, /* Basic Latin (no control chars) */
|
||||||
{ 0x00A0, 0x00FF }, /* Latin-1 Supplement (no control characters) */
|
{ 0x00A0 , 0x00FF }, /* Latin-1 Supplement (no control chars) */
|
||||||
{ 0x0100, 0x017F }, /* Latin Extended-A */
|
{ 0x0100 , 0x017F }, /* Latin Extended-A */
|
||||||
{ 0x0180, 0x024F }, /* Latin Extended-B */
|
{ 0x0180 , 0x024F }, /* Latin Extended-B */
|
||||||
{ 0x0250, 0x02AF }, /* IPA Extensions */
|
{ 0x0250 , 0x02AF }, /* IPA Extensions */
|
||||||
{ 0x02B0, 0x02FF }, /* Spacing Modifier Letters */
|
{ 0x02B0 , 0x02FF }, /* Spacing Modifier Letters */
|
||||||
{ 0x0300, 0x036F }, /* Combining Diacritical Marks */
|
{ 0x0300 , 0x036F }, /* Combining Diacritical Marks */
|
||||||
{ 0x0370, 0x03FF }, /* Greek and Coptic */
|
{ 0x0370 , 0x03FF }, /* Greek and Coptic */
|
||||||
{ 0x0400, 0x04FF }, /* Cyrillic */
|
{ 0x0400 , 0x04FF }, /* Cyrillic */
|
||||||
{ 0x0500, 0x052F }, /* Cyrillic Supplement */
|
{ 0x0500 , 0x052F }, /* Cyrillic Supplement */
|
||||||
{ 0x1D00, 0x1D7F }, /* Phonetic Extensions */
|
{ 0x1D00 , 0x1D7F }, /* Phonetic Extensions */
|
||||||
{ 0x1D80, 0x1DBF }, /* Phonetic Extensions Supplement */
|
{ 0x1D80 , 0x1DBF }, /* Phonetic Extensions Supplement */
|
||||||
{ 0x1DC0, 0x1DFF }, /* Combining Diacritical Marks Supplement */
|
{ 0x1DC0 , 0x1DFF }, /* Combining Diacritical Marks Supplement */
|
||||||
{ 0x1E00, 0x1EFF }, /* Latin Extended Additional */
|
{ 0x1E00 , 0x1EFF }, /* Latin Extended Additional */
|
||||||
{ 0x1F00, 0x1FFF }, /* Greek Extended */
|
{ 0x1F00 , 0x1FFF }, /* Greek Extended */
|
||||||
{ 0x2000, 0x206F }, /* General Punctuation */
|
{ 0x2000 , 0x206F }, /* General Punctuation */
|
||||||
{ 0x2070, 0x209F }, /* Superscripts and Subscripts */
|
{ 0x2070 , 0x209F }, /* Superscripts and Subscripts */
|
||||||
{ 0x20A0, 0x20CF }, /* Currency Symbols */
|
{ 0x20A0 , 0x20CF }, /* Currency Symbols */
|
||||||
{ 0x2150, 0x218F }, /* Number Forms */
|
{ 0x2150 , 0x218F }, /* Number Forms */
|
||||||
{ 0x2460, 0x24FF }, /* Enclosed Alphanumerics */
|
{ 0x2460 , 0x24FF }, /* Enclosed Alphanumerics */
|
||||||
{ 0 , 0 }
|
{ 0x2C60 , 0x2C7F }, /* Latin Extended-C */
|
||||||
|
{ 0x2DE0 , 0x2DFF }, /* Cyrillic Extended-A */
|
||||||
|
{ 0xA640U , 0xA69FU }, /* Cyrillic Extended-B */
|
||||||
|
{ 0xA720U , 0xA7FFU }, /* Latin Extended-D */
|
||||||
|
{ 0xFB00U , 0xFB06U }, /* Alphab. Present. Forms (Latin Ligs) */
|
||||||
|
{ 0x1D400UL, 0x1D7FFUL }, /* Mathematical Alphanumeric Symbols */
|
||||||
|
{ 0 , 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Auto-fitter hinting routines for latin script (body). */
|
/* Auto-fitter hinting routines for latin script (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 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, */
|
||||||
@@ -944,6 +944,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* now, compute the `serif' segments */
|
/* now, compute the `serif' segments */
|
||||||
for ( seg1 = segments; seg1 < segment_limit; seg1++ )
|
for ( seg1 = segments; seg1 < segment_limit; seg1++ )
|
||||||
@@ -2150,7 +2153,10 @@
|
|||||||
if ( before >= edges && before < edge &&
|
if ( before >= edges && before < edge &&
|
||||||
after < edge_limit && after > edge )
|
after < edge_limit && after > edge )
|
||||||
{
|
{
|
||||||
edge->pos = before->pos +
|
if ( after->opos == before->opos )
|
||||||
|
edge->pos = before->pos;
|
||||||
|
else
|
||||||
|
edge->pos = before->pos +
|
||||||
FT_MulDiv( edge->opos - before->opos,
|
FT_MulDiv( edge->opos - before->opos,
|
||||||
after->pos - before->pos,
|
after->pos - before->pos,
|
||||||
after->opos - before->opos );
|
after->opos - before->opos );
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Auto-fitter types (specification only). */
|
/* Auto-fitter types (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 by */
|
/* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 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, */
|
||||||
@@ -58,7 +58,8 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
#ifdef AF_DEBUG
|
#ifdef AF_DEBUG
|
||||||
|
|
||||||
#include <stdio.h>
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||||
|
|
||||||
#define AF_LOG( x ) do { if ( _af_debug ) printf x; } while ( 0 )
|
#define AF_LOG( x ) do { if ( _af_debug ) printf x; } while ( 0 )
|
||||||
|
|
||||||
extern int _af_debug;
|
extern int _af_debug;
|
||||||
@@ -69,7 +70,7 @@ extern void* _af_debug_hints;
|
|||||||
|
|
||||||
#else /* !AF_DEBUG */
|
#else /* !AF_DEBUG */
|
||||||
|
|
||||||
#define AF_LOG( x ) do ; while ( 0 ) /* nothing */
|
#define AF_LOG( x ) do { } while ( 0 ) /* nothing */
|
||||||
|
|
||||||
#endif /* !AF_DEBUG */
|
#endif /* !AF_DEBUG */
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
FTMODULE_H_COMMANDS += AUTOFIT_MODULE
|
FTMODULE_H_COMMANDS += AUTOFIT_MODULE
|
||||||
|
|
||||||
define AUTOFIT_MODULE
|
define AUTOFIT_MODULE
|
||||||
$(OPEN_DRIVER)autofit_module_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Module_Class, autofit_module_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)autofit $(ECHO_DRIVER_DESC)automatic hinting module$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)autofit $(ECHO_DRIVER_DESC)automatic hinting module$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,163 @@
|
|||||||
|
/***************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* ftadvanc.c */
|
||||||
|
/* */
|
||||||
|
/* Quick computation of advance widths (body). */
|
||||||
|
/* */
|
||||||
|
/* Copyright 2008 by */
|
||||||
|
/* 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. */
|
||||||
|
/* */
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#include <ft2build.h>
|
||||||
|
#include FT_ADVANCES_H
|
||||||
|
#include FT_INTERNAL_OBJECTS_H
|
||||||
|
|
||||||
|
|
||||||
|
static FT_Error
|
||||||
|
_ft_face_scale_advances( FT_Face face,
|
||||||
|
FT_Fixed* advances,
|
||||||
|
FT_UInt count,
|
||||||
|
FT_Int32 flags )
|
||||||
|
{
|
||||||
|
FT_Fixed scale;
|
||||||
|
FT_UInt nn;
|
||||||
|
|
||||||
|
|
||||||
|
if ( flags & FT_LOAD_NO_SCALE )
|
||||||
|
return FT_Err_Ok;
|
||||||
|
|
||||||
|
if ( face->size == NULL )
|
||||||
|
return FT_Err_Invalid_Size_Handle;
|
||||||
|
|
||||||
|
if ( flags & FT_LOAD_VERTICAL_LAYOUT )
|
||||||
|
scale = face->size->metrics.y_scale;
|
||||||
|
else
|
||||||
|
scale = face->size->metrics.x_scale;
|
||||||
|
|
||||||
|
/* this must be the same computation as to get linearHori/VertAdvance */
|
||||||
|
/* (see `FT_Load_Glyph' implementation in src/base/ftobjs.c */
|
||||||
|
|
||||||
|
for ( nn = 0; nn < count; nn++ )
|
||||||
|
advances[nn] = FT_MulDiv( advances[nn], scale, 64 );
|
||||||
|
|
||||||
|
return FT_Err_Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* at the moment, we can perform fast advance retrieval only in */
|
||||||
|
/* the following cases: */
|
||||||
|
/* */
|
||||||
|
/* - unscaled load */
|
||||||
|
/* - unhinted load */
|
||||||
|
/* - light-hinted load */
|
||||||
|
|
||||||
|
#define LOAD_ADVANCE_FAST_CHECK( flags ) \
|
||||||
|
( flags & ( FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING ) || \
|
||||||
|
FT_LOAD_TARGET_MODE( flags ) == FT_RENDER_MODE_LIGHT )
|
||||||
|
|
||||||
|
|
||||||
|
/* documentation is in ftadvanc.h */
|
||||||
|
|
||||||
|
FT_EXPORT_DEF( FT_Error )
|
||||||
|
FT_Get_Advance( FT_Face face,
|
||||||
|
FT_UInt gindex,
|
||||||
|
FT_Int32 flags,
|
||||||
|
FT_Fixed *padvance )
|
||||||
|
{
|
||||||
|
FT_Face_GetAdvancesFunc func;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !face )
|
||||||
|
return FT_Err_Invalid_Face_Handle;
|
||||||
|
|
||||||
|
if ( gindex >= (FT_UInt)face->num_glyphs )
|
||||||
|
return FT_Err_Invalid_Glyph_Index;
|
||||||
|
|
||||||
|
func = face->driver->clazz->get_advances;
|
||||||
|
if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) )
|
||||||
|
{
|
||||||
|
FT_Error error;
|
||||||
|
|
||||||
|
|
||||||
|
error = func( face, gindex, 1, flags, padvance );
|
||||||
|
if ( !error )
|
||||||
|
return _ft_face_scale_advances( face, padvance, 1, flags );
|
||||||
|
|
||||||
|
if ( error != FT_ERROR_BASE( FT_Err_Unimplemented_Feature ) )
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FT_Get_Advances( face, gindex, 1, flags, padvance );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* documentation is in ftadvanc.h */
|
||||||
|
|
||||||
|
FT_EXPORT_DEF( FT_Error )
|
||||||
|
FT_Get_Advances( FT_Face face,
|
||||||
|
FT_UInt start,
|
||||||
|
FT_UInt count,
|
||||||
|
FT_Int32 flags,
|
||||||
|
FT_Fixed *padvances )
|
||||||
|
{
|
||||||
|
FT_Face_GetAdvancesFunc func;
|
||||||
|
FT_UInt num, end, nn;
|
||||||
|
FT_Error error = FT_Err_Ok;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !face )
|
||||||
|
return FT_Err_Invalid_Face_Handle;
|
||||||
|
|
||||||
|
num = (FT_UInt)face->num_glyphs;
|
||||||
|
end = start + count;
|
||||||
|
if ( start >= num || end < start || end > num )
|
||||||
|
return FT_Err_Invalid_Glyph_Index;
|
||||||
|
|
||||||
|
if ( count == 0 )
|
||||||
|
return FT_Err_Ok;
|
||||||
|
|
||||||
|
func = face->driver->clazz->get_advances;
|
||||||
|
if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) )
|
||||||
|
{
|
||||||
|
error = func( face, start, count, flags, padvances );
|
||||||
|
if ( !error )
|
||||||
|
goto Exit;
|
||||||
|
|
||||||
|
if ( error != FT_ERROR_BASE( FT_Err_Unimplemented_Feature ) )
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
error = FT_Err_Ok;
|
||||||
|
|
||||||
|
if ( flags & FT_ADVANCE_FLAG_FAST_ONLY )
|
||||||
|
return FT_Err_Unimplemented_Feature;
|
||||||
|
|
||||||
|
flags |= FT_LOAD_ADVANCE_ONLY;
|
||||||
|
for ( nn = 0; nn < count; nn++ )
|
||||||
|
{
|
||||||
|
error = FT_Load_Glyph( face, start + nn, flags );
|
||||||
|
if ( error )
|
||||||
|
break;
|
||||||
|
|
||||||
|
padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
|
||||||
|
? face->glyph->advance.x
|
||||||
|
: face->glyph->advance.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( error )
|
||||||
|
return error;
|
||||||
|
|
||||||
|
Exit:
|
||||||
|
return _ft_face_scale_advances( face, padvances, count, flags );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* END */
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Single object library component (body only). */
|
/* Single object library component (body only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 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, */
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#define FT_MAKE_OPTION_SINGLE_OBJECT
|
#define FT_MAKE_OPTION_SINGLE_OBJECT
|
||||||
|
|
||||||
|
#include "ftadvanc.c"
|
||||||
#include "ftcalc.c"
|
#include "ftcalc.c"
|
||||||
#include "ftdbgmem.c"
|
#include "ftdbgmem.c"
|
||||||
#include "ftgloadr.c"
|
#include "ftgloadr.c"
|
||||||
@@ -31,7 +32,7 @@
|
|||||||
#include "fttrigon.c"
|
#include "fttrigon.c"
|
||||||
#include "ftutil.c"
|
#include "ftutil.c"
|
||||||
|
|
||||||
#if defined( __APPLE__ ) && !defined ( DARWIN_NO_CARBON )
|
#if defined( FT_MACINTOSH ) && !defined ( DARWIN_NO_CARBON )
|
||||||
#include "ftmac.c"
|
#include "ftmac.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/***************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* ftbase.h */
|
||||||
|
/* */
|
||||||
|
/* The FreeType private functions used in base module (specification). */
|
||||||
|
/* */
|
||||||
|
/* Copyright 2008 by */
|
||||||
|
/* David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya. */
|
||||||
|
/* */
|
||||||
|
/* 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. */
|
||||||
|
/* */
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __FTBASE_H__
|
||||||
|
#define __FTBASE_H__
|
||||||
|
|
||||||
|
|
||||||
|
#include <ft2build.h>
|
||||||
|
#include FT_INTERNAL_OBJECTS_H
|
||||||
|
|
||||||
|
|
||||||
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
|
|
||||||
|
/* Assume the stream is sfnt-wrapped PS Type1 or sfnt-wrapped CID-keyed */
|
||||||
|
/* font, and try to load a face specified by the face_index. */
|
||||||
|
FT_LOCAL_DEF( FT_Error )
|
||||||
|
open_face_PS_from_sfnt_stream( FT_Library library,
|
||||||
|
FT_Stream stream,
|
||||||
|
FT_Long face_index,
|
||||||
|
FT_Int num_params,
|
||||||
|
FT_Parameter *params,
|
||||||
|
FT_Face *aface );
|
||||||
|
|
||||||
|
|
||||||
|
/* Create a new FT_Face given a buffer and a driver name. */
|
||||||
|
/* From ftmac.c. */
|
||||||
|
FT_LOCAL_DEF( FT_Error )
|
||||||
|
open_face_from_buffer( FT_Library library,
|
||||||
|
FT_Byte* base,
|
||||||
|
FT_ULong size,
|
||||||
|
FT_Long face_index,
|
||||||
|
const char* driver_name,
|
||||||
|
FT_Face *aface );
|
||||||
|
|
||||||
|
|
||||||
|
FT_END_HEADER
|
||||||
|
|
||||||
|
#endif /* __FTBASE_H__ */
|
||||||
|
|
||||||
|
|
||||||
|
/* END */
|
||||||
@@ -2,10 +2,9 @@
|
|||||||
/* */
|
/* */
|
||||||
/* ftbitmap.c */
|
/* ftbitmap.c */
|
||||||
/* */
|
/* */
|
||||||
/* FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */
|
/* FreeType utility functions for bitmaps (body). */
|
||||||
/* bitmaps into 8bpp format (body). */
|
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2004, 2005, 2006, 2007 by */
|
/* Copyright 2004, 2005, 2006, 2007, 2008, 2009 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, */
|
||||||
@@ -19,6 +18,7 @@
|
|||||||
|
|
||||||
#include <ft2build.h>
|
#include <ft2build.h>
|
||||||
#include FT_BITMAP_H
|
#include FT_BITMAP_H
|
||||||
|
#include FT_IMAGE_H
|
||||||
#include FT_INTERNAL_OBJECTS_H
|
#include FT_INTERNAL_OBJECTS_H
|
||||||
|
|
||||||
|
|
||||||
@@ -388,6 +388,8 @@
|
|||||||
case FT_PIXEL_MODE_GRAY:
|
case FT_PIXEL_MODE_GRAY:
|
||||||
case FT_PIXEL_MODE_GRAY2:
|
case FT_PIXEL_MODE_GRAY2:
|
||||||
case FT_PIXEL_MODE_GRAY4:
|
case FT_PIXEL_MODE_GRAY4:
|
||||||
|
case FT_PIXEL_MODE_LCD:
|
||||||
|
case FT_PIXEL_MODE_LCD_V:
|
||||||
{
|
{
|
||||||
FT_Int pad;
|
FT_Int pad;
|
||||||
FT_Long old_size;
|
FT_Long old_size;
|
||||||
@@ -482,6 +484,8 @@
|
|||||||
|
|
||||||
|
|
||||||
case FT_PIXEL_MODE_GRAY:
|
case FT_PIXEL_MODE_GRAY:
|
||||||
|
case FT_PIXEL_MODE_LCD:
|
||||||
|
case FT_PIXEL_MODE_LCD_V:
|
||||||
{
|
{
|
||||||
FT_Int width = source->width;
|
FT_Int width = source->width;
|
||||||
FT_Byte* s = source->buffer;
|
FT_Byte* s = source->buffer;
|
||||||
@@ -603,6 +607,31 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* documentation is in ftbitmap.h */
|
||||||
|
|
||||||
|
FT_EXPORT_DEF( FT_Error )
|
||||||
|
FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot )
|
||||||
|
{
|
||||||
|
if ( slot && slot->format == FT_GLYPH_FORMAT_BITMAP &&
|
||||||
|
!( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) )
|
||||||
|
{
|
||||||
|
FT_Bitmap bitmap;
|
||||||
|
FT_Error error;
|
||||||
|
|
||||||
|
|
||||||
|
FT_Bitmap_New( &bitmap );
|
||||||
|
error = FT_Bitmap_Copy( slot->library, &slot->bitmap, &bitmap );
|
||||||
|
if ( error )
|
||||||
|
return error;
|
||||||
|
|
||||||
|
slot->bitmap = bitmap;
|
||||||
|
slot->internal->flags |= FT_GLYPH_OWN_BITMAP;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FT_Err_Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* documentation is in ftbitmap.h */
|
/* documentation is in ftbitmap.h */
|
||||||
|
|
||||||
FT_EXPORT_DEF( FT_Error )
|
FT_EXPORT_DEF( FT_Error )
|
||||||
|
|||||||
@@ -38,6 +38,9 @@
|
|||||||
#include FT_INTERNAL_DEBUG_H
|
#include FT_INTERNAL_DEBUG_H
|
||||||
#include FT_INTERNAL_OBJECTS_H
|
#include FT_INTERNAL_OBJECTS_H
|
||||||
|
|
||||||
|
#ifdef FT_MULFIX_INLINED
|
||||||
|
#undef FT_MulFix
|
||||||
|
#endif
|
||||||
|
|
||||||
/* we need to define a 64-bits data type here */
|
/* we need to define a 64-bits data type here */
|
||||||
|
|
||||||
@@ -193,15 +196,33 @@
|
|||||||
FT_MulFix( FT_Long a,
|
FT_MulFix( FT_Long a,
|
||||||
FT_Long b )
|
FT_Long b )
|
||||||
{
|
{
|
||||||
|
#ifdef FT_MULFIX_ASSEMBLER
|
||||||
|
|
||||||
|
return FT_MULFIX_ASSEMBLER( a, b );
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
FT_Int s = 1;
|
FT_Int s = 1;
|
||||||
FT_Long c;
|
FT_Long c;
|
||||||
|
|
||||||
|
|
||||||
if ( a < 0 ) { a = -a; s = -1; }
|
if ( a < 0 )
|
||||||
if ( b < 0 ) { b = -b; s = -s; }
|
{
|
||||||
|
a = -a;
|
||||||
|
s = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( b < 0 )
|
||||||
|
{
|
||||||
|
b = -b;
|
||||||
|
s = -s;
|
||||||
|
}
|
||||||
|
|
||||||
c = (FT_Long)( ( (FT_Int64)a * b + 0x8000L ) >> 16 );
|
c = (FT_Long)( ( (FT_Int64)a * b + 0x8000L ) >> 16 );
|
||||||
return ( s > 0 ) ? c : -c ;
|
|
||||||
|
return ( s > 0 ) ? c : -c;
|
||||||
|
|
||||||
|
#endif /* FT_MULFIX_ASSEMBLER */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -413,31 +434,18 @@
|
|||||||
FT_MulFix( FT_Long a,
|
FT_MulFix( FT_Long a,
|
||||||
FT_Long b )
|
FT_Long b )
|
||||||
{
|
{
|
||||||
/* use inline assembly to speed up things a bit */
|
#ifdef FT_MULFIX_ASSEMBLER
|
||||||
|
|
||||||
#if defined( __GNUC__ ) && defined( i386 )
|
return FT_MULFIX_ASSEMBLER( a, b );
|
||||||
|
|
||||||
FT_Long result;
|
#elif 0
|
||||||
|
|
||||||
|
/*
|
||||||
__asm__ __volatile__ (
|
* This code is nonportable. See comment below.
|
||||||
"imul %%edx\n"
|
*
|
||||||
"movl %%edx, %%ecx\n"
|
* However, on a platform where right-shift of a signed quantity fills
|
||||||
"sarl $31, %%ecx\n"
|
* the leftmost bits by copying the sign bit, it might be faster.
|
||||||
"addl $0x8000, %%ecx\n"
|
*/
|
||||||
"addl %%ecx, %%eax\n"
|
|
||||||
"adcl $0, %%edx\n"
|
|
||||||
"shrl $16, %%eax\n"
|
|
||||||
"shll $16, %%edx\n"
|
|
||||||
"addl %%edx, %%eax\n"
|
|
||||||
"mov %%eax, %0\n"
|
|
||||||
: "=a"(result), "+d"(b)
|
|
||||||
: "a"(a)
|
|
||||||
: "%ecx"
|
|
||||||
);
|
|
||||||
return result;
|
|
||||||
|
|
||||||
#elif 1
|
|
||||||
|
|
||||||
FT_Long sa, sb;
|
FT_Long sa, sb;
|
||||||
FT_ULong ua, ub;
|
FT_ULong ua, ub;
|
||||||
@@ -446,6 +454,24 @@
|
|||||||
if ( a == 0 || b == 0x10000L )
|
if ( a == 0 || b == 0x10000L )
|
||||||
return a;
|
return a;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is a clever way of converting a signed number `a' into its
|
||||||
|
* absolute value (stored back into `a') and its sign. The sign is
|
||||||
|
* stored in `sa'; 0 means `a' was positive or zero, and -1 means `a'
|
||||||
|
* was negative. (Similarly for `b' and `sb').
|
||||||
|
*
|
||||||
|
* Unfortunately, it doesn't work (at least not portably).
|
||||||
|
*
|
||||||
|
* It makes the assumption that right-shift on a negative signed value
|
||||||
|
* fills the leftmost bits by copying the sign bit. This is wrong.
|
||||||
|
* According to K&R 2nd ed, section `A7.8 Shift Operators' on page 206,
|
||||||
|
* the result of right-shift of a negative signed value is
|
||||||
|
* implementation-defined. At least one implementation fills the
|
||||||
|
* leftmost bits with 0s (i.e., it is exactly the same as an unsigned
|
||||||
|
* right shift). This means that when `a' is negative, `sa' ends up
|
||||||
|
* with the value 1 rather than -1. After that, everything else goes
|
||||||
|
* wrong.
|
||||||
|
*/
|
||||||
sa = ( a >> ( sizeof ( a ) * 8 - 1 ) );
|
sa = ( a >> ( sizeof ( a ) * 8 - 1 ) );
|
||||||
a = ( a ^ sa ) - sa;
|
a = ( a ^ sa ) - sa;
|
||||||
sb = ( b >> ( sizeof ( b ) * 8 - 1 ) );
|
sb = ( b >> ( sizeof ( b ) * 8 - 1 ) );
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Memory debugger (body). */
|
/* Memory debugger (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2001, 2002, 2003, 2004, 2005, 2006 by */
|
/* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2009 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, */
|
||||||
@@ -33,8 +33,7 @@
|
|||||||
* memory, however.
|
* memory, however.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
FT_BASE_DEF( const char* ) _ft_debug_file = 0;
|
FT_BASE_DEF( const char* ) _ft_debug_file = 0;
|
||||||
FT_BASE_DEF( long ) _ft_debug_lineno = 0;
|
FT_BASE_DEF( long ) _ft_debug_lineno = 0;
|
||||||
@@ -990,7 +989,7 @@
|
|||||||
#else /* !FT_DEBUG_MEMORY */
|
#else /* !FT_DEBUG_MEMORY */
|
||||||
|
|
||||||
/* ANSI C doesn't like empty source files */
|
/* ANSI C doesn't like empty source files */
|
||||||
const FT_Byte _debug_mem_dummy = 0;
|
static const FT_Byte _debug_mem_dummy = 0;
|
||||||
|
|
||||||
#endif /* !FT_DEBUG_MEMORY */
|
#endif /* !FT_DEBUG_MEMORY */
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
#include FT_INTERNAL_DEBUG_H
|
#include FT_INTERNAL_DEBUG_H
|
||||||
|
|
||||||
|
|
||||||
#if defined( FT_DEBUG_LEVEL_ERROR )
|
#ifdef FT_DEBUG_LEVEL_ERROR
|
||||||
|
|
||||||
/* documentation is in ftdebug.h */
|
/* documentation is in ftdebug.h */
|
||||||
|
|
||||||
|
|||||||
@@ -55,9 +55,9 @@
|
|||||||
|
|
||||||
#undef FT_USE_MODULE
|
#undef FT_USE_MODULE
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#define FT_USE_MODULE( x ) extern "C" const FT_Module_Class x;
|
#define FT_USE_MODULE( type, x ) extern "C" const type x;
|
||||||
#else
|
#else
|
||||||
#define FT_USE_MODULE( x ) extern const FT_Module_Class x;
|
#define FT_USE_MODULE( type, x ) extern const type x;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#undef FT_USE_MODULE
|
#undef FT_USE_MODULE
|
||||||
#define FT_USE_MODULE( x ) (const FT_Module_Class*)&(x),
|
#define FT_USE_MODULE( type, x ) (const FT_Module_Class*)&(x),
|
||||||
|
|
||||||
static
|
static
|
||||||
const FT_Module_Class* const ft_default_modules[] =
|
const FT_Module_Class* const ft_default_modules[] =
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType API for color filtering of subpixel bitmap glyphs (body). */
|
/* FreeType API for color filtering of subpixel bitmap glyphs (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2006, 2008 by */
|
/* Copyright 2006, 2008, 2009 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, */
|
||||||
@@ -266,7 +266,7 @@
|
|||||||
#endif /* USE_LEGACY */
|
#endif /* USE_LEGACY */
|
||||||
|
|
||||||
|
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT_DEF( FT_Error )
|
||||||
FT_Library_SetLcdFilter( FT_Library library,
|
FT_Library_SetLcdFilter( FT_Library library,
|
||||||
FT_LcdFilter filter )
|
FT_LcdFilter filter )
|
||||||
{
|
{
|
||||||
@@ -296,13 +296,13 @@
|
|||||||
|
|
||||||
#elif defined( FT_FORCE_LIGHT_LCD_FILTER )
|
#elif defined( FT_FORCE_LIGHT_LCD_FILTER )
|
||||||
|
|
||||||
memcpy( library->lcd_weights, light_filter, 5 );
|
ft_memcpy( library->lcd_weights, light_filter, 5 );
|
||||||
library->lcd_filter_func = _ft_lcd_filter_fir;
|
library->lcd_filter_func = _ft_lcd_filter_fir;
|
||||||
library->lcd_extra = 2;
|
library->lcd_extra = 2;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
memcpy( library->lcd_weights, default_filter, 5 );
|
ft_memcpy( library->lcd_weights, default_filter, 5 );
|
||||||
library->lcd_filter_func = _ft_lcd_filter_fir;
|
library->lcd_filter_func = _ft_lcd_filter_fir;
|
||||||
library->lcd_extra = 2;
|
library->lcd_extra = 2;
|
||||||
|
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case FT_LCD_FILTER_LIGHT:
|
case FT_LCD_FILTER_LIGHT:
|
||||||
memcpy( library->lcd_weights, light_filter, 5 );
|
ft_memcpy( library->lcd_weights, light_filter, 5 );
|
||||||
library->lcd_filter_func = _ft_lcd_filter_fir;
|
library->lcd_filter_func = _ft_lcd_filter_fir;
|
||||||
library->lcd_extra = 2;
|
library->lcd_extra = 2;
|
||||||
break;
|
break;
|
||||||
@@ -335,7 +335,7 @@
|
|||||||
|
|
||||||
#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
|
#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
|
||||||
|
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT_DEF( FT_Error )
|
||||||
FT_Library_SetLcdFilter( FT_Library library,
|
FT_Library_SetLcdFilter( FT_Library library,
|
||||||
FT_LcdFilter filter )
|
FT_LcdFilter filter )
|
||||||
{
|
{
|
||||||
|
|||||||
+62
-135
@@ -8,7 +8,8 @@
|
|||||||
/* This file is for Mac OS X only; see builds/mac/ftoldmac.c for */
|
/* This file is for Mac OS X only; see builds/mac/ftoldmac.c for */
|
||||||
/* classic platforms built by MPW. */
|
/* classic platforms built by MPW. */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, */
|
||||||
|
/* 2009 by */
|
||||||
/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* Just van Rossum, 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, */
|
||||||
@@ -67,7 +68,9 @@
|
|||||||
|
|
||||||
#include <ft2build.h>
|
#include <ft2build.h>
|
||||||
#include FT_FREETYPE_H
|
#include FT_FREETYPE_H
|
||||||
|
#include FT_TRUETYPE_TAGS_H
|
||||||
#include FT_INTERNAL_STREAM_H
|
#include FT_INTERNAL_STREAM_H
|
||||||
|
#include "ftbase.h"
|
||||||
|
|
||||||
/* This is for Mac OS X. Without redefinition, OS_INLINE */
|
/* This is for Mac OS X. Without redefinition, OS_INLINE */
|
||||||
/* expands to `static inline' which doesn't survive the */
|
/* expands to `static inline' which doesn't survive the */
|
||||||
@@ -77,26 +80,32 @@
|
|||||||
#define OS_INLINE static __inline__
|
#define OS_INLINE static __inline__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* The ResourceIndex type was available SDKs on 10.5 */
|
/* `configure' checks the availability of `ResourceIndex' strictly */
|
||||||
|
/* and sets HAVE_TYPE_RESOURCE_INDEX 1 or 0 always. If it is */
|
||||||
|
/* not set (e.g., a build without `configure'), the availability */
|
||||||
|
/* is guessed from the SDK version. */
|
||||||
#ifndef HAVE_TYPE_RESOURCE_INDEX
|
#ifndef HAVE_TYPE_RESOURCE_INDEX
|
||||||
typedef short ResourceIndex;
|
#if !defined( MAC_OS_X_VERSION_10_5 ) || \
|
||||||
|
( MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 )
|
||||||
|
#define HAVE_TYPE_RESOURCE_INDEX 0
|
||||||
|
#else
|
||||||
|
#define HAVE_TYPE_RESOURCE_INDEX 1
|
||||||
|
#endif
|
||||||
|
#endif /* !HAVE_TYPE_RESOURCE_INDEX */
|
||||||
|
|
||||||
|
#if ( HAVE_TYPE_RESOURCE_INDEX == 0 )
|
||||||
|
typedef short ResourceIndex;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <CoreServices/CoreServices.h>
|
#include <CoreServices/CoreServices.h>
|
||||||
#include <ApplicationServices/ApplicationServices.h>
|
#include <ApplicationServices/ApplicationServices.h>
|
||||||
#include <sys/syslimits.h> /* PATH_MAX */
|
#include <sys/syslimits.h> /* PATH_MAX */
|
||||||
|
|
||||||
|
/* Don't want warnings about our own use of deprecated functions. */
|
||||||
#define FT_DEPRECATED_ATTRIBUTE
|
#define FT_DEPRECATED_ATTRIBUTE
|
||||||
|
|
||||||
#include FT_MAC_H
|
#include FT_MAC_H
|
||||||
|
|
||||||
/* undefine blocking-macros in ftmac.h */
|
|
||||||
#undef FT_GetFile_From_Mac_Name( a, b, c )
|
|
||||||
#undef FT_GetFile_From_Mac_ATS_Name( a, b, c )
|
|
||||||
#undef FT_New_Face_From_FOND( a, b, c, d )
|
|
||||||
#undef FT_New_Face_From_FSSpec( a, b, c, d )
|
|
||||||
#undef FT_New_Face_From_FSRef( a, b, c, d )
|
|
||||||
|
|
||||||
#ifndef kATSOptionFlagsUnRestrictedScope /* since Mac OS X 10.1 */
|
#ifndef kATSOptionFlagsUnRestrictedScope /* since Mac OS X 10.1 */
|
||||||
#define kATSOptionFlagsUnRestrictedScope kATSOptionFlagsDefault
|
#define kATSOptionFlagsUnRestrictedScope kATSOptionFlagsDefault
|
||||||
#endif
|
#endif
|
||||||
@@ -589,8 +598,7 @@ typedef short ResourceIndex;
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
post_data = Get1Resource( FT_MAKE_TAG( 'P', 'O', 'S', 'T' ),
|
post_data = Get1Resource( TTAG_POST, res_id++ );
|
||||||
res_id++ );
|
|
||||||
if ( post_data == NULL )
|
if ( post_data == NULL )
|
||||||
break; /* we are done */
|
break; /* we are done */
|
||||||
|
|
||||||
@@ -629,8 +637,7 @@ typedef short ResourceIndex;
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
post_data = Get1Resource( FT_MAKE_TAG( 'P', 'O', 'S', 'T' ),
|
post_data = Get1Resource( TTAG_POST, res_id++ );
|
||||||
res_id++ );
|
|
||||||
if ( post_data == NULL )
|
if ( post_data == NULL )
|
||||||
break; /* we are done */
|
break; /* we are done */
|
||||||
|
|
||||||
@@ -682,110 +689,7 @@ typedef short ResourceIndex;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Finalizer for a memory stream; gets called by FT_Done_Face().
|
/* Create a new FT_Face from a file path to an LWFN file. */
|
||||||
It frees the memory it uses. */
|
|
||||||
static void
|
|
||||||
memory_stream_close( FT_Stream stream )
|
|
||||||
{
|
|
||||||
FT_Memory memory = stream->memory;
|
|
||||||
|
|
||||||
|
|
||||||
FT_FREE( stream->base );
|
|
||||||
|
|
||||||
stream->size = 0;
|
|
||||||
stream->base = 0;
|
|
||||||
stream->close = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Create a new memory stream from a buffer and a size. */
|
|
||||||
static FT_Error
|
|
||||||
new_memory_stream( FT_Library library,
|
|
||||||
FT_Byte* base,
|
|
||||||
FT_ULong size,
|
|
||||||
FT_Stream_CloseFunc close,
|
|
||||||
FT_Stream* astream )
|
|
||||||
{
|
|
||||||
FT_Error error;
|
|
||||||
FT_Memory memory;
|
|
||||||
FT_Stream stream;
|
|
||||||
|
|
||||||
|
|
||||||
if ( !library )
|
|
||||||
return FT_Err_Invalid_Library_Handle;
|
|
||||||
|
|
||||||
if ( !base )
|
|
||||||
return FT_Err_Invalid_Argument;
|
|
||||||
|
|
||||||
*astream = 0;
|
|
||||||
memory = library->memory;
|
|
||||||
if ( FT_NEW( stream ) )
|
|
||||||
goto Exit;
|
|
||||||
|
|
||||||
FT_Stream_OpenMemory( stream, base, size );
|
|
||||||
|
|
||||||
stream->close = close;
|
|
||||||
|
|
||||||
*astream = stream;
|
|
||||||
|
|
||||||
Exit:
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Create a new FT_Face given a buffer and a driver name. */
|
|
||||||
static FT_Error
|
|
||||||
open_face_from_buffer( FT_Library library,
|
|
||||||
FT_Byte* base,
|
|
||||||
FT_ULong size,
|
|
||||||
FT_Long face_index,
|
|
||||||
const char* driver_name,
|
|
||||||
FT_Face* aface )
|
|
||||||
{
|
|
||||||
FT_Open_Args args;
|
|
||||||
FT_Error error;
|
|
||||||
FT_Stream stream;
|
|
||||||
FT_Memory memory = library->memory;
|
|
||||||
|
|
||||||
|
|
||||||
error = new_memory_stream( library,
|
|
||||||
base,
|
|
||||||
size,
|
|
||||||
memory_stream_close,
|
|
||||||
&stream );
|
|
||||||
if ( error )
|
|
||||||
{
|
|
||||||
FT_FREE( base );
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
args.flags = FT_OPEN_STREAM;
|
|
||||||
args.stream = stream;
|
|
||||||
if ( driver_name )
|
|
||||||
{
|
|
||||||
args.flags = args.flags | FT_OPEN_DRIVER;
|
|
||||||
args.driver = FT_Get_Module( library, driver_name );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* At this point, face_index has served its purpose; */
|
|
||||||
/* whoever calls this function has already used it to */
|
|
||||||
/* locate the correct font data. We should not propagate */
|
|
||||||
/* this index to FT_Open_Face() (unless it is negative). */
|
|
||||||
|
|
||||||
if ( face_index > 0 )
|
|
||||||
face_index = 0;
|
|
||||||
|
|
||||||
error = FT_Open_Face( library, &args, face_index, aface );
|
|
||||||
if ( error == FT_Err_Ok )
|
|
||||||
(*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM;
|
|
||||||
else
|
|
||||||
FT_Stream_Free( stream, 0 );
|
|
||||||
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Create a new FT_Face from a file spec to an LWFN file. */
|
|
||||||
static FT_Error
|
static FT_Error
|
||||||
FT_New_Face_From_LWFN( FT_Library library,
|
FT_New_Face_From_LWFN( FT_Library library,
|
||||||
const UInt8* pathname,
|
const UInt8* pathname,
|
||||||
@@ -829,10 +733,10 @@ typedef short ResourceIndex;
|
|||||||
size_t sfnt_size;
|
size_t sfnt_size;
|
||||||
FT_Error error = FT_Err_Ok;
|
FT_Error error = FT_Err_Ok;
|
||||||
FT_Memory memory = library->memory;
|
FT_Memory memory = library->memory;
|
||||||
int is_cff;
|
int is_cff, is_sfnt_ps;
|
||||||
|
|
||||||
|
|
||||||
sfnt = GetResource( FT_MAKE_TAG( 's', 'f', 'n', 't' ), sfnt_id );
|
sfnt = GetResource( TTAG_sfnt, sfnt_id );
|
||||||
if ( sfnt == NULL )
|
if ( sfnt == NULL )
|
||||||
return FT_Err_Invalid_Handle;
|
return FT_Err_Invalid_Handle;
|
||||||
|
|
||||||
@@ -846,21 +750,45 @@ typedef short ResourceIndex;
|
|||||||
ft_memcpy( sfnt_data, *sfnt, sfnt_size );
|
ft_memcpy( sfnt_data, *sfnt, sfnt_size );
|
||||||
ReleaseResource( sfnt );
|
ReleaseResource( sfnt );
|
||||||
|
|
||||||
is_cff = sfnt_size > 4 && sfnt_data[0] == 'O' &&
|
is_cff = sfnt_size > 4 && !ft_memcmp( sfnt_data, "OTTO", 4 );
|
||||||
sfnt_data[1] == 'T' &&
|
is_sfnt_ps = sfnt_size > 4 && !ft_memcmp( sfnt_data, "typ1", 4 );
|
||||||
sfnt_data[2] == 'T' &&
|
|
||||||
sfnt_data[3] == 'O';
|
|
||||||
|
|
||||||
return open_face_from_buffer( library,
|
if ( is_sfnt_ps )
|
||||||
sfnt_data,
|
{
|
||||||
sfnt_size,
|
FT_Stream stream;
|
||||||
face_index,
|
|
||||||
is_cff ? "cff" : "truetype",
|
|
||||||
aface );
|
if ( FT_NEW( stream ) )
|
||||||
|
goto Try_OpenType;
|
||||||
|
|
||||||
|
FT_Stream_OpenMemory( stream, sfnt_data, sfnt_size );
|
||||||
|
if ( !open_face_PS_from_sfnt_stream( library,
|
||||||
|
stream,
|
||||||
|
face_index,
|
||||||
|
0, NULL,
|
||||||
|
aface ) )
|
||||||
|
{
|
||||||
|
FT_Stream_Close( stream );
|
||||||
|
FT_FREE( stream );
|
||||||
|
FT_FREE( sfnt_data );
|
||||||
|
goto Exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
FT_FREE( stream );
|
||||||
|
}
|
||||||
|
Try_OpenType:
|
||||||
|
error = open_face_from_buffer( library,
|
||||||
|
sfnt_data,
|
||||||
|
sfnt_size,
|
||||||
|
face_index,
|
||||||
|
is_cff ? "cff" : "truetype",
|
||||||
|
aface );
|
||||||
|
Exit:
|
||||||
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Create a new FT_Face from a file spec to a suitcase file. */
|
/* Create a new FT_Face from a file path to a suitcase file. */
|
||||||
static FT_Error
|
static FT_Error
|
||||||
FT_New_Face_From_Suitcase( FT_Library library,
|
FT_New_Face_From_Suitcase( FT_Library library,
|
||||||
const UInt8* pathname,
|
const UInt8* pathname,
|
||||||
@@ -884,8 +812,7 @@ typedef short ResourceIndex;
|
|||||||
num_faces_in_res = 0;
|
num_faces_in_res = 0;
|
||||||
for ( res_index = 1; ; ++res_index )
|
for ( res_index = 1; ; ++res_index )
|
||||||
{
|
{
|
||||||
fond = Get1IndResource( FT_MAKE_TAG( 'F', 'O', 'N', 'D' ),
|
fond = Get1IndResource( TTAG_FOND, res_index );
|
||||||
res_index );
|
|
||||||
if ( ResError() )
|
if ( ResError() )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -924,7 +851,7 @@ typedef short ResourceIndex;
|
|||||||
|
|
||||||
|
|
||||||
GetResInfo( fond, &fond_id, &fond_type, fond_name );
|
GetResInfo( fond, &fond_id, &fond_type, fond_name );
|
||||||
if ( ResError() != noErr || fond_type != FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) )
|
if ( ResError() != noErr || fond_type != TTAG_FOND )
|
||||||
return FT_Err_Invalid_File_Format;
|
return FT_Err_Invalid_File_Format;
|
||||||
|
|
||||||
parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index );
|
parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index );
|
||||||
@@ -991,7 +918,7 @@ typedef short ResourceIndex;
|
|||||||
|
|
||||||
/* LWFN is a (very) specific file format, check for it explicitly */
|
/* LWFN is a (very) specific file format, check for it explicitly */
|
||||||
file_type = get_file_type_from_path( pathname );
|
file_type = get_file_type_from_path( pathname );
|
||||||
if ( file_type == FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) )
|
if ( file_type == TTAG_LWFN )
|
||||||
return FT_New_Face_From_LWFN( library, pathname, face_index, aface );
|
return FT_New_Face_From_LWFN( library, pathname, face_index, aface );
|
||||||
|
|
||||||
/* Otherwise the file type doesn't matter (there are more than */
|
/* Otherwise the file type doesn't matter (there are more than */
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* The FreeType private base classes (body). */
|
/* The FreeType private base classes (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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, */
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
#include FT_INTERNAL_STREAM_H
|
#include FT_INTERNAL_STREAM_H
|
||||||
#include FT_INTERNAL_SFNT_H /* for SFNT_Load_Table_Func */
|
#include FT_INTERNAL_SFNT_H /* for SFNT_Load_Table_Func */
|
||||||
#include FT_TRUETYPE_TABLES_H
|
#include FT_TRUETYPE_TABLES_H
|
||||||
|
#include FT_TRUETYPE_TAGS_H
|
||||||
#include FT_TRUETYPE_IDS_H
|
#include FT_TRUETYPE_IDS_H
|
||||||
#include FT_OUTLINE_H
|
#include FT_OUTLINE_H
|
||||||
|
|
||||||
@@ -36,8 +37,11 @@
|
|||||||
#include FT_SERVICE_KERNING_H
|
#include FT_SERVICE_KERNING_H
|
||||||
#include FT_SERVICE_TRUETYPE_ENGINE_H
|
#include FT_SERVICE_TRUETYPE_ENGINE_H
|
||||||
|
|
||||||
|
#include "ftbase.h"
|
||||||
|
|
||||||
#define GRID_FIT_METRICS
|
#define GRID_FIT_METRICS
|
||||||
|
|
||||||
|
|
||||||
FT_BASE_DEF( FT_Pointer )
|
FT_BASE_DEF( FT_Pointer )
|
||||||
ft_service_list_lookup( FT_ServiceDesc service_descriptors,
|
ft_service_list_lookup( FT_ServiceDesc service_descriptors,
|
||||||
const char* service_id )
|
const char* service_id )
|
||||||
@@ -128,13 +132,14 @@
|
|||||||
FT_Stream stream;
|
FT_Stream stream;
|
||||||
|
|
||||||
|
|
||||||
|
*astream = 0;
|
||||||
|
|
||||||
if ( !library )
|
if ( !library )
|
||||||
return FT_Err_Invalid_Library_Handle;
|
return FT_Err_Invalid_Library_Handle;
|
||||||
|
|
||||||
if ( !args )
|
if ( !args )
|
||||||
return FT_Err_Invalid_Argument;
|
return FT_Err_Invalid_Argument;
|
||||||
|
|
||||||
*astream = 0;
|
|
||||||
memory = library->memory;
|
memory = library->memory;
|
||||||
|
|
||||||
if ( FT_NEW( stream ) )
|
if ( FT_NEW( stream ) )
|
||||||
@@ -196,6 +201,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* The macro FT_COMPONENT is used in trace mode. It is an implicit */
|
||||||
|
/* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */
|
||||||
|
/* messages during execution. */
|
||||||
|
/* */
|
||||||
#undef FT_COMPONENT
|
#undef FT_COMPONENT
|
||||||
#define FT_COMPONENT trace_objs
|
#define FT_COMPONENT trace_objs
|
||||||
|
|
||||||
@@ -244,7 +255,7 @@
|
|||||||
FT_BASE_DEF( void )
|
FT_BASE_DEF( void )
|
||||||
ft_glyphslot_free_bitmap( FT_GlyphSlot slot )
|
ft_glyphslot_free_bitmap( FT_GlyphSlot slot )
|
||||||
{
|
{
|
||||||
if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
|
if ( slot->internal && ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) )
|
||||||
{
|
{
|
||||||
FT_Memory memory = FT_FACE_MEMORY( slot->face );
|
FT_Memory memory = FT_FACE_MEMORY( slot->face );
|
||||||
|
|
||||||
@@ -542,7 +553,7 @@
|
|||||||
FT_Driver driver;
|
FT_Driver driver;
|
||||||
FT_GlyphSlot slot;
|
FT_GlyphSlot slot;
|
||||||
FT_Library library;
|
FT_Library library;
|
||||||
FT_Bool autohint = 0;
|
FT_Bool autohint = FALSE;
|
||||||
FT_Module hinter;
|
FT_Module hinter;
|
||||||
|
|
||||||
|
|
||||||
@@ -586,22 +597,22 @@
|
|||||||
*
|
*
|
||||||
* - Otherwise, auto-hint for LIGHT hinting mode.
|
* - Otherwise, auto-hint for LIGHT hinting mode.
|
||||||
*
|
*
|
||||||
* - Exception: The font requires the unpatented
|
* - Exception: The font is `tricky' and requires
|
||||||
* bytecode interpreter to load properly.
|
* the native hinter to load properly.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
autohint = 0;
|
if ( hinter &&
|
||||||
if ( hinter &&
|
!( load_flags & FT_LOAD_NO_HINTING ) &&
|
||||||
( load_flags & FT_LOAD_NO_HINTING ) == 0 &&
|
!( load_flags & FT_LOAD_NO_AUTOHINT ) &&
|
||||||
( load_flags & FT_LOAD_NO_AUTOHINT ) == 0 &&
|
FT_DRIVER_IS_SCALABLE( driver ) &&
|
||||||
FT_DRIVER_IS_SCALABLE( driver ) &&
|
FT_DRIVER_USES_OUTLINES( driver ) &&
|
||||||
FT_DRIVER_USES_OUTLINES( driver ) &&
|
!FT_IS_TRICKY( face ) &&
|
||||||
face->internal->transform_matrix.yy > 0 &&
|
face->internal->transform_matrix.yy > 0 &&
|
||||||
face->internal->transform_matrix.yx == 0 )
|
face->internal->transform_matrix.yx == 0 )
|
||||||
{
|
{
|
||||||
if ( ( load_flags & FT_LOAD_FORCE_AUTOHINT ) != 0 ||
|
if ( ( load_flags & FT_LOAD_FORCE_AUTOHINT ) ||
|
||||||
!FT_DRIVER_HAS_HINTER( driver ) )
|
!FT_DRIVER_HAS_HINTER( driver ) )
|
||||||
autohint = 1;
|
autohint = TRUE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FT_Render_Mode mode = FT_LOAD_TARGET_MODE( load_flags );
|
FT_Render_Mode mode = FT_LOAD_TARGET_MODE( load_flags );
|
||||||
@@ -609,7 +620,7 @@
|
|||||||
|
|
||||||
if ( mode == FT_RENDER_MODE_LIGHT ||
|
if ( mode == FT_RENDER_MODE_LIGHT ||
|
||||||
face->internal->ignore_unpatented_hinter )
|
face->internal->ignore_unpatented_hinter )
|
||||||
autohint = 1;
|
autohint = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -692,7 +703,7 @@
|
|||||||
|
|
||||||
/* compute the linear advance in 16.16 pixels */
|
/* compute the linear advance in 16.16 pixels */
|
||||||
if ( ( load_flags & FT_LOAD_LINEAR_DESIGN ) == 0 &&
|
if ( ( load_flags & FT_LOAD_LINEAR_DESIGN ) == 0 &&
|
||||||
( face->face_flags & FT_FACE_FLAG_SCALABLE ) )
|
( FT_IS_SCALABLE( face ) ) )
|
||||||
{
|
{
|
||||||
FT_Size_Metrics* metrics = &face->size->metrics;
|
FT_Size_Metrics* metrics = &face->size->metrics;
|
||||||
|
|
||||||
@@ -1110,7 +1121,7 @@
|
|||||||
/* there's a Mac-specific extended implementation of FT_New_Face() */
|
/* there's a Mac-specific extended implementation of FT_New_Face() */
|
||||||
/* in src/base/ftmac.c */
|
/* in src/base/ftmac.c */
|
||||||
|
|
||||||
#ifndef FT_MACINTOSH
|
#if !defined( FT_MACINTOSH ) || defined( DARWIN_NO_CARBON )
|
||||||
|
|
||||||
/* documentation is in freetype.h */
|
/* documentation is in freetype.h */
|
||||||
|
|
||||||
@@ -1133,7 +1144,7 @@
|
|||||||
return FT_Open_Face( library, &args, face_index, aface );
|
return FT_Open_Face( library, &args, face_index, aface );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !FT_MACINTOSH */
|
#endif /* defined( FT_MACINTOSH ) && !defined( DARWIN_NO_CARBON ) */
|
||||||
|
|
||||||
|
|
||||||
/* documentation is in freetype.h */
|
/* documentation is in freetype.h */
|
||||||
@@ -1160,7 +1171,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if !defined( FT_MACINTOSH ) && defined( FT_CONFIG_OPTION_MAC_FONTS )
|
#ifdef FT_CONFIG_OPTION_MAC_FONTS
|
||||||
|
|
||||||
/* The behavior here is very similar to that in base/ftmac.c, but it */
|
/* The behavior here is very similar to that in base/ftmac.c, but it */
|
||||||
/* is designed to work on non-mac systems, so no mac specific calls. */
|
/* is designed to work on non-mac systems, so no mac specific calls. */
|
||||||
@@ -1189,9 +1200,9 @@
|
|||||||
/* we don't really have access to it. */
|
/* we don't really have access to it. */
|
||||||
|
|
||||||
|
|
||||||
/* Finalizer for a memory stream; gets called by FT_Done_Face().
|
/* Finalizer for a memory stream; gets called by FT_Done_Face(). */
|
||||||
It frees the memory it uses. */
|
/* It frees the memory it uses. */
|
||||||
/* from ftmac.c */
|
/* From ftmac.c. */
|
||||||
static void
|
static void
|
||||||
memory_stream_close( FT_Stream stream )
|
memory_stream_close( FT_Stream stream )
|
||||||
{
|
{
|
||||||
@@ -1207,7 +1218,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/* Create a new memory stream from a buffer and a size. */
|
/* Create a new memory stream from a buffer and a size. */
|
||||||
/* from ftmac.c */
|
/* From ftmac.c. */
|
||||||
static FT_Error
|
static FT_Error
|
||||||
new_memory_stream( FT_Library library,
|
new_memory_stream( FT_Library library,
|
||||||
FT_Byte* base,
|
FT_Byte* base,
|
||||||
@@ -1244,7 +1255,7 @@
|
|||||||
|
|
||||||
/* Create a new FT_Face given a buffer and a driver name. */
|
/* Create a new FT_Face given a buffer and a driver name. */
|
||||||
/* from ftmac.c */
|
/* from ftmac.c */
|
||||||
static FT_Error
|
FT_LOCAL_DEF( FT_Error )
|
||||||
open_face_from_buffer( FT_Library library,
|
open_face_from_buffer( FT_Library library,
|
||||||
FT_Byte* base,
|
FT_Byte* base,
|
||||||
FT_ULong size,
|
FT_ULong size,
|
||||||
@@ -1277,20 +1288,161 @@
|
|||||||
args.driver = FT_Get_Module( library, driver_name );
|
args.driver = FT_Get_Module( library, driver_name );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FT_MACINTOSH
|
||||||
|
/* At this point, face_index has served its purpose; */
|
||||||
|
/* whoever calls this function has already used it to */
|
||||||
|
/* locate the correct font data. We should not propagate */
|
||||||
|
/* this index to FT_Open_Face() (unless it is negative). */
|
||||||
|
|
||||||
|
if ( face_index > 0 )
|
||||||
|
face_index = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
error = FT_Open_Face( library, &args, face_index, aface );
|
error = FT_Open_Face( library, &args, face_index, aface );
|
||||||
|
|
||||||
if ( error == FT_Err_Ok )
|
if ( error == FT_Err_Ok )
|
||||||
(*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM;
|
(*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM;
|
||||||
else
|
else
|
||||||
|
#ifdef FT_MACINTOSH
|
||||||
|
FT_Stream_Free( stream, 0 );
|
||||||
|
#else
|
||||||
{
|
{
|
||||||
FT_Stream_Close( stream );
|
FT_Stream_Close( stream );
|
||||||
FT_FREE( stream );
|
FT_FREE( stream );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Look up `TYP1' or `CID ' table from sfnt table directory. */
|
||||||
|
/* `offset' and `length' must exclude the binary header in tables. */
|
||||||
|
|
||||||
|
/* Type 1 and CID-keyed font drivers should recognize sfnt-wrapped */
|
||||||
|
/* format too. Here, since we can't expect that the TrueType font */
|
||||||
|
/* driver is loaded unconditially, we must parse the font by */
|
||||||
|
/* ourselves. We are only interested in the name of the table and */
|
||||||
|
/* the offset. */
|
||||||
|
|
||||||
|
static FT_Error
|
||||||
|
ft_lookup_PS_in_sfnt_stream( FT_Stream stream,
|
||||||
|
FT_Long face_index,
|
||||||
|
FT_ULong* offset,
|
||||||
|
FT_ULong* length,
|
||||||
|
FT_Bool* is_sfnt_cid )
|
||||||
|
{
|
||||||
|
FT_Error error;
|
||||||
|
FT_UShort numTables;
|
||||||
|
FT_Long pstable_index;
|
||||||
|
FT_ULong tag;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
|
||||||
|
*offset = 0;
|
||||||
|
*length = 0;
|
||||||
|
*is_sfnt_cid = FALSE;
|
||||||
|
|
||||||
|
/* TODO: support for sfnt-wrapped PS/CID in TTC format */
|
||||||
|
|
||||||
|
/* version check for 'typ1' (should be ignored?) */
|
||||||
|
if ( FT_READ_ULONG( tag ) )
|
||||||
|
return error;
|
||||||
|
if ( tag != TTAG_typ1 )
|
||||||
|
return FT_Err_Unknown_File_Format;
|
||||||
|
|
||||||
|
if ( FT_READ_USHORT( numTables ) )
|
||||||
|
return error;
|
||||||
|
if ( FT_STREAM_SKIP( 2 * 3 ) ) /* skip binary search header */
|
||||||
|
return error;
|
||||||
|
|
||||||
|
pstable_index = -1;
|
||||||
|
*is_sfnt_cid = FALSE;
|
||||||
|
|
||||||
|
for ( i = 0; i < numTables; i++ )
|
||||||
|
{
|
||||||
|
if ( FT_READ_ULONG( tag ) || FT_STREAM_SKIP( 4 ) ||
|
||||||
|
FT_READ_ULONG( *offset ) || FT_READ_ULONG( *length ) )
|
||||||
|
return error;
|
||||||
|
|
||||||
|
if ( tag == TTAG_CID )
|
||||||
|
{
|
||||||
|
pstable_index++;
|
||||||
|
*offset += 22;
|
||||||
|
*length -= 22;
|
||||||
|
*is_sfnt_cid = TRUE;
|
||||||
|
if ( face_index < 0 )
|
||||||
|
return FT_Err_Ok;
|
||||||
|
}
|
||||||
|
else if ( tag == TTAG_TYP1 )
|
||||||
|
{
|
||||||
|
pstable_index++;
|
||||||
|
*offset += 24;
|
||||||
|
*length -= 24;
|
||||||
|
*is_sfnt_cid = FALSE;
|
||||||
|
if ( face_index < 0 )
|
||||||
|
return FT_Err_Ok;
|
||||||
|
}
|
||||||
|
if ( face_index >= 0 && pstable_index == face_index )
|
||||||
|
return FT_Err_Ok;
|
||||||
|
}
|
||||||
|
return FT_Err_Table_Missing;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FT_LOCAL_DEF( FT_Error )
|
||||||
|
open_face_PS_from_sfnt_stream( FT_Library library,
|
||||||
|
FT_Stream stream,
|
||||||
|
FT_Long face_index,
|
||||||
|
FT_Int num_params,
|
||||||
|
FT_Parameter *params,
|
||||||
|
FT_Face *aface )
|
||||||
|
{
|
||||||
|
FT_Error error;
|
||||||
|
FT_Memory memory = library->memory;
|
||||||
|
FT_ULong offset, length;
|
||||||
|
FT_Long pos;
|
||||||
|
FT_Bool is_sfnt_cid;
|
||||||
|
FT_Byte* sfnt_ps;
|
||||||
|
|
||||||
|
FT_UNUSED( num_params );
|
||||||
|
FT_UNUSED( params );
|
||||||
|
|
||||||
|
|
||||||
|
pos = FT_Stream_Pos( stream );
|
||||||
|
|
||||||
|
error = ft_lookup_PS_in_sfnt_stream( stream,
|
||||||
|
face_index,
|
||||||
|
&offset,
|
||||||
|
&length,
|
||||||
|
&is_sfnt_cid );
|
||||||
|
if ( error )
|
||||||
|
return error;
|
||||||
|
|
||||||
|
if ( FT_Stream_Seek( stream, pos + offset ) )
|
||||||
|
goto Exit;
|
||||||
|
|
||||||
|
if ( FT_ALLOC( sfnt_ps, (FT_Long)length ) )
|
||||||
|
goto Exit;
|
||||||
|
|
||||||
|
error = FT_Stream_Read( stream, (FT_Byte *)sfnt_ps, length );
|
||||||
|
if ( error )
|
||||||
|
goto Exit;
|
||||||
|
|
||||||
|
error = open_face_from_buffer( library,
|
||||||
|
sfnt_ps,
|
||||||
|
length,
|
||||||
|
face_index < 0 ? face_index : 0,
|
||||||
|
is_sfnt_cid ? "cid" : "type1",
|
||||||
|
aface );
|
||||||
|
Exit:
|
||||||
|
FT_Stream_Seek( stream, pos );
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if !defined( FT_MACINTOSH ) || defined( DARWIN_NO_CARBON )
|
||||||
|
|
||||||
/* The resource header says we've got resource_cnt `POST' (type1) */
|
/* The resource header says we've got resource_cnt `POST' (type1) */
|
||||||
/* resources in this file. They all need to be coalesced into */
|
/* resources in this file. They all need to be coalesced into */
|
||||||
/* one lump which gets passed on to the type1 driver. */
|
/* one lump which gets passed on to the type1 driver. */
|
||||||
@@ -1445,17 +1597,21 @@
|
|||||||
if ( rlen == -1 )
|
if ( rlen == -1 )
|
||||||
return FT_Err_Cannot_Open_Resource;
|
return FT_Err_Cannot_Open_Resource;
|
||||||
|
|
||||||
|
error = open_face_PS_from_sfnt_stream( library,
|
||||||
|
stream,
|
||||||
|
face_index,
|
||||||
|
0, NULL,
|
||||||
|
aface );
|
||||||
|
if ( !error )
|
||||||
|
goto Exit;
|
||||||
|
|
||||||
if ( FT_ALLOC( sfnt_data, (FT_Long)rlen ) )
|
if ( FT_ALLOC( sfnt_data, (FT_Long)rlen ) )
|
||||||
return error;
|
return error;
|
||||||
error = FT_Stream_Read( stream, (FT_Byte *)sfnt_data, rlen );
|
error = FT_Stream_Read( stream, (FT_Byte *)sfnt_data, rlen );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
is_cff = rlen > 4 && sfnt_data[0] == 'O' &&
|
is_cff = rlen > 4 && !ft_memcmp( sfnt_data, "OTTO", 4 );
|
||||||
sfnt_data[1] == 'T' &&
|
|
||||||
sfnt_data[2] == 'T' &&
|
|
||||||
sfnt_data[3] == 'O';
|
|
||||||
|
|
||||||
error = open_face_from_buffer( library,
|
error = open_face_from_buffer( library,
|
||||||
sfnt_data,
|
sfnt_data,
|
||||||
rlen,
|
rlen,
|
||||||
@@ -1494,7 +1650,7 @@
|
|||||||
|
|
||||||
error = FT_Raccess_Get_DataOffsets( library, stream,
|
error = FT_Raccess_Get_DataOffsets( library, stream,
|
||||||
map_offset, rdara_pos,
|
map_offset, rdara_pos,
|
||||||
FT_MAKE_TAG( 'P', 'O', 'S', 'T' ),
|
TTAG_POST,
|
||||||
&data_offsets, &count );
|
&data_offsets, &count );
|
||||||
if ( !error )
|
if ( !error )
|
||||||
{
|
{
|
||||||
@@ -1509,7 +1665,7 @@
|
|||||||
|
|
||||||
error = FT_Raccess_Get_DataOffsets( library, stream,
|
error = FT_Raccess_Get_DataOffsets( library, stream,
|
||||||
map_offset, rdara_pos,
|
map_offset, rdara_pos,
|
||||||
FT_MAKE_TAG( 's', 'f', 'n', 't' ),
|
TTAG_sfnt,
|
||||||
&data_offsets, &count );
|
&data_offsets, &count );
|
||||||
if ( !error )
|
if ( !error )
|
||||||
{
|
{
|
||||||
@@ -1600,7 +1756,7 @@
|
|||||||
FT_Error errors[FT_RACCESS_N_RULES];
|
FT_Error errors[FT_RACCESS_N_RULES];
|
||||||
|
|
||||||
FT_Open_Args args2;
|
FT_Open_Args args2;
|
||||||
FT_Stream stream2;
|
FT_Stream stream2 = 0;
|
||||||
|
|
||||||
|
|
||||||
FT_Raccess_Guess( library, stream,
|
FT_Raccess_Guess( library, stream,
|
||||||
@@ -1655,7 +1811,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Check for some macintosh formats. */
|
/* Check for some macintosh formats without Carbon framework. */
|
||||||
/* Is this a macbinary file? If so look at the resource fork. */
|
/* Is this a macbinary file? If so look at the resource fork. */
|
||||||
/* Is this a mac dfont file? */
|
/* Is this a mac dfont file? */
|
||||||
/* Is this an old style resource fork? (in data) */
|
/* Is this an old style resource fork? (in data) */
|
||||||
@@ -1698,6 +1854,7 @@
|
|||||||
face_index, aface, args );
|
face_index, aface, args );
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* !FT_MACINTOSH && FT_CONFIG_OPTION_MAC_FONTS */
|
#endif /* !FT_MACINTOSH && FT_CONFIG_OPTION_MAC_FONTS */
|
||||||
|
|
||||||
@@ -1713,7 +1870,7 @@
|
|||||||
FT_Error error;
|
FT_Error error;
|
||||||
FT_Driver driver;
|
FT_Driver driver;
|
||||||
FT_Memory memory;
|
FT_Memory memory;
|
||||||
FT_Stream stream;
|
FT_Stream stream = 0;
|
||||||
FT_Face face = 0;
|
FT_Face face = 0;
|
||||||
FT_ListNode node = 0;
|
FT_ListNode node = 0;
|
||||||
FT_Bool external_stream;
|
FT_Bool external_stream;
|
||||||
@@ -1796,6 +1953,28 @@
|
|||||||
if ( !error )
|
if ( !error )
|
||||||
goto Success;
|
goto Success;
|
||||||
|
|
||||||
|
#ifdef FT_CONFIG_OPTION_MAC_FONTS
|
||||||
|
if ( ft_strcmp( cur[0]->clazz->module_name, "truetype" ) == 0 &&
|
||||||
|
FT_ERROR_BASE( error ) == FT_Err_Table_Missing )
|
||||||
|
{
|
||||||
|
/* TrueType but essential tables are missing */
|
||||||
|
if ( FT_Stream_Seek( stream, 0 ) )
|
||||||
|
break;
|
||||||
|
|
||||||
|
error = open_face_PS_from_sfnt_stream( library,
|
||||||
|
stream,
|
||||||
|
face_index,
|
||||||
|
num_params,
|
||||||
|
params,
|
||||||
|
aface );
|
||||||
|
if ( !error )
|
||||||
|
{
|
||||||
|
FT_Stream_Free( stream, external_stream );
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if ( FT_ERROR_BASE( error ) != FT_Err_Unknown_File_Format )
|
if ( FT_ERROR_BASE( error ) != FT_Err_Unknown_File_Format )
|
||||||
goto Fail3;
|
goto Fail3;
|
||||||
}
|
}
|
||||||
@@ -3265,11 +3444,11 @@
|
|||||||
|
|
||||||
|
|
||||||
if ( size == NULL )
|
if ( size == NULL )
|
||||||
return FT_Err_Bad_Argument;
|
return FT_Err_Invalid_Argument;
|
||||||
|
|
||||||
face = size->face;
|
face = size->face;
|
||||||
if ( face == NULL || face->driver == NULL )
|
if ( face == NULL || face->driver == NULL )
|
||||||
return FT_Err_Bad_Argument;
|
return FT_Err_Invalid_Argument;
|
||||||
|
|
||||||
/* we don't need anything more complex than that; all size objects */
|
/* we don't need anything more complex than that; all size objects */
|
||||||
/* are already listed by the face */
|
/* are already listed by the face */
|
||||||
@@ -4017,7 +4196,11 @@
|
|||||||
|
|
||||||
faces = &FT_DRIVER(module)->faces_list;
|
faces = &FT_DRIVER(module)->faces_list;
|
||||||
while ( faces->head )
|
while ( faces->head )
|
||||||
|
{
|
||||||
FT_Done_Face( FT_FACE( faces->head->data ) );
|
FT_Done_Face( FT_FACE( faces->head->data ) );
|
||||||
|
if ( faces->head )
|
||||||
|
FT_ERROR(( "FT_Done_Library: failed to free some faces\n" ));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4195,4 +4378,27 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* documentation is in freetype.h */
|
||||||
|
|
||||||
|
FT_EXPORT_DEF( FT_UShort )
|
||||||
|
FT_Get_FSType_Flags( FT_Face face )
|
||||||
|
{
|
||||||
|
PS_FontInfoRec font_info;
|
||||||
|
TT_OS2* os2;
|
||||||
|
|
||||||
|
|
||||||
|
/* look at FSType before fsType for Type42 */
|
||||||
|
|
||||||
|
if ( !FT_Get_PS_Font_Info( face, &font_info ) &&
|
||||||
|
font_info.fs_type != 0 )
|
||||||
|
return font_info.fs_type;
|
||||||
|
|
||||||
|
if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, ft_sfnt_os2 ) ) != NULL &&
|
||||||
|
os2->version != 0xFFFFU )
|
||||||
|
return os2->fsType;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
/* END */
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType API for validating OpenType tables (body). */
|
/* FreeType API for validating OpenType tables (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2004, 2006 by */
|
/* Copyright 2004, 2006, 2008 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, */
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
#include <ft2build.h>
|
#include <ft2build.h>
|
||||||
#include FT_INTERNAL_OBJECTS_H
|
#include FT_INTERNAL_OBJECTS_H
|
||||||
#include FT_SERVICE_OPENTYPE_VALIDATE_H
|
#include FT_SERVICE_OPENTYPE_VALIDATE_H
|
||||||
|
#include FT_OPENTYPE_VALIDATE_H
|
||||||
|
|
||||||
|
|
||||||
/* documentation is in ftotval.h */
|
/* documentation is in ftotval.h */
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType outline management (body). */
|
/* FreeType outline management (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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, */
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
#include <ft2build.h>
|
#include <ft2build.h>
|
||||||
#include FT_OUTLINE_H
|
#include FT_OUTLINE_H
|
||||||
#include FT_INTERNAL_OBJECTS_H
|
#include FT_INTERNAL_OBJECTS_H
|
||||||
|
#include FT_INTERNAL_DEBUG_H
|
||||||
#include FT_TRIGONOMETRY_H
|
#include FT_TRIGONOMETRY_H
|
||||||
|
|
||||||
|
|
||||||
@@ -83,21 +84,25 @@
|
|||||||
FT_Int last; /* index of last point in contour */
|
FT_Int last; /* index of last point in contour */
|
||||||
|
|
||||||
|
|
||||||
|
FT_TRACE5(( "FT_Outline_Decompose: Outline %d\n", n ));
|
||||||
|
|
||||||
last = outline->contours[n];
|
last = outline->contours[n];
|
||||||
if ( last < 0 )
|
if ( last < 0 )
|
||||||
goto Invalid_Outline;
|
goto Invalid_Outline;
|
||||||
limit = outline->points + last;
|
limit = outline->points + last;
|
||||||
|
|
||||||
v_start = outline->points[first];
|
v_start = outline->points[first];
|
||||||
v_last = outline->points[last];
|
v_start.x = SCALED( v_start.x );
|
||||||
|
v_start.y = SCALED( v_start.y );
|
||||||
|
|
||||||
v_start.x = SCALED( v_start.x ); v_start.y = SCALED( v_start.y );
|
v_last = outline->points[last];
|
||||||
v_last.x = SCALED( v_last.x ); v_last.y = SCALED( v_last.y );
|
v_last.x = SCALED( v_last.x );
|
||||||
|
v_last.y = SCALED( v_last.y );
|
||||||
|
|
||||||
v_control = v_start;
|
v_control = v_start;
|
||||||
|
|
||||||
point = outline->points + first;
|
point = outline->points + first;
|
||||||
tags = outline->tags + first;
|
tags = outline->tags + first;
|
||||||
tag = FT_CURVE_TAG( tags[0] );
|
tag = FT_CURVE_TAG( tags[0] );
|
||||||
|
|
||||||
/* A contour cannot start with a cubic control point! */
|
/* A contour cannot start with a cubic control point! */
|
||||||
@@ -128,6 +133,8 @@
|
|||||||
tags--;
|
tags--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FT_TRACE5(( " move to (%.2f, %.2f)\n",
|
||||||
|
v_start.x / 64.0, v_start.y / 64.0 ));
|
||||||
error = func_interface->move_to( &v_start, user );
|
error = func_interface->move_to( &v_start, user );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
@@ -148,6 +155,8 @@
|
|||||||
vec.x = SCALED( point->x );
|
vec.x = SCALED( point->x );
|
||||||
vec.y = SCALED( point->y );
|
vec.y = SCALED( point->y );
|
||||||
|
|
||||||
|
FT_TRACE5(( " line to (%.2f, %.2f)\n",
|
||||||
|
vec.x / 64.0, vec.y / 64.0 ));
|
||||||
error = func_interface->line_to( &vec, user );
|
error = func_interface->line_to( &vec, user );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
@@ -174,6 +183,10 @@
|
|||||||
|
|
||||||
if ( tag == FT_CURVE_TAG_ON )
|
if ( tag == FT_CURVE_TAG_ON )
|
||||||
{
|
{
|
||||||
|
FT_TRACE5(( " conic to (%.2f, %.2f)"
|
||||||
|
" with control (%.2f, %.2f)\n",
|
||||||
|
vec.x / 64.0, vec.y / 64.0,
|
||||||
|
v_control.x / 64.0, v_control.y / 64.0 ));
|
||||||
error = func_interface->conic_to( &v_control, &vec, user );
|
error = func_interface->conic_to( &v_control, &vec, user );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
@@ -186,6 +199,10 @@
|
|||||||
v_middle.x = ( v_control.x + vec.x ) / 2;
|
v_middle.x = ( v_control.x + vec.x ) / 2;
|
||||||
v_middle.y = ( v_control.y + vec.y ) / 2;
|
v_middle.y = ( v_control.y + vec.y ) / 2;
|
||||||
|
|
||||||
|
FT_TRACE5(( " conic to (%.2f, %.2f)"
|
||||||
|
" with control (%.2f, %.2f)\n",
|
||||||
|
v_middle.x / 64.0, v_middle.y / 64.0,
|
||||||
|
v_control.x / 64.0, v_control.y / 64.0 ));
|
||||||
error = func_interface->conic_to( &v_control, &v_middle, user );
|
error = func_interface->conic_to( &v_control, &v_middle, user );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
@@ -194,6 +211,10 @@
|
|||||||
goto Do_Conic;
|
goto Do_Conic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FT_TRACE5(( " conic to (%.2f, %.2f)"
|
||||||
|
" with control (%.2f, %.2f)\n",
|
||||||
|
v_start.x / 64.0, v_start.y / 64.0,
|
||||||
|
v_control.x / 64.0, v_control.y / 64.0 ));
|
||||||
error = func_interface->conic_to( &v_control, &v_start, user );
|
error = func_interface->conic_to( &v_control, &v_start, user );
|
||||||
goto Close;
|
goto Close;
|
||||||
|
|
||||||
@@ -209,8 +230,11 @@
|
|||||||
point += 2;
|
point += 2;
|
||||||
tags += 2;
|
tags += 2;
|
||||||
|
|
||||||
vec1.x = SCALED( point[-2].x ); vec1.y = SCALED( point[-2].y );
|
vec1.x = SCALED( point[-2].x );
|
||||||
vec2.x = SCALED( point[-1].x ); vec2.y = SCALED( point[-1].y );
|
vec1.y = SCALED( point[-2].y );
|
||||||
|
|
||||||
|
vec2.x = SCALED( point[-1].x );
|
||||||
|
vec2.y = SCALED( point[-1].y );
|
||||||
|
|
||||||
if ( point <= limit )
|
if ( point <= limit )
|
||||||
{
|
{
|
||||||
@@ -220,12 +244,22 @@
|
|||||||
vec.x = SCALED( point->x );
|
vec.x = SCALED( point->x );
|
||||||
vec.y = SCALED( point->y );
|
vec.y = SCALED( point->y );
|
||||||
|
|
||||||
|
FT_TRACE5(( " cubic to (%.2f, %.2f)"
|
||||||
|
" with controls (%.2f, %.2f) and (%.2f, %.2f)\n",
|
||||||
|
vec.x / 64.0, vec.y / 64.0,
|
||||||
|
vec1.x / 64.0, vec1.y / 64.0,
|
||||||
|
vec2.x / 64.0, vec2.y / 64.0 ));
|
||||||
error = func_interface->cubic_to( &vec1, &vec2, &vec, user );
|
error = func_interface->cubic_to( &vec1, &vec2, &vec, user );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FT_TRACE5(( " cubic to (%.2f, %.2f)"
|
||||||
|
" with controls (%.2f, %.2f) and (%.2f, %.2f)\n",
|
||||||
|
v_start.x / 64.0, v_start.y / 64.0,
|
||||||
|
vec1.x / 64.0, vec1.y / 64.0,
|
||||||
|
vec2.x / 64.0, vec2.y / 64.0 ));
|
||||||
error = func_interface->cubic_to( &vec1, &vec2, &v_start, user );
|
error = func_interface->cubic_to( &vec1, &vec2, &v_start, user );
|
||||||
goto Close;
|
goto Close;
|
||||||
}
|
}
|
||||||
@@ -233,6 +267,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* close the contour with a line segment */
|
/* close the contour with a line segment */
|
||||||
|
FT_TRACE5(( " line to (%.2f, %.2f)\n",
|
||||||
|
v_start.x / 64.0, v_start.y / 64.0 ));
|
||||||
error = func_interface->line_to( &v_start, user );
|
error = func_interface->line_to( &v_start, user );
|
||||||
|
|
||||||
Close:
|
Close:
|
||||||
@@ -242,9 +278,11 @@
|
|||||||
first = last + 1;
|
first = last + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
FT_TRACE5(( "FT_Outline_Decompose: Done\n", n ));
|
||||||
|
return FT_Err_Ok;
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
|
FT_TRACE5(( "FT_Outline_Decompose: Error %d\n", error ));
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
Invalid_Outline:
|
Invalid_Outline:
|
||||||
@@ -558,7 +596,7 @@
|
|||||||
FT_Raster_Params* params )
|
FT_Raster_Params* params )
|
||||||
{
|
{
|
||||||
FT_Error error;
|
FT_Error error;
|
||||||
FT_Bool update = 0;
|
FT_Bool update = FALSE;
|
||||||
FT_Renderer renderer;
|
FT_Renderer renderer;
|
||||||
FT_ListNode node;
|
FT_ListNode node;
|
||||||
|
|
||||||
@@ -589,7 +627,7 @@
|
|||||||
/* format */
|
/* format */
|
||||||
renderer = FT_Lookup_Renderer( library, FT_GLYPH_FORMAT_OUTLINE,
|
renderer = FT_Lookup_Renderer( library, FT_GLYPH_FORMAT_OUTLINE,
|
||||||
&node );
|
&node );
|
||||||
update = 1;
|
update = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we changed the current renderer for the glyph image format */
|
/* if we changed the current renderer for the glyph image format */
|
||||||
@@ -1007,7 +1045,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( xmin == 32768 )
|
if ( xmin == 32768L )
|
||||||
return FT_ORIENTATION_TRUETYPE;
|
return FT_ORIENTATION_TRUETYPE;
|
||||||
|
|
||||||
ray_y[0] = ( xmin_ymin * 3 + xmin_ymax ) >> 2;
|
ray_y[0] = ( xmin_ymin * 3 + xmin_ymax ) >> 2;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
/* FreeType API for checking patented TrueType bytecode instructions */
|
/* FreeType API for checking patented TrueType bytecode instructions */
|
||||||
/* (body). */
|
/* (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2007 by David Turner. */
|
/* Copyright 2007, 2008 by David Turner. */
|
||||||
/* */
|
/* */
|
||||||
/* 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 */
|
||||||
@@ -260,7 +260,7 @@
|
|||||||
FT_Face_SetUnpatentedHinting( FT_Face face,
|
FT_Face_SetUnpatentedHinting( FT_Face face,
|
||||||
FT_Bool value )
|
FT_Bool value )
|
||||||
{
|
{
|
||||||
FT_Bool result = 0;
|
FT_Bool result = FALSE;
|
||||||
|
|
||||||
|
|
||||||
#if defined( TT_CONFIG_OPTION_UNPATENTED_HINTING ) && \
|
#if defined( TT_CONFIG_OPTION_UNPATENTED_HINTING ) && \
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType API for accessing PFR-specific data (body). */
|
/* FreeType API for accessing PFR-specific data (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2002, 2003, 2004 by */
|
/* Copyright 2002, 2003, 2004, 2008 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, */
|
||||||
@@ -46,6 +46,9 @@
|
|||||||
FT_Service_PfrMetrics service;
|
FT_Service_PfrMetrics service;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !face )
|
||||||
|
return FT_Err_Invalid_Argument;
|
||||||
|
|
||||||
service = ft_pfr_check( face );
|
service = ft_pfr_check( face );
|
||||||
if ( service )
|
if ( service )
|
||||||
{
|
{
|
||||||
@@ -55,14 +58,17 @@
|
|||||||
ametrics_x_scale,
|
ametrics_x_scale,
|
||||||
ametrics_y_scale );
|
ametrics_y_scale );
|
||||||
}
|
}
|
||||||
else if ( face )
|
else
|
||||||
{
|
{
|
||||||
FT_Fixed x_scale, y_scale;
|
FT_Fixed x_scale, y_scale;
|
||||||
|
|
||||||
|
|
||||||
/* this is not a PFR font */
|
/* this is not a PFR font */
|
||||||
*aoutline_resolution = face->units_per_EM;
|
if ( aoutline_resolution )
|
||||||
*ametrics_resolution = face->units_per_EM;
|
*aoutline_resolution = face->units_per_EM;
|
||||||
|
|
||||||
|
if ( ametrics_resolution )
|
||||||
|
*ametrics_resolution = face->units_per_EM;
|
||||||
|
|
||||||
x_scale = y_scale = 0x10000L;
|
x_scale = y_scale = 0x10000L;
|
||||||
if ( face->size )
|
if ( face->size )
|
||||||
@@ -70,11 +76,15 @@
|
|||||||
x_scale = face->size->metrics.x_scale;
|
x_scale = face->size->metrics.x_scale;
|
||||||
y_scale = face->size->metrics.y_scale;
|
y_scale = face->size->metrics.y_scale;
|
||||||
}
|
}
|
||||||
*ametrics_x_scale = x_scale;
|
|
||||||
*ametrics_y_scale = y_scale;
|
if ( ametrics_x_scale )
|
||||||
|
*ametrics_x_scale = x_scale;
|
||||||
|
|
||||||
|
if ( ametrics_y_scale )
|
||||||
|
*ametrics_y_scale = y_scale;
|
||||||
|
|
||||||
|
error = FT_Err_Unknown_File_Format;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
error = FT_Err_Invalid_Argument;
|
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@@ -92,14 +102,15 @@
|
|||||||
FT_Service_PfrMetrics service;
|
FT_Service_PfrMetrics service;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !face )
|
||||||
|
return FT_Err_Invalid_Argument;
|
||||||
|
|
||||||
service = ft_pfr_check( face );
|
service = ft_pfr_check( face );
|
||||||
if ( service )
|
if ( service )
|
||||||
error = service->get_kerning( face, left, right, avector );
|
error = service->get_kerning( face, left, right, avector );
|
||||||
else if ( face )
|
else
|
||||||
error = FT_Get_Kerning( face, left, right,
|
error = FT_Get_Kerning( face, left, right,
|
||||||
FT_KERNING_UNSCALED, avector );
|
FT_KERNING_UNSCALED, avector );
|
||||||
else
|
|
||||||
error = FT_Err_Invalid_Argument;
|
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Embedded resource forks accessor (body). */
|
/* Embedded resource forks accessor (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2004, 2005, 2006, 2007 by */
|
/* Copyright 2004, 2005, 2006, 2007, 2008 by */
|
||||||
/* Masatake YAMATO and Redhat K.K. */
|
/* Masatake YAMATO and Redhat K.K. */
|
||||||
/* */
|
/* */
|
||||||
/* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are */
|
/* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are */
|
||||||
@@ -399,7 +399,10 @@
|
|||||||
char **result_file_name,
|
char **result_file_name,
|
||||||
FT_Long *result_offset )
|
FT_Long *result_offset )
|
||||||
{
|
{
|
||||||
FT_Int32 magic = ( 0x00 << 24 | 0x05 << 16 | 0x16 << 8 | 0x07 );
|
FT_Int32 magic = ( 0x00 << 24 ) |
|
||||||
|
( 0x05 << 16 ) |
|
||||||
|
( 0x16 << 8 ) |
|
||||||
|
0x07;
|
||||||
|
|
||||||
|
|
||||||
*result_file_name = NULL;
|
*result_file_name = NULL;
|
||||||
@@ -418,7 +421,10 @@
|
|||||||
char **result_file_name,
|
char **result_file_name,
|
||||||
FT_Long *result_offset )
|
FT_Long *result_offset )
|
||||||
{
|
{
|
||||||
FT_Int32 magic = (0x00 << 24 | 0x05 << 16 | 0x16 << 8 | 0x00);
|
FT_Int32 magic = ( 0x00 << 24 ) |
|
||||||
|
( 0x05 << 16 ) |
|
||||||
|
( 0x16 << 8 ) |
|
||||||
|
0x00;
|
||||||
|
|
||||||
|
|
||||||
*result_file_name = NULL;
|
*result_file_name = NULL;
|
||||||
|
|||||||
@@ -707,12 +707,13 @@
|
|||||||
{
|
{
|
||||||
FT_Error error;
|
FT_Error error;
|
||||||
FT_Bool frame_accessed = 0;
|
FT_Bool frame_accessed = 0;
|
||||||
FT_Byte* cursor = stream->cursor;
|
FT_Byte* cursor;
|
||||||
|
|
||||||
|
|
||||||
if ( !fields || !stream )
|
if ( !fields || !stream )
|
||||||
return FT_Err_Invalid_Argument;
|
return FT_Err_Invalid_Argument;
|
||||||
|
|
||||||
|
cursor = stream->cursor;
|
||||||
|
|
||||||
error = FT_Err_Ok;
|
error = FT_Err_Ok;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -261,7 +261,7 @@
|
|||||||
{
|
{
|
||||||
FT_UInt old_max = border->max_points;
|
FT_UInt old_max = border->max_points;
|
||||||
FT_UInt new_max = border->num_points + new_points;
|
FT_UInt new_max = border->num_points + new_points;
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
|
|
||||||
|
|
||||||
if ( new_max > old_max )
|
if ( new_max > old_max )
|
||||||
@@ -279,6 +279,7 @@
|
|||||||
|
|
||||||
border->max_points = cur_max;
|
border->max_points = cur_max;
|
||||||
}
|
}
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@@ -346,7 +347,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
border->start = -1;
|
border->start = -1;
|
||||||
border->movable = 0;
|
border->movable = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -355,7 +356,7 @@
|
|||||||
FT_Vector* to,
|
FT_Vector* to,
|
||||||
FT_Bool movable )
|
FT_Bool movable )
|
||||||
{
|
{
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
|
|
||||||
|
|
||||||
FT_ASSERT( border->start >= 0 );
|
FT_ASSERT( border->start >= 0 );
|
||||||
@@ -410,7 +411,7 @@
|
|||||||
|
|
||||||
border->num_points += 2;
|
border->num_points += 2;
|
||||||
}
|
}
|
||||||
border->movable = 0;
|
border->movable = FALSE;
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -443,7 +444,7 @@
|
|||||||
|
|
||||||
border->num_points += 3;
|
border->num_points += 3;
|
||||||
}
|
}
|
||||||
border->movable = 0;
|
border->movable = FALSE;
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,7 +462,7 @@
|
|||||||
FT_Angle total, angle, step, rotate, next, theta;
|
FT_Angle total, angle, step, rotate, next, theta;
|
||||||
FT_Vector a, b, a2, b2;
|
FT_Vector a, b, a2, b2;
|
||||||
FT_Fixed length;
|
FT_Fixed length;
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
|
|
||||||
|
|
||||||
/* compute start point */
|
/* compute start point */
|
||||||
@@ -527,12 +528,12 @@
|
|||||||
{
|
{
|
||||||
/* close current open path if any ? */
|
/* close current open path if any ? */
|
||||||
if ( border->start >= 0 )
|
if ( border->start >= 0 )
|
||||||
ft_stroke_border_close( border, 0 );
|
ft_stroke_border_close( border, FALSE );
|
||||||
|
|
||||||
border->start = border->num_points;
|
border->start = border->num_points;
|
||||||
border->movable = 0;
|
border->movable = FALSE;
|
||||||
|
|
||||||
return ft_stroke_border_lineto( border, to, 0 );
|
return ft_stroke_border_lineto( border, to, FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -547,7 +548,7 @@
|
|||||||
border->num_points = 0;
|
border->num_points = 0;
|
||||||
border->max_points = 0;
|
border->max_points = 0;
|
||||||
border->start = -1;
|
border->start = -1;
|
||||||
border->valid = 0;
|
border->valid = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -556,7 +557,7 @@
|
|||||||
{
|
{
|
||||||
border->num_points = 0;
|
border->num_points = 0;
|
||||||
border->start = -1;
|
border->start = -1;
|
||||||
border->valid = 0;
|
border->valid = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -572,7 +573,7 @@
|
|||||||
border->num_points = 0;
|
border->num_points = 0;
|
||||||
border->max_points = 0;
|
border->max_points = 0;
|
||||||
border->start = -1;
|
border->start = -1;
|
||||||
border->valid = 0;
|
border->valid = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -581,7 +582,7 @@
|
|||||||
FT_UInt *anum_points,
|
FT_UInt *anum_points,
|
||||||
FT_UInt *anum_contours )
|
FT_UInt *anum_contours )
|
||||||
{
|
{
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
FT_UInt num_points = 0;
|
FT_UInt num_points = 0;
|
||||||
FT_UInt num_contours = 0;
|
FT_UInt num_contours = 0;
|
||||||
|
|
||||||
@@ -616,7 +617,7 @@
|
|||||||
if ( in_contour != 0 )
|
if ( in_contour != 0 )
|
||||||
goto Fail;
|
goto Fail;
|
||||||
|
|
||||||
border->valid = 1;
|
border->valid = TRUE;
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
*anum_points = num_points;
|
*anum_points = num_points;
|
||||||
@@ -798,7 +799,7 @@
|
|||||||
{
|
{
|
||||||
FT_Angle total, rotate;
|
FT_Angle total, rotate;
|
||||||
FT_Fixed radius = stroker->radius;
|
FT_Fixed radius = stroker->radius;
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
FT_StrokeBorder border = stroker->borders + side;
|
FT_StrokeBorder border = stroker->borders + side;
|
||||||
|
|
||||||
|
|
||||||
@@ -813,7 +814,7 @@
|
|||||||
radius,
|
radius,
|
||||||
stroker->angle_in + rotate,
|
stroker->angle_in + rotate,
|
||||||
total );
|
total );
|
||||||
border->movable = 0;
|
border->movable = FALSE;
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -824,7 +825,7 @@
|
|||||||
FT_Angle angle,
|
FT_Angle angle,
|
||||||
FT_Int side )
|
FT_Int side )
|
||||||
{
|
{
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
|
|
||||||
|
|
||||||
if ( stroker->line_cap == FT_STROKER_LINECAP_ROUND )
|
if ( stroker->line_cap == FT_STROKER_LINECAP_ROUND )
|
||||||
@@ -849,7 +850,7 @@
|
|||||||
delta.x += stroker->center.x + delta2.x;
|
delta.x += stroker->center.x + delta2.x;
|
||||||
delta.y += stroker->center.y + delta2.y;
|
delta.y += stroker->center.y + delta2.y;
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &delta, 0 );
|
error = ft_stroke_border_lineto( border, &delta, FALSE );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
@@ -859,7 +860,7 @@
|
|||||||
delta.x += delta2.x + stroker->center.x;
|
delta.x += delta2.x + stroker->center.x;
|
||||||
delta.y += delta2.y + stroker->center.y;
|
delta.y += delta2.y + stroker->center.y;
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &delta, 0 );
|
error = ft_stroke_border_lineto( border, &delta, FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
@@ -876,7 +877,7 @@
|
|||||||
FT_Angle phi, theta, rotate;
|
FT_Angle phi, theta, rotate;
|
||||||
FT_Fixed length, thcos, sigma;
|
FT_Fixed length, thcos, sigma;
|
||||||
FT_Vector delta;
|
FT_Vector delta;
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
|
|
||||||
|
|
||||||
rotate = FT_SIDE_TO_ROTATE( side );
|
rotate = FT_SIDE_TO_ROTATE( side );
|
||||||
@@ -900,7 +901,7 @@
|
|||||||
stroker->angle_out + rotate );
|
stroker->angle_out + rotate );
|
||||||
delta.x += stroker->center.x;
|
delta.x += stroker->center.x;
|
||||||
delta.y += stroker->center.y;
|
delta.y += stroker->center.y;
|
||||||
border->movable = 0;
|
border->movable = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -911,7 +912,7 @@
|
|||||||
delta.y += stroker->center.y;
|
delta.y += stroker->center.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &delta, 0 );
|
error = ft_stroke_border_lineto( border, &delta, FALSE );
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@@ -928,9 +929,7 @@
|
|||||||
|
|
||||||
|
|
||||||
if ( stroker->line_join == FT_STROKER_LINEJOIN_ROUND )
|
if ( stroker->line_join == FT_STROKER_LINEJOIN_ROUND )
|
||||||
{
|
|
||||||
error = ft_stroker_arcto( stroker, side );
|
error = ft_stroker_arcto( stroker, side );
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* this is a mitered or beveled corner */
|
/* this is a mitered or beveled corner */
|
||||||
@@ -943,7 +942,7 @@
|
|||||||
rotate = FT_SIDE_TO_ROTATE( side );
|
rotate = FT_SIDE_TO_ROTATE( side );
|
||||||
miter = FT_BOOL( stroker->line_join == FT_STROKER_LINEJOIN_MITER );
|
miter = FT_BOOL( stroker->line_join == FT_STROKER_LINEJOIN_MITER );
|
||||||
|
|
||||||
theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out );
|
theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out );
|
||||||
if ( theta == FT_ANGLE_PI )
|
if ( theta == FT_ANGLE_PI )
|
||||||
{
|
{
|
||||||
theta = rotate;
|
theta = rotate;
|
||||||
@@ -959,7 +958,7 @@
|
|||||||
sigma = FT_MulFix( stroker->miter_limit, thcos );
|
sigma = FT_MulFix( stroker->miter_limit, thcos );
|
||||||
|
|
||||||
if ( sigma >= 0x10000L )
|
if ( sigma >= 0x10000L )
|
||||||
miter = 0;
|
miter = FALSE;
|
||||||
|
|
||||||
if ( miter ) /* this is a miter (broken angle) */
|
if ( miter ) /* this is a miter (broken angle) */
|
||||||
{
|
{
|
||||||
@@ -983,7 +982,7 @@
|
|||||||
delta.x += middle.x;
|
delta.x += middle.x;
|
||||||
delta.y += middle.y;
|
delta.y += middle.y;
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &delta, 0 );
|
error = ft_stroke_border_lineto( border, &delta, FALSE );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
@@ -992,7 +991,7 @@
|
|||||||
delta.x += middle.x;
|
delta.x += middle.x;
|
||||||
delta.y += middle.y;
|
delta.y += middle.y;
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &delta, 0 );
|
error = ft_stroke_border_lineto( border, &delta, FALSE );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
@@ -1001,7 +1000,7 @@
|
|||||||
delta.x += stroker->center.x;
|
delta.x += stroker->center.x;
|
||||||
delta.y += stroker->center.y;
|
delta.y += stroker->center.y;
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &delta, 1 );
|
error = ft_stroke_border_lineto( border, &delta, TRUE );
|
||||||
}
|
}
|
||||||
|
|
||||||
else /* this is a bevel (intersection) */
|
else /* this is a bevel (intersection) */
|
||||||
@@ -1016,8 +1015,9 @@
|
|||||||
delta.x += stroker->center.x;
|
delta.x += stroker->center.x;
|
||||||
delta.y += stroker->center.y;
|
delta.y += stroker->center.y;
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &delta, 0 );
|
error = ft_stroke_border_lineto( border, &delta, FALSE );
|
||||||
if (error) goto Exit;
|
if ( error )
|
||||||
|
goto Exit;
|
||||||
|
|
||||||
/* now add end point */
|
/* now add end point */
|
||||||
FT_Vector_From_Polar( &delta, stroker->radius,
|
FT_Vector_From_Polar( &delta, stroker->radius,
|
||||||
@@ -1025,7 +1025,7 @@
|
|||||||
delta.x += stroker->center.x;
|
delta.x += stroker->center.x;
|
||||||
delta.y += stroker->center.y;
|
delta.y += stroker->center.y;
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &delta, 1 );
|
error = ft_stroke_border_lineto( border, &delta, TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1037,7 +1037,7 @@
|
|||||||
static FT_Error
|
static FT_Error
|
||||||
ft_stroker_process_corner( FT_Stroker stroker )
|
ft_stroker_process_corner( FT_Stroker stroker )
|
||||||
{
|
{
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
FT_Angle turn;
|
FT_Angle turn;
|
||||||
FT_Int inside_side;
|
FT_Int inside_side;
|
||||||
|
|
||||||
@@ -1069,7 +1069,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/* add two points to the left and right borders corresponding to the */
|
/* add two points to the left and right borders corresponding to the */
|
||||||
/* start of the subpath.. */
|
/* start of the subpath */
|
||||||
static FT_Error
|
static FT_Error
|
||||||
ft_stroker_subpath_start( FT_Stroker stroker,
|
ft_stroker_subpath_start( FT_Stroker stroker,
|
||||||
FT_Angle start_angle )
|
FT_Angle start_angle )
|
||||||
@@ -1099,7 +1099,7 @@
|
|||||||
|
|
||||||
/* save angle for last cap */
|
/* save angle for last cap */
|
||||||
stroker->subpath_angle = start_angle;
|
stroker->subpath_angle = start_angle;
|
||||||
stroker->first_point = 0;
|
stroker->first_point = FALSE;
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
return error;
|
return error;
|
||||||
@@ -1112,7 +1112,7 @@
|
|||||||
FT_Stroker_LineTo( FT_Stroker stroker,
|
FT_Stroker_LineTo( FT_Stroker stroker,
|
||||||
FT_Vector* to )
|
FT_Vector* to )
|
||||||
{
|
{
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
FT_StrokeBorder border;
|
FT_StrokeBorder border;
|
||||||
FT_Vector delta;
|
FT_Vector delta;
|
||||||
FT_Angle angle;
|
FT_Angle angle;
|
||||||
@@ -1143,7 +1143,7 @@
|
|||||||
goto Exit;
|
goto Exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now add a line segment to both the "inside" and "outside" paths */
|
/* now add a line segment to both the `inside' and `outside' paths */
|
||||||
|
|
||||||
for ( border = stroker->borders, side = 1; side >= 0; side--, border++ )
|
for ( border = stroker->borders, side = 1; side >= 0; side--, border++ )
|
||||||
{
|
{
|
||||||
@@ -1153,7 +1153,7 @@
|
|||||||
point.x = to->x + delta.x;
|
point.x = to->x + delta.x;
|
||||||
point.y = to->y + delta.y;
|
point.y = to->y + delta.y;
|
||||||
|
|
||||||
error = ft_stroke_border_lineto( border, &point, 1 );
|
error = ft_stroke_border_lineto( border, &point, TRUE );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
@@ -1176,12 +1176,12 @@
|
|||||||
FT_Vector* control,
|
FT_Vector* control,
|
||||||
FT_Vector* to )
|
FT_Vector* to )
|
||||||
{
|
{
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
FT_Vector bez_stack[34];
|
FT_Vector bez_stack[34];
|
||||||
FT_Vector* arc;
|
FT_Vector* arc;
|
||||||
FT_Vector* limit = bez_stack + 30;
|
FT_Vector* limit = bez_stack + 30;
|
||||||
FT_Angle start_angle;
|
FT_Angle start_angle;
|
||||||
FT_Bool first_arc = 1;
|
FT_Bool first_arc = TRUE;
|
||||||
|
|
||||||
|
|
||||||
arc = bez_stack;
|
arc = bez_stack;
|
||||||
@@ -1206,7 +1206,7 @@
|
|||||||
|
|
||||||
if ( first_arc )
|
if ( first_arc )
|
||||||
{
|
{
|
||||||
first_arc = 0;
|
first_arc = FALSE;
|
||||||
|
|
||||||
start_angle = angle_in;
|
start_angle = angle_in;
|
||||||
|
|
||||||
@@ -1275,12 +1275,12 @@
|
|||||||
FT_Vector* control2,
|
FT_Vector* control2,
|
||||||
FT_Vector* to )
|
FT_Vector* to )
|
||||||
{
|
{
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
FT_Vector bez_stack[37];
|
FT_Vector bez_stack[37];
|
||||||
FT_Vector* arc;
|
FT_Vector* arc;
|
||||||
FT_Vector* limit = bez_stack + 32;
|
FT_Vector* limit = bez_stack + 32;
|
||||||
FT_Angle start_angle;
|
FT_Angle start_angle;
|
||||||
FT_Bool first_arc = 1;
|
FT_Bool first_arc = TRUE;
|
||||||
|
|
||||||
|
|
||||||
arc = bez_stack;
|
arc = bez_stack;
|
||||||
@@ -1308,7 +1308,7 @@
|
|||||||
|
|
||||||
if ( first_arc )
|
if ( first_arc )
|
||||||
{
|
{
|
||||||
first_arc = 0;
|
first_arc = FALSE;
|
||||||
|
|
||||||
/* process corner if necessary */
|
/* process corner if necessary */
|
||||||
start_angle = angle_in;
|
start_angle = angle_in;
|
||||||
@@ -1386,15 +1386,16 @@
|
|||||||
{
|
{
|
||||||
/* We cannot process the first point, because there is not enough */
|
/* We cannot process the first point, because there is not enough */
|
||||||
/* information regarding its corner/cap. The latter will be processed */
|
/* information regarding its corner/cap. The latter will be processed */
|
||||||
/* in the "end_subpath" routine. */
|
/* in the `FT_Stroker_EndSubPath' routine. */
|
||||||
/* */
|
/* */
|
||||||
stroker->first_point = 1;
|
stroker->first_point = TRUE;
|
||||||
stroker->center = *to;
|
stroker->center = *to;
|
||||||
stroker->subpath_open = open;
|
stroker->subpath_open = open;
|
||||||
|
|
||||||
/* record the subpath start point index for each border */
|
/* record the subpath start point for each border */
|
||||||
stroker->subpath_start = *to;
|
stroker->subpath_start = *to;
|
||||||
return 0;
|
|
||||||
|
return FT_Err_Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1402,10 +1403,10 @@
|
|||||||
ft_stroker_add_reverse_left( FT_Stroker stroker,
|
ft_stroker_add_reverse_left( FT_Stroker stroker,
|
||||||
FT_Bool open )
|
FT_Bool open )
|
||||||
{
|
{
|
||||||
FT_StrokeBorder right = stroker->borders + 0;
|
FT_StrokeBorder right = stroker->borders + 0;
|
||||||
FT_StrokeBorder left = stroker->borders + 1;
|
FT_StrokeBorder left = stroker->borders + 1;
|
||||||
FT_Int new_points;
|
FT_Int new_points;
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
|
|
||||||
|
|
||||||
FT_ASSERT( left->start >= 0 );
|
FT_ASSERT( left->start >= 0 );
|
||||||
@@ -1452,8 +1453,8 @@
|
|||||||
left->num_points = left->start;
|
left->num_points = left->start;
|
||||||
right->num_points += new_points;
|
right->num_points += new_points;
|
||||||
|
|
||||||
right->movable = 0;
|
right->movable = FALSE;
|
||||||
left->movable = 0;
|
left->movable = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
@@ -1467,7 +1468,8 @@
|
|||||||
FT_EXPORT_DEF( FT_Error )
|
FT_EXPORT_DEF( FT_Error )
|
||||||
FT_Stroker_EndSubPath( FT_Stroker stroker )
|
FT_Stroker_EndSubPath( FT_Stroker stroker )
|
||||||
{
|
{
|
||||||
FT_Error error = 0;
|
FT_Error error = FT_Err_Ok;
|
||||||
|
|
||||||
|
|
||||||
if ( stroker->subpath_open )
|
if ( stroker->subpath_open )
|
||||||
{
|
{
|
||||||
@@ -1480,8 +1482,8 @@
|
|||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
/* add reversed points from "left" to "right" */
|
/* add reversed points from `left' to `right' */
|
||||||
error = ft_stroker_add_reverse_left( stroker, 1 );
|
error = ft_stroker_add_reverse_left( stroker, TRUE );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
@@ -1494,7 +1496,7 @@
|
|||||||
|
|
||||||
/* Now end the right subpath accordingly. The left one is */
|
/* Now end the right subpath accordingly. The left one is */
|
||||||
/* rewind and doesn't need further processing. */
|
/* rewind and doesn't need further processing. */
|
||||||
ft_stroke_border_close( right, 0 );
|
ft_stroke_border_close( right, FALSE );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1536,8 +1538,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* then end our two subpaths */
|
/* then end our two subpaths */
|
||||||
ft_stroke_border_close( stroker->borders + 0, 1 );
|
ft_stroke_border_close( stroker->borders + 0, TRUE );
|
||||||
ft_stroke_border_close( stroker->borders + 1, 0 );
|
ft_stroke_border_close( stroker->borders + 1, FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
@@ -1692,7 +1694,7 @@
|
|||||||
v_control = v_start;
|
v_control = v_start;
|
||||||
|
|
||||||
point = outline->points + first;
|
point = outline->points + first;
|
||||||
tags = outline->tags + first;
|
tags = outline->tags + first;
|
||||||
tag = FT_CURVE_TAG( tags[0] );
|
tag = FT_CURVE_TAG( tags[0] );
|
||||||
|
|
||||||
/* A contour cannot start with a cubic control point! */
|
/* A contour cannot start with a cubic control point! */
|
||||||
@@ -1836,7 +1838,7 @@
|
|||||||
first = last + 1;
|
first = last + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return FT_Err_Ok;
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
return error;
|
return error;
|
||||||
@@ -1884,7 +1886,7 @@
|
|||||||
FT_UInt num_points, num_contours;
|
FT_UInt num_points, num_contours;
|
||||||
|
|
||||||
|
|
||||||
error = FT_Stroker_ParseOutline( stroker, outline, 0 );
|
error = FT_Stroker_ParseOutline( stroker, outline, FALSE );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Fail;
|
goto Fail;
|
||||||
|
|
||||||
@@ -1967,7 +1969,7 @@
|
|||||||
border = FT_STROKER_BORDER_LEFT;
|
border = FT_STROKER_BORDER_LEFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = FT_Stroker_ParseOutline( stroker, outline, 0 );
|
error = FT_Stroker_ParseOutline( stroker, outline, FALSE );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Fail;
|
goto Fail;
|
||||||
|
|
||||||
|
|||||||
@@ -68,36 +68,13 @@
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
FT_EXPORT_DEF( FT_Error )
|
|
||||||
FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot )
|
|
||||||
{
|
|
||||||
if ( slot && slot->format == FT_GLYPH_FORMAT_BITMAP &&
|
|
||||||
!( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) )
|
|
||||||
{
|
|
||||||
FT_Bitmap bitmap;
|
|
||||||
FT_Error error;
|
|
||||||
|
|
||||||
|
|
||||||
FT_Bitmap_New( &bitmap );
|
|
||||||
error = FT_Bitmap_Copy( slot->library, &slot->bitmap, &bitmap );
|
|
||||||
if ( error )
|
|
||||||
return error;
|
|
||||||
|
|
||||||
slot->bitmap = bitmap;
|
|
||||||
slot->internal->flags |= FT_GLYPH_OWN_BITMAP;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FT_Err_Ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* documentation is in ftsynth.h */
|
/* documentation is in ftsynth.h */
|
||||||
|
|
||||||
FT_EXPORT_DEF( void )
|
FT_EXPORT_DEF( void )
|
||||||
FT_GlyphSlot_Embolden( FT_GlyphSlot slot )
|
FT_GlyphSlot_Embolden( FT_GlyphSlot slot )
|
||||||
{
|
{
|
||||||
FT_Library library = slot->library;
|
FT_Library library = slot->library;
|
||||||
FT_Face face = FT_SLOT_FACE( slot );
|
FT_Face face = slot->face;
|
||||||
FT_Error error;
|
FT_Error error;
|
||||||
FT_Pos xstr, ystr;
|
FT_Pos xstr, ystr;
|
||||||
|
|
||||||
@@ -123,10 +100,11 @@
|
|||||||
}
|
}
|
||||||
else if ( slot->format == FT_GLYPH_FORMAT_BITMAP )
|
else if ( slot->format == FT_GLYPH_FORMAT_BITMAP )
|
||||||
{
|
{
|
||||||
xstr = FT_PIX_FLOOR( xstr );
|
/* round to full pixels */
|
||||||
|
xstr &= ~63;
|
||||||
if ( xstr == 0 )
|
if ( xstr == 0 )
|
||||||
xstr = 1 << 6;
|
xstr = 1 << 6;
|
||||||
ystr = FT_PIX_FLOOR( ystr );
|
ystr &= ~63;
|
||||||
|
|
||||||
error = FT_GlyphSlot_Own_Bitmap( slot );
|
error = FT_GlyphSlot_Own_Bitmap( slot );
|
||||||
if ( error )
|
if ( error )
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* ANSI-specific FreeType low-level system interface (body). */
|
/* ANSI-specific FreeType low-level system interface (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2006 by */
|
/* Copyright 1996-2001, 2002, 2006, 2008 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, */
|
||||||
@@ -294,7 +294,7 @@
|
|||||||
#ifdef FT_DEBUG_MEMORY
|
#ifdef FT_DEBUG_MEMORY
|
||||||
ft_mem_debug_done( memory );
|
ft_mem_debug_done( memory );
|
||||||
#endif
|
#endif
|
||||||
memory->free( memory, memory );
|
ft_sfree( memory );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007 by
|
# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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, modified,
|
# This file is part of the FreeType project, and may only be used, modified,
|
||||||
@@ -21,8 +21,6 @@
|
|||||||
# BASE_EXT_OBJ: A list of base layer extensions, i.e., components found
|
# BASE_EXT_OBJ: A list of base layer extensions, i.e., components found
|
||||||
# in `freetype/src/base' which are not compiled within the
|
# in `freetype/src/base' which are not compiled within the
|
||||||
# base layer proper.
|
# base layer proper.
|
||||||
#
|
|
||||||
# BASE_H is defined in freetype.mk to simplify the dependency rules.
|
|
||||||
|
|
||||||
|
|
||||||
BASE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SRC_DIR)/base)
|
BASE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SRC_DIR)/base)
|
||||||
@@ -44,7 +42,14 @@ BASE_SRC := $(BASE_DIR)/ftcalc.c \
|
|||||||
$(BASE_DIR)/ftrfork.c \
|
$(BASE_DIR)/ftrfork.c \
|
||||||
$(BASE_DIR)/ftstream.c \
|
$(BASE_DIR)/ftstream.c \
|
||||||
$(BASE_DIR)/fttrigon.c \
|
$(BASE_DIR)/fttrigon.c \
|
||||||
$(BASE_DIR)/ftutil.c
|
$(BASE_DIR)/ftutil.c \
|
||||||
|
$(BASE_DIR)/ftadvanc.c
|
||||||
|
|
||||||
|
ifneq ($(ftmac_c),)
|
||||||
|
BASE_SRC += $(BASE_DIR)/$(ftmac_c)
|
||||||
|
endif
|
||||||
|
|
||||||
|
BASE_H := $(BASE_DIR)/ftbase.h
|
||||||
|
|
||||||
# Base layer `extensions' sources
|
# Base layer `extensions' sources
|
||||||
#
|
#
|
||||||
@@ -77,13 +82,13 @@ BASE_SRC_S := $(BASE_DIR)/ftbase.c
|
|||||||
|
|
||||||
# Base layer - single object build
|
# Base layer - single object build
|
||||||
#
|
#
|
||||||
$(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H)
|
$(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H) $(BASE_H)
|
||||||
$(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BASE_SRC_S))
|
$(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BASE_SRC_S))
|
||||||
|
|
||||||
|
|
||||||
# Multiple objects build + extensions
|
# Multiple objects build + extensions
|
||||||
#
|
#
|
||||||
$(OBJ_DIR)/%.$O: $(BASE_DIR)/%.c $(FREETYPE_H)
|
$(OBJ_DIR)/%.$O: $(BASE_DIR)/%.c $(FREETYPE_H) $(BASE_H)
|
||||||
$(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
|
$(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
FreeType font driver for bdf files
|
FreeType font driver for bdf files
|
||||||
|
|
||||||
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 by
|
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
|
||||||
Francesco Zappa Nardelli
|
Francesco Zappa Nardelli
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
@@ -304,10 +304,15 @@ THE SOFTWARE.
|
|||||||
FT_CALLBACK_DEF( void )
|
FT_CALLBACK_DEF( void )
|
||||||
BDF_Face_Done( FT_Face bdfface ) /* BDF_Face */
|
BDF_Face_Done( FT_Face bdfface ) /* BDF_Face */
|
||||||
{
|
{
|
||||||
BDF_Face face = (BDF_Face)bdfface;
|
BDF_Face face = (BDF_Face)bdfface;
|
||||||
FT_Memory memory = FT_FACE_MEMORY( face );
|
FT_Memory memory;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !face )
|
||||||
|
return;
|
||||||
|
|
||||||
|
memory = FT_FACE_MEMORY( face );
|
||||||
|
|
||||||
bdf_free_font( face->bdffont );
|
bdf_free_font( face->bdffont );
|
||||||
|
|
||||||
FT_FREE( face->en_table );
|
FT_FREE( face->en_table );
|
||||||
@@ -610,7 +615,7 @@ THE SOFTWARE.
|
|||||||
switch ( req->type )
|
switch ( req->type )
|
||||||
{
|
{
|
||||||
case FT_SIZE_REQUEST_TYPE_NOMINAL:
|
case FT_SIZE_REQUEST_TYPE_NOMINAL:
|
||||||
if ( height == ( bsize->y_ppem + 32 ) >> 6 )
|
if ( height == ( ( bsize->y_ppem + 32 ) >> 6 ) )
|
||||||
error = BDF_Err_Ok;
|
error = BDF_Err_Ok;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
FTMODULE_H_COMMANDS += BDF_DRIVER
|
FTMODULE_H_COMMANDS += BDF_DRIVER
|
||||||
|
|
||||||
define BDF_DRIVER
|
define BDF_DRIVER
|
||||||
$(OPEN_DRIVER)bdf_driver_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Driver_ClassRec, bdf_driver_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)bdf $(ECHO_DRIVER_DESC)bdf bitmap fonts$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)bdf $(ECHO_DRIVER_DESC)bdf bitmap fonts$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
# Copyright (C) 2001, 2002, 2003 by
|
# Copyright (C) 2001, 2002, 2003, 2008 by
|
||||||
# Francesco Zappa Nardelli
|
# Francesco Zappa Nardelli
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
# bdf driver directory
|
# bdf driver directory
|
||||||
#
|
#
|
||||||
BDF_DIR := $(SRC_DIR)/bdf
|
BDF_DIR := $(SRC_DIR)/bdf
|
||||||
|
|
||||||
|
|
||||||
BDF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(BDF_DIR))
|
BDF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(BDF_DIR))
|
||||||
@@ -44,7 +44,8 @@ BDF_DRV_SRC := $(BDF_DIR)/bdflib.c \
|
|||||||
# bdf driver headers
|
# bdf driver headers
|
||||||
#
|
#
|
||||||
BDF_DRV_H := $(BDF_DIR)/bdf.h \
|
BDF_DRV_H := $(BDF_DIR)/bdf.h \
|
||||||
$(BDF_DIR)/bdfdrivr.h
|
$(BDF_DIR)/bdfdrivr.h \
|
||||||
|
$(BDF_DIR)/bdferror.h
|
||||||
|
|
||||||
# bdf driver object(s)
|
# bdf driver object(s)
|
||||||
#
|
#
|
||||||
|
|||||||
Vendored
+16
-4
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType CharMap cache (body) */
|
/* FreeType CharMap cache (body) */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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, */
|
||||||
@@ -288,8 +288,20 @@
|
|||||||
FT_Error error;
|
FT_Error error;
|
||||||
FT_UInt gindex = 0;
|
FT_UInt gindex = 0;
|
||||||
FT_UInt32 hash;
|
FT_UInt32 hash;
|
||||||
|
FT_Int no_cmap_change = 0;
|
||||||
|
|
||||||
|
|
||||||
|
if ( cmap_index < 0 )
|
||||||
|
{
|
||||||
|
/* Treat a negative cmap index as a special value, meaning that you */
|
||||||
|
/* don't want to change the FT_Face's character map through this */
|
||||||
|
/* call. This can be useful if the face requester callback already */
|
||||||
|
/* sets the face's charmap to the appropriate value. */
|
||||||
|
|
||||||
|
no_cmap_change = 1;
|
||||||
|
cmap_index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if ( !cache )
|
if ( !cache )
|
||||||
{
|
{
|
||||||
FT_ERROR(( "FTC_CMapCache_Lookup: bad arguments, returning 0!\n" ));
|
FT_ERROR(( "FTC_CMapCache_Lookup: bad arguments, returning 0!\n" ));
|
||||||
@@ -311,7 +323,7 @@
|
|||||||
* Adobe Acrobat Reader Pack, named `KozMinProVI-Regular.otf',
|
* Adobe Acrobat Reader Pack, named `KozMinProVI-Regular.otf',
|
||||||
* which contains more than 5 charmaps.
|
* which contains more than 5 charmaps.
|
||||||
*/
|
*/
|
||||||
if ( cmap_index >= 16 )
|
if ( cmap_index >= 16 && !no_cmap_change )
|
||||||
{
|
{
|
||||||
FTC_OldCMapDesc desc = (FTC_OldCMapDesc) face_id;
|
FTC_OldCMapDesc desc = (FTC_OldCMapDesc) face_id;
|
||||||
|
|
||||||
@@ -393,12 +405,12 @@
|
|||||||
old = face->charmap;
|
old = face->charmap;
|
||||||
cmap = face->charmaps[cmap_index];
|
cmap = face->charmaps[cmap_index];
|
||||||
|
|
||||||
if ( old != cmap )
|
if ( old != cmap && !no_cmap_change )
|
||||||
FT_Set_Charmap( face, cmap );
|
FT_Set_Charmap( face, cmap );
|
||||||
|
|
||||||
gindex = FT_Get_Char_Index( face, char_code );
|
gindex = FT_Get_Char_Index( face, char_code );
|
||||||
|
|
||||||
if ( old != cmap )
|
if ( old != cmap && !no_cmap_change )
|
||||||
FT_Set_Charmap( face, old );
|
FT_Set_Charmap( face, old );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+3
-3
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType Cache Manager (body). */
|
/* FreeType Cache Manager (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006 by */
|
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2008 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, */
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
|
|
||||||
|
|
||||||
if ( asize == NULL )
|
if ( asize == NULL )
|
||||||
return FTC_Err_Bad_Argument;
|
return FTC_Err_Invalid_Argument;
|
||||||
|
|
||||||
*asize = NULL;
|
*asize = NULL;
|
||||||
|
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
|
|
||||||
|
|
||||||
if ( aface == NULL )
|
if ( aface == NULL )
|
||||||
return FTC_Err_Bad_Argument;
|
return FTC_Err_Invalid_Argument;
|
||||||
|
|
||||||
*aface = NULL;
|
*aface = NULL;
|
||||||
|
|
||||||
|
|||||||
Vendored
+6
-4
@@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
# Copyright 2000, 2001, 2003, 2004, 2006 by
|
# Copyright 2000, 2001, 2003, 2004, 2006, 2008 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, modified,
|
# This file is part of the FreeType project, and may only be used, modified,
|
||||||
@@ -26,7 +26,7 @@ CACHE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CACHE_DIR))
|
|||||||
#
|
#
|
||||||
CACHE_DRV_SRC := $(CACHE_DIR)/ftcbasic.c \
|
CACHE_DRV_SRC := $(CACHE_DIR)/ftcbasic.c \
|
||||||
$(CACHE_DIR)/ftccache.c \
|
$(CACHE_DIR)/ftccache.c \
|
||||||
$(CACHE_DIR)/ftccmap.c \
|
$(CACHE_DIR)/ftccmap.c \
|
||||||
$(CACHE_DIR)/ftcglyph.c \
|
$(CACHE_DIR)/ftcglyph.c \
|
||||||
$(CACHE_DIR)/ftcimage.c \
|
$(CACHE_DIR)/ftcimage.c \
|
||||||
$(CACHE_DIR)/ftcmanag.c \
|
$(CACHE_DIR)/ftcmanag.c \
|
||||||
@@ -35,12 +35,14 @@ CACHE_DRV_SRC := $(CACHE_DIR)/ftcbasic.c \
|
|||||||
|
|
||||||
# Cache driver headers
|
# Cache driver headers
|
||||||
#
|
#
|
||||||
CACHE_DRV_H := $(CACHE_DIR)/ftccback.h \
|
CACHE_DRV_H := $(CACHE_DIR)/ftccache.h \
|
||||||
|
$(CACHE_DIR)/ftccback.h \
|
||||||
$(CACHE_DIR)/ftcerror.h \
|
$(CACHE_DIR)/ftcerror.h \
|
||||||
$(CACHE_DIR)/ftcglyph.h \
|
$(CACHE_DIR)/ftcglyph.h \
|
||||||
$(CACHE_DIR)/ftcimage.h \
|
$(CACHE_DIR)/ftcimage.h \
|
||||||
$(CACHE_DIR)/ftcmanag.h \
|
$(CACHE_DIR)/ftcmanag.h \
|
||||||
$(CACHE_DIR)/ftcmru.h
|
$(CACHE_DIR)/ftcmru.h \
|
||||||
|
$(CACHE_DIR)/ftcsbits.h
|
||||||
|
|
||||||
|
|
||||||
# Cache driver object(s)
|
# Cache driver object(s)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* OpenType font driver implementation (body). */
|
/* OpenType font driver implementation (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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, */
|
||||||
@@ -187,6 +187,36 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FT_CALLBACK_DEF( FT_Error )
|
||||||
|
cff_get_advances( FT_Face ftface,
|
||||||
|
FT_UInt start,
|
||||||
|
FT_UInt count,
|
||||||
|
FT_Int32 flags,
|
||||||
|
FT_Fixed* advances )
|
||||||
|
{
|
||||||
|
CFF_Face face = (CFF_Face)ftface;
|
||||||
|
FT_UInt nn;
|
||||||
|
FT_Error error = CFF_Err_Ok;
|
||||||
|
FT_GlyphSlot slot = face->root.glyph;
|
||||||
|
|
||||||
|
|
||||||
|
flags |= FT_LOAD_ADVANCE_ONLY;
|
||||||
|
|
||||||
|
for ( nn = 0; nn < count; nn++ )
|
||||||
|
{
|
||||||
|
error = Load_Glyph( slot, face->root.size, start+nn, flags );
|
||||||
|
if ( error )
|
||||||
|
break;
|
||||||
|
|
||||||
|
advances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
|
||||||
|
? slot->advance.y
|
||||||
|
: slot->advance.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GLYPH DICT SERVICE
|
* GLYPH DICT SERVICE
|
||||||
*
|
*
|
||||||
@@ -396,6 +426,7 @@
|
|||||||
|
|
||||||
|
|
||||||
cmap_info->language = 0;
|
cmap_info->language = 0;
|
||||||
|
cmap_info->format = 0;
|
||||||
|
|
||||||
if ( cmap->clazz != &cff_cmap_encoding_class_rec &&
|
if ( cmap->clazz != &cff_cmap_encoding_class_rec &&
|
||||||
cmap->clazz != &cff_cmap_unicode_class_rec )
|
cmap->clazz != &cff_cmap_unicode_class_rec )
|
||||||
@@ -570,7 +601,7 @@
|
|||||||
|
|
||||||
cff_get_kerning,
|
cff_get_kerning,
|
||||||
0, /* FT_Face_AttachFunc */
|
0, /* FT_Face_AttachFunc */
|
||||||
0, /* FT_Face_GetAdvancesFunc */
|
cff_get_advances, /* FT_Face_GetAdvancesFunc */
|
||||||
|
|
||||||
cff_size_request,
|
cff_size_request,
|
||||||
|
|
||||||
|
|||||||
+312
-195
File diff suppressed because it is too large
Load Diff
@@ -139,6 +139,7 @@ FT_BEGIN_HEADER
|
|||||||
FT_Pos nominal_width;
|
FT_Pos nominal_width;
|
||||||
|
|
||||||
FT_Bool read_width;
|
FT_Bool read_width;
|
||||||
|
FT_Bool width_only;
|
||||||
FT_Int num_hints;
|
FT_Int num_hints;
|
||||||
FT_Fixed* buildchar;
|
FT_Fixed* buildchar;
|
||||||
FT_Int len_buildchar;
|
FT_Int len_buildchar;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* OpenType and CFF data/program tables loader (body). */
|
/* OpenType and CFF data/program tables loader (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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, */
|
||||||
@@ -1355,7 +1355,8 @@
|
|||||||
FT_LOCAL_DEF( FT_Error )
|
FT_LOCAL_DEF( FT_Error )
|
||||||
cff_font_load( FT_Stream stream,
|
cff_font_load( FT_Stream stream,
|
||||||
FT_Int face_index,
|
FT_Int face_index,
|
||||||
CFF_Font font )
|
CFF_Font font,
|
||||||
|
FT_Bool pure_cff )
|
||||||
{
|
{
|
||||||
static const FT_Frame_Field cff_header_fields[] =
|
static const FT_Frame_Field cff_header_fields[] =
|
||||||
{
|
{
|
||||||
@@ -1519,7 +1520,7 @@
|
|||||||
/* read the Charset and Encoding tables if available */
|
/* read the Charset and Encoding tables if available */
|
||||||
if ( font->num_glyphs > 0 )
|
if ( font->num_glyphs > 0 )
|
||||||
{
|
{
|
||||||
FT_Bool invert = FT_BOOL( dict->cid_registry != 0xFFFFU );
|
FT_Bool invert = FT_BOOL( dict->cid_registry != 0xFFFFU && pure_cff );
|
||||||
|
|
||||||
|
|
||||||
error = cff_charset_load( &font->charset, font->num_glyphs, stream,
|
error = cff_charset_load( &font->charset, font->num_glyphs, stream,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* OpenType & CFF data/program tables loader (specification). */
|
/* OpenType & CFF data/program tables loader (specification). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2007 by */
|
/* Copyright 1996-2001, 2002, 2003, 2007, 2008 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, */
|
||||||
@@ -60,7 +60,8 @@ FT_BEGIN_HEADER
|
|||||||
FT_LOCAL( FT_Error )
|
FT_LOCAL( FT_Error )
|
||||||
cff_font_load( FT_Stream stream,
|
cff_font_load( FT_Stream stream,
|
||||||
FT_Int face_index,
|
FT_Int face_index,
|
||||||
CFF_Font font );
|
CFF_Font font,
|
||||||
|
FT_Bool pure_cff );
|
||||||
|
|
||||||
FT_LOCAL( void )
|
FT_LOCAL( void )
|
||||||
cff_font_done( CFF_Font font );
|
cff_font_done( CFF_Font font );
|
||||||
|
|||||||
@@ -101,7 +101,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/* CFF and Type 1 private dictionaries have slightly different */
|
/* CFF and Type 1 private dictionaries have slightly different */
|
||||||
/* structures; we need to synthetize a Type 1 dictionary on the fly */
|
/* structures; we need to synthesize a Type 1 dictionary on the fly */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cff_make_private_dict( CFF_SubFont subfont,
|
cff_make_private_dict( CFF_SubFont subfont,
|
||||||
@@ -437,7 +437,7 @@
|
|||||||
error = sfnt->init_face( stream, face, face_index, num_params, params );
|
error = sfnt->init_face( stream, face, face_index, num_params, params );
|
||||||
if ( !error )
|
if ( !error )
|
||||||
{
|
{
|
||||||
if ( face->format_tag != 0x4F54544FL ) /* `OTTO'; OpenType/CFF font */
|
if ( face->format_tag != TTAG_OTTO ) /* `OTTO'; OpenType/CFF font */
|
||||||
{
|
{
|
||||||
FT_TRACE2(( "[not a valid OpenType/CFF font]\n" ));
|
FT_TRACE2(( "[not a valid OpenType/CFF font]\n" ));
|
||||||
goto Bad_Format;
|
goto Bad_Format;
|
||||||
@@ -465,8 +465,7 @@
|
|||||||
pure_cff = 0;
|
pure_cff = 0;
|
||||||
|
|
||||||
/* load font directory */
|
/* load font directory */
|
||||||
error = sfnt->load_face( stream, face,
|
error = sfnt->load_face( stream, face, 0, num_params, params );
|
||||||
face_index, num_params, params );
|
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
}
|
}
|
||||||
@@ -508,13 +507,15 @@
|
|||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
face->extra.data = cff;
|
face->extra.data = cff;
|
||||||
error = cff_font_load( stream, face_index, cff );
|
error = cff_font_load( stream, face_index, cff, pure_cff );
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
cff->pshinter = pshinter;
|
cff->pshinter = pshinter;
|
||||||
cff->psnames = (void*)psnames;
|
cff->psnames = (void*)psnames;
|
||||||
|
|
||||||
|
cffface->face_index = face_index;
|
||||||
|
|
||||||
/* Complement the root flags with some interesting information. */
|
/* Complement the root flags with some interesting information. */
|
||||||
/* Note that this is only necessary for pure CFF and CEF fonts; */
|
/* Note that this is only necessary for pure CFF and CEF fonts; */
|
||||||
/* SFNT based fonts use the `name' table instead. */
|
/* SFNT based fonts use the `name' table instead. */
|
||||||
@@ -659,8 +660,7 @@
|
|||||||
cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16;
|
cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16;
|
||||||
cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16;
|
cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16;
|
||||||
|
|
||||||
|
cffface->units_per_EM = (FT_UShort)( dict->units_per_em );
|
||||||
cffface->units_per_EM = dict->units_per_em;
|
|
||||||
|
|
||||||
cffface->ascender = (FT_Short)( cffface->bbox.yMax );
|
cffface->ascender = (FT_Short)( cffface->bbox.yMax );
|
||||||
cffface->descender = (FT_Short)( cffface->bbox.yMin );
|
cffface->descender = (FT_Short)( cffface->bbox.yMin );
|
||||||
@@ -823,7 +823,7 @@
|
|||||||
cffface->face_flags |= FT_FACE_FLAG_GLYPH_NAMES;
|
cffface->face_flags |= FT_FACE_FLAG_GLYPH_NAMES;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( dict->cid_registry != 0xFFFFU )
|
if ( dict->cid_registry != 0xFFFFU && pure_cff )
|
||||||
cffface->face_flags |= FT_FACE_FLAG_CID_KEYED;
|
cffface->face_flags |= FT_FACE_FLAG_CID_KEYED;
|
||||||
|
|
||||||
|
|
||||||
@@ -832,7 +832,7 @@
|
|||||||
/* Compute char maps. */
|
/* Compute char maps. */
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
/* Try to synthetize a Unicode charmap if there is none available */
|
/* Try to synthesize a Unicode charmap if there is none available */
|
||||||
/* already. If an OpenType font contains a Unicode "cmap", we */
|
/* already. If an OpenType font contains a Unicode "cmap", we */
|
||||||
/* will use it, whatever be in the CFF part of the file. */
|
/* will use it, whatever be in the CFF part of the file. */
|
||||||
{
|
{
|
||||||
@@ -919,11 +919,17 @@
|
|||||||
FT_LOCAL_DEF( void )
|
FT_LOCAL_DEF( void )
|
||||||
cff_face_done( FT_Face cffface ) /* CFF_Face */
|
cff_face_done( FT_Face cffface ) /* CFF_Face */
|
||||||
{
|
{
|
||||||
CFF_Face face = (CFF_Face)cffface;
|
CFF_Face face = (CFF_Face)cffface;
|
||||||
FT_Memory memory = cffface->memory;
|
FT_Memory memory;
|
||||||
SFNT_Service sfnt = (SFNT_Service)face->sfnt;
|
SFNT_Service sfnt;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !face )
|
||||||
|
return;
|
||||||
|
|
||||||
|
memory = cffface->memory;
|
||||||
|
sfnt = (SFNT_Service)face->sfnt;
|
||||||
|
|
||||||
if ( sfnt )
|
if ( sfnt )
|
||||||
sfnt->done_face( face );
|
sfnt->done_face( face );
|
||||||
|
|
||||||
|
|||||||
@@ -355,6 +355,12 @@
|
|||||||
if ( FT_ABS( integer_length ) > 5 )
|
if ( FT_ABS( integer_length ) > 5 )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
|
/* Remove non-significant digits. */
|
||||||
|
if ( integer_length < 0 ) {
|
||||||
|
number /= power_tens[-integer_length];
|
||||||
|
fraction_length += integer_length;
|
||||||
|
}
|
||||||
|
|
||||||
/* Convert into 16.16 format. */
|
/* Convert into 16.16 format. */
|
||||||
if ( fraction_length > 0 )
|
if ( fraction_length > 0 )
|
||||||
{
|
{
|
||||||
@@ -406,10 +412,9 @@
|
|||||||
cff_parse_fixed_scaled( FT_Byte** d,
|
cff_parse_fixed_scaled( FT_Byte** d,
|
||||||
FT_Int scaling )
|
FT_Int scaling )
|
||||||
{
|
{
|
||||||
return **d ==
|
return **d == 30 ? cff_parse_real( d[0], d[1], scaling, NULL )
|
||||||
30 ? cff_parse_real( d[0], d[1], scaling, NULL )
|
: ( cff_parse_integer( d[0], d[1] ) *
|
||||||
: (FT_Fixed)FT_MulFix( cff_parse_integer( d[0], d[1] ) << 16,
|
power_tens[scaling] ) << 16;
|
||||||
power_tens[scaling] );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
FTMODULE_H_COMMANDS += CFF_DRIVER
|
FTMODULE_H_COMMANDS += CFF_DRIVER
|
||||||
|
|
||||||
define CFF_DRIVER
|
define CFF_DRIVER
|
||||||
$(OPEN_DRIVER)cff_driver_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Driver_ClassRec, cff_driver_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)cff $(ECHO_DRIVER_DESC)OpenType fonts with extension *.otf$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)cff $(ECHO_DRIVER_DESC)OpenType fonts with extension *.otf$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -234,14 +234,38 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* by mistake, `expansion_factor' appears both in PS_PrivateRec */
|
||||||
|
/* and CID_FaceDictRec (both are public header files and can't */
|
||||||
|
/* changed); we simply copy the value */
|
||||||
|
|
||||||
|
FT_CALLBACK_DEF( FT_Error )
|
||||||
|
parse_expansion_factor( CID_Face face,
|
||||||
|
CID_Parser* parser )
|
||||||
|
{
|
||||||
|
CID_FaceDict dict;
|
||||||
|
|
||||||
|
|
||||||
|
if ( parser->num_dict >= 0 )
|
||||||
|
{
|
||||||
|
dict = face->cid.font_dicts + parser->num_dict;
|
||||||
|
|
||||||
|
dict->expansion_factor = cid_parser_to_fixed( parser, 0 );
|
||||||
|
dict->private_dict.expansion_factor = dict->expansion_factor;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CID_Err_Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
const T1_FieldRec cid_field_records[] =
|
const T1_FieldRec cid_field_records[] =
|
||||||
{
|
{
|
||||||
|
|
||||||
#include "cidtoken.h"
|
#include "cidtoken.h"
|
||||||
|
|
||||||
T1_FIELD_CALLBACK( "FDArray", parse_fd_array, 0 )
|
T1_FIELD_CALLBACK( "FDArray", parse_fd_array, 0 )
|
||||||
T1_FIELD_CALLBACK( "FontMatrix", parse_font_matrix, 0 )
|
T1_FIELD_CALLBACK( "FontMatrix", parse_font_matrix, 0 )
|
||||||
|
T1_FIELD_CALLBACK( "ExpansionFactor", parse_expansion_factor, 0 )
|
||||||
|
|
||||||
{ 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0, 0 }
|
{ 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* CID objects manager (body). */
|
/* CID objects manager (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 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, */
|
||||||
@@ -193,61 +193,61 @@
|
|||||||
FT_LOCAL_DEF( void )
|
FT_LOCAL_DEF( void )
|
||||||
cid_face_done( FT_Face cidface ) /* CID_Face */
|
cid_face_done( FT_Face cidface ) /* CID_Face */
|
||||||
{
|
{
|
||||||
CID_Face face = (CID_Face)cidface;
|
CID_Face face = (CID_Face)cidface;
|
||||||
FT_Memory memory;
|
FT_Memory memory;
|
||||||
|
CID_FaceInfo cid;
|
||||||
|
PS_FontInfo info;
|
||||||
|
|
||||||
|
|
||||||
if ( face )
|
if ( !face )
|
||||||
|
return;
|
||||||
|
|
||||||
|
cid = &face->cid;
|
||||||
|
info = &cid->font_info;
|
||||||
|
memory = cidface->memory;
|
||||||
|
|
||||||
|
/* release subrs */
|
||||||
|
if ( face->subrs )
|
||||||
{
|
{
|
||||||
CID_FaceInfo cid = &face->cid;
|
FT_Int n;
|
||||||
PS_FontInfo info = &cid->font_info;
|
|
||||||
|
|
||||||
|
|
||||||
memory = cidface->memory;
|
for ( n = 0; n < cid->num_dicts; n++ )
|
||||||
|
|
||||||
/* release subrs */
|
|
||||||
if ( face->subrs )
|
|
||||||
{
|
{
|
||||||
FT_Int n;
|
CID_Subrs subr = face->subrs + n;
|
||||||
|
|
||||||
|
|
||||||
for ( n = 0; n < cid->num_dicts; n++ )
|
if ( subr->code )
|
||||||
{
|
{
|
||||||
CID_Subrs subr = face->subrs + n;
|
FT_FREE( subr->code[0] );
|
||||||
|
FT_FREE( subr->code );
|
||||||
|
|
||||||
if ( subr->code )
|
|
||||||
{
|
|
||||||
FT_FREE( subr->code[0] );
|
|
||||||
FT_FREE( subr->code );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FT_FREE( face->subrs );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* release FontInfo strings */
|
FT_FREE( face->subrs );
|
||||||
FT_FREE( info->version );
|
|
||||||
FT_FREE( info->notice );
|
|
||||||
FT_FREE( info->full_name );
|
|
||||||
FT_FREE( info->family_name );
|
|
||||||
FT_FREE( info->weight );
|
|
||||||
|
|
||||||
/* release font dictionaries */
|
|
||||||
FT_FREE( cid->font_dicts );
|
|
||||||
cid->num_dicts = 0;
|
|
||||||
|
|
||||||
/* release other strings */
|
|
||||||
FT_FREE( cid->cid_font_name );
|
|
||||||
FT_FREE( cid->registry );
|
|
||||||
FT_FREE( cid->ordering );
|
|
||||||
|
|
||||||
cidface->family_name = 0;
|
|
||||||
cidface->style_name = 0;
|
|
||||||
|
|
||||||
FT_FREE( face->binary_data );
|
|
||||||
FT_FREE( face->cid_stream );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* release FontInfo strings */
|
||||||
|
FT_FREE( info->version );
|
||||||
|
FT_FREE( info->notice );
|
||||||
|
FT_FREE( info->full_name );
|
||||||
|
FT_FREE( info->family_name );
|
||||||
|
FT_FREE( info->weight );
|
||||||
|
|
||||||
|
/* release font dictionaries */
|
||||||
|
FT_FREE( cid->font_dicts );
|
||||||
|
cid->num_dicts = 0;
|
||||||
|
|
||||||
|
/* release other strings */
|
||||||
|
FT_FREE( cid->cid_font_name );
|
||||||
|
FT_FREE( cid->registry );
|
||||||
|
FT_FREE( cid->ordering );
|
||||||
|
|
||||||
|
cidface->family_name = 0;
|
||||||
|
cidface->style_name = 0;
|
||||||
|
|
||||||
|
FT_FREE( face->binary_data );
|
||||||
|
FT_FREE( face->cid_stream );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -324,6 +324,7 @@
|
|||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
/* check the face index */
|
/* check the face index */
|
||||||
|
/* XXX: handle CID fonts with more than a single face */
|
||||||
if ( face_index != 0 )
|
if ( face_index != 0 )
|
||||||
{
|
{
|
||||||
FT_ERROR(( "cid_face_init: invalid face index\n" ));
|
FT_ERROR(( "cid_face_init: invalid face index\n" ));
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* CID token definitions (specification only). */
|
/* CID token definitions (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2006 by */
|
/* Copyright 1996-2001, 2002, 2003, 2006, 2008 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, */
|
||||||
@@ -48,6 +48,7 @@
|
|||||||
T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch, 0 )
|
T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch, 0 )
|
||||||
T1_FIELD_NUM ( "UnderlinePosition", underline_position, 0 )
|
T1_FIELD_NUM ( "UnderlinePosition", underline_position, 0 )
|
||||||
T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, 0 )
|
T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, 0 )
|
||||||
|
T1_FIELD_NUM ( "FSType", fs_type, 0 )
|
||||||
|
|
||||||
|
|
||||||
#undef FT_STRUCTURE
|
#undef FT_STRUCTURE
|
||||||
@@ -62,7 +63,6 @@
|
|||||||
T1_FIELD_NUM ( "SubrCount", num_subrs, 0 )
|
T1_FIELD_NUM ( "SubrCount", num_subrs, 0 )
|
||||||
T1_FIELD_NUM ( "lenBuildCharArray", len_buildchar, 0 )
|
T1_FIELD_NUM ( "lenBuildCharArray", len_buildchar, 0 )
|
||||||
T1_FIELD_FIXED( "ForceBoldThreshold", forcebold_threshold, 0 )
|
T1_FIELD_FIXED( "ForceBoldThreshold", forcebold_threshold, 0 )
|
||||||
T1_FIELD_FIXED( "ExpansionFactor", expansion_factor, 0 )
|
|
||||||
T1_FIELD_FIXED( "StrokeWidth", stroke_width, 0 )
|
T1_FIELD_FIXED( "StrokeWidth", stroke_width, 0 )
|
||||||
|
|
||||||
|
|
||||||
@@ -92,6 +92,9 @@
|
|||||||
T1_FIELD_NUM_TABLE ( "StemSnapH", snap_widths, 12, 0 )
|
T1_FIELD_NUM_TABLE ( "StemSnapH", snap_widths, 12, 0 )
|
||||||
T1_FIELD_NUM_TABLE ( "StemSnapV", snap_heights, 12, 0 )
|
T1_FIELD_NUM_TABLE ( "StemSnapV", snap_heights, 12, 0 )
|
||||||
|
|
||||||
|
T1_FIELD_BOOL ( "ForceBold", force_bold, 0 )
|
||||||
|
|
||||||
|
|
||||||
#undef FT_STRUCTURE
|
#undef FT_STRUCTURE
|
||||||
#define FT_STRUCTURE FT_BBox
|
#define FT_STRUCTURE FT_BBox
|
||||||
#undef T1CODE
|
#undef T1CODE
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
FTMODULE_H_COMMANDS += TYPE1CID_DRIVER
|
FTMODULE_H_COMMANDS += TYPE1CID_DRIVER
|
||||||
|
|
||||||
define TYPE1CID_DRIVER
|
define TYPE1CID_DRIVER
|
||||||
$(OPEN_DRIVER)t1cid_driver_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Driver_ClassRec, t1cid_driver_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)cid $(ECHO_DRIVER_DESC)Postscript CID-keyed fonts, no known extension$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)cid $(ECHO_DRIVER_DESC)Postscript CID-keyed fonts, no known extension$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/* parse compressed PCF fonts, as found with many X11 server */
|
/* parse compressed PCF fonts, as found with many X11 server */
|
||||||
/* distributions. */
|
/* distributions. */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2002, 2003, 2004, 2005, 2006 by */
|
/* Copyright 2002, 2003, 2004, 2005, 2006, 2009 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, */
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
#include FT_INTERNAL_STREAM_H
|
#include FT_INTERNAL_STREAM_H
|
||||||
#include FT_INTERNAL_DEBUG_H
|
#include FT_INTERNAL_DEBUG_H
|
||||||
#include FT_GZIP_H
|
#include FT_GZIP_H
|
||||||
#include <string.h>
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||||
|
|
||||||
|
|
||||||
#include FT_MODULE_ERRORS_H
|
#include FT_MODULE_ERRORS_H
|
||||||
|
|||||||
@@ -366,6 +366,9 @@ z_streamp z /* for messages */
|
|||||||
if (r == Z_DATA_ERROR)
|
if (r == Z_DATA_ERROR)
|
||||||
z->msg = (char*)"oversubscribed distance tree";
|
z->msg = (char*)"oversubscribed distance tree";
|
||||||
else if (r == Z_BUF_ERROR) {
|
else if (r == Z_BUF_ERROR) {
|
||||||
|
#if 0
|
||||||
|
{
|
||||||
|
#endif
|
||||||
#ifdef PKZIP_BUG_WORKAROUND
|
#ifdef PKZIP_BUG_WORKAROUND
|
||||||
r = Z_OK;
|
r = Z_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/* be used to parse compressed PCF fonts, as found with many X11 server */
|
/* be used to parse compressed PCF fonts, as found with many X11 server */
|
||||||
/* distributions. */
|
/* distributions. */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2004, 2005, 2006 by */
|
/* Copyright 2004, 2005, 2006, 2009 by */
|
||||||
/* Albert Chin-A-Young. */
|
/* Albert Chin-A-Young. */
|
||||||
/* */
|
/* */
|
||||||
/* Based on code in src/gzip/ftgzip.c, Copyright 2004 by */
|
/* Based on code in src/gzip/ftgzip.c, Copyright 2004 by */
|
||||||
@@ -27,8 +27,7 @@
|
|||||||
#include FT_INTERNAL_STREAM_H
|
#include FT_INTERNAL_STREAM_H
|
||||||
#include FT_INTERNAL_DEBUG_H
|
#include FT_INTERNAL_DEBUG_H
|
||||||
#include FT_LZW_H
|
#include FT_LZW_H
|
||||||
#include <string.h>
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
#include FT_MODULE_ERRORS_H
|
#include FT_MODULE_ERRORS_H
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ UseFreeTypeHeaders ;
|
|||||||
|
|
||||||
if $(FT2_MULTI)
|
if $(FT2_MULTI)
|
||||||
{
|
{
|
||||||
_sources = otvbase otvcommn otvgdef otvgpos otvgsub otvjstf otvmod ;
|
_sources = otvbase otvcommn otvgdef otvgpos otvgsub otvjstf otvmod otvmath ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
FTMODULE_H_COMMANDS += OTVALID_MODULE
|
FTMODULE_H_COMMANDS += OTVALID_MODULE
|
||||||
|
|
||||||
define OTVALID_MODULE
|
define OTVALID_MODULE
|
||||||
$(OPEN_DRIVER)otv_module_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Module_Class, otv_module_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)otvalid $(ECHO_DRIVER_DESC)OpenType validation module$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)otvalid $(ECHO_DRIVER_DESC)OpenType validation module$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ FT_BEGIN_HEADER
|
|||||||
otv_GDEF_validate( FT_Bytes table,
|
otv_GDEF_validate( FT_Bytes table,
|
||||||
FT_Bytes gsub,
|
FT_Bytes gsub,
|
||||||
FT_Bytes gpos,
|
FT_Bytes gpos,
|
||||||
|
FT_UInt glyph_count,
|
||||||
FT_Validator valid );
|
FT_Validator valid );
|
||||||
|
|
||||||
FT_LOCAL( void )
|
FT_LOCAL( void )
|
||||||
|
|||||||
@@ -192,12 +192,12 @@ FT_BEGIN_HEADER
|
|||||||
valid->func[2] = OTV_FUNC( z ); \
|
valid->func[2] = OTV_FUNC( z ); \
|
||||||
FT_END_STMNT
|
FT_END_STMNT
|
||||||
|
|
||||||
#define OTV_INIT do ; while ( 0 )
|
#define OTV_INIT do { } while ( 0 )
|
||||||
#define OTV_ENTER do ; while ( 0 )
|
#define OTV_ENTER do { } while ( 0 )
|
||||||
#define OTV_NAME_ENTER( name ) do ; while ( 0 )
|
#define OTV_NAME_ENTER( name ) do { } while ( 0 )
|
||||||
#define OTV_EXIT do ; while ( 0 )
|
#define OTV_EXIT do { } while ( 0 )
|
||||||
|
|
||||||
#define OTV_TRACE( s ) do ; while ( 0 )
|
#define OTV_TRACE( s ) do { } while ( 0 )
|
||||||
|
|
||||||
#endif /* !FT_DEBUG_LEVEL_TRACE */
|
#endif /* !FT_DEBUG_LEVEL_TRACE */
|
||||||
|
|
||||||
|
|||||||
@@ -141,10 +141,13 @@
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
|
/* sets valid->glyph_count */
|
||||||
|
|
||||||
FT_LOCAL_DEF( void )
|
FT_LOCAL_DEF( void )
|
||||||
otv_GDEF_validate( FT_Bytes table,
|
otv_GDEF_validate( FT_Bytes table,
|
||||||
FT_Bytes gsub,
|
FT_Bytes gsub,
|
||||||
FT_Bytes gpos,
|
FT_Bytes gpos,
|
||||||
|
FT_UInt glyph_count,
|
||||||
FT_Validator ftvalid )
|
FT_Validator ftvalid )
|
||||||
{
|
{
|
||||||
OTV_ValidatorRec validrec;
|
OTV_ValidatorRec validrec;
|
||||||
@@ -183,6 +186,8 @@
|
|||||||
else
|
else
|
||||||
table_size = 10; /* OpenType < 1.2 */
|
table_size = 10; /* OpenType < 1.2 */
|
||||||
|
|
||||||
|
valid->glyph_count = glyph_count;
|
||||||
|
|
||||||
OTV_OPTIONAL_OFFSET( GlyphClassDef );
|
OTV_OPTIONAL_OFFSET( GlyphClassDef );
|
||||||
OTV_SIZE_CHECK( GlyphClassDef );
|
OTV_SIZE_CHECK( GlyphClassDef );
|
||||||
if ( GlyphClassDef )
|
if ( GlyphClassDef )
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* OpenType MATH table validation (body). */
|
/* OpenType MATH table validation (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2007 by */
|
/* Copyright 2007, 2008 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
/* */
|
/* */
|
||||||
/* Written by George Williams. */
|
/* Written by George Williams. */
|
||||||
@@ -93,6 +93,8 @@
|
|||||||
OTV_OPTIONAL_TABLE( Coverage );
|
OTV_OPTIONAL_TABLE( Coverage );
|
||||||
OTV_OPTIONAL_TABLE( DeviceTableOffset );
|
OTV_OPTIONAL_TABLE( DeviceTableOffset );
|
||||||
|
|
||||||
|
FT_UNUSED( isItalic ); /* only used if tracing is active */
|
||||||
|
|
||||||
|
|
||||||
OTV_NAME_ENTER( isItalic ? "MathItalicsCorrectionInfo"
|
OTV_NAME_ENTER( isItalic ? "MathItalicsCorrectionInfo"
|
||||||
: "MathTopAccentAttachment" );
|
: "MathTopAccentAttachment" );
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType's OpenType validation module implementation (body). */
|
/* FreeType's OpenType validation module implementation (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2004, 2005, 2006, 2007 by */
|
/* Copyright 2004, 2005, 2006, 2007, 2008 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, */
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
{
|
{
|
||||||
ft_validator_init( &valid, gdef, gdef + len_gdef, FT_VALIDATE_DEFAULT );
|
ft_validator_init( &valid, gdef, gdef + len_gdef, FT_VALIDATE_DEFAULT );
|
||||||
if ( ft_setjmp( valid.jump_buffer ) == 0 )
|
if ( ft_setjmp( valid.jump_buffer ) == 0 )
|
||||||
otv_GDEF_validate( gdef, gsub, gpos, &valid );
|
otv_GDEF_validate( gdef, gsub, gpos, face->num_glyphs, &valid );
|
||||||
error = valid.error;
|
error = valid.error;
|
||||||
if ( error )
|
if ( error )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
FTMODULE_H_COMMANDS += PCF_DRIVER
|
FTMODULE_H_COMMANDS += PCF_DRIVER
|
||||||
|
|
||||||
define PCF_DRIVER
|
define PCF_DRIVER
|
||||||
$(OPEN_DRIVER)pcf_driver_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Driver_ClassRec, pcf_driver_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)pcf $(ECHO_DRIVER_DESC)pcf bitmap fonts$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)pcf $(ECHO_DRIVER_DESC)pcf bitmap fonts$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -196,10 +196,15 @@ THE SOFTWARE.
|
|||||||
FT_CALLBACK_DEF( void )
|
FT_CALLBACK_DEF( void )
|
||||||
PCF_Face_Done( FT_Face pcfface ) /* PCF_Face */
|
PCF_Face_Done( FT_Face pcfface ) /* PCF_Face */
|
||||||
{
|
{
|
||||||
PCF_Face face = (PCF_Face)pcfface;
|
PCF_Face face = (PCF_Face)pcfface;
|
||||||
FT_Memory memory = FT_FACE_MEMORY( face );
|
FT_Memory memory;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !face )
|
||||||
|
return;
|
||||||
|
|
||||||
|
memory = FT_FACE_MEMORY( face );
|
||||||
|
|
||||||
FT_FREE( face->encodings );
|
FT_FREE( face->encodings );
|
||||||
FT_FREE( face->metrics );
|
FT_FREE( face->metrics );
|
||||||
|
|
||||||
@@ -408,7 +413,7 @@ THE SOFTWARE.
|
|||||||
switch ( req->type )
|
switch ( req->type )
|
||||||
{
|
{
|
||||||
case FT_SIZE_REQUEST_TYPE_NOMINAL:
|
case FT_SIZE_REQUEST_TYPE_NOMINAL:
|
||||||
if ( height == ( bsize->y_ppem + 32 ) >> 6 )
|
if ( height == ( ( bsize->y_ppem + 32 ) >> 6 ) )
|
||||||
error = PCF_Err_Ok;
|
error = PCF_Err_Ok;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
FreeType font driver for pcf fonts
|
FreeType font driver for pcf fonts
|
||||||
|
|
||||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by
|
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
|
||||||
Francesco Zappa Nardelli
|
Francesco Zappa Nardelli
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
@@ -48,7 +48,7 @@ THE SOFTWARE.
|
|||||||
#define FT_COMPONENT trace_pcfread
|
#define FT_COMPONENT trace_pcfread
|
||||||
|
|
||||||
|
|
||||||
#if defined( FT_DEBUG_LEVEL_TRACE )
|
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||||
static const char* const tableNames[] =
|
static const char* const tableNames[] =
|
||||||
{
|
{
|
||||||
"prop", "accl", "mtrcs", "bmps", "imtrcs",
|
"prop", "accl", "mtrcs", "bmps", "imtrcs",
|
||||||
@@ -152,7 +152,7 @@ THE SOFTWARE.
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined( FT_DEBUG_LEVEL_TRACE )
|
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||||
|
|
||||||
{
|
{
|
||||||
FT_UInt i, j;
|
FT_UInt i, j;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
# Copyright (C) 2000, 2001, 2003 by
|
# Copyright (C) 2000, 2001, 2003, 2008 by
|
||||||
# Francesco Zappa Nardelli
|
# Francesco Zappa Nardelli
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
@@ -35,15 +35,14 @@ PCF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PCF_DIR))
|
|||||||
|
|
||||||
# pcf driver sources (i.e., C files)
|
# pcf driver sources (i.e., C files)
|
||||||
#
|
#
|
||||||
PCF_DRV_SRC := $(PCF_DIR)/pcfread.c \
|
PCF_DRV_SRC := $(PCF_DIR)/pcfdrivr.c \
|
||||||
$(PCF_DIR)/pcfdrivr.c \
|
$(PCF_DIR)/pcfread.c \
|
||||||
$(PCF_DIR)/pcfutil.c
|
$(PCF_DIR)/pcfutil.c
|
||||||
|
|
||||||
# pcf driver headers
|
# pcf driver headers
|
||||||
#
|
#
|
||||||
PCF_DRV_H := $(PCF_DIR)/pcf.h \
|
PCF_DRV_H := $(PCF_DRV_SRC:%.c=%.h) \
|
||||||
$(PCF_DIR)/pcfdrivr.h \
|
$(PCF_DIR)/pcf.h \
|
||||||
$(PCF_DIR)/pcfutil.h \
|
|
||||||
$(PCF_DIR)/pcferror.h
|
$(PCF_DIR)/pcferror.h
|
||||||
|
|
||||||
# pcf driver object(s)
|
# pcf driver object(s)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
FTMODULE_H_COMMANDS += PFR_DRIVER
|
FTMODULE_H_COMMANDS += PFR_DRIVER
|
||||||
|
|
||||||
define PFR_DRIVER
|
define PFR_DRIVER
|
||||||
$(OPEN_DRIVER)pfr_driver_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Driver_ClassRec, pfr_driver_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)pfr $(ECHO_DRIVER_DESC)PFR/TrueDoc font files with extension *.pfr$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)pfr $(ECHO_DRIVER_DESC)PFR/TrueDoc font files with extension *.pfr$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType PFR driver interface (body). */
|
/* FreeType PFR driver interface (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2002, 2003, 2004, 2006 by */
|
/* Copyright 2002, 2003, 2004, 2006, 2008 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, */
|
||||||
@@ -66,10 +66,16 @@
|
|||||||
FT_Pos *anadvance )
|
FT_Pos *anadvance )
|
||||||
{
|
{
|
||||||
PFR_Face face = (PFR_Face)pfrface;
|
PFR_Face face = (PFR_Face)pfrface;
|
||||||
FT_Error error = PFR_Err_Bad_Argument;
|
FT_Error error = PFR_Err_Invalid_Argument;
|
||||||
|
|
||||||
|
|
||||||
*anadvance = 0;
|
*anadvance = 0;
|
||||||
|
|
||||||
|
if ( !gindex )
|
||||||
|
goto Exit;
|
||||||
|
|
||||||
|
gindex--;
|
||||||
|
|
||||||
if ( face )
|
if ( face )
|
||||||
{
|
{
|
||||||
PFR_PhyFont phys = &face->phy_font;
|
PFR_PhyFont phys = &face->phy_font;
|
||||||
@@ -82,6 +88,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Exit:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* FreeType PFR object methods (body). */
|
/* FreeType PFR object methods (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */
|
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 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, */
|
||||||
@@ -41,10 +41,15 @@
|
|||||||
FT_LOCAL_DEF( void )
|
FT_LOCAL_DEF( void )
|
||||||
pfr_face_done( FT_Face pfrface ) /* PFR_Face */
|
pfr_face_done( FT_Face pfrface ) /* PFR_Face */
|
||||||
{
|
{
|
||||||
PFR_Face face = (PFR_Face)pfrface;
|
PFR_Face face = (PFR_Face)pfrface;
|
||||||
FT_Memory memory = pfrface->driver->root.memory;
|
FT_Memory memory;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !face )
|
||||||
|
return;
|
||||||
|
|
||||||
|
memory = pfrface->driver->root.memory;
|
||||||
|
|
||||||
/* we don't want dangling pointers */
|
/* we don't want dangling pointers */
|
||||||
pfrface->family_name = NULL;
|
pfrface->family_name = NULL;
|
||||||
pfrface->style_name = NULL;
|
pfrface->style_name = NULL;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* AFM parser (body). */
|
/* AFM parser (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2006, 2007 by */
|
/* Copyright 2006, 2007, 2008 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, */
|
||||||
@@ -672,7 +672,12 @@
|
|||||||
FT_ULong index2 = KERN_INDEX( kp2->index1, kp2->index2 );
|
FT_ULong index2 = KERN_INDEX( kp2->index1, kp2->index2 );
|
||||||
|
|
||||||
|
|
||||||
return (int)( index1 - index2 );
|
if ( index1 > index2 )
|
||||||
|
return 1;
|
||||||
|
else if ( index1 < index2 )
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
FTMODULE_H_COMMANDS += PSAUX_MODULE
|
FTMODULE_H_COMMANDS += PSAUX_MODULE
|
||||||
|
|
||||||
define PSAUX_MODULE
|
define PSAUX_MODULE
|
||||||
$(OPEN_DRIVER)psaux_module_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Module_Class, psaux_module_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)psaux $(ECHO_DRIVER_DESC)Postscript Type 1 & Type 2 helper module$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)psaux $(ECHO_DRIVER_DESC)Postscript Type 1 & Type 2 helper module$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* Auxiliary functions for PostScript fonts (body). */
|
/* Auxiliary functions for PostScript fonts (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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, */
|
||||||
@@ -175,11 +175,17 @@
|
|||||||
return PSaux_Err_Invalid_Argument;
|
return PSaux_Err_Invalid_Argument;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( length < 0 )
|
||||||
|
{
|
||||||
|
FT_ERROR(( "ps_table_add: invalid length\n" ));
|
||||||
|
return PSaux_Err_Invalid_Argument;
|
||||||
|
}
|
||||||
|
|
||||||
/* grow the base block if needed */
|
/* grow the base block if needed */
|
||||||
if ( table->cursor + length > table->capacity )
|
if ( table->cursor + length > table->capacity )
|
||||||
{
|
{
|
||||||
FT_Error error;
|
FT_Error error;
|
||||||
FT_Offset new_size = table->capacity;
|
FT_Offset new_size = table->capacity;
|
||||||
FT_Long in_offset;
|
FT_Long in_offset;
|
||||||
|
|
||||||
|
|
||||||
@@ -376,7 +382,7 @@
|
|||||||
/* skip octal escape or ignore backslash */
|
/* skip octal escape or ignore backslash */
|
||||||
for ( i = 0; i < 3 && cur < limit; ++i )
|
for ( i = 0; i < 3 && cur < limit; ++i )
|
||||||
{
|
{
|
||||||
if ( ! IS_OCTAL_DIGIT( *cur ) )
|
if ( !IS_OCTAL_DIGIT( *cur ) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
++cur;
|
++cur;
|
||||||
@@ -1259,8 +1265,9 @@
|
|||||||
old_cursor = parser->cursor;
|
old_cursor = parser->cursor;
|
||||||
old_limit = parser->limit;
|
old_limit = parser->limit;
|
||||||
|
|
||||||
/* we store the elements count if necessary */
|
/* we store the elements count if necessary; */
|
||||||
if ( field->type != T1_FIELD_TYPE_BBOX )
|
/* we further assume that `count_offset' can't be zero */
|
||||||
|
if ( field->type != T1_FIELD_TYPE_BBOX && field->count_offset != 0 )
|
||||||
*(FT_Byte*)( (FT_Byte*)objects[0] + field->count_offset ) =
|
*(FT_Byte*)( (FT_Byte*)objects[0] + field->count_offset ) =
|
||||||
(FT_Byte)num_elements;
|
(FT_Byte)num_elements;
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* PostScript Type 1 decoding routines (body). */
|
/* PostScript Type 1 decoding routines (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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, */
|
||||||
@@ -354,10 +354,9 @@
|
|||||||
( decoder->buildchar == NULL ) );
|
( decoder->buildchar == NULL ) );
|
||||||
|
|
||||||
if ( decoder->len_buildchar > 0 )
|
if ( decoder->len_buildchar > 0 )
|
||||||
memset( &decoder->buildchar[0],
|
ft_memset( &decoder->buildchar[0],
|
||||||
0,
|
0,
|
||||||
sizeof( decoder->buildchar[0] ) *
|
sizeof( decoder->buildchar[0] ) * decoder->len_buildchar );
|
||||||
decoder->len_buildchar );
|
|
||||||
|
|
||||||
FT_TRACE4(( "\nStart charstring\n" ));
|
FT_TRACE4(( "\nStart charstring\n" ));
|
||||||
|
|
||||||
@@ -777,10 +776,10 @@
|
|||||||
idx + blend->num_designs > decoder->face->len_buildchar )
|
idx + blend->num_designs > decoder->face->len_buildchar )
|
||||||
goto Unexpected_OtherSubr;
|
goto Unexpected_OtherSubr;
|
||||||
|
|
||||||
memcpy( &decoder->buildchar[idx],
|
ft_memcpy( &decoder->buildchar[idx],
|
||||||
blend->weight_vector,
|
blend->weight_vector,
|
||||||
blend->num_designs *
|
blend->num_designs *
|
||||||
sizeof( blend->weight_vector[ 0 ] ) );
|
sizeof( blend->weight_vector[0] ) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
FTMODULE_H_COMMANDS += PSHINTER_MODULE
|
FTMODULE_H_COMMANDS += PSHINTER_MODULE
|
||||||
|
|
||||||
define PSHINTER_MODULE
|
define PSHINTER_MODULE
|
||||||
$(OPEN_DRIVER)pshinter_module_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Module_Class, pshinter_module_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)pshinter $(ECHO_DRIVER_DESC)Postscript hinter module$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)pshinter $(ECHO_DRIVER_DESC)Postscript hinter module$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* PostScript hinting algorithm (body). */
|
/* PostScript hinting algorithm (body). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
/* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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 */
|
||||||
@@ -898,7 +898,7 @@
|
|||||||
|
|
||||||
#ifdef DEBUG_ZONES
|
#ifdef DEBUG_ZONES
|
||||||
|
|
||||||
#include <stdio.h>
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||||
|
|
||||||
static void
|
static void
|
||||||
psh_print_zone( PSH_Zone zone )
|
psh_print_zone( PSH_Zone zone )
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
FTMODULE_H_COMMANDS += PSNAMES_MODULE
|
FTMODULE_H_COMMANDS += PSNAMES_MODULE
|
||||||
|
|
||||||
define PSNAMES_MODULE
|
define PSNAMES_MODULE
|
||||||
$(OPEN_DRIVER)psnames_module_class$(CLOSE_DRIVER)
|
$(OPEN_DRIVER) FT_Module_Class, psnames_module_class $(CLOSE_DRIVER)
|
||||||
$(ECHO_DRIVER)psnames $(ECHO_DRIVER_DESC)Postscript & Unicode Glyph name handling$(ECHO_DRIVER_DONE)
|
$(ECHO_DRIVER)psnames $(ECHO_DRIVER_DESC)Postscript & Unicode Glyph name handling$(ECHO_DRIVER_DONE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -174,18 +174,34 @@
|
|||||||
|
|
||||||
/* sort base glyphs before glyph variants */
|
/* sort base glyphs before glyph variants */
|
||||||
if ( unicode1 == unicode2 )
|
if ( unicode1 == unicode2 )
|
||||||
return map1->unicode - map2->unicode;
|
{
|
||||||
|
if ( map1->unicode > map2->unicode )
|
||||||
|
return 1;
|
||||||
|
else if ( map1->unicode < map2->unicode )
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return unicode1 - unicode2;
|
{
|
||||||
|
if ( unicode1 > unicode2 )
|
||||||
|
return 1;
|
||||||
|
else if ( unicode1 < unicode2 )
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* support for old WGL4 fonts */
|
/* support for extra glyphs not handled (well) in AGL; */
|
||||||
|
/* we add extra mappings for them if necessary */
|
||||||
|
|
||||||
#define WGL_EXTRA_LIST_SIZE 8
|
#define EXTRA_GLYPH_LIST_SIZE 10
|
||||||
|
|
||||||
static const FT_UInt32 ft_wgl_extra_unicodes[WGL_EXTRA_LIST_SIZE] =
|
static const FT_UInt32 ft_extra_glyph_unicodes[EXTRA_GLYPH_LIST_SIZE] =
|
||||||
{
|
{
|
||||||
|
/* WGL 4 */
|
||||||
0x0394,
|
0x0394,
|
||||||
0x03A9,
|
0x03A9,
|
||||||
0x2215,
|
0x2215,
|
||||||
@@ -193,10 +209,13 @@
|
|||||||
0x02C9,
|
0x02C9,
|
||||||
0x03BC,
|
0x03BC,
|
||||||
0x2219,
|
0x2219,
|
||||||
0x00A0
|
0x00A0,
|
||||||
|
/* Romanian */
|
||||||
|
0x021A,
|
||||||
|
0x021B
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char ft_wgl_extra_glyph_names[] =
|
static const char ft_extra_glyph_names[] =
|
||||||
{
|
{
|
||||||
'D','e','l','t','a',0,
|
'D','e','l','t','a',0,
|
||||||
'O','m','e','g','a',0,
|
'O','m','e','g','a',0,
|
||||||
@@ -205,11 +224,13 @@
|
|||||||
'm','a','c','r','o','n',0,
|
'm','a','c','r','o','n',0,
|
||||||
'm','u',0,
|
'm','u',0,
|
||||||
'p','e','r','i','o','d','c','e','n','t','e','r','e','d',0,
|
'p','e','r','i','o','d','c','e','n','t','e','r','e','d',0,
|
||||||
's','p','a','c','e',0
|
's','p','a','c','e',0,
|
||||||
|
'T','c','o','m','m','a','a','c','c','e','n','t',0,
|
||||||
|
't','c','o','m','m','a','a','c','c','e','n','t',0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const FT_Int
|
static const FT_Int
|
||||||
ft_wgl_extra_glyph_name_offsets[WGL_EXTRA_LIST_SIZE] =
|
ft_extra_glyph_name_offsets[EXTRA_GLYPH_LIST_SIZE] =
|
||||||
{
|
{
|
||||||
0,
|
0,
|
||||||
6,
|
6,
|
||||||
@@ -218,29 +239,31 @@
|
|||||||
28,
|
28,
|
||||||
35,
|
35,
|
||||||
38,
|
38,
|
||||||
53
|
53,
|
||||||
|
59,
|
||||||
|
72
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ps_check_wgl_name( const char* gname,
|
ps_check_extra_glyph_name( const char* gname,
|
||||||
FT_UInt glyph,
|
FT_UInt glyph,
|
||||||
FT_UInt* wgl_glyphs,
|
FT_UInt* extra_glyphs,
|
||||||
FT_UInt *states )
|
FT_UInt *states )
|
||||||
{
|
{
|
||||||
FT_UInt n;
|
FT_UInt n;
|
||||||
|
|
||||||
|
|
||||||
for ( n = 0; n < WGL_EXTRA_LIST_SIZE; n++ )
|
for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ )
|
||||||
{
|
{
|
||||||
if ( ft_strcmp( ft_wgl_extra_glyph_names +
|
if ( ft_strcmp( ft_extra_glyph_names +
|
||||||
ft_wgl_extra_glyph_name_offsets[n], gname ) == 0 )
|
ft_extra_glyph_name_offsets[n], gname ) == 0 )
|
||||||
{
|
{
|
||||||
if ( states[n] == 0 )
|
if ( states[n] == 0 )
|
||||||
{
|
{
|
||||||
/* mark this WGL extra glyph as a candidate for the cmap */
|
/* mark this extra glyph as a candidate for the cmap */
|
||||||
states[n] = 1;
|
states[n] = 1;
|
||||||
wgl_glyphs[n] = glyph;
|
extra_glyphs[n] = glyph;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -250,17 +273,17 @@
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ps_check_wgl_unicode( FT_UInt32 uni_char,
|
ps_check_extra_glyph_unicode( FT_UInt32 uni_char,
|
||||||
FT_UInt *states )
|
FT_UInt *states )
|
||||||
{
|
{
|
||||||
FT_UInt n;
|
FT_UInt n;
|
||||||
|
|
||||||
|
|
||||||
for ( n = 0; n < WGL_EXTRA_LIST_SIZE; n++ )
|
for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ )
|
||||||
{
|
{
|
||||||
if ( uni_char == ft_wgl_extra_unicodes[n] )
|
if ( uni_char == ft_extra_glyph_unicodes[n] )
|
||||||
{
|
{
|
||||||
/* disable this WGL extra glyph from being added to the cmap */
|
/* disable this extra glyph from being added to the cmap */
|
||||||
states[n] = 2;
|
states[n] = 2;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -280,15 +303,15 @@
|
|||||||
{
|
{
|
||||||
FT_Error error;
|
FT_Error error;
|
||||||
|
|
||||||
FT_UInt wgl_list_states[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
|
FT_UInt extra_glyph_list_states[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||||
FT_UInt wgl_glyphs[WGL_EXTRA_LIST_SIZE];
|
FT_UInt extra_glyphs[EXTRA_GLYPH_LIST_SIZE];
|
||||||
|
|
||||||
|
|
||||||
/* we first allocate the table */
|
/* we first allocate the table */
|
||||||
table->num_maps = 0;
|
table->num_maps = 0;
|
||||||
table->maps = 0;
|
table->maps = 0;
|
||||||
|
|
||||||
if ( !FT_NEW_ARRAY( table->maps, num_glyphs + WGL_EXTRA_LIST_SIZE ) )
|
if ( !FT_NEW_ARRAY( table->maps, num_glyphs + EXTRA_GLYPH_LIST_SIZE ) )
|
||||||
{
|
{
|
||||||
FT_UInt n;
|
FT_UInt n;
|
||||||
FT_UInt count;
|
FT_UInt count;
|
||||||
@@ -305,12 +328,14 @@
|
|||||||
|
|
||||||
if ( gname )
|
if ( gname )
|
||||||
{
|
{
|
||||||
ps_check_wgl_name( gname, n, wgl_glyphs, wgl_list_states );
|
ps_check_extra_glyph_name( gname, n,
|
||||||
|
extra_glyphs, extra_glyph_list_states );
|
||||||
uni_char = ps_unicode_value( gname );
|
uni_char = ps_unicode_value( gname );
|
||||||
|
|
||||||
if ( BASE_GLYPH( uni_char ) != 0 )
|
if ( BASE_GLYPH( uni_char ) != 0 )
|
||||||
{
|
{
|
||||||
ps_check_wgl_unicode( uni_char, wgl_list_states );
|
ps_check_extra_glyph_unicode( uni_char,
|
||||||
|
extra_glyph_list_states );
|
||||||
map->unicode = uni_char;
|
map->unicode = uni_char;
|
||||||
map->glyph_index = n;
|
map->glyph_index = n;
|
||||||
map++;
|
map++;
|
||||||
@@ -321,15 +346,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( n = 0; n < WGL_EXTRA_LIST_SIZE; n++ )
|
for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ )
|
||||||
{
|
{
|
||||||
if ( wgl_list_states[n] == 1 )
|
if ( extra_glyph_list_states[n] == 1 )
|
||||||
{
|
{
|
||||||
/* This glyph name has an additional WGL4 representation. */
|
/* This glyph name has an additional representation. */
|
||||||
/* Add it to the cmap. */
|
/* Add it to the cmap. */
|
||||||
|
|
||||||
map->unicode = ft_wgl_extra_unicodes[n];
|
map->unicode = ft_extra_glyph_unicodes[n];
|
||||||
map->glyph_index = wgl_glyphs[n];
|
map->glyph_index = extra_glyphs[n];
|
||||||
map++;
|
map++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* PostScript glyph names. */
|
/* PostScript glyph names. */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2005 by */
|
/* Copyright 2005, 2008 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, */
|
||||||
@@ -561,7 +561,10 @@
|
|||||||
* The lookup function to get the Unicode value for a given string
|
* The lookup function to get the Unicode value for a given string
|
||||||
* is defined below the table.
|
* is defined below the table.
|
||||||
*/
|
*/
|
||||||
static const unsigned char ft_adobe_glyph_list[54791] =
|
|
||||||
|
#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
|
||||||
|
|
||||||
|
static const unsigned char ft_adobe_glyph_list[54791L] =
|
||||||
{
|
{
|
||||||
0, 52, 0,106, 2,167, 3, 63, 4,220, 6,125, 9,143, 10, 23,
|
0, 52, 0,106, 2,167, 3, 63, 4,220, 6,125, 9,143, 10, 23,
|
||||||
11,137, 12,199, 14,246, 15, 87, 16,233, 17,219, 18,104, 19, 88,
|
11,137, 12,199, 14,246, 15, 87, 16,233, 17,219, 18,104, 19, 88,
|
||||||
@@ -4086,5 +4089,7 @@
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
/* END */
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
/* Miscellaneous macros for stand-alone rasterizer (specification */
|
/* Miscellaneous macros for stand-alone rasterizer (specification */
|
||||||
/* only). */
|
/* only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2005 by */
|
/* Copyright 2005, 2009 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 */
|
||||||
@@ -27,7 +27,8 @@
|
|||||||
#ifndef __FTMISC_H__
|
#ifndef __FTMISC_H__
|
||||||
#define __FTMISC_H__
|
#define __FTMISC_H__
|
||||||
|
|
||||||
#include <string.h> /* memset */
|
/* memset */
|
||||||
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||||
|
|
||||||
#define FT_BEGIN_HEADER
|
#define FT_BEGIN_HEADER
|
||||||
#define FT_END_HEADER
|
#define FT_END_HEADER
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user