From 86b3789da404b7a3e8d8bb64002eef4cc1b61a04 Mon Sep 17 00:00:00 2001 From: "dpranke@chromium.org" Date: Thu, 21 Feb 2013 01:19:26 +0000 Subject: Add the ability to build a full version of Freetype via gyp that matches the configuration shipped as part of Ubuntu Lucid. We will link this into DumpRenderTree on Linux so that we can match the pixel results in layout tests regardless of which platform we're actually running on; this will allow us to build and run w/o a chroot in most cases. Even with this patch, there are still a couple of layout_tests that fail, I believe due to versions in the fonts themselves, but that needs more investigation. R=tony@chromium.org BUG=https://bugs.webkit.org/show_bug.cgi?id=107338 Review URL: https://chromiumcodereview.appspot.com/12254028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@183694 0039d316-1c4b-4281-b951-d872f2087c98 --- third_party/freetype2/OWNERS | 1 + third_party/freetype2/README.chromium | 35 +++ third_party/freetype2/freetype2.gyp | 84 ++++++ third_party/freetype2/freetype2.patch | 28 ++ third_party/freetype2/include/ftconfig.h | 477 +++++++++++++++++++++++++++++++ third_party/freetype2/include/ftmodule.h | 20 ++ 6 files changed, 645 insertions(+) create mode 100644 third_party/freetype2/OWNERS create mode 100644 third_party/freetype2/README.chromium create mode 100644 third_party/freetype2/freetype2.gyp create mode 100644 third_party/freetype2/freetype2.patch create mode 100644 third_party/freetype2/include/ftconfig.h create mode 100644 third_party/freetype2/include/ftmodule.h (limited to 'third_party/freetype2') diff --git a/third_party/freetype2/OWNERS b/third_party/freetype2/OWNERS new file mode 100644 index 0000000..f8ec284 --- /dev/null +++ b/third_party/freetype2/OWNERS @@ -0,0 +1 @@ +dpranke@chromium.org diff --git a/third_party/freetype2/README.chromium b/third_party/freetype2/README.chromium new file mode 100644 index 0000000..95a2fa2 --- /dev/null +++ b/third_party/freetype2/README.chromium @@ -0,0 +1,35 @@ +Name: freetype2 +URL: git://git.sv.nongnu.org/freetype/freetype2.git +Version: 2.3.11 +Security Critical: no +License: BSD +License File: NOT_SHIPPED + +Description: + +This mirrors the version of Freetype2 that was distributed with Ubuntu Lucid +(Version 2.3.11, git hash d699c2994ecc178c4ed05ac2086061b2034c2178, as seen +in https://launchpad.net/ubuntu/lucid/+source/freetype ). +We link this library into DumpRenderTree so that we can run the layout tests +on later versions of Ubuntu and still get the same font rendering so that +we don't have to support two sets of pixel test baselines. + +Freetype depends on two header files to be supplied by the user to specify +how to build the library, ftconfig.h and ftmodule.h (or equivalent filenames +as defined by the FT_CONFIG_CONFIG_H and FT_CONFIG_MODULES_H #defines). + +The versions in include/ were generated as follows (on a Precise machine): + + % cd ext + % bash autogen.sh + % ./configure + % cp objs/ftmodule.h ../include + % cp builds/unix/ftconfig.h ../include + % git apply freetype2.patch + +(Basically we use the stock list of modules, and define the FT_EXPORT +and FT_EXPORT_DEF macros to work properly when building a linux shared lib.) + +This code is not considered security critical since it is only to be linked +into test binaries! This should never be linked into chrome or any production +code. diff --git a/third_party/freetype2/freetype2.gyp b/third_party/freetype2/freetype2.gyp new file mode 100644 index 0000000..79d01ec --- /dev/null +++ b/third_party/freetype2/freetype2.gyp @@ -0,0 +1,84 @@ +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'ft2_dir': 'src', + }, + 'targets': [ + { + # We use a hard-coded shared library version in product_extension + # in order to match the version used on Ubuntu Precise. + # We also disable bzip2 and the ftpatent code to match the version + # that shipped on Ubuntu Lucid. + 'target_name': 'freetype2', + 'type': 'shared_library', + 'product_name': 'freetype', + 'product_extension': 'so.6', + 'toolsets': ['target'], + 'sources': [ + '<(ft2_dir)/src/base/ftsystem.c', + '<(ft2_dir)/src/base/ftinit.c', + '<(ft2_dir)/src/base/ftdebug.c', + + '<(ft2_dir)/src/base/ftbase.c', + + '<(ft2_dir)/src/base/ftbbox.c', + '<(ft2_dir)/src/base/ftglyph.c', + + '<(ft2_dir)/src/base/ftbdf.c', + '<(ft2_dir)/src/base/ftbitmap.c', + '<(ft2_dir)/src/base/ftcid.c', + '<(ft2_dir)/src/base/ftfstype.c', + '<(ft2_dir)/src/base/ftgasp.c', + '<(ft2_dir)/src/base/ftgxval.c', + '<(ft2_dir)/src/base/ftlcdfil.c', + '<(ft2_dir)/src/base/ftpfr.c', + '<(ft2_dir)/src/base/ftstroke.c', + '<(ft2_dir)/src/base/ftsynth.c', + '<(ft2_dir)/src/base/fttype1.c', + '<(ft2_dir)/src/base/ftwinfnt.c', + '<(ft2_dir)/src/base/ftxf86.c', + + '<(ft2_dir)/src/bdf/bdf.c', + '<(ft2_dir)/src/cff/cff.c', + '<(ft2_dir)/src/cid/type1cid.c', + '<(ft2_dir)/src/pcf/pcf.c', + '<(ft2_dir)/src/pfr/pfr.c', + '<(ft2_dir)/src/sfnt/sfnt.c', + '<(ft2_dir)/src/truetype/truetype.c', + '<(ft2_dir)/src/type1/type1.c', + '<(ft2_dir)/src/type42/type42.c', + '<(ft2_dir)/src/winfonts/winfnt.c', + + '<(ft2_dir)/src/psaux/psaux.c', + '<(ft2_dir)/src/psnames/psnames.c', + '<(ft2_dir)/src/pshinter/pshinter.c', + + '<(ft2_dir)/src/raster/raster.c', + '<(ft2_dir)/src/smooth/smooth.c', + + '<(ft2_dir)/src/autofit/autofit.c', + '<(ft2_dir)/src/gzip/ftgzip.c', + '<(ft2_dir)/src/lzw/ftlzw.c', + ], + 'defines': [ + 'FT_CONFIG_OPTION_SYSTEM_ZLIB', + 'FT2_BUILD_LIBRARY', + 'FT_CONFIG_CONFIG_H=', # See comments in README.chromium. + 'FT_CONFIG_MODULES_H=', # See comments in README.chromium. + ], + 'include_dirs': [ + 'include', + '<(ft2_dir)/include', + ], + 'direct_dependent_settings': { + 'include_dirs': [ + 'include', + '<(ft2_dir)/include', + ], + }, + }, + ], # targets +} diff --git a/third_party/freetype2/freetype2.patch b/third_party/freetype2/freetype2.patch new file mode 100644 index 0000000..44bcc61 --- /dev/null +++ b/third_party/freetype2/freetype2.patch @@ -0,0 +1,28 @@ +diff --git a/third_party/freetype2/include/ftconfig.h b/third_party/freetype2/include/ftconfig.h +index 9ea3546..16f8854 100644 +--- a/third_party/freetype2/include/ftconfig.h ++++ b/third_party/freetype2/include/ftconfig.h +@@ -397,9 +397,9 @@ FT_BEGIN_HEADER + #ifndef FT_EXPORT + + #ifdef __cplusplus +-#define FT_EXPORT( x ) extern "C" x ++#define FT_EXPORT( x ) __attribute__((visibility("default"))) extern "C" x + #else +-#define FT_EXPORT( x ) extern x ++#define FT_EXPORT( x ) __attribute__((visibility("default"))) extern x + #endif + + #endif /* !FT_EXPORT */ +@@ -408,9 +408,9 @@ FT_BEGIN_HEADER + #ifndef FT_EXPORT_DEF + + #ifdef __cplusplus +-#define FT_EXPORT_DEF( x ) extern "C" x ++#define FT_EXPORT_DEF( x ) __attribute__((visibility("default"))) extern "C" x + #else +-#define FT_EXPORT_DEF( x ) extern x ++#define FT_EXPORT_DEF( x ) __attribute__((visibility("default"))) extern x + #endif + + #endif /* !FT_EXPORT_DEF */ diff --git a/third_party/freetype2/include/ftconfig.h b/third_party/freetype2/include/ftconfig.h new file mode 100644 index 0000000..16f8854e --- /dev/null +++ b/third_party/freetype2/include/ftconfig.h @@ -0,0 +1,477 @@ +/* ftconfig.h. Generated from ftconfig.in by configure. */ +/***************************************************************************/ +/* */ +/* ftconfig.in */ +/* */ +/* UNIX-specific configuration file (specification only). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 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. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This header file contains a number of macro definitions that are used */ + /* by the rest of the engine. Most of the macros here are automatically */ + /* determined at compile time, and you should not need to change it to */ + /* port FreeType, except to compile the library with a non-ANSI */ + /* compiler. */ + /* */ + /* Note however that if some specific modifications are needed, we */ + /* advise you to place a modified copy in your build directory. */ + /* */ + /* The build directory is usually `freetype/builds/', and */ + /* contains system-specific files that are always included first when */ + /* building the library. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTCONFIG_H__ +#define __FTCONFIG_H__ + +#include +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ + /* */ + /* These macros can be toggled to suit a specific system. The current */ + /* ones are defaults used to compile FreeType in an ANSI C environment */ + /* (16bit compilers are also supported). Copy this file to your own */ + /* `freetype/builds/' directory, and edit it to port the engine. */ + /* */ + /*************************************************************************/ + + +#define HAVE_UNISTD_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_STDINT_H 1 + + + /* There are systems (like the Texas Instruments 'C54x) where a `char' */ + /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ + /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ + /* `char' type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + + +/* #undef FT_USE_AUTOCONF_SIZEOF_TYPES */ +#ifdef FT_USE_AUTOCONF_SIZEOF_TYPES + +#define SIZEOF_INT 4 +#define SIZEOF_LONG 8 +#define FT_SIZEOF_INT SIZEOF_INT +#define FT_SIZEOF_LONG SIZEOF_LONG + +#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ + + /* Following cpp computation of the bit length of int and long */ + /* is copied from default include/freetype/config/ftconfig.h. */ + /* If any improvement is required for this file, it should be */ + /* applied to the original header file for the builders that */ + /* does not use configure script. */ + + /* The size of an `int' type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `int' type!" +#endif + + /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ + /* DM642) is recognized but avoided. */ +#if FT_ULONG_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `long' type!" +#endif + +#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ + + + /* Preferred alignment of data */ +#define FT_ALIGNMENT 8 + + + /* FT_UNUSED is a macro used to indicate that a given parameter is not */ + /* used -- this is only used to get rid of unpleasant compiler warnings */ +#ifndef FT_UNUSED +#define FT_UNUSED( arg ) ( (arg) = (arg) ) +#endif + + + /*************************************************************************/ + /* */ + /* AUTOMATIC CONFIGURATION MACROS */ + /* */ + /* These macros are computed from the ones defined above. Don't touch */ + /* their definition, unless you know precisely what you are doing. No */ + /* porter should need to mess with them. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Mac support */ + /* */ + /* This is the only necessary change, so it is defined here instead */ + /* providing a new configuration file. */ + /* */ +#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ + ( defined( __MWERKS__ ) && defined( macintosh ) ) + /* no Carbon frameworks for 64bit 10.4.x */ +#include "AvailabilityMacros.h" +#if defined( __LP64__ ) && \ + ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) +#define DARWIN_NO_CARBON 1 +#else +#define FT_MACINTOSH 1 +#endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + +#endif + + + /* Fix compiler warning with sgi compiler */ +#if defined( __sgi ) && !defined( __GNUC__ ) +#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) +#pragma set woff 3505 +#endif +#endif + + + /*************************************************************************/ + /* */ + /* IntN types */ + /* */ + /* Used to guarantee the size of some specific integers. */ + /* */ + typedef signed short FT_Int16; + typedef unsigned short FT_UInt16; + +#if FT_SIZEOF_INT == 4 + + typedef signed int FT_Int32; + typedef unsigned int FT_UInt32; + +#elif FT_SIZEOF_LONG == 4 + + typedef signed long FT_Int32; + typedef unsigned long FT_UInt32; + +#else +#error "no 32bit type found -- please check your configuration files" +#endif + + + /* look up an integer type that is at least 32 bits */ +#if FT_SIZEOF_INT >= 4 + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= 4 + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + /* determine whether we have a 64-bit int type for platforms without */ + /* Autoconf */ +#if FT_SIZEOF_LONG == 8 + + /* FT_LONG64 must be defined if a 64-bit type is available */ +#define FT_LONG64 +#define FT_INT64 long + +#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 + +#elif defined( __BORLANDC__ ) /* Borland C++ */ + + /* XXXX: We should probably check the value of __BORLANDC__ in order */ + /* to test the compiler version. */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 + +#elif defined( __WATCOMC__ ) /* Watcom C++ */ + + /* Watcom doesn't provide 64-bit data types */ + +#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ + +#define FT_LONG64 +#define FT_INT64 long long int + +#elif defined( __GNUC__ ) + + /* GCC provides the `long long' type */ +#define FT_LONG64 +#define FT_INT64 long long int + +#endif /* FT_SIZEOF_LONG == 8 */ + + + /*************************************************************************/ + /* */ + /* A 64-bit data type will create compilation problems if you compile */ + /* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */ + /* is defined. You can however ignore this rule by defining the */ + /* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ + /* */ +#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) + +#ifdef __STDC__ + + /* Undefine the 64-bit macros in strict ANSI compilation mode. */ + /* Since `#undef' doesn't survive in configuration header files */ + /* we use the postprocessing facility of AC_CONFIG_HEADERS to */ + /* replace the leading `/' with `#'. */ +#undef FT_LONG64 +#undef FT_INT64 + +#endif /* __STDC__ */ + +#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 + + 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, %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 + + 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 + +#define FT_LOCAL( x ) static x +#define FT_LOCAL_DEF( x ) static x + +#else + +#ifdef __cplusplus +#define FT_LOCAL( x ) extern "C" x +#define FT_LOCAL_DEF( x ) extern "C" x +#else +#define FT_LOCAL( x ) extern x +#define FT_LOCAL_DEF( x ) x +#endif + +#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ + + +#ifndef FT_BASE + +#ifdef __cplusplus +#define FT_BASE( x ) extern "C" x +#else +#define FT_BASE( x ) extern x +#endif + +#endif /* !FT_BASE */ + + +#ifndef FT_BASE_DEF + +#ifdef __cplusplus +#define FT_BASE_DEF( x ) x +#else +#define FT_BASE_DEF( x ) x +#endif + +#endif /* !FT_BASE_DEF */ + + +#ifndef FT_EXPORT + +#ifdef __cplusplus +#define FT_EXPORT( x ) __attribute__((visibility("default"))) extern "C" x +#else +#define FT_EXPORT( x ) __attribute__((visibility("default"))) extern x +#endif + +#endif /* !FT_EXPORT */ + + +#ifndef FT_EXPORT_DEF + +#ifdef __cplusplus +#define FT_EXPORT_DEF( x ) __attribute__((visibility("default"))) extern "C" x +#else +#define FT_EXPORT_DEF( x ) __attribute__((visibility("default"))) extern x +#endif + +#endif /* !FT_EXPORT_DEF */ + + +#ifndef FT_EXPORT_VAR + +#ifdef __cplusplus +#define FT_EXPORT_VAR( x ) extern "C" x +#else +#define FT_EXPORT_VAR( x ) extern x +#endif + +#endif /* !FT_EXPORT_VAR */ + + /* The following macros are needed to compile the library with a */ + /* C++ compiler and with 16bit compilers. */ + /* */ + + /* This is special. Within C++, you must specify `extern "C"' for */ + /* functions which are used via function pointers, and you also */ + /* must do that for structures which contain function pointers to */ + /* assure C linkage -- it's not possible to have (local) anonymous */ + /* functions which are accessed by (global) function pointers. */ + /* */ + /* */ + /* FT_CALLBACK_DEF is used to _define_ a callback function. */ + /* */ + /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ + /* contains pointers to callback functions. */ + /* */ + /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ + /* that contains pointers to callback functions. */ + /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl' or `__fastcall' declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF +#ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ + +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ + + +FT_END_HEADER + + +#endif /* __FTCONFIG_H__ */ + + +/* END */ diff --git a/third_party/freetype2/include/ftmodule.h b/third_party/freetype2/include/ftmodule.h new file mode 100644 index 0000000..b729977 --- /dev/null +++ b/third_party/freetype2/include/ftmodule.h @@ -0,0 +1,20 @@ +/* This is a generated file. */ +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +/* EOF */ -- cgit v1.1