mirror of
				https://github.com/SwallowOS/android_external_freetype
				synced 2025-11-04 06:44:11 +08:00 
			
		
		
		
	auto import from //depot/cupcake/@135843
This commit is contained in:
		
							
								
								
									
										78
									
								
								Android.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								Android.mk
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
# this is now the default FreeType build for Android
 | 
			
		||||
#
 | 
			
		||||
ifndef USE_FREETYPE
 | 
			
		||||
USE_FREETYPE := 2.3.6
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(USE_FREETYPE),2.3.6)
 | 
			
		||||
LOCAL_PATH:= $(call my-dir)
 | 
			
		||||
include $(CLEAR_VARS)
 | 
			
		||||
 | 
			
		||||
# compile in ARM mode, since the glyph loader/renderer is a hotspot
 | 
			
		||||
# when loading complex pages in the browser
 | 
			
		||||
#
 | 
			
		||||
LOCAL_ARM_MODE := arm
 | 
			
		||||
 | 
			
		||||
LOCAL_SRC_FILES:= \
 | 
			
		||||
	src/base/ftbbox.c \
 | 
			
		||||
	src/base/ftbitmap.c \
 | 
			
		||||
	src/base/ftglyph.c \
 | 
			
		||||
	src/base/ftstroke.c \
 | 
			
		||||
	src/base/ftxf86.c \
 | 
			
		||||
	src/base/ftbase.c \
 | 
			
		||||
	src/base/ftsystem.c \
 | 
			
		||||
	src/base/ftinit.c \
 | 
			
		||||
	src/base/ftgasp.c \
 | 
			
		||||
	src/base/ftadvanc.c \
 | 
			
		||||
	src/raster/raster.c \
 | 
			
		||||
	src/sfnt/sfnt.c \
 | 
			
		||||
	src/smooth/smooth.c \
 | 
			
		||||
	src/autofit/autofit.c \
 | 
			
		||||
	src/truetype/truetype.c \
 | 
			
		||||
	src/cff/cff.c \
 | 
			
		||||
	src/psnames/psnames.c \
 | 
			
		||||
	src/pshinter/pshinter.c
 | 
			
		||||
 | 
			
		||||
LOCAL_C_INCLUDES += \
 | 
			
		||||
	$(LOCAL_PATH)/builds \
 | 
			
		||||
	$(LOCAL_PATH)/include
 | 
			
		||||
 | 
			
		||||
LOCAL_CFLAGS += -W -Wall
 | 
			
		||||
LOCAL_CFLAGS += -fPIC -DPIC
 | 
			
		||||
LOCAL_CFLAGS += "-DDARWIN_NO_CARBON"
 | 
			
		||||
LOCAL_CFLAGS += "-DFT2_BUILD_LIBRARY"
 | 
			
		||||
 | 
			
		||||
# only enable this if you want to enable our ugly font hack
 | 
			
		||||
# to be able to switch the system's font hinting at runtime
 | 
			
		||||
# through our modified Development Settings. the change will
 | 
			
		||||
# only happen when you reboot or restart an application
 | 
			
		||||
#
 | 
			
		||||
LOCAL_CFLAGS += -DANDROID_FONT_HACK=1
 | 
			
		||||
 | 
			
		||||
# enable the FreeType internal memory debugger in the simulator
 | 
			
		||||
# you need to define the FT2_DEBUG_MEMORY environment variable
 | 
			
		||||
# when running the program to activate it. It will dump memory
 | 
			
		||||
# statistics when FT_Done_FreeType is called
 | 
			
		||||
#
 | 
			
		||||
ifeq ($(TARGET_SIMULATOR),true)
 | 
			
		||||
LOCAL_CFLAGS += "-DFT_DEBUG_MEMORY"
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# the following activates the new experimental auto-hinter
 | 
			
		||||
# one that should create less problems with a wide variety
 | 
			
		||||
# of glyphs, including our double-decker "g"
 | 
			
		||||
#LOCAL_CFLAGS += -DFT_OPTION_AUTOFIT2
 | 
			
		||||
 | 
			
		||||
# the following is for testing only, and should not be used in final builds
 | 
			
		||||
# of the product
 | 
			
		||||
#LOCAL_CFLAGS += "-DTT_CONFIG_OPTION_BYTECODE_INTERPRETER"
 | 
			
		||||
 | 
			
		||||
ifeq ($(TARGET_BUILD_TYPE),release)
 | 
			
		||||
	LOCAL_CFLAGS += -O2
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
LOCAL_MODULE:= libft2
 | 
			
		||||
 | 
			
		||||
include $(BUILD_STATIC_LIBRARY)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										0
									
								
								MODULE_LICENSE_BSD_LIKE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								MODULE_LICENSE_BSD_LIKE
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										173
									
								
								NOTICE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								NOTICE
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,173 @@
 | 
			
		||||
This software is based in part on the work of the FreeType Team.
 | 
			
		||||
 | 
			
		||||
----------------------
 | 
			
		||||
 | 
			
		||||
                    The FreeType Project LICENSE
 | 
			
		||||
                    ----------------------------
 | 
			
		||||
 | 
			
		||||
                            2006-Jan-27
 | 
			
		||||
 | 
			
		||||
                    Copyright 1996-2002, 2006 by
 | 
			
		||||
          David Turner, Robert Wilhelm, and Werner Lemberg
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Introduction
 | 
			
		||||
============
 | 
			
		||||
 | 
			
		||||
  The FreeType  Project is distributed in  several archive packages;
 | 
			
		||||
  some of them may contain, in addition to the FreeType font engine,
 | 
			
		||||
  various tools and  contributions which rely on, or  relate to, the
 | 
			
		||||
  FreeType Project.
 | 
			
		||||
 | 
			
		||||
  This  license applies  to all  files found  in such  packages, and
 | 
			
		||||
  which do not  fall under their own explicit  license.  The license
 | 
			
		||||
  affects  thus  the  FreeType   font  engine,  the  test  programs,
 | 
			
		||||
  documentation and makefiles, at the very least.
 | 
			
		||||
 | 
			
		||||
  This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG
 | 
			
		||||
  (Independent JPEG  Group) licenses, which  all encourage inclusion
 | 
			
		||||
  and  use of  free  software in  commercial  and freeware  products
 | 
			
		||||
  alike.  As a consequence, its main points are that:
 | 
			
		||||
 | 
			
		||||
    o We don't promise that this software works. However, we will be
 | 
			
		||||
      interested in any kind of bug reports. (`as is' distribution)
 | 
			
		||||
 | 
			
		||||
    o You can  use this software for whatever you  want, in parts or
 | 
			
		||||
      full form, without having to pay us. (`royalty-free' usage)
 | 
			
		||||
 | 
			
		||||
    o You may not pretend that  you wrote this software.  If you use
 | 
			
		||||
      it, or  only parts of it,  in a program,  you must acknowledge
 | 
			
		||||
      somewhere  in  your  documentation  that  you  have  used  the
 | 
			
		||||
      FreeType code. (`credits')
 | 
			
		||||
 | 
			
		||||
  We  specifically  permit  and  encourage  the  inclusion  of  this
 | 
			
		||||
  software, with  or without modifications,  in commercial products.
 | 
			
		||||
  We  disclaim  all warranties  covering  The  FreeType Project  and
 | 
			
		||||
  assume no liability related to The FreeType Project.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  Finally,  many  people  asked  us  for  a  preferred  form  for  a
 | 
			
		||||
  credit/disclaimer to use in compliance with this license.  We thus
 | 
			
		||||
  encourage you to use the following text:
 | 
			
		||||
 | 
			
		||||
   """  
 | 
			
		||||
    Portions of this software are copyright <20> <year> The FreeType
 | 
			
		||||
    Project (www.freetype.org).  All rights reserved.
 | 
			
		||||
   """
 | 
			
		||||
 | 
			
		||||
  Please replace <year> with the value from the FreeType version you
 | 
			
		||||
  actually use.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Legal Terms
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
0. Definitions
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
  Throughout this license,  the terms `package', `FreeType Project',
 | 
			
		||||
  and  `FreeType  archive' refer  to  the  set  of files  originally
 | 
			
		||||
  distributed  by the  authors  (David Turner,  Robert Wilhelm,  and
 | 
			
		||||
  Werner Lemberg) as the `FreeType Project', be they named as alpha,
 | 
			
		||||
  beta or final release.
 | 
			
		||||
 | 
			
		||||
  `You' refers to  the licensee, or person using  the project, where
 | 
			
		||||
  `using' is a generic term including compiling the project's source
 | 
			
		||||
  code as  well as linking it  to form a  `program' or `executable'.
 | 
			
		||||
  This  program is  referred to  as  `a program  using the  FreeType
 | 
			
		||||
  engine'.
 | 
			
		||||
 | 
			
		||||
  This  license applies  to all  files distributed  in  the original
 | 
			
		||||
  FreeType  Project,   including  all  source   code,  binaries  and
 | 
			
		||||
  documentation,  unless  otherwise  stated   in  the  file  in  its
 | 
			
		||||
  original, unmodified form as  distributed in the original archive.
 | 
			
		||||
  If you are  unsure whether or not a particular  file is covered by
 | 
			
		||||
  this license, you must contact us to verify this.
 | 
			
		||||
 | 
			
		||||
  The FreeType  Project is copyright (C) 1996-2000  by David Turner,
 | 
			
		||||
  Robert Wilhelm, and Werner Lemberg.  All rights reserved except as
 | 
			
		||||
  specified below.
 | 
			
		||||
 | 
			
		||||
1. No Warranty
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
  THE FREETYPE PROJECT  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY
 | 
			
		||||
  KIND, EITHER  EXPRESS OR IMPLIED,  INCLUDING, BUT NOT  LIMITED TO,
 | 
			
		||||
  WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR
 | 
			
		||||
  PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
 | 
			
		||||
  BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO
 | 
			
		||||
  USE, OF THE FREETYPE PROJECT.
 | 
			
		||||
 | 
			
		||||
2. Redistribution
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
  This  license  grants  a  worldwide, royalty-free,  perpetual  and
 | 
			
		||||
  irrevocable right  and license to use,  execute, perform, compile,
 | 
			
		||||
  display,  copy,   create  derivative  works   of,  distribute  and
 | 
			
		||||
  sublicense the  FreeType Project (in  both source and  object code
 | 
			
		||||
  forms)  and  derivative works  thereof  for  any  purpose; and  to
 | 
			
		||||
  authorize others  to exercise  some or all  of the  rights granted
 | 
			
		||||
  herein, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
    o Redistribution of  source code  must retain this  license file
 | 
			
		||||
      (`FTL.TXT') unaltered; any  additions, deletions or changes to
 | 
			
		||||
      the original  files must be clearly  indicated in accompanying
 | 
			
		||||
      documentation.   The  copyright   notices  of  the  unaltered,
 | 
			
		||||
      original  files must  be  preserved in  all  copies of  source
 | 
			
		||||
      files.
 | 
			
		||||
 | 
			
		||||
    o Redistribution in binary form must provide a  disclaimer  that
 | 
			
		||||
      states  that  the software is based in part of the work of the
 | 
			
		||||
      FreeType Team,  in  the  distribution  documentation.  We also
 | 
			
		||||
      encourage you to put an URL to the FreeType web page  in  your
 | 
			
		||||
      documentation, though this isn't mandatory.
 | 
			
		||||
 | 
			
		||||
  These conditions  apply to any  software derived from or  based on
 | 
			
		||||
  the FreeType Project,  not just the unmodified files.   If you use
 | 
			
		||||
  our work, you  must acknowledge us.  However, no  fee need be paid
 | 
			
		||||
  to us.
 | 
			
		||||
 | 
			
		||||
3. Advertising
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
  Neither the  FreeType authors and  contributors nor you  shall use
 | 
			
		||||
  the name of the  other for commercial, advertising, or promotional
 | 
			
		||||
  purposes without specific prior written permission.
 | 
			
		||||
 | 
			
		||||
  We suggest,  but do not require, that  you use one or  more of the
 | 
			
		||||
  following phrases to refer  to this software in your documentation
 | 
			
		||||
  or advertising  materials: `FreeType Project',  `FreeType Engine',
 | 
			
		||||
  `FreeType library', or `FreeType Distribution'.
 | 
			
		||||
 | 
			
		||||
  As  you have  not signed  this license,  you are  not  required to
 | 
			
		||||
  accept  it.   However,  as  the FreeType  Project  is  copyrighted
 | 
			
		||||
  material, only  this license, or  another one contracted  with the
 | 
			
		||||
  authors, grants you  the right to use, distribute,  and modify it.
 | 
			
		||||
  Therefore,  by  using,  distributing,  or modifying  the  FreeType
 | 
			
		||||
  Project, you indicate that you understand and accept all the terms
 | 
			
		||||
  of this license.
 | 
			
		||||
 | 
			
		||||
4. Contacts
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
  There are two mailing lists related to FreeType:
 | 
			
		||||
 | 
			
		||||
    o freetype@nongnu.org
 | 
			
		||||
 | 
			
		||||
      Discusses general use and applications of FreeType, as well as
 | 
			
		||||
      future and  wanted additions to the  library and distribution.
 | 
			
		||||
      If  you are looking  for support,  start in  this list  if you
 | 
			
		||||
      haven't found anything to help you in the documentation.
 | 
			
		||||
 | 
			
		||||
    o freetype-devel@nongnu.org
 | 
			
		||||
 | 
			
		||||
      Discusses bugs,  as well  as engine internals,  design issues,
 | 
			
		||||
      specific licenses, porting, etc.
 | 
			
		||||
 | 
			
		||||
  Our home page can be found at
 | 
			
		||||
 | 
			
		||||
    http://www.freetype.org
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
--- end of FTL.TXT ---
 | 
			
		||||
							
								
								
									
										61
									
								
								builds/ft2unix.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								builds/ft2unix.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ft2build.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Build macros of the FreeType 2 library.                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2003, 2006 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 is a Unix-specific version of <ft2build.h> that should be used   */
 | 
			
		||||
  /* exclusively *after* installation of the library.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* It assumes that `/usr/local/include/freetype2' (or whatever is        */
 | 
			
		||||
  /* returned by the `freetype-config --cflags' or `pkg-config --cflags'   */
 | 
			
		||||
  /* command) is in your compilation include path.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* We don't need to do anything special in this release.  However, for   */
 | 
			
		||||
  /* a future FreeType 2 release, the following installation changes will  */
 | 
			
		||||
  /* be performed:                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   - The contents of `freetype-2.x/include/freetype' will be installed */
 | 
			
		||||
  /*     to `/usr/local/include/freetype2' instead of                      */
 | 
			
		||||
  /*     `/usr/local/include/freetype2/freetype'.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   - This file will #include <freetype2/config/ftheader.h>, instead    */
 | 
			
		||||
  /*     of <freetype/config/ftheader.h>.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   - The contents of `ftheader.h' will be processed with `sed' to      */
 | 
			
		||||
  /*     replace all `<freetype/xxx>' with `<freetype2/xxx>'.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   - Adding `/usr/local/include/freetype2' to your compilation include */
 | 
			
		||||
  /*     path will not be necessary anymore.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* These changes will be transparent to client applications which use    */
 | 
			
		||||
  /* freetype-config (or pkg-config).  No modifications will be necessary  */
 | 
			
		||||
  /* to compile with the new scheme.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FT2_BUILD_UNIX_H__
 | 
			
		||||
#define __FT2_BUILD_UNIX_H__
 | 
			
		||||
 | 
			
		||||
  /* `<prefix>/include/freetype2' must be in your current inclusion path */
 | 
			
		||||
#include <freetype/config/ftheader.h>
 | 
			
		||||
 | 
			
		||||
#endif /* __FT2_BUILD_UNIX_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										475
									
								
								include/freetype/config/ftconfig.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										475
									
								
								include/freetype/config/ftconfig.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,475 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftconfig.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    ANSI-specific configuration file (specification only).               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 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/<system>', and        */
 | 
			
		||||
  /* contains system-specific files that are always included first when    */
 | 
			
		||||
  /* building the library.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This ANSI version should stay in `include/freetype/config'.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTCONFIG_H__
 | 
			
		||||
#define __FTCONFIG_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#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/<system>' directory, and edit it to port the engine. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* 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
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    basic_types                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Int16                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for a 16bit signed integer type.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed short  FT_Int16;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_UInt16                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for a 16bit unsigned integer type.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned short  FT_UInt16;
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* this #if 0 ... #endif clause is for documentation purposes */
 | 
			
		||||
#if 0
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Int32                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for a 32bit signed integer type.  The size depends on    */
 | 
			
		||||
  /*    the configuration.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed XXX  FT_Int32;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_UInt32                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    A typedef for a 32bit unsigned integer type.  The size depends on  */
 | 
			
		||||
  /*    the configuration.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned XXX  FT_UInt32;
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT)
 | 
			
		||||
 | 
			
		||||
  typedef signed int      FT_Int32;
 | 
			
		||||
  typedef unsigned int    FT_UInt32;
 | 
			
		||||
 | 
			
		||||
#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT)
 | 
			
		||||
 | 
			
		||||
  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 >= (32 / FT_CHAR_BIT)
 | 
			
		||||
 | 
			
		||||
  typedef int            FT_Fast;
 | 
			
		||||
  typedef unsigned int   FT_UFast;
 | 
			
		||||
 | 
			
		||||
#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT)
 | 
			
		||||
 | 
			
		||||
  typedef long           FT_Fast;
 | 
			
		||||
  typedef unsigned long  FT_UFast;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(FT_CONFIG_OPTION_NO_ASSEMBLER)
 | 
			
		||||
/* provide assembler fragments for performance-critical
 | 
			
		||||
 * functions. these must be defined static __inline__
 | 
			
		||||
 * with GCC
 | 
			
		||||
 */
 | 
			
		||||
#if defined(__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, %2, lsl #16\n\t"  /* %0 |= %2 << 16 */
 | 
			
		||||
            : "=r"(a), "=&r"(t2), "=&r"(t)
 | 
			
		||||
            : "r"(a), "r"(b)
 | 
			
		||||
            );
 | 
			
		||||
        return a;
 | 
			
		||||
    }
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  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)
 | 
			
		||||
          : "a"(a), "d"(b)
 | 
			
		||||
          : "%ecx"
 | 
			
		||||
        );
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif /* __GNUC__ */
 | 
			
		||||
#endif /* !NO_ASSEMBLER */
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_INLINE_MULFIX
 | 
			
		||||
#  ifdef FT_MULFIX_ASSEMBLER
 | 
			
		||||
#    define FT_MULFIX_INLINED   FT_MULFIX_ASSEMBLER
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* determine whether we have a 64-bit int type for platforms without */
 | 
			
		||||
  /* Autoconf                                                          */
 | 
			
		||||
#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT)
 | 
			
		||||
 | 
			
		||||
  /* 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 == (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    */
 | 
			
		||||
  /* in strict ANSI mode.  To avoid them, we disable their 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 */
 | 
			
		||||
#undef FT_LONG64
 | 
			
		||||
#undef FT_INT64
 | 
			
		||||
 | 
			
		||||
#endif /* __STDC__ */
 | 
			
		||||
 | 
			
		||||
#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#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 )  extern "C" x
 | 
			
		||||
#else
 | 
			
		||||
#define FT_BASE_DEF( x )  x
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_BASE_DEF */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef FT_EXPORT
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_EXPORT( x )  extern "C"  x
 | 
			
		||||
#else
 | 
			
		||||
#define FT_EXPORT( x )  extern  x
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_EXPORT */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef FT_EXPORT_DEF
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_EXPORT_DEF( x )  extern "C"  x
 | 
			
		||||
#else
 | 
			
		||||
#define FT_EXPORT_DEF( x )  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 */
 | 
			
		||||
							
								
								
									
										777
									
								
								include/freetype/config/ftheader.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										777
									
								
								include/freetype/config/ftheader.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,777 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftheader.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Build macros of the FreeType 2 library.                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 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 __FT_HEADER_H__
 | 
			
		||||
#define __FT_HEADER_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*@***********************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Macro>                                                               */
 | 
			
		||||
  /*    FT_BEGIN_HEADER                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This macro is used in association with @FT_END_HEADER in header    */
 | 
			
		||||
  /*    files to ensure that the declarations within are properly          */
 | 
			
		||||
  /*    encapsulated in an `extern "C" { .. }' block when included from a  */
 | 
			
		||||
  /*    C++ compiler.                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_BEGIN_HEADER  extern "C" {
 | 
			
		||||
#else
 | 
			
		||||
#define FT_BEGIN_HEADER  /* nothing */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*@***********************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Macro>                                                               */
 | 
			
		||||
  /*    FT_END_HEADER                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This macro is used in association with @FT_BEGIN_HEADER in header  */
 | 
			
		||||
  /*    files to ensure that the declarations within are properly          */
 | 
			
		||||
  /*    encapsulated in an `extern "C" { .. }' block when included from a  */
 | 
			
		||||
  /*    C++ compiler.                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_END_HEADER  }
 | 
			
		||||
#else
 | 
			
		||||
#define FT_END_HEADER  /* nothing */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Aliases for the FreeType 2 public and configuration files.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    header_file_macros                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Header File Macros                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Macro definitions used to #include specific header files.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The following macros are defined to the name of specific           */
 | 
			
		||||
  /*    FreeType 2 header files.  They can be used directly in #include    */
 | 
			
		||||
  /*    statements as in:                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      #include FT_FREETYPE_H                                           */
 | 
			
		||||
  /*      #include FT_MULTIPLE_MASTERS_H                                   */
 | 
			
		||||
  /*      #include FT_GLYPH_H                                              */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    There are several reasons why we are now using macros to name      */
 | 
			
		||||
  /*    public header files.  The first one is that such macros are not    */
 | 
			
		||||
  /*    limited to the infamous 8.3 naming rule required by DOS (and       */
 | 
			
		||||
  /*    `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h').   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The second reason is that it allows for more flexibility in the    */
 | 
			
		||||
  /*    way FreeType 2 is installed on a given system.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* configuration files */
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CONFIG_CONFIG_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing
 | 
			
		||||
   *   FreeType 2 configuration data.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#ifndef FT_CONFIG_CONFIG_H
 | 
			
		||||
#define FT_CONFIG_CONFIG_H  <freetype/config/ftconfig.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CONFIG_STANDARD_LIBRARY_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing
 | 
			
		||||
   *   FreeType 2 interface to the standard C library functions.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#ifndef FT_CONFIG_STANDARD_LIBRARY_H
 | 
			
		||||
#define FT_CONFIG_STANDARD_LIBRARY_H  <freetype/config/ftstdlib.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CONFIG_OPTIONS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing
 | 
			
		||||
   *   FreeType 2 project-specific configuration options.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#ifndef FT_CONFIG_OPTIONS_H
 | 
			
		||||
#define FT_CONFIG_OPTIONS_H  <freetype/config/ftoption.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CONFIG_MODULES_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   list of FreeType 2 modules that are statically linked to new library
 | 
			
		||||
   *   instances in @FT_Init_FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#ifndef FT_CONFIG_MODULES_H
 | 
			
		||||
#define FT_CONFIG_MODULES_H  <freetype/config/ftmodule.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
  /* public headers */
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_FREETYPE_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   base FreeType 2 API.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_FREETYPE_H  <freetype/freetype.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ERRORS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   list of FreeType 2 error codes (and messages).
 | 
			
		||||
   *
 | 
			
		||||
   *   It is included by @FT_FREETYPE_H.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ERRORS_H  <freetype/fterrors.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_MODULE_ERRORS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   list of FreeType 2 module error offsets (and messages).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_MODULE_ERRORS_H  <freetype/ftmoderr.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_SYSTEM_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 interface to low-level operations (i.e., memory management
 | 
			
		||||
   *   and stream i/o).
 | 
			
		||||
   *
 | 
			
		||||
   *   It is included by @FT_FREETYPE_H.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_SYSTEM_H  <freetype/ftsystem.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_IMAGE_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing type
 | 
			
		||||
   *   definitions related to glyph images (i.e., bitmaps, outlines,
 | 
			
		||||
   *   scan-converter parameters).
 | 
			
		||||
   *
 | 
			
		||||
   *   It is included by @FT_FREETYPE_H.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_IMAGE_H  <freetype/ftimage.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_TYPES_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   basic data types defined by FreeType 2.
 | 
			
		||||
   *
 | 
			
		||||
   *   It is included by @FT_FREETYPE_H.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_TYPES_H  <freetype/fttypes.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_LIST_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   list management API of FreeType 2.
 | 
			
		||||
   *
 | 
			
		||||
   *   (Most applications will never need to include this file.)
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_LIST_H  <freetype/ftlist.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_OUTLINE_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   scalable outline management API of FreeType 2.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_OUTLINE_H  <freetype/ftoutln.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_SIZES_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   API which manages multiple @FT_Size objects per face.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_SIZES_H  <freetype/ftsizes.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_MODULE_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   module management API of FreeType 2.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_MODULE_H  <freetype/ftmodapi.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_RENDER_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   renderer module management API of FreeType 2.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_RENDER_H  <freetype/ftrender.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_TYPE1_TABLES_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   types and API specific to the Type 1 format.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_TYPE1_TABLES_H  <freetype/t1tables.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_TRUETYPE_IDS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   enumeration values which identify name strings, languages, encodings,
 | 
			
		||||
   *   etc.  This file really contains a _large_ set of constant macro
 | 
			
		||||
   *   definitions, taken from the TrueType and OpenType specifications.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_TRUETYPE_IDS_H  <freetype/ttnameid.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_TRUETYPE_TABLES_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   types and API specific to the TrueType (as well as OpenType) format.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_TRUETYPE_TABLES_H  <freetype/tttables.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_TRUETYPE_TAGS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   definitions of TrueType four-byte `tags' which identify blocks in
 | 
			
		||||
   *   SFNT-based font formats (i.e., TrueType and OpenType).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_TRUETYPE_TAGS_H  <freetype/tttags.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_BDF_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   definitions of an API which accesses BDF-specific strings from a
 | 
			
		||||
   *   face.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_BDF_H  <freetype/ftbdf.h>
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CID_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   definitions of an API which access CID font information from a
 | 
			
		||||
   *   face.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_CID_H  <freetype/ftcid.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_GZIP_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   definitions of an API which supports gzip-compressed files.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_GZIP_H  <freetype/ftgzip.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_LZW_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   definitions of an API which supports LZW-compressed files.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_LZW_H  <freetype/ftlzw.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_WINFONTS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   definitions of an API which supports Windows FNT files.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_WINFONTS_H   <freetype/ftwinfnt.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_GLYPH_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   API of the optional glyph management component.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_GLYPH_H  <freetype/ftglyph.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_BITMAP_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   API of the optional bitmap conversion component.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_BITMAP_H  <freetype/ftbitmap.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_BBOX_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   API of the optional exact bounding box computation routines.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_BBOX_H  <freetype/ftbbox.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CACHE_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   API of the optional FreeType 2 cache sub-system.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_CACHE_H  <freetype/ftcache.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CACHE_IMAGE_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   `glyph image' API of the FreeType 2 cache sub-system.
 | 
			
		||||
   *
 | 
			
		||||
   *   It is used to define a cache for @FT_Glyph elements.  You can also
 | 
			
		||||
   *   use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
 | 
			
		||||
   *   store small glyph bitmaps, as it will use less memory.
 | 
			
		||||
   *
 | 
			
		||||
   *   This macro is deprecated.  Simply include @FT_CACHE_H to have all
 | 
			
		||||
   *   glyph image-related cache declarations.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_CACHE_IMAGE_H  FT_CACHE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CACHE_SMALL_BITMAPS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   `small bitmaps' API of the FreeType 2 cache sub-system.
 | 
			
		||||
   *
 | 
			
		||||
   *   It is used to define a cache for small glyph bitmaps in a relatively
 | 
			
		||||
   *   memory-efficient way.  You can also use the API defined in
 | 
			
		||||
   *   @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images,
 | 
			
		||||
   *   including scalable outlines.
 | 
			
		||||
   *
 | 
			
		||||
   *   This macro is deprecated.  Simply include @FT_CACHE_H to have all
 | 
			
		||||
   *   small bitmaps-related cache declarations.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_CACHE_SMALL_BITMAPS_H  FT_CACHE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_CACHE_CHARMAP_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   `charmap' API of the FreeType 2 cache sub-system.
 | 
			
		||||
   *
 | 
			
		||||
   *   This macro is deprecated.  Simply include @FT_CACHE_H to have all
 | 
			
		||||
   *   charmap-based cache declarations.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_CACHE_CHARMAP_H  FT_CACHE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_MAC_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   Macintosh-specific FreeType 2 API.  The latter is used to access
 | 
			
		||||
   *   fonts embedded in resource forks.
 | 
			
		||||
   *
 | 
			
		||||
   *   This header file must be explicitly included by client applications
 | 
			
		||||
   *   compiled on the Mac (note that the base API still works though).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_MAC_H  <freetype/ftmac.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_MULTIPLE_MASTERS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   optional multiple-masters management API of FreeType 2.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_MULTIPLE_MASTERS_H  <freetype/ftmm.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_SFNT_NAMES_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   optional FreeType 2 API which accesses embedded `name' strings in
 | 
			
		||||
   *   SFNT-based font formats (i.e., TrueType and OpenType).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_SFNT_NAMES_H  <freetype/ftsnames.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_OPENTYPE_VALIDATE_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   optional FreeType 2 API which validates OpenType tables (BASE, GDEF,
 | 
			
		||||
   *   GPOS, GSUB, JSTF).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_OPENTYPE_VALIDATE_H  <freetype/ftotval.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_GX_VALIDATE_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   optional FreeType 2 API which validates TrueTypeGX/AAT tables (feat,
 | 
			
		||||
   *   mort, morx, bsln, just, kern, opbd, trak, prop).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_GX_VALIDATE_H  <freetype/ftgxval.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_PFR_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which accesses PFR-specific data.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_PFR_H  <freetype/ftpfr.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_STROKER_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which provides functions to stroke outline paths.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_STROKER_H  <freetype/ftstroke.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_SYNTHESIS_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which performs artificial obliquing and emboldening.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_SYNTHESIS_H  <freetype/ftsynth.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_XFREE86_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which provides functions specific to the XFree86 and
 | 
			
		||||
   *   X.Org X11 servers.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_XFREE86_H  <freetype/ftxf86.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_TRIGONOMETRY_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which performs trigonometric computations (e.g.,
 | 
			
		||||
   *   cosines and arc tangents).
 | 
			
		||||
   */
 | 
			
		||||
#define FT_TRIGONOMETRY_H  <freetype/fttrigon.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_LCD_FILTER_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which performs color filtering for subpixel rendering.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_LCD_FILTER_H  <freetype/ftlcdfil.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_UNPATENTED_HINTING_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which performs color filtering for subpixel rendering.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_UNPATENTED_HINTING_H  <freetype/ttunpat.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_INCREMENTAL_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which performs color filtering for subpixel rendering.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_INCREMENTAL_H  <freetype/ftincrem.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_GASP_H
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A macro used in #include statements to name the file containing the
 | 
			
		||||
   *   FreeType 2 API which returns entries from the TrueType GASP table.
 | 
			
		||||
   */
 | 
			
		||||
#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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* The internals of the cache sub-system are no longer exposed.  We */
 | 
			
		||||
  /* default to FT_CACHE_H at the moment just in case, but we know of */
 | 
			
		||||
  /* no rogue client that uses them.                                  */
 | 
			
		||||
  /*                                                                  */
 | 
			
		||||
#define FT_CACHE_MANAGER_H           <freetype/ftcache.h>
 | 
			
		||||
#define FT_CACHE_INTERNAL_MRU_H      <freetype/ftcache.h>
 | 
			
		||||
#define FT_CACHE_INTERNAL_MANAGER_H  <freetype/ftcache.h>
 | 
			
		||||
#define FT_CACHE_INTERNAL_CACHE_H    <freetype/ftcache.h>
 | 
			
		||||
#define FT_CACHE_INTERNAL_GLYPH_H    <freetype/ftcache.h>
 | 
			
		||||
#define FT_CACHE_INTERNAL_IMAGE_H    <freetype/ftcache.h>
 | 
			
		||||
#define FT_CACHE_INTERNAL_SBITS_H    <freetype/ftcache.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_INCREMENTAL_H          <freetype/ftincrem.h>
 | 
			
		||||
 | 
			
		||||
#define FT_TRUETYPE_UNPATENTED_H  <freetype/ttunpat.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Include internal headers definitions from <freetype/internal/...>
 | 
			
		||||
   * only when building the library.
 | 
			
		||||
   */
 | 
			
		||||
#ifdef FT2_BUILD_LIBRARY
 | 
			
		||||
#define  FT_INTERNAL_INTERNAL_H  <freetype/internal/internal.h>
 | 
			
		||||
#include FT_INTERNAL_INTERNAL_H
 | 
			
		||||
#endif /* FT2_BUILD_LIBRARY */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FT2_BUILD_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										24
									
								
								include/freetype/config/ftmodule.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								include/freetype/config/ftmodule.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
/*
 | 
			
		||||
 *  This file registers the FreeType modules compiled into the library.
 | 
			
		||||
 *
 | 
			
		||||
 *  If you use GNU make, this file IS NOT USED!  Instead, it is created in
 | 
			
		||||
 *  the objects directory (normally `<topdir>/objs/') based on information
 | 
			
		||||
 *  from `<topdir>/modules.cfg'.
 | 
			
		||||
 *
 | 
			
		||||
 *  Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile
 | 
			
		||||
 *  FreeType without GNU make.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
FT_USE_MODULE(autofit_module_class)
 | 
			
		||||
FT_USE_MODULE(tt_driver_class)
 | 
			
		||||
FT_USE_MODULE(cff_driver_class)
 | 
			
		||||
FT_USE_MODULE(psnames_module_class)
 | 
			
		||||
FT_USE_MODULE(pshinter_module_class)
 | 
			
		||||
FT_USE_MODULE(ft_raster1_renderer_class)
 | 
			
		||||
FT_USE_MODULE(sfnt_module_class)
 | 
			
		||||
FT_USE_MODULE(ft_smooth_renderer_class)
 | 
			
		||||
FT_USE_MODULE(ft_smooth_lcd_renderer_class)
 | 
			
		||||
FT_USE_MODULE(ft_smooth_lcdv_renderer_class)
 | 
			
		||||
 | 
			
		||||
/* EOF */
 | 
			
		||||
							
								
								
									
										691
									
								
								include/freetype/config/ftoption.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										691
									
								
								include/freetype/config/ftoption.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,691 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftoption.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    User-selectable configuration macros (specification only).           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 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 __FTOPTION_H__
 | 
			
		||||
#define __FTOPTION_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This file contains the default configuration macro definitions for    */
 | 
			
		||||
  /* a standard build of the FreeType library.  There are three ways to    */
 | 
			
		||||
  /* use this file to build project-specific versions of the library:      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  - You can modify this file by hand, but this is not recommended in   */
 | 
			
		||||
  /*    cases where you would like to build several versions of the        */
 | 
			
		||||
  /*    library from a single source directory.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  - You can put a copy of this file in your build directory, more      */
 | 
			
		||||
  /*    precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD'   */
 | 
			
		||||
  /*    is the name of a directory that is included _before_ the FreeType  */
 | 
			
		||||
  /*    include path during compilation.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The default FreeType Makefiles and Jamfiles use the build          */
 | 
			
		||||
  /*    directory `builds/<system>' by default, but you can easily change  */
 | 
			
		||||
  /*    that for your own projects.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it    */
 | 
			
		||||
  /*    slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to       */
 | 
			
		||||
  /*    locate this file during the build.  For example,                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*      #define FT_CONFIG_OPTIONS_H  <myftoptions.h>                     */
 | 
			
		||||
  /*      #include <freetype/config/ftheader.h>                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    will use `$BUILD/myftoptions.h' instead of this file for macro     */
 | 
			
		||||
  /*    definitions.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note also that you can similarly pre-define the macro              */
 | 
			
		||||
  /*    FT_CONFIG_MODULES_H used to locate the file listing of the modules */
 | 
			
		||||
  /*    that are statically linked to the library at compile time.  By     */
 | 
			
		||||
  /*    default, this file is <freetype/config/ftmodule.h>.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  We highly recommend using the third method whenever possible.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /**** G E N E R A L   F R E E T Y P E   2   C O N F I G U R A T I O N ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Uncomment the line below if you want to activate sub-pixel rendering  */
 | 
			
		||||
  /* (a.k.a. LCD rendering, or ClearType) in this build of the library.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Note that this feature is covered by several Microsoft patents        */
 | 
			
		||||
  /* and should not be activated in any default build of the library.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This macro has no impact on the FreeType API, only on its             */
 | 
			
		||||
  /* _implementation_.  For example, using FT_RENDER_MODE_LCD when calling */
 | 
			
		||||
  /* FT_Render_Glyph still generates a bitmap that is 3 times larger than  */
 | 
			
		||||
  /* the original size; the difference will be that each triplet of        */
 | 
			
		||||
  /* subpixels has R=G=B.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This is done to allow FreeType clients to run unmodified, forcing     */
 | 
			
		||||
  /* them to display normal gray-level anti-aliased glyphs.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Many compilers provide a non-ANSI 64-bit data type that can be used   */
 | 
			
		||||
  /* by FreeType to speed up some computations.  However, this will create */
 | 
			
		||||
  /* some problems when compiling the library in strict ANSI mode.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* For this reason, the use of 64-bit integers is normally disabled when */
 | 
			
		||||
  /* the __STDC__ macro is defined.  You can however disable this by       */
 | 
			
		||||
  /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* For most compilers, this will only create compilation warnings when   */
 | 
			
		||||
  /* building the library.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* ObNote: The compiler-specific 64-bit integers are detected in the     */
 | 
			
		||||
  /*         file `ftconfig.h' either statically or through the            */
 | 
			
		||||
  /*         `configure' script on supported platforms.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#undef  FT_CONFIG_OPTION_FORCE_INT64
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* When 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 even */
 | 
			
		||||
  /* to benchmarks the various implementations...                          */
 | 
			
		||||
/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* When this macro is defined, try to use an inlined assembler version   */
 | 
			
		||||
  /* of the FT_MulFix function, which appears to be a hotspot when loading */
 | 
			
		||||
  /* and hinting glyphs.                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* note that if your compiler/cpu isn't supported, this will default to  */
 | 
			
		||||
  /* the standard and portable implementation found in src/base/ftcalc.c   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_CONFIG_OPTION_INLINE_MULFIX
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* LZW-compressed file support.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FreeType now handles font files that have been compressed with the  */
 | 
			
		||||
  /*   `compress' program.  This is mostly used to parse many of the PCF   */
 | 
			
		||||
  /*   files that come with various X11 distributions.  The implementation */
 | 
			
		||||
  /*   uses NetBSD's `zopen' to partially uncompress the file on the fly   */
 | 
			
		||||
  /*   (see src/lzw/ftgzip.c).                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Define this macro if you want to enable this `feature'.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_CONFIG_OPTION_USE_LZW
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Gzip-compressed file support.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FreeType now handles font files that have been compressed with the  */
 | 
			
		||||
  /*   `gzip' program.  This is mostly used to parse many of the PCF files */
 | 
			
		||||
  /*   that come with XFree86.  The implementation uses `zlib' to          */
 | 
			
		||||
  /*   partially uncompress the file on the fly (see src/gzip/ftgzip.c).   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Define this macro if you want to enable this `feature'.  See also   */
 | 
			
		||||
  /*   the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_CONFIG_OPTION_USE_ZLIB
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* ZLib library selection                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined.  */
 | 
			
		||||
  /*   It allows FreeType's `ftgzip' component to link to the system's     */
 | 
			
		||||
  /*   installation of the ZLib library.  This is useful on systems like   */
 | 
			
		||||
  /*   Unix or VMS where it generally is already available.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   If you let it undefined, the component will use its own copy        */
 | 
			
		||||
  /*   of the zlib sources instead.  These have been modified to be        */
 | 
			
		||||
  /*   included directly within the component and *not* export external    */
 | 
			
		||||
  /*   function names.  This allows you to link any program with FreeType  */
 | 
			
		||||
  /*   _and_ ZLib without linking conflicts.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Do not #undef this macro here since the build system might define   */
 | 
			
		||||
  /*   it for certain configurations only.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
/* #define  FT_CONFIG_OPTION_SYSTEM_ZLIB */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* DLL export compilation                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   When compiling FreeType as a DLL, some systems/compilers need a     */
 | 
			
		||||
  /*   special keyword in front OR after the return type of function       */
 | 
			
		||||
  /*   declarations.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Two macros are used within the FreeType source code to define       */
 | 
			
		||||
  /*   exported library functions: FT_EXPORT and FT_EXPORT_DEF.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     FT_EXPORT( return_type )                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       is used in a function declaration, as in                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*         FT_EXPORT( FT_Error )                                         */
 | 
			
		||||
  /*         FT_Init_FreeType( FT_Library*  alibrary );                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     FT_EXPORT_DEF( return_type )                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       is used in a function definition, as in                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*         FT_EXPORT_DEF( FT_Error )                                     */
 | 
			
		||||
  /*         FT_Init_FreeType( FT_Library*  alibrary )                     */
 | 
			
		||||
  /*         {                                                             */
 | 
			
		||||
  /*           ... some code ...                                           */
 | 
			
		||||
  /*           return FT_Err_Ok;                                           */
 | 
			
		||||
  /*         }                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   You can provide your own implementation of FT_EXPORT and            */
 | 
			
		||||
  /*   FT_EXPORT_DEF here if you want.  If you leave them undefined, they  */
 | 
			
		||||
  /*   will be later automatically defined as `extern return_type' to      */
 | 
			
		||||
  /*   allow normal compilation.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Do not #undef these macros here since the build system might define */
 | 
			
		||||
  /*   them for certain configurations only.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
/* #define  FT_EXPORT(x)       extern x */
 | 
			
		||||
/* #define  FT_EXPORT_DEF(x)   x */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Glyph Postscript Names handling                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   By default, FreeType 2 is compiled with the `PSNames' module.  This */
 | 
			
		||||
  /*   module is in charge of converting a glyph name string into a        */
 | 
			
		||||
  /*   Unicode value, or return a Macintosh standard glyph name for the    */
 | 
			
		||||
  /*   use with the TrueType `post' table.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Undefine this macro if you do not want `PSNames' compiled in your   */
 | 
			
		||||
  /*   build of FreeType.  This has the following effects:                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   - The TrueType driver will provide its own set of glyph names,      */
 | 
			
		||||
  /*     if you build it to support postscript names in the TrueType       */
 | 
			
		||||
  /*     `post' table.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   - The Type 1 driver will not be able to synthetize a Unicode        */
 | 
			
		||||
  /*     charmap out of the glyphs found in the fonts.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   You would normally undefine this configuration macro when building  */
 | 
			
		||||
  /*   a version of FreeType that doesn't contain a Type 1 or CFF driver.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Postscript Names to Unicode Values support                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   By default, FreeType 2 is built with the `PSNames' module compiled  */
 | 
			
		||||
  /*   in.  Among other things, the module is used to convert a glyph name */
 | 
			
		||||
  /*   into a Unicode value.  This is especially useful in order to        */
 | 
			
		||||
  /*   synthetize on the fly a Unicode charmap from the CFF/Type 1 driver  */
 | 
			
		||||
  /*   through a big table named the `Adobe Glyph List' (AGL).             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Undefine this macro if you do not want the Adobe Glyph List         */
 | 
			
		||||
  /*   compiled in your `PSNames' module.  The Type 1 driver will not be   */
 | 
			
		||||
  /*   able to synthetize a Unicode charmap out of the glyphs found in the */
 | 
			
		||||
  /*   fonts.                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Support for Mac fonts                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Define this macro if you want support for outline fonts in Mac      */
 | 
			
		||||
  /*   format (mac dfont, mac resource, macbinary containing a mac         */
 | 
			
		||||
  /*   resource) on non-Mac platforms.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Note that the `FOND' resource isn't checked.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_CONFIG_OPTION_MAC_FONTS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Guessing methods to access embedded resource forks                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Enable extra Mac fonts support on non-Mac platforms (e.g.           */
 | 
			
		||||
  /*   GNU/Linux).                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Resource forks which include fonts data are stored sometimes in     */
 | 
			
		||||
  /*   locations which users or developers don't expected.  In some cases, */
 | 
			
		||||
  /*   resource forks start with some offset from the head of a file.  In  */
 | 
			
		||||
  /*   other cases, the actual resource fork is stored in file different   */
 | 
			
		||||
  /*   from what the user specifies.  If this option is activated,         */
 | 
			
		||||
  /*   FreeType tries to guess whether such offsets or different file      */
 | 
			
		||||
  /*   names must be used.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Note that normal, direct access of resource forks is controlled via */
 | 
			
		||||
  /*   the FT_CONFIG_OPTION_MAC_FONTS option.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_MAC_FONTS
 | 
			
		||||
#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Allow the use of FT_Incremental_Interface to load typefaces that      */
 | 
			
		||||
  /* contain no glyph data, but supply it via a callback function.         */
 | 
			
		||||
  /* This allows FreeType to be used with the PostScript language, using   */
 | 
			
		||||
  /* the GhostScript interpreter.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
/* #define FT_CONFIG_OPTION_INCREMENTAL */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* The size in bytes of the render pool used by the scan-line converter  */
 | 
			
		||||
  /* to do all of its work.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This must be greater than 4KByte if you use FreeType to rasterize     */
 | 
			
		||||
  /* glyphs; otherwise, you may set it to zero to avoid unnecessary        */
 | 
			
		||||
  /* allocation of the render pool.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_RENDER_POOL_SIZE  16384L
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* FT_MAX_MODULES                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   The maximum number of modules that can be registered in a single    */
 | 
			
		||||
  /*   FreeType library object.  32 is the default.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_MAX_MODULES  32
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Debug level                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
 | 
			
		||||
  /*   errors are reported through the `ftdebug' component.  In trace      */
 | 
			
		||||
  /*   mode, additional messages are sent to the standard output during    */
 | 
			
		||||
  /*   execution.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
 | 
			
		||||
  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Don't define any of these macros to compile in `release' mode!      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Do not #undef these macros here since the build system might define */
 | 
			
		||||
  /*   them for certain configurations only.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
/* #define FT_DEBUG_LEVEL_ERROR */
 | 
			
		||||
/* #define FT_DEBUG_LEVEL_TRACE */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Memory Debugging                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FreeType now comes with an integrated memory debugger that is       */
 | 
			
		||||
  /*   capable of detecting simple errors like memory leaks or double      */
 | 
			
		||||
  /*   deletes.  To compile it within your build of the library, you       */
 | 
			
		||||
  /*   should define FT_DEBUG_MEMORY here.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Note that the memory debugger is only activated at runtime when     */
 | 
			
		||||
  /*   when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Do not #undef this macro here since the build system might define   */
 | 
			
		||||
  /*   it for certain configurations only.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
/* #define FT_DEBUG_MEMORY */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Module errors                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   If this macro is set (which is _not_ the default), the higher byte  */
 | 
			
		||||
  /*   of an error code gives the module in which the error has occurred,  */
 | 
			
		||||
  /*   while the lower byte is the real error code.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Setting this macro makes sense for debugging purposes only, since   */
 | 
			
		||||
  /*   it would break source compatibility of certain programs that use    */
 | 
			
		||||
  /*   FreeType 2.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   More details can be found in the files ftmoderr.h and fterrors.h.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****        S F N T   D R I V E R    C O N F I G U R A T I O N       ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support       */
 | 
			
		||||
  /* embedded bitmaps in all formats using the SFNT module (namely         */
 | 
			
		||||
  /* TrueType & OpenType).                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to    */
 | 
			
		||||
  /* load and enumerate the glyph Postscript names in a TrueType or        */
 | 
			
		||||
  /* OpenType file.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Note that when you do not compile the `PSNames' module by undefining  */
 | 
			
		||||
  /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will   */
 | 
			
		||||
  /* contain additional code used to read the PS Names table from a font.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* (By default, the module uses `PSNames' to extract glyph names.)       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to       */
 | 
			
		||||
  /* access the internal name table in a SFNT-based format like TrueType   */
 | 
			
		||||
  /* or OpenType.  The name table contains various strings used to         */
 | 
			
		||||
  /* describe the font, like family name, copyright, version, etc.  It     */
 | 
			
		||||
  /* does not contain any glyph name though.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Accessing SFNT names is done through the functions declared in        */
 | 
			
		||||
  /* `freetype/ftnames.h'.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define TT_CONFIG_OPTION_SFNT_NAMES
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* TrueType CMap support                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Here you can fine-tune which TrueType CMap table format shall be    */
 | 
			
		||||
  /*   supported.                                                          */
 | 
			
		||||
#define TT_CONFIG_CMAP_FORMAT_0
 | 
			
		||||
#define TT_CONFIG_CMAP_FORMAT_2
 | 
			
		||||
#define TT_CONFIG_CMAP_FORMAT_4
 | 
			
		||||
#define TT_CONFIG_CMAP_FORMAT_6
 | 
			
		||||
#define TT_CONFIG_CMAP_FORMAT_8
 | 
			
		||||
#define TT_CONFIG_CMAP_FORMAT_10
 | 
			
		||||
#define TT_CONFIG_CMAP_FORMAT_12
 | 
			
		||||
#define TT_CONFIG_CMAP_FORMAT_14
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****    T R U E T Y P E   D R I V E R    C O N F I G U R A T I O N   ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile   */
 | 
			
		||||
  /* a bytecode interpreter in the TrueType driver.  Note that there are   */
 | 
			
		||||
  /* important patent issues related to the use of the interpreter.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* By undefining this, you will only compile the code necessary to load  */
 | 
			
		||||
  /* TrueType glyphs without hinting.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Do not #undef this macro here, since the build system might         */
 | 
			
		||||
  /*   define it for certain configurations only.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version  */
 | 
			
		||||
  /* of the TrueType bytecode interpreter is used that doesn't implement   */
 | 
			
		||||
  /* any of the patented opcodes and algorithms.  Note that the            */
 | 
			
		||||
  /* the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you     */
 | 
			
		||||
  /* define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; with other words,       */
 | 
			
		||||
  /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                */
 | 
			
		||||
  /* 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    */
 | 
			
		||||
  /* for Asian scripts) that require bytecode interpretation to properly   */
 | 
			
		||||
  /* load glyphs.  For all other fonts, this produces unpleasant results,  */
 | 
			
		||||
  /* thus the unpatented interpreter is never used to load glyphs from     */
 | 
			
		||||
  /* TrueType fonts unless one of the following two options is used.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   - The unpatented interpreter is explicitly activated by the user    */
 | 
			
		||||
  /*     through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag         */
 | 
			
		||||
  /*     when opening the FT_Face.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   - FreeType detects that the FT_Face corresponds to one of the       */
 | 
			
		||||
  /*     `trick' fonts (e.g., `Mingliu') it knows about.  The font engine  */
 | 
			
		||||
  /*     contains a hard-coded list of font names and other matching       */
 | 
			
		||||
  /*     parameters (see function `tt_face_init' in file                   */
 | 
			
		||||
  /*     `src/truetype/ttobjs.c').                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   {                                                                   */
 | 
			
		||||
  /*     FT_Parameter  parameter;                                          */
 | 
			
		||||
  /*     FT_Open_Args  open_args;                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING;                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;         */
 | 
			
		||||
  /*     open_args.pathname   = my_font_pathname;                          */
 | 
			
		||||
  /*     open_args.num_params = 1;                                         */
 | 
			
		||||
  /*     open_args.params     = ¶meter;                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     error = FT_Open_Face( library, &open_args, index, &face );        */
 | 
			
		||||
  /*     ...                                                               */
 | 
			
		||||
  /*   }                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define TT_CONFIG_OPTION_UNPATENTED_HINTING
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType    */
 | 
			
		||||
  /* bytecode interpreter with a huge switch statement, rather than a call */
 | 
			
		||||
  /* table.  This results in smaller and faster code for a number of       */
 | 
			
		||||
  /* architectures.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Note however that on some compiler/processor combinations, undefining */
 | 
			
		||||
  /* this macro will generate faster, though larger, code.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define TT_CONFIG_OPTION_INTERPRETER_SWITCH
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the        */
 | 
			
		||||
  /* TrueType glyph loader to use Apple's definition of how to handle      */
 | 
			
		||||
  /* component offsets in composite glyphs.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Apple and MS disagree on the default behavior of component offsets    */
 | 
			
		||||
  /* in composites.  Apple says that they should be scaled by the scaling  */
 | 
			
		||||
  /* factors in the transformation matrix (roughly, it's more complex)     */
 | 
			
		||||
  /* while MS says they should not.  OpenType defines two bits in the      */
 | 
			
		||||
  /* composite flags array which can be used to disambiguate, but old      */
 | 
			
		||||
  /* fonts will not have them.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   http://partners.adobe.com/asn/developer/opentype/glyf.html          */
 | 
			
		||||
  /*   http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include         */
 | 
			
		||||
  /* support for Apple's distortable font technology (fvar, gvar, cvar,    */
 | 
			
		||||
  /* and avar tables).  This has many similarities to Type 1 Multiple      */
 | 
			
		||||
  /* Masters support.                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define TT_CONFIG_OPTION_BDF if you want to include support for        */
 | 
			
		||||
  /* an embedded `BDF ' table within SFNT-based bitmap formats.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define TT_CONFIG_OPTION_BDF
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****      T Y P E 1   D R I V E R    C O N F I G U R A T I O N       ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and       */
 | 
			
		||||
  /* arrays in the Type 1 stream (see t1load.c).  A minimum of 4 is        */
 | 
			
		||||
  /* required.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define T1_MAX_DICT_DEPTH  5
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine   */
 | 
			
		||||
  /* calls during glyph loading.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define T1_MAX_SUBRS_CALLS  16
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A     */
 | 
			
		||||
  /* minimum of 16 is required.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define T1_MAX_CHARSTRINGS_OPERANDS  256
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define this configuration macro if you want to prevent the            */
 | 
			
		||||
  /* compilation of `t1afm', which is in charge of reading Type 1 AFM      */
 | 
			
		||||
  /* files into an existing face.  Note that if set, the T1 driver will be */
 | 
			
		||||
  /* unable to produce kerning distances.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#undef T1_CONFIG_OPTION_NO_AFM
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define this configuration macro if you want to prevent the            */
 | 
			
		||||
  /* compilation of the Multiple Masters font support in the Type 1        */
 | 
			
		||||
  /* driver.                                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****    A U T O F I T   M O D U L E    C O N F I G U R A T I O N     ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Compile autofit module with CJK (Chinese, Japanese, Korean) script    */
 | 
			
		||||
  /* support.                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define AF_CONFIG_OPTION_CJK
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Compile autofit module with Indic script support.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define AF_CONFIG_OPTION_INDIC
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Define this variable if you want to keep the layout of internal
 | 
			
		||||
   * structures that was used prior to FreeType 2.2.  This also compiles in
 | 
			
		||||
   * a few obsolete functions to avoid linking problems on typical Unix
 | 
			
		||||
   * distributions.
 | 
			
		||||
   *
 | 
			
		||||
   * For embedded systems or building a new distribution from scratch, it
 | 
			
		||||
   * is recommended to disable the macro since it reduces the library's code
 | 
			
		||||
   * size and activates a few memory-saving optimizations as well.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * This variable is defined if either unpatented or native TrueType
 | 
			
		||||
   * hinting is requested by the definitions above.
 | 
			
		||||
   */
 | 
			
		||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
 | 
			
		||||
#define  TT_USE_BYTECODE_INTERPRETER
 | 
			
		||||
#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING
 | 
			
		||||
#define  TT_USE_BYTECODE_INTERPRETER
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FTOPTION_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										180
									
								
								include/freetype/config/ftstdlib.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								include/freetype/config/ftstdlib.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,180 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftstdlib.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    ANSI-specific library and header configuration file (specification   */
 | 
			
		||||
/*    only).                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2003, 2004, 2005, 2006, 2007 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 file is used to group all #includes to the ANSI C library that   */
 | 
			
		||||
  /* FreeType normally requires.  It also defines macros to rename the     */
 | 
			
		||||
  /* standard functions within the FreeType source code.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Load a file which defines __FTSTDLIB_H__ before this one to override  */
 | 
			
		||||
  /* it.                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTSTDLIB_H__
 | 
			
		||||
#define __FTSTDLIB_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
#define ft_ptrdiff_t  ptrdiff_t
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /*                           integer limits                           */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /* UINT_MAX and ULONG_MAX are used to automatically compute the size  */
 | 
			
		||||
  /* of `int' and `long' in bytes at compile-time.  So far, this works  */
 | 
			
		||||
  /* for all platforms the library has been tested on.                  */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /* Note that on the extremely rare platforms that do not provide      */
 | 
			
		||||
  /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some    */
 | 
			
		||||
  /* old Crays where `int' is 36 bits), we do not make any guarantee    */
 | 
			
		||||
  /* about the correct behaviour of FT2 with all fonts.                 */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /* In these case, `ftconfig.h' will refuse to compile anyway with a   */
 | 
			
		||||
  /* 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'.                                      */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
 | 
			
		||||
#define FT_CHAR_BIT   CHAR_BIT
 | 
			
		||||
#define FT_INT_MAX    INT_MAX
 | 
			
		||||
#define FT_UINT_MAX   UINT_MAX
 | 
			
		||||
#define FT_ULONG_MAX  ULONG_MAX
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /*                 character and string processing                    */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#define ft_memchr   memchr
 | 
			
		||||
#define ft_memcmp   memcmp
 | 
			
		||||
#define ft_memcpy   memcpy
 | 
			
		||||
#define ft_memmove  memmove
 | 
			
		||||
#define ft_memset   memset
 | 
			
		||||
#define ft_strcat   strcat
 | 
			
		||||
#define ft_strcmp   strcmp
 | 
			
		||||
#define ft_strcpy   strcpy
 | 
			
		||||
#define ft_strlen   strlen
 | 
			
		||||
#define ft_strncmp  strncmp
 | 
			
		||||
#define ft_strncpy  strncpy
 | 
			
		||||
#define ft_strrchr  strrchr
 | 
			
		||||
#define ft_strstr   strstr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /*                           file handling                            */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#define FT_FILE     FILE
 | 
			
		||||
#define ft_fclose   fclose
 | 
			
		||||
#define ft_fopen    fopen
 | 
			
		||||
#define ft_fread    fread
 | 
			
		||||
#define ft_fseek    fseek
 | 
			
		||||
#define ft_ftell    ftell
 | 
			
		||||
#define ft_sprintf  sprintf
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /*                             sorting                                */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#define ft_qsort  qsort
 | 
			
		||||
 | 
			
		||||
#define ft_exit   exit    /* only used to exit from unhandled exceptions */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /*                        memory allocation                           */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define ft_scalloc   calloc
 | 
			
		||||
#define ft_sfree     free
 | 
			
		||||
#define ft_smalloc   malloc
 | 
			
		||||
#define ft_srealloc  realloc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /*                          miscellaneous                             */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define ft_atol   atol
 | 
			
		||||
#define ft_labs   labs
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /*                         execution control                          */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <setjmp.h>
 | 
			
		||||
 | 
			
		||||
#define ft_jmp_buf     jmp_buf  /* note: this cannot be a typedef since */
 | 
			
		||||
                                /*       jmp_buf is defined as a macro  */
 | 
			
		||||
                                /*       on certain platforms           */
 | 
			
		||||
 | 
			
		||||
#define ft_longjmp     longjmp
 | 
			
		||||
#define ft_setjmp( b ) setjmp( *(jmp_buf*) &(b) )    /* same thing here */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* the following is only used for debugging purposes, i.e., if */
 | 
			
		||||
  /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined    */
 | 
			
		||||
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSTDLIB_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										3718
									
								
								include/freetype/freetype.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3718
									
								
								include/freetype/freetype.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										131
									
								
								include/freetype/ftadvanc.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								include/freetype/ftadvanc.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,131 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftadvanc.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType access the glyph advances       (specification only).       */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 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 __FREETYPE_ADVANCE_H__
 | 
			
		||||
#define __FREETYPE_ADVANCE_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Const>                                                               */
 | 
			
		||||
  /*    FT_ADVANCE_FLAG_FAST_ONLY                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    a bit-flag to be or-ed to the 'flags' parameter of the             */
 | 
			
		||||
  /*    @FT_Get_Advance and @FT_Get_Advances.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    when 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, unscaled, unhinted, bitmapped and light-hinted glyphs   */
 | 
			
		||||
  /*    can have their advance width(s) computed very quickly.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    not so for normal and bytecode hinted modes, which require         */
 | 
			
		||||
  /*    loading/scaling/hinting the glyph outline instead, which is        */
 | 
			
		||||
  /*    extremely slow by comparison                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define  FT_ADVANCE_FLAG_FAST_ONLY   0x20000000U
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Advance                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve the advance of a given glyph outline in a FT_Face.        */
 | 
			
		||||
  /*    by default, the unhinted advance is returned in font units         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face       :: source FT_Face handle                                */
 | 
			
		||||
  /*    gindex     :: 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's the horizontal advance in an           */
 | 
			
		||||
  /*                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's 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 transform specified by @FT_Set_Transform */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Advance( FT_Face    face,
 | 
			
		||||
                  FT_UInt    gindex,
 | 
			
		||||
                  FT_UInt    load_flags,
 | 
			
		||||
                  FT_Fixed  *padvance );
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Advances                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve the advance of several glyph outlines in a FT_Face.       */
 | 
			
		||||
  /*    by default, the unhinted advances are returned in font units       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face        :: source FT_Face handle                               */
 | 
			
		||||
  /*    start       :: first glyph index                                   */
 | 
			
		||||
  /*    count       :: number of advances 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 an      */
 | 
			
		||||
  /*                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's 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 transform specified by @FT_Set_Transform */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Advances( FT_Face    face,
 | 
			
		||||
                   FT_UInt    start,
 | 
			
		||||
                   FT_UInt    count,
 | 
			
		||||
                   FT_UInt    load_flags,
 | 
			
		||||
                   FT_Fixed  *padvances );
 | 
			
		||||
 | 
			
		||||
/* */
 | 
			
		||||
 | 
			
		||||
#endif /* __FREETYPE_ADVANCE_H__ */
 | 
			
		||||
							
								
								
									
										94
									
								
								include/freetype/ftbbox.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								include/freetype/ftbbox.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,94 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftbbox.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType exact bbox computation (specification).                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2003, 2007 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 component has a _single_ role: to compute exact outline bounding */
 | 
			
		||||
  /* boxes.                                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* It is separated from the rest of the engine for various technical     */
 | 
			
		||||
  /* reasons.  It may well be integrated in `ftoutln' later.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTBBOX_H__
 | 
			
		||||
#define __FTBBOX_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>                                                             */
 | 
			
		||||
  /*    outline_processing                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Get_BBox                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Computes the exact bounding box of an outline.  This is slower     */
 | 
			
		||||
  /*    than computing the control box.  However, it uses an advanced      */
 | 
			
		||||
  /*    algorithm which returns _very_ quickly when the two boxes          */
 | 
			
		||||
  /*    coincide.  Otherwise, the outline Bézier arcs are traversed to     */
 | 
			
		||||
  /*    extract their extrema.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the source outline.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    abbox   :: The outline's exact bounding box.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Get_BBox( FT_Outline*  outline,
 | 
			
		||||
                       FT_BBox     *abbox );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTBBOX_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
							
								
								
									
										200
									
								
								include/freetype/ftbdf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								include/freetype/ftbdf.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,200 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftbdf.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for accessing BDF-specific strings (specification).     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2003, 2004, 2006 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 __FTBDF_H__
 | 
			
		||||
#define __FTBDF_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>                                                             */
 | 
			
		||||
  /*    bdf_fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    BDF Files                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    BDF specific API.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of BDF specific functions.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *    FT_PropertyType
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    A list of BDF property types.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *    BDF_PROPERTY_TYPE_NONE ::
 | 
			
		||||
  *      Value 0 is used to indicate a missing property.
 | 
			
		||||
  *
 | 
			
		||||
  *    BDF_PROPERTY_TYPE_ATOM ::
 | 
			
		||||
  *      Property is a string atom.
 | 
			
		||||
  *
 | 
			
		||||
  *    BDF_PROPERTY_TYPE_INTEGER ::
 | 
			
		||||
  *      Property is a 32-bit signed integer.
 | 
			
		||||
  *
 | 
			
		||||
  *    BDF_PROPERTY_TYPE_CARDINAL ::
 | 
			
		||||
  *      Property is a 32-bit unsigned integer.
 | 
			
		||||
  */
 | 
			
		||||
  typedef enum  BDF_PropertyType_
 | 
			
		||||
  {
 | 
			
		||||
    BDF_PROPERTY_TYPE_NONE     = 0,
 | 
			
		||||
    BDF_PROPERTY_TYPE_ATOM     = 1,
 | 
			
		||||
    BDF_PROPERTY_TYPE_INTEGER  = 2,
 | 
			
		||||
    BDF_PROPERTY_TYPE_CARDINAL = 3
 | 
			
		||||
 | 
			
		||||
  } BDF_PropertyType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @type:
 | 
			
		||||
  *    BDF_Property
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    A handle to a @BDF_PropertyRec structure to model a given
 | 
			
		||||
  *    BDF/PCF property.
 | 
			
		||||
  */
 | 
			
		||||
  typedef struct BDF_PropertyRec_*  BDF_Property;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @struct:
 | 
			
		||||
  *    BDF_PropertyRec
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    This structure models a given BDF/PCF property.
 | 
			
		||||
  *
 | 
			
		||||
  * @fields:
 | 
			
		||||
  *    type ::
 | 
			
		||||
  *      The property type.
 | 
			
		||||
  *
 | 
			
		||||
  *    u.atom ::
 | 
			
		||||
  *      The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.
 | 
			
		||||
  *
 | 
			
		||||
  *    u.integer ::
 | 
			
		||||
  *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
 | 
			
		||||
  *
 | 
			
		||||
  *    u.cardinal ::
 | 
			
		||||
  *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
 | 
			
		||||
  */
 | 
			
		||||
  typedef struct  BDF_PropertyRec_
 | 
			
		||||
  {
 | 
			
		||||
    BDF_PropertyType  type;
 | 
			
		||||
    union {
 | 
			
		||||
      const char*     atom;
 | 
			
		||||
      FT_Int32        integer;
 | 
			
		||||
      FT_UInt32       cardinal;
 | 
			
		||||
 | 
			
		||||
    } u;
 | 
			
		||||
 | 
			
		||||
  } BDF_PropertyRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_BDF_Charset_ID
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Retrieves a BDF font character set identity, according to
 | 
			
		||||
  *    the BDF specification.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    acharset_encoding ::
 | 
			
		||||
  *       Charset encoding, as a C string, owned by the face.
 | 
			
		||||
  *
 | 
			
		||||
  *    acharset_registry ::
 | 
			
		||||
  *       Charset registry, as a C string, owned by the face.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function only works with BDF faces, returning an error otherwise.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_BDF_Charset_ID( FT_Face       face,
 | 
			
		||||
                         const char*  *acharset_encoding,
 | 
			
		||||
                         const char*  *acharset_registry );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_BDF_Property
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Retrieves a BDF property from a BDF or PCF font file.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face :: A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    name :: The property name.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    aproperty :: The property.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function works with BDF _and_ PCF fonts.  It returns an error
 | 
			
		||||
  *   otherwise.  It also returns an error if the property is not in the
 | 
			
		||||
  *   font.
 | 
			
		||||
  *
 | 
			
		||||
  *   In case of error, `aproperty->type' is always set to
 | 
			
		||||
  *   @BDF_PROPERTY_TYPE_NONE.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_BDF_Property( FT_Face           face,
 | 
			
		||||
                       const char*       prop_name,
 | 
			
		||||
                       BDF_PropertyRec  *aproperty );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTBDF_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										206
									
								
								include/freetype/ftbitmap.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								include/freetype/ftbitmap.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,206 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftbitmap.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */
 | 
			
		||||
/*    bitmaps into 8bpp format (specification).                            */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004, 2005, 2006 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 __FTBITMAP_H__
 | 
			
		||||
#define __FTBITMAP_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>                                                             */
 | 
			
		||||
  /*    bitmap_handling                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Bitmap Handling                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Handling FT_Bitmap objects.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains functions for converting FT_Bitmap objects.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_New                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Initialize a pointer to an @FT_Bitmap structure.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    abitmap :: A pointer to the bitmap structure.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Bitmap_New( FT_Bitmap  *abitmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Copy                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Copies an bitmap into another one.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a library object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    source  :: A handle to the source bitmap.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    target  :: A handle to the target bitmap.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Bitmap_Copy( FT_Library        library,
 | 
			
		||||
                  const FT_Bitmap  *source,
 | 
			
		||||
                  FT_Bitmap        *target);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Embolden                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Embolden a bitmap.  The new bitmap will be about `xStrength'       */
 | 
			
		||||
  /*    pixels wider and `yStrength' pixels higher.  The left and bottom   */
 | 
			
		||||
  /*    borders are kept unchanged.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library   :: A handle to a library object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    xStrength :: How strong the glyph is emboldened horizontally.      */
 | 
			
		||||
  /*                 Expressed in 26.6 pixel format.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yStrength :: How strong the glyph is emboldened vertically.        */
 | 
			
		||||
  /*                 Expressed in 26.6 pixel format.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    bitmap    :: A handle to the target bitmap.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The current implementation restricts `xStrength' to be less than   */
 | 
			
		||||
  /*    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,    */
 | 
			
		||||
  /*    you should call `FT_GlyphSlot_Own_Bitmap' on the slot first.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Bitmap_Embolden( FT_Library  library,
 | 
			
		||||
                      FT_Bitmap*  bitmap,
 | 
			
		||||
                      FT_Pos      xStrength,
 | 
			
		||||
                      FT_Pos      yStrength );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Convert                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a  */
 | 
			
		||||
  /*    bitmap object with depth 8bpp, making the number of used bytes per */
 | 
			
		||||
  /*    line (a.k.a. the `pitch') a multiple of `alignment'.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library   :: A handle to a library object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    source    :: The source bitmap.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    alignment :: The pitch of the bitmap is a multiple of this         */
 | 
			
		||||
  /*                 parameter.  Common values are 1, 2, or 4.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    target    :: The target bitmap.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    It is possible to call @FT_Bitmap_Convert multiple times without   */
 | 
			
		||||
  /*    calling @FT_Bitmap_Done (the memory is simply reallocated).        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Use @FT_Bitmap_Done to finally remove the bitmap object.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The `library' argument is taken to have access to FreeType's       */
 | 
			
		||||
  /*    memory handling functions.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Bitmap_Convert( FT_Library        library,
 | 
			
		||||
                     const FT_Bitmap  *source,
 | 
			
		||||
                     FT_Bitmap        *target,
 | 
			
		||||
                     FT_Int            alignment );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Done                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroy a bitmap object created with @FT_Bitmap_New.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a library object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    bitmap  :: The bitmap object to be freed.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The `library' argument is taken to have access to FreeType's       */
 | 
			
		||||
  /*    memory handling functions.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Bitmap_Done( FT_Library  library,
 | 
			
		||||
                  FT_Bitmap  *bitmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTBITMAP_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										1121
									
								
								include/freetype/ftcache.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1121
									
								
								include/freetype/ftcache.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										102
									
								
								include/freetype/ftchapters.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								include/freetype/ftchapters.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,102 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* This file defines the structure of the FreeType reference.              */
 | 
			
		||||
/* It is used by the python script which generates the HTML files.         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    general_remarks                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    General Remarks                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    user_allocation                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    core_api                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Core API                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    version                                                              */
 | 
			
		||||
/*    basic_types                                                          */
 | 
			
		||||
/*    base_interface                                                       */
 | 
			
		||||
/*    glyph_variants                                                       */
 | 
			
		||||
/*    glyph_management                                                     */
 | 
			
		||||
/*    mac_specific                                                         */
 | 
			
		||||
/*    sizes_management                                                     */
 | 
			
		||||
/*    header_file_macros                                                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    format_specific                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Format-Specific API                                                  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    multiple_masters                                                     */
 | 
			
		||||
/*    truetype_tables                                                      */
 | 
			
		||||
/*    type1_tables                                                         */
 | 
			
		||||
/*    sfnt_names                                                           */
 | 
			
		||||
/*    bdf_fonts                                                            */
 | 
			
		||||
/*    cid_fonts                                                            */
 | 
			
		||||
/*    pfr_fonts                                                            */
 | 
			
		||||
/*    winfnt_fonts                                                         */
 | 
			
		||||
/*    font_formats                                                         */
 | 
			
		||||
/*    gasp_table                                                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    cache_subsystem                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Cache Sub-System                                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    cache_subsystem                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    support_api                                                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Support API                                                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    computations                                                         */
 | 
			
		||||
/*    list_processing                                                      */
 | 
			
		||||
/*    outline_processing                                                   */
 | 
			
		||||
/*    bitmap_handling                                                      */
 | 
			
		||||
/*    raster                                                               */
 | 
			
		||||
/*    glyph_stroker                                                        */
 | 
			
		||||
/*    system_interface                                                     */
 | 
			
		||||
/*    module_management                                                    */
 | 
			
		||||
/*    gzip                                                                 */
 | 
			
		||||
/*    lzw                                                                  */
 | 
			
		||||
/*    lcd_filtering                                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
							
								
								
									
										98
									
								
								include/freetype/ftcid.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								include/freetype/ftcid.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftcid.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for accessing CID font information (specification).     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2007 by Dereg Clegg.                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  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 __FTCID_H__
 | 
			
		||||
#define __FTCID_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>                                                             */
 | 
			
		||||
  /*    cid_fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    CID Fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    CID-keyed font specific API.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of CID-keyed font specific   */
 | 
			
		||||
  /*    functions.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_CID_Registry_Ordering_Supplement
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the Registry/Ordering/Supplement triple (also known as the
 | 
			
		||||
   *    "R/O/S") from a CID-keyed font.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       A handle to the input face.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    registry ::
 | 
			
		||||
   *       The registry, as a C string, owned by the face.
 | 
			
		||||
   *
 | 
			
		||||
   *    ordering ::
 | 
			
		||||
   *       The ordering, as a C string, owned by the face.
 | 
			
		||||
   *
 | 
			
		||||
   *    supplement ::
 | 
			
		||||
   *       The supplement.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    This function only works with CID faces, returning an error
 | 
			
		||||
   *    otherwise.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *    2.3.6
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_CID_Registry_Ordering_Supplement( FT_Face       face,
 | 
			
		||||
                                           const char*  *registry,
 | 
			
		||||
                                           const char*  *ordering,
 | 
			
		||||
                                           FT_Int       *supplement);
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTCID_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										239
									
								
								include/freetype/fterrdef.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										239
									
								
								include/freetype/fterrdef.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,239 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fterrdef.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType error codes (specification).                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2004, 2006, 2007 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                LIST OF ERROR CODES/MESSAGES             *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */
 | 
			
		||||
  /* including this file.                                           */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* generic errors */
 | 
			
		||||
 | 
			
		||||
  FT_NOERRORDEF_( Ok,                                        0x00, \
 | 
			
		||||
                  "no error" )
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Cannot_Open_Resource,                        0x01, \
 | 
			
		||||
                "cannot open resource" )
 | 
			
		||||
  FT_ERRORDEF_( Unknown_File_Format,                         0x02, \
 | 
			
		||||
                "unknown file format" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_File_Format,                         0x03, \
 | 
			
		||||
                "broken file" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Version,                             0x04, \
 | 
			
		||||
                "invalid FreeType version" )
 | 
			
		||||
  FT_ERRORDEF_( Lower_Module_Version,                        0x05, \
 | 
			
		||||
                "module version is too low" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Argument,                            0x06, \
 | 
			
		||||
                "invalid argument" )
 | 
			
		||||
  FT_ERRORDEF_( Unimplemented_Feature,                       0x07, \
 | 
			
		||||
                "unimplemented feature" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Table,                               0x08, \
 | 
			
		||||
                "broken table" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Offset,                              0x09, \
 | 
			
		||||
                "broken offset within table" )
 | 
			
		||||
  FT_ERRORDEF_( Array_Too_Large,                             0x0A, \
 | 
			
		||||
                "array allocation size too large" )
 | 
			
		||||
 | 
			
		||||
  /* glyph/character errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Glyph_Index,                         0x10, \
 | 
			
		||||
                "invalid glyph index" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Character_Code,                      0x11, \
 | 
			
		||||
                "invalid character code" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Glyph_Format,                        0x12, \
 | 
			
		||||
                "unsupported glyph image format" )
 | 
			
		||||
  FT_ERRORDEF_( Cannot_Render_Glyph,                         0x13, \
 | 
			
		||||
                "cannot render this glyph format" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Outline,                             0x14, \
 | 
			
		||||
                "invalid outline" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Composite,                           0x15, \
 | 
			
		||||
                "invalid composite glyph" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Hints,                              0x16, \
 | 
			
		||||
                "too many hints" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Pixel_Size,                          0x17, \
 | 
			
		||||
                "invalid pixel size" )
 | 
			
		||||
 | 
			
		||||
  /* handle errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Handle,                              0x20, \
 | 
			
		||||
                "invalid object handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Library_Handle,                      0x21, \
 | 
			
		||||
                "invalid library handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Driver_Handle,                       0x22, \
 | 
			
		||||
                "invalid module handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Face_Handle,                         0x23, \
 | 
			
		||||
                "invalid face handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Size_Handle,                         0x24, \
 | 
			
		||||
                "invalid size handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Slot_Handle,                         0x25, \
 | 
			
		||||
                "invalid glyph slot handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_CharMap_Handle,                      0x26, \
 | 
			
		||||
                "invalid charmap handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Cache_Handle,                        0x27, \
 | 
			
		||||
                "invalid cache manager handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Handle,                       0x28, \
 | 
			
		||||
                "invalid stream handle" )
 | 
			
		||||
 | 
			
		||||
  /* driver errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Drivers,                            0x30, \
 | 
			
		||||
                "too many modules" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Extensions,                         0x31, \
 | 
			
		||||
                "too many extensions" )
 | 
			
		||||
 | 
			
		||||
  /* memory errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Out_Of_Memory,                               0x40, \
 | 
			
		||||
                "out of memory" )
 | 
			
		||||
  FT_ERRORDEF_( Unlisted_Object,                             0x41, \
 | 
			
		||||
                "unlisted object" )
 | 
			
		||||
 | 
			
		||||
  /* stream errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Cannot_Open_Stream,                          0x51, \
 | 
			
		||||
                "cannot open stream" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Seek,                         0x52, \
 | 
			
		||||
                "invalid stream seek" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Skip,                         0x53, \
 | 
			
		||||
                "invalid stream skip" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Read,                         0x54, \
 | 
			
		||||
                "invalid stream read" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Operation,                    0x55, \
 | 
			
		||||
                "invalid stream operation" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Frame_Operation,                     0x56, \
 | 
			
		||||
                "invalid frame operation" )
 | 
			
		||||
  FT_ERRORDEF_( Nested_Frame_Access,                         0x57, \
 | 
			
		||||
                "nested frame access" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Frame_Read,                          0x58, \
 | 
			
		||||
                "invalid frame read" )
 | 
			
		||||
 | 
			
		||||
  /* raster errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Raster_Uninitialized,                        0x60, \
 | 
			
		||||
                "raster uninitialized" )
 | 
			
		||||
  FT_ERRORDEF_( Raster_Corrupted,                            0x61, \
 | 
			
		||||
                "raster corrupted" )
 | 
			
		||||
  FT_ERRORDEF_( Raster_Overflow,                             0x62, \
 | 
			
		||||
                "raster overflow" )
 | 
			
		||||
  FT_ERRORDEF_( Raster_Negative_Height,                      0x63, \
 | 
			
		||||
                "negative height while rastering" )
 | 
			
		||||
 | 
			
		||||
  /* cache errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Caches,                             0x70, \
 | 
			
		||||
                "too many registered caches" )
 | 
			
		||||
 | 
			
		||||
  /* TrueType and SFNT errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Opcode,                              0x80, \
 | 
			
		||||
                "invalid opcode" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Few_Arguments,                           0x81, \
 | 
			
		||||
                "too few arguments" )
 | 
			
		||||
  FT_ERRORDEF_( Stack_Overflow,                              0x82, \
 | 
			
		||||
                "stack overflow" )
 | 
			
		||||
  FT_ERRORDEF_( Code_Overflow,                               0x83, \
 | 
			
		||||
                "code overflow" )
 | 
			
		||||
  FT_ERRORDEF_( Bad_Argument,                                0x84, \
 | 
			
		||||
                "bad argument" )
 | 
			
		||||
  FT_ERRORDEF_( Divide_By_Zero,                              0x85, \
 | 
			
		||||
                "division by zero" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Reference,                           0x86, \
 | 
			
		||||
                "invalid reference" )
 | 
			
		||||
  FT_ERRORDEF_( Debug_OpCode,                                0x87, \
 | 
			
		||||
                "found debug opcode" )
 | 
			
		||||
  FT_ERRORDEF_( ENDF_In_Exec_Stream,                         0x88, \
 | 
			
		||||
                "found ENDF opcode in execution stream" )
 | 
			
		||||
  FT_ERRORDEF_( Nested_DEFS,                                 0x89, \
 | 
			
		||||
                "nested DEFS" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_CodeRange,                           0x8A, \
 | 
			
		||||
                "invalid code range" )
 | 
			
		||||
  FT_ERRORDEF_( Execution_Too_Long,                          0x8B, \
 | 
			
		||||
                "execution context too long" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Function_Defs,                      0x8C, \
 | 
			
		||||
                "too many function definitions" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Instruction_Defs,                   0x8D, \
 | 
			
		||||
                "too many instruction definitions" )
 | 
			
		||||
  FT_ERRORDEF_( Table_Missing,                               0x8E, \
 | 
			
		||||
                "SFNT font table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Horiz_Header_Missing,                        0x8F, \
 | 
			
		||||
                "horizontal header (hhea) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Locations_Missing,                           0x90, \
 | 
			
		||||
                "locations (loca) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Name_Table_Missing,                          0x91, \
 | 
			
		||||
                "name table missing" )
 | 
			
		||||
  FT_ERRORDEF_( CMap_Table_Missing,                          0x92, \
 | 
			
		||||
                "character map (cmap) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Hmtx_Table_Missing,                          0x93, \
 | 
			
		||||
                "horizontal metrics (hmtx) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Post_Table_Missing,                          0x94, \
 | 
			
		||||
                "PostScript (post) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Horiz_Metrics,                       0x95, \
 | 
			
		||||
                "invalid horizontal metrics" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_CharMap_Format,                      0x96, \
 | 
			
		||||
                "invalid character map (cmap) format" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_PPem,                                0x97, \
 | 
			
		||||
                "invalid ppem value" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Vert_Metrics,                        0x98, \
 | 
			
		||||
                "invalid vertical metrics" )
 | 
			
		||||
  FT_ERRORDEF_( Could_Not_Find_Context,                      0x99, \
 | 
			
		||||
                "could not find context" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Post_Table_Format,                   0x9A, \
 | 
			
		||||
                "invalid PostScript (post) table format" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Post_Table,                          0x9B, \
 | 
			
		||||
                "invalid PostScript (post) table" )
 | 
			
		||||
 | 
			
		||||
  /* CFF, CID, and Type 1 errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Syntax_Error,                                0xA0, \
 | 
			
		||||
                "opcode syntax error" )
 | 
			
		||||
  FT_ERRORDEF_( Stack_Underflow,                             0xA1, \
 | 
			
		||||
                "argument stack underflow" )
 | 
			
		||||
  FT_ERRORDEF_( Ignore,                                      0xA2, \
 | 
			
		||||
                "ignore" )
 | 
			
		||||
 | 
			
		||||
  /* BDF errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Missing_Startfont_Field,                     0xB0, \
 | 
			
		||||
                "`STARTFONT' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Font_Field,                          0xB1, \
 | 
			
		||||
                "`FONT' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Size_Field,                          0xB2, \
 | 
			
		||||
                "`SIZE' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Chars_Field,                         0xB3, \
 | 
			
		||||
                "`CHARS' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Startchar_Field,                     0xB4, \
 | 
			
		||||
                "`STARTCHAR' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Encoding_Field,                      0xB5, \
 | 
			
		||||
                "`ENCODING' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Bbx_Field,                           0xB6, \
 | 
			
		||||
                "`BBX' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Bbx_Too_Big,                                 0xB7, \
 | 
			
		||||
                "`BBX' too big" )
 | 
			
		||||
  FT_ERRORDEF_( Corrupted_Font_Header,                       0xB8, \
 | 
			
		||||
                "Font header corrupted or missing fields" )
 | 
			
		||||
  FT_ERRORDEF_( Corrupted_Font_Glyphs,                       0xB9, \
 | 
			
		||||
                "Font glyphs corrupted or missing fields" )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										206
									
								
								include/freetype/fterrors.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								include/freetype/fterrors.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,206 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fterrors.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType error code handling (specification).                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2004, 2007 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 special header file is used to define the handling of FT2        */
 | 
			
		||||
  /* enumeration constants.  It can also be used to generate error message */
 | 
			
		||||
  /* strings with a small macro trick explained below.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* I - Error Formats                                                     */
 | 
			
		||||
  /* -----------------                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be   */
 | 
			
		||||
  /*   defined in ftoption.h in order to make the higher byte indicate     */
 | 
			
		||||
  /*   the module where the error has happened (this is not compatible     */
 | 
			
		||||
  /*   with standard builds of FreeType 2).  You can then use the macro    */
 | 
			
		||||
  /*   FT_ERROR_BASE macro to extract the generic error code from an       */
 | 
			
		||||
  /*   FT_Error value.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* II - Error Message strings                                            */
 | 
			
		||||
  /* --------------------------                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   The error definitions below are made through special macros that    */
 | 
			
		||||
  /*   allow client applications to build a table of error message strings */
 | 
			
		||||
  /*   if they need it.  The strings are not included in a normal build of */
 | 
			
		||||
  /*   FreeType 2 to save space (most client applications do not use       */
 | 
			
		||||
  /*   them).                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   To do so, you have to define the following macros before including  */
 | 
			
		||||
  /*   this file:                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FT_ERROR_START_LIST ::                                              */
 | 
			
		||||
  /*     This macro is called before anything else to define the start of  */
 | 
			
		||||
  /*     the error list.  It is followed by several FT_ERROR_DEF calls     */
 | 
			
		||||
  /*     (see below).                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FT_ERROR_DEF( e, v, s ) ::                                          */
 | 
			
		||||
  /*     This macro is called to define one single error.                  */
 | 
			
		||||
  /*     `e' is the error code identifier (e.g. FT_Err_Invalid_Argument).  */
 | 
			
		||||
  /*     `v' is the error numerical value.                                 */
 | 
			
		||||
  /*     `s' is the corresponding error string.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FT_ERROR_END_LIST ::                                                */
 | 
			
		||||
  /*     This macro ends the list.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Additionally, you have to undefine __FTERRORS_H__ before #including */
 | 
			
		||||
  /*   this file.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Here is a simple example:                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     {                                                                 */
 | 
			
		||||
  /*       #undef __FTERRORS_H__                                           */
 | 
			
		||||
  /*       #define FT_ERRORDEF( e, v, s )  { e, s },                       */
 | 
			
		||||
  /*       #define FT_ERROR_START_LIST     {                               */
 | 
			
		||||
  /*       #define FT_ERROR_END_LIST       { 0, 0 } };                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       const struct                                                    */
 | 
			
		||||
  /*       {                                                               */
 | 
			
		||||
  /*         int          err_code;                                        */
 | 
			
		||||
  /*         const char*  err_msg;                                         */
 | 
			
		||||
  /*       } ft_errors[] =                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       #include FT_ERRORS_H                                            */
 | 
			
		||||
  /*     }                                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTERRORS_H__
 | 
			
		||||
#define __FTERRORS_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* include module base error codes */
 | 
			
		||||
#include FT_MODULE_ERRORS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                       SETUP MACROS                      *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef  FT_NEED_EXTERN_C
 | 
			
		||||
 | 
			
		||||
#undef  FT_ERR_XCAT
 | 
			
		||||
#undef  FT_ERR_CAT
 | 
			
		||||
 | 
			
		||||
#define FT_ERR_XCAT( x, y )  x ## y
 | 
			
		||||
#define FT_ERR_CAT( x, y )   FT_ERR_XCAT( x, y )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* FT_ERR_PREFIX is used as a prefix for error identifiers. */
 | 
			
		||||
  /* By default, we use `FT_Err_'.                            */
 | 
			
		||||
  /*                                                          */
 | 
			
		||||
#ifndef FT_ERR_PREFIX
 | 
			
		||||
#define FT_ERR_PREFIX  FT_Err_
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* FT_ERR_BASE is used as the base for module-specific errors. */
 | 
			
		||||
  /*                                                             */
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
 | 
			
		||||
 | 
			
		||||
#ifndef FT_ERR_BASE
 | 
			
		||||
#define FT_ERR_BASE  FT_Mod_Err_Base
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#undef FT_ERR_BASE
 | 
			
		||||
#define FT_ERR_BASE  0
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* If FT_ERRORDEF is not defined, we need to define a simple */
 | 
			
		||||
  /* enumeration type.                                         */
 | 
			
		||||
  /*                                                           */
 | 
			
		||||
#ifndef FT_ERRORDEF
 | 
			
		||||
 | 
			
		||||
#define FT_ERRORDEF( e, v, s )  e = v,
 | 
			
		||||
#define FT_ERROR_START_LIST     enum {
 | 
			
		||||
#define FT_ERROR_END_LIST       FT_ERR_CAT( FT_ERR_PREFIX, Max ) };
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_NEED_EXTERN_C
 | 
			
		||||
  extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_ERRORDEF */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* this macro is used to define an error */
 | 
			
		||||
#define FT_ERRORDEF_( e, v, s )   \
 | 
			
		||||
          FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s )
 | 
			
		||||
 | 
			
		||||
  /* this is only used for <module>_Err_Ok, which must be 0! */
 | 
			
		||||
#define FT_NOERRORDEF_( e, v, s ) \
 | 
			
		||||
          FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_ERROR_START_LIST
 | 
			
		||||
  FT_ERROR_START_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* now include the error codes */
 | 
			
		||||
#include FT_ERROR_DEFINITIONS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_ERROR_END_LIST
 | 
			
		||||
  FT_ERROR_END_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                      SIMPLE CLEANUP                     *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef FT_NEED_EXTERN_C
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef FT_ERROR_START_LIST
 | 
			
		||||
#undef FT_ERROR_END_LIST
 | 
			
		||||
 | 
			
		||||
#undef FT_ERRORDEF
 | 
			
		||||
#undef FT_ERRORDEF_
 | 
			
		||||
#undef FT_NOERRORDEF_
 | 
			
		||||
 | 
			
		||||
#undef FT_NEED_EXTERN_C
 | 
			
		||||
#undef FT_ERR_CONCAT
 | 
			
		||||
#undef FT_ERR_BASE
 | 
			
		||||
 | 
			
		||||
  /* FT_KEEP_ERR_PREFIX is needed for ftvalid.h */
 | 
			
		||||
#ifndef FT_KEEP_ERR_PREFIX
 | 
			
		||||
#undef FT_ERR_PREFIX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __FTERRORS_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										113
									
								
								include/freetype/ftgasp.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								include/freetype/ftgasp.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftgasp.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Access of TrueType's `gasp' table (specification).                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2007, 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 _FT_GASP_H_
 | 
			
		||||
#define _FT_GASP_H_
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   gasp_table
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   Gasp Table
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   Retrieving TrueType `gasp' table entries
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The function @FT_Get_Gasp can be used to query a TrueType or OpenType
 | 
			
		||||
   *   font for specific entries in their `gasp' table, if any.  This is
 | 
			
		||||
   *   mainly useful when implementing native TrueType hinting with the
 | 
			
		||||
   *   bytecode interpreter to duplicate the Windows text rendering results.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_GASP_XXX
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A list of values and/or bit-flags returned by the @FT_Get_Gasp
 | 
			
		||||
   *   function.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_GASP_NO_TABLE ::
 | 
			
		||||
   *     This special value means that there is no GASP table in this face.
 | 
			
		||||
   *     It is up to the client to decide what to do.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_GASP_DO_GRIDFIT ::
 | 
			
		||||
   *     Grid-fitting and hinting should be performed at the specified ppem.
 | 
			
		||||
   *     This *really* means TrueType bytecode interpretation.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_GASP_DO_GRAY ::
 | 
			
		||||
   *     Anti-aliased rendering should be performed at the specified ppem.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_GASP_SYMMETRIC_SMOOTHING ::
 | 
			
		||||
   *     Smoothing along multiple axes must be used with ClearType.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_GASP_SYMMETRIC_GRIDFIT ::
 | 
			
		||||
   *     Grid-fitting must be used with ClearType's symmetric smoothing.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   `ClearType' is Microsoft's implementation of LCD rendering, partly
 | 
			
		||||
   *   protected by patents.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.3.0
 | 
			
		||||
   */
 | 
			
		||||
#define FT_GASP_NO_TABLE               -1
 | 
			
		||||
#define FT_GASP_DO_GRIDFIT           0x01
 | 
			
		||||
#define FT_GASP_DO_GRAY              0x02
 | 
			
		||||
#define FT_GASP_SYMMETRIC_SMOOTHING  0x08
 | 
			
		||||
#define FT_GASP_SYMMETRIC_GRIDFIT    0x10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @func:
 | 
			
		||||
   *   FT_Get_Gasp
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Read the `gasp' table from a TrueType or OpenType font file and
 | 
			
		||||
   *   return the entry corresponding to a given character pixel size.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   face :: The source face handle.
 | 
			
		||||
   *   ppem :: The vertical character pixel size.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no
 | 
			
		||||
   *   `gasp' table in the face.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.3.0
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Int )
 | 
			
		||||
  FT_Get_Gasp( FT_Face  face,
 | 
			
		||||
               FT_UInt  ppem );
 | 
			
		||||
 | 
			
		||||
/* */
 | 
			
		||||
 | 
			
		||||
#endif /* _FT_GASP_H_ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										575
									
								
								include/freetype/ftglyph.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										575
									
								
								include/freetype/ftglyph.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,575 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftglyph.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType convenience functions to handle glyphs (specification).     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2006 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 file contains the definition of several convenience functions    */
 | 
			
		||||
  /* that can be used by client applications to easily retrieve glyph      */
 | 
			
		||||
  /* bitmaps and outlines from a given face.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* These functions should be optional if you are writing a font server   */
 | 
			
		||||
  /* or text layout engine on top of FreeType.  However, they are pretty   */
 | 
			
		||||
  /* handy for many other simple uses of the library.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTGLYPH_H__
 | 
			
		||||
#define __FTGLYPH_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>                                                             */
 | 
			
		||||
  /*    glyph_management                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Glyph Management                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Generic interface to manage individual glyph data.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains definitions used to manage glyph data        */
 | 
			
		||||
  /*    through generic FT_Glyph objects.  Each of them can contain a      */
 | 
			
		||||
  /*    bitmap, a vector outline, or even images in other formats.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* forward declaration to a private type */
 | 
			
		||||
  typedef struct FT_Glyph_Class_  FT_Glyph_Class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Glyph                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Handle to an object used to model generic glyph images.  It is a   */
 | 
			
		||||
  /*    pointer to the @FT_GlyphRec structure and can contain a glyph      */
 | 
			
		||||
  /*    bitmap or pointer.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Glyph objects are not owned by the library.  You must thus release */
 | 
			
		||||
  /*    them manually (through @FT_Done_Glyph) _before_ calling            */
 | 
			
		||||
  /*    @FT_Done_FreeType.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_GlyphRec_*  FT_Glyph;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_GlyphRec                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The root glyph structure contains a given glyph image plus its     */
 | 
			
		||||
  /*    advance width in 16.16 fixed float format.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    library :: A handle to the FreeType library object.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    clazz   :: A pointer to the glyph's class.  Private.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    format  :: The format of the glyph's image.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    advance :: A 16.16 vector that gives the glyph's advance width.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_GlyphRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Library             library;
 | 
			
		||||
    const FT_Glyph_Class*  clazz;
 | 
			
		||||
    FT_Glyph_Format        format;
 | 
			
		||||
    FT_Vector              advance;
 | 
			
		||||
 | 
			
		||||
  } FT_GlyphRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_BitmapGlyph                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to an object used to model a bitmap glyph image.  This is */
 | 
			
		||||
  /*    a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_BitmapGlyphRec_*  FT_BitmapGlyph;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_BitmapGlyphRec                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used for bitmap glyph images.  This really is a        */
 | 
			
		||||
  /*    `sub-class' of @FT_GlyphRec.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    root   :: The root @FT_Glyph fields.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    left   :: The left-side bearing, i.e., the horizontal distance     */
 | 
			
		||||
  /*              from the current pen position to the left border of the  */
 | 
			
		||||
  /*              glyph bitmap.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    top    :: The top-side bearing, i.e., the vertical distance from   */
 | 
			
		||||
  /*              the current pen position to the top border of the glyph  */
 | 
			
		||||
  /*              bitmap.  This distance is positive for upwards-y!        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    bitmap :: A descriptor for the bitmap.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have       */
 | 
			
		||||
  /*    `glyph->format == FT_GLYPH_FORMAT_BITMAP'.  This lets you access   */
 | 
			
		||||
  /*    the bitmap's contents easily.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The corresponding pixel buffer is always owned by @FT_BitmapGlyph  */
 | 
			
		||||
  /*    and is thus created and destroyed with it.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_BitmapGlyphRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_GlyphRec  root;
 | 
			
		||||
    FT_Int       left;
 | 
			
		||||
    FT_Int       top;
 | 
			
		||||
    FT_Bitmap    bitmap;
 | 
			
		||||
 | 
			
		||||
  } FT_BitmapGlyphRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_OutlineGlyph                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to an object used to model an outline glyph image.  This  */
 | 
			
		||||
  /*    is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_OutlineGlyphRec_*  FT_OutlineGlyph;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_OutlineGlyphRec                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used for outline (vectorial) glyph images.  This       */
 | 
			
		||||
  /*    really is a `sub-class' of @FT_GlyphRec.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    root    :: The root @FT_Glyph fields.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    outline :: A descriptor for the outline.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You can typecast a @FT_Glyph to @FT_OutlineGlyph if you have       */
 | 
			
		||||
  /*    `glyph->format == FT_GLYPH_FORMAT_OUTLINE'.  This lets you access  */
 | 
			
		||||
  /*    the outline's content easily.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    As the outline is extracted from a glyph slot, its coordinates are */
 | 
			
		||||
  /*    expressed normally in 26.6 pixels, unless the flag                 */
 | 
			
		||||
  /*    @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The outline's tables are always owned by the object and are        */
 | 
			
		||||
  /*    destroyed with it.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_OutlineGlyphRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_GlyphRec  root;
 | 
			
		||||
    FT_Outline   outline;
 | 
			
		||||
 | 
			
		||||
  } FT_OutlineGlyphRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Glyph                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to extract a glyph image from a slot.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    slot   :: A handle to the source glyph slot.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aglyph :: A handle to the glyph object.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Glyph( FT_GlyphSlot  slot,
 | 
			
		||||
                FT_Glyph     *aglyph );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Glyph_Copy                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to copy a glyph image.  Note that the created      */
 | 
			
		||||
  /*    @FT_Glyph object must be released with @FT_Done_Glyph.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    source :: A handle to the source glyph object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    target :: A handle to the target glyph object.  0 in case of       */
 | 
			
		||||
  /*              error.                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_Copy( FT_Glyph   source,
 | 
			
		||||
                 FT_Glyph  *target );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Glyph_Transform                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Transforms a glyph image if its format is scalable.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    glyph  :: A handle to the target glyph object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    matrix :: A pointer to a 2x2 matrix to apply.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    delta  :: A pointer to a 2d vector to apply.  Coordinates are      */
 | 
			
		||||
  /*              expressed in 1/64th of a pixel.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code (if not 0, the glyph format is not scalable).  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The 2x2 transformation matrix is also applied to the glyph's       */
 | 
			
		||||
  /*    advance vector.                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_Transform( FT_Glyph    glyph,
 | 
			
		||||
                      FT_Matrix*  matrix,
 | 
			
		||||
                      FT_Vector*  delta );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    FT_Glyph_BBox_Mode                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The mode how the values of @FT_Glyph_Get_CBox are returned.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Values>                                                              */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_UNSCALED ::                                          */
 | 
			
		||||
  /*      Return unscaled font units.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_SUBPIXELS ::                                         */
 | 
			
		||||
  /*      Return unfitted 26.6 coordinates.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_GRIDFIT ::                                           */
 | 
			
		||||
  /*      Return grid-fitted 26.6 coordinates.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_TRUNCATE ::                                          */
 | 
			
		||||
  /*      Return coordinates in integer pixels.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_PIXELS ::                                            */
 | 
			
		||||
  /*      Return grid-fitted pixel coordinates.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  FT_Glyph_BBox_Mode_
 | 
			
		||||
  {
 | 
			
		||||
    FT_GLYPH_BBOX_UNSCALED  = 0,
 | 
			
		||||
    FT_GLYPH_BBOX_SUBPIXELS = 0,
 | 
			
		||||
    FT_GLYPH_BBOX_GRIDFIT   = 1,
 | 
			
		||||
    FT_GLYPH_BBOX_TRUNCATE  = 2,
 | 
			
		||||
    FT_GLYPH_BBOX_PIXELS    = 3
 | 
			
		||||
 | 
			
		||||
  } FT_Glyph_BBox_Mode;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    ft_glyph_bbox_xxx                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    These constants are deprecated.  Use the corresponding             */
 | 
			
		||||
  /*    @FT_Glyph_BBox_Mode values instead.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Values>                                                              */
 | 
			
		||||
  /*   ft_glyph_bbox_unscaled  :: See @FT_GLYPH_BBOX_UNSCALED.             */
 | 
			
		||||
  /*   ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS.            */
 | 
			
		||||
  /*   ft_glyph_bbox_gridfit   :: See @FT_GLYPH_BBOX_GRIDFIT.              */
 | 
			
		||||
  /*   ft_glyph_bbox_truncate  :: See @FT_GLYPH_BBOX_TRUNCATE.             */
 | 
			
		||||
  /*   ft_glyph_bbox_pixels    :: See @FT_GLYPH_BBOX_PIXELS.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define ft_glyph_bbox_unscaled   FT_GLYPH_BBOX_UNSCALED
 | 
			
		||||
#define ft_glyph_bbox_subpixels  FT_GLYPH_BBOX_SUBPIXELS
 | 
			
		||||
#define ft_glyph_bbox_gridfit    FT_GLYPH_BBOX_GRIDFIT
 | 
			
		||||
#define ft_glyph_bbox_truncate   FT_GLYPH_BBOX_TRUNCATE
 | 
			
		||||
#define ft_glyph_bbox_pixels     FT_GLYPH_BBOX_PIXELS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Glyph_Get_CBox                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return a glyph's `control box'.  The control box encloses all the  */
 | 
			
		||||
  /*    outline's points, including Bézier control points.  Though it      */
 | 
			
		||||
  /*    coincides with the exact bounding box for most glyphs, it can be   */
 | 
			
		||||
  /*    slightly larger in some situations (like when rotating an outline  */
 | 
			
		||||
  /*    which contains Bézier outside arcs).                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Computing the control box is very fast, while getting the bounding */
 | 
			
		||||
  /*    box can take much more time as it needs to walk over all segments  */
 | 
			
		||||
  /*    and arcs in the outline.  To get the latter, you can use the       */
 | 
			
		||||
  /*    `ftbbox' component which is dedicated to this single task.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    glyph :: A handle to the source glyph object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    mode  :: The mode which indicates how to interpret the returned    */
 | 
			
		||||
  /*             bounding box values.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    acbox :: The glyph coordinate bounding box.  Coordinates are       */
 | 
			
		||||
  /*             expressed in 1/64th of pixels if it is grid-fitted.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Coordinates are relative to the glyph origin, using the Y-upwards  */
 | 
			
		||||
  /*    convention.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode'   */
 | 
			
		||||
  /*    must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font        */
 | 
			
		||||
  /*    units in 26.6 pixel format.  The value @FT_GLYPH_BBOX_SUBPIXELS    */
 | 
			
		||||
  /*    is another name for this constant.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that the maximum coordinates are exclusive, which means that  */
 | 
			
		||||
  /*    one can compute the width and height of the glyph image (be it in  */
 | 
			
		||||
  /*    integer or 26.6 pixels) as:                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      width  = bbox.xMax - bbox.xMin;                                  */
 | 
			
		||||
  /*      height = bbox.yMax - bbox.yMin;                                  */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note also that for 26.6 coordinates, if `bbox_mode' is set to      */
 | 
			
		||||
  /*    @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted,  */
 | 
			
		||||
  /*    which corresponds to:                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      bbox.xMin = FLOOR(bbox.xMin);                                    */
 | 
			
		||||
  /*      bbox.yMin = FLOOR(bbox.yMin);                                    */
 | 
			
		||||
  /*      bbox.xMax = CEILING(bbox.xMax);                                  */
 | 
			
		||||
  /*      bbox.yMax = CEILING(bbox.yMax);                                  */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    To get the bbox in pixel coordinates, set `bbox_mode' to           */
 | 
			
		||||
  /*    @FT_GLYPH_BBOX_TRUNCATE.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    To get the bbox in grid-fitted pixel coordinates, set `bbox_mode'  */
 | 
			
		||||
  /*    to @FT_GLYPH_BBOX_PIXELS.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Glyph_Get_CBox( FT_Glyph  glyph,
 | 
			
		||||
                     FT_UInt   bbox_mode,
 | 
			
		||||
                     FT_BBox  *acbox );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Glyph_To_Bitmap                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Converts a given glyph object to a bitmap glyph object.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    the_glyph   :: A pointer to a handle to the target glyph.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    render_mode :: An enumeration that describe how the data is        */
 | 
			
		||||
  /*                   rendered.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    origin      :: A pointer to a vector used to translate the glyph   */
 | 
			
		||||
  /*                   image before rendering.  Can be 0 (if no            */
 | 
			
		||||
  /*                   translation).  The origin is expressed in           */
 | 
			
		||||
  /*                   26.6 pixels.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    destroy     :: A boolean that indicates that the original glyph    */
 | 
			
		||||
  /*                   image should be destroyed by this function.  It is  */
 | 
			
		||||
  /*                   never destroyed in case of error.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The glyph image is translated with the `origin' vector before      */
 | 
			
		||||
  /*    rendering.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The first parameter is a pointer to an @FT_Glyph handle, that will */
 | 
			
		||||
  /*    be replaced by this function.  Typically, you would use (omitting  */
 | 
			
		||||
  /*    error handling):                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*      {                                                                */
 | 
			
		||||
  /*        FT_Glyph        glyph;                                         */
 | 
			
		||||
  /*        FT_BitmapGlyph  glyph_bitmap;                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // load glyph                                                  */
 | 
			
		||||
  /*        error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT );     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // extract glyph image                                         */
 | 
			
		||||
  /*        error = FT_Get_Glyph( face->glyph, &glyph );                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // convert to a bitmap (default render mode + destroy old)     */
 | 
			
		||||
  /*        if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )                 */
 | 
			
		||||
  /*        {                                                              */
 | 
			
		||||
  /*          error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT,  */
 | 
			
		||||
  /*                                      0, 1 );                          */
 | 
			
		||||
  /*          if ( error ) // glyph unchanged                              */
 | 
			
		||||
  /*            ...                                                        */
 | 
			
		||||
  /*        }                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // access bitmap content by typecasting                        */
 | 
			
		||||
  /*        glyph_bitmap = (FT_BitmapGlyph)glyph;                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // do funny stuff with it, like blitting/drawing               */
 | 
			
		||||
  /*        ...                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // discard glyph image (bitmap or not)                         */
 | 
			
		||||
  /*        FT_Done_Glyph( glyph );                                        */
 | 
			
		||||
  /*      }                                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function does nothing if the glyph format isn't scalable.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_To_Bitmap( FT_Glyph*       the_glyph,
 | 
			
		||||
                      FT_Render_Mode  render_mode,
 | 
			
		||||
                      FT_Vector*      origin,
 | 
			
		||||
                      FT_Bool         destroy );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Done_Glyph                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroys a given glyph.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    glyph :: A handle to the target glyph object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Done_Glyph( FT_Glyph  glyph );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* other helpful functions */
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    computations                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Matrix_Multiply                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Performs the matrix operation `b = a*b'.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    a :: A pointer to matrix `a'.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    b :: A pointer to matrix `b'.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The result is undefined if either `a' or `b' is zero.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Matrix_Multiply( const FT_Matrix*  a,
 | 
			
		||||
                      FT_Matrix*        b );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Matrix_Invert                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Inverts a 2x2 matrix.  Returns an error if it can't be inverted.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    matrix :: A pointer to the target matrix.  Remains untouched in    */
 | 
			
		||||
  /*              case of error.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Matrix_Invert( FT_Matrix*  matrix );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTGLYPH_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
							
								
								
									
										358
									
								
								include/freetype/ftgxval.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										358
									
								
								include/freetype/ftgxval.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,358 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftgxval.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004, 2005, 2006 by                                          */
 | 
			
		||||
/*  Masatake YAMATO, Redhat K.K,                                           */
 | 
			
		||||
/*  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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* gxvalid is derived from both gxlayout module and otvalid module.        */
 | 
			
		||||
/* Development of gxlayout is supported by the Information-technology      */
 | 
			
		||||
/* Promotion Agency(IPA), Japan.                                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTGXVAL_H__
 | 
			
		||||
#define __FTGXVAL_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>                                                             */
 | 
			
		||||
  /*    gx_validation                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    TrueTypeGX/AAT Validation                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    An API to validate TrueTypeGX/AAT tables.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of functions to validate     */
 | 
			
		||||
  /*    some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd,  */
 | 
			
		||||
  /*    trak, prop, lcar).                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Warning: Use FT_VALIDATE_XXX to validate a table.                     */
 | 
			
		||||
  /*          Following definitions are for gxvalid developers.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_feat_INDEX     0
 | 
			
		||||
#define FT_VALIDATE_mort_INDEX     1
 | 
			
		||||
#define FT_VALIDATE_morx_INDEX     2
 | 
			
		||||
#define FT_VALIDATE_bsln_INDEX     3
 | 
			
		||||
#define FT_VALIDATE_just_INDEX     4
 | 
			
		||||
#define FT_VALIDATE_kern_INDEX     5
 | 
			
		||||
#define FT_VALIDATE_opbd_INDEX     6
 | 
			
		||||
#define FT_VALIDATE_trak_INDEX     7
 | 
			
		||||
#define FT_VALIDATE_prop_INDEX     8
 | 
			
		||||
#define FT_VALIDATE_lcar_INDEX     9
 | 
			
		||||
#define FT_VALIDATE_GX_LAST_INDEX  FT_VALIDATE_lcar_INDEX
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_VALIDATE_GX_LENGTH
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The number of tables checked in this module.  Use it as a parameter
 | 
			
		||||
   *   for the `table-length' argument of function @FT_TrueTypeGX_Validate.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_VALIDATE_GX_LENGTH     (FT_VALIDATE_GX_LAST_INDEX + 1)
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
  /* Up to 0x1000 is used by otvalid.
 | 
			
		||||
     Ox2xxx is reserved for feature OT extension. */
 | 
			
		||||
#define FT_VALIDATE_GX_START 0x4000
 | 
			
		||||
#define FT_VALIDATE_GX_BITFIELD( tag )                  \
 | 
			
		||||
  ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *    FT_VALIDATE_GXXXX
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    A list of bit-field constants used with @FT_TrueTypeGX_Validate to
 | 
			
		||||
  *    indicate which TrueTypeGX/AAT Type tables should be validated.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *    FT_VALIDATE_feat ::
 | 
			
		||||
  *      Validate `feat' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_mort ::
 | 
			
		||||
  *      Validate `mort' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_morx ::
 | 
			
		||||
  *      Validate `morx' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_bsln ::
 | 
			
		||||
  *      Validate `bsln' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_just ::
 | 
			
		||||
  *      Validate `just' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_kern ::
 | 
			
		||||
  *      Validate `kern' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_opbd ::
 | 
			
		||||
  *      Validate `opbd' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_trak ::
 | 
			
		||||
  *      Validate `trak' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_prop ::
 | 
			
		||||
  *      Validate `prop' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_lcar ::
 | 
			
		||||
  *      Validate `lcar' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_GX ::
 | 
			
		||||
  *      Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
 | 
			
		||||
  *      opbd, trak, prop and lcar).
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD( feat )
 | 
			
		||||
#define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD( mort )
 | 
			
		||||
#define FT_VALIDATE_morx  FT_VALIDATE_GX_BITFIELD( morx )
 | 
			
		||||
#define FT_VALIDATE_bsln  FT_VALIDATE_GX_BITFIELD( bsln )
 | 
			
		||||
#define FT_VALIDATE_just  FT_VALIDATE_GX_BITFIELD( just )
 | 
			
		||||
#define FT_VALIDATE_kern  FT_VALIDATE_GX_BITFIELD( kern )
 | 
			
		||||
#define FT_VALIDATE_opbd  FT_VALIDATE_GX_BITFIELD( opbd )
 | 
			
		||||
#define FT_VALIDATE_trak  FT_VALIDATE_GX_BITFIELD( trak )
 | 
			
		||||
#define FT_VALIDATE_prop  FT_VALIDATE_GX_BITFIELD( prop )
 | 
			
		||||
#define FT_VALIDATE_lcar  FT_VALIDATE_GX_BITFIELD( lcar )
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_GX  ( FT_VALIDATE_feat | \
 | 
			
		||||
                          FT_VALIDATE_mort | \
 | 
			
		||||
                          FT_VALIDATE_morx | \
 | 
			
		||||
                          FT_VALIDATE_bsln | \
 | 
			
		||||
                          FT_VALIDATE_just | \
 | 
			
		||||
                          FT_VALIDATE_kern | \
 | 
			
		||||
                          FT_VALIDATE_opbd | \
 | 
			
		||||
                          FT_VALIDATE_trak | \
 | 
			
		||||
                          FT_VALIDATE_prop | \
 | 
			
		||||
                          FT_VALIDATE_lcar )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_TrueTypeGX_Validate
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Validate various TrueTypeGX tables to assure that all offsets and
 | 
			
		||||
  *    indices are valid.  The idea is that a higher-level library which
 | 
			
		||||
  *    actually does the text layout can access those tables without
 | 
			
		||||
  *    error checking (which can be quite time consuming).
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    validation_flags ::
 | 
			
		||||
  *       A bit field which specifies the tables to be validated.  See
 | 
			
		||||
  *       @FT_VALIDATE_GXXXX for possible values.
 | 
			
		||||
  *
 | 
			
		||||
  *    table_length ::
 | 
			
		||||
  *       The size of the `tables' array.  Normally, @FT_VALIDATE_GX_LENGTH
 | 
			
		||||
  *       should be passed.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    tables ::
 | 
			
		||||
  *       The array where all validated sfnt tables are stored.
 | 
			
		||||
  *       The array itself must be allocated by a client.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function only works with TrueTypeGX fonts, returning an error
 | 
			
		||||
  *   otherwise.
 | 
			
		||||
  *
 | 
			
		||||
  *   After use, the application should deallocate the buffers pointed to by
 | 
			
		||||
  *   each `tables' element, by calling @FT_TrueTypeGX_Free.  A NULL value
 | 
			
		||||
  *   indicates that the table either doesn't exist in the font, the
 | 
			
		||||
  *   application hasn't asked for validation, or the validator doesn't have
 | 
			
		||||
  *   the ability to validate the sfnt table.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_TrueTypeGX_Validate( FT_Face   face,
 | 
			
		||||
                          FT_UInt   validation_flags,
 | 
			
		||||
                          FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
 | 
			
		||||
                          FT_UInt   table_length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_TrueTypeGX_Free
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Free the buffer allocated by TrueTypeGX validator.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    table ::
 | 
			
		||||
  *       The pointer to the buffer allocated by
 | 
			
		||||
  *       @FT_TrueTypeGX_Validate.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function must be used to free the buffer allocated by
 | 
			
		||||
  *   @FT_TrueTypeGX_Validate only.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_TrueTypeGX_Free( FT_Face   face,
 | 
			
		||||
                      FT_Bytes  table );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *    FT_VALIDATE_CKERNXXX
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    A list of bit-field constants used with @FT_ClassicKern_Validate
 | 
			
		||||
  *    to indicate the classic kern dialect or dialects.  If the selected
 | 
			
		||||
  *    type doesn't fit, @FT_ClassicKern_Validate regards the table as
 | 
			
		||||
  *    invalid.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *    FT_VALIDATE_MS ::
 | 
			
		||||
  *      Handle the `kern' table as a classic Microsoft kern table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_APPLE ::
 | 
			
		||||
  *      Handle the `kern' table as a classic Apple kern table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_CKERN ::
 | 
			
		||||
  *      Handle the `kern' as either classic Apple or Microsoft kern table.
 | 
			
		||||
  */
 | 
			
		||||
#define FT_VALIDATE_MS     ( FT_VALIDATE_GX_START << 0 )
 | 
			
		||||
#define FT_VALIDATE_APPLE  ( FT_VALIDATE_GX_START << 1 )
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_CKERN  ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_ClassicKern_Validate
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Validate classic (16bit format) kern table to assure that the offsets
 | 
			
		||||
  *    and indices are valid.  The idea is that a higher-level library which
 | 
			
		||||
  *    actually does the text layout can access those tables without error
 | 
			
		||||
  *    checking (which can be quite time consuming).
 | 
			
		||||
  *
 | 
			
		||||
  *    The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
 | 
			
		||||
  *    the new 32bit format and the classic 16bit format, while
 | 
			
		||||
  *    FT_ClassicKern_Validate only supports the classic 16bit format.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    validation_flags ::
 | 
			
		||||
  *       A bit field which specifies the dialect to be validated.  See
 | 
			
		||||
  *       @FT_VALIDATE_CKERNXXX for possible values.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    ckern_table ::
 | 
			
		||||
  *       A pointer to the kern table.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   After use, the application should deallocate the buffers pointed to by
 | 
			
		||||
  *   `ckern_table', by calling @FT_ClassicKern_Free.  A NULL value
 | 
			
		||||
  *   indicates that the table doesn't exist in the font.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_ClassicKern_Validate( FT_Face    face,
 | 
			
		||||
                           FT_UInt    validation_flags,
 | 
			
		||||
                           FT_Bytes  *ckern_table );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_ClassicKern_Free
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Free the buffer allocated by classic Kern validator.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    table ::
 | 
			
		||||
  *       The pointer to the buffer that is allocated by
 | 
			
		||||
  *       @FT_ClassicKern_Validate.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function must be used to free the buffer allocated by
 | 
			
		||||
  *   @FT_ClassicKern_Validate only.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_ClassicKern_Free( FT_Face   face,
 | 
			
		||||
                       FT_Bytes  table );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTGXVAL_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										102
									
								
								include/freetype/ftgzip.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								include/freetype/ftgzip.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,102 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftgzip.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Gzip-compressed stream support.                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2003, 2004, 2006 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 __FTGZIP_H__
 | 
			
		||||
#define __FTGZIP_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>                                                             */
 | 
			
		||||
  /*    gzip                                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    GZIP Streams                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Using gzip-compressed font files.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of Gzip-specific functions.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Stream_OpenGzip
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Open a new stream to parse gzip-compressed font files.  This is
 | 
			
		||||
  *   mainly used to support the compressed `*.pcf.gz' fonts that come
 | 
			
		||||
  *   with XFree86.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   stream ::
 | 
			
		||||
  *     The target embedding stream.
 | 
			
		||||
  *
 | 
			
		||||
  *   source ::
 | 
			
		||||
  *     The source stream.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   The source stream must be opened _before_ calling this function.
 | 
			
		||||
  *
 | 
			
		||||
  *   Calling the internal function `FT_Stream_Close' on the new stream will
 | 
			
		||||
  *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
 | 
			
		||||
  *   objects will be released to the heap.
 | 
			
		||||
  *
 | 
			
		||||
  *   The stream implementation is very basic and resets the decompression
 | 
			
		||||
  *   process each time seeking backwards is needed within the stream.
 | 
			
		||||
  *
 | 
			
		||||
  *   In certain builds of the library, gzip compression recognition is
 | 
			
		||||
  *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
 | 
			
		||||
  *   This means that if no font driver is capable of handling the raw
 | 
			
		||||
  *   compressed file, the library will try to open a gzipped stream from
 | 
			
		||||
  *   it and re-open the face with it.
 | 
			
		||||
  *
 | 
			
		||||
  *   This function may return `FT_Err_Unimplemented_Feature' if your build
 | 
			
		||||
  *   of FreeType was not compiled with zlib support.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stream_OpenGzip( FT_Stream  stream,
 | 
			
		||||
                      FT_Stream  source );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTGZIP_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										1246
									
								
								include/freetype/ftimage.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1246
									
								
								include/freetype/ftimage.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										349
									
								
								include/freetype/ftincrem.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										349
									
								
								include/freetype/ftincrem.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,349 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftincrem.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType incremental loading (specification).                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2003, 2006, 2007, 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 __FTINCREM_H__
 | 
			
		||||
#define __FTINCREM_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:
 | 
			
		||||
   *    incremental
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *    Incremental Loading
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *    Custom Glyph Loading.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This section contains various functions used to perform so-called
 | 
			
		||||
   *   `incremental' glyph loading.  This is a mode where all glyphs loaded
 | 
			
		||||
   *   from a given @FT_Face are provided by the client application,
 | 
			
		||||
   *
 | 
			
		||||
   *   Apart from that, all other tables are loaded normally from the font
 | 
			
		||||
   *   file.  This mode is useful when FreeType is used within another
 | 
			
		||||
   *   engine, e.g., a Postscript Imaging Processor.
 | 
			
		||||
   *
 | 
			
		||||
   *   To enable this mode, you must use @FT_Open_Face, passing an
 | 
			
		||||
   *   @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an
 | 
			
		||||
   *   @FT_Incremental_Interface value.  See the comments for
 | 
			
		||||
   *   @FT_Incremental_InterfaceRec for an example.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   An opaque type describing a user-provided object used to implement
 | 
			
		||||
   *   `incremental' glyph loading within FreeType.  This is used to support
 | 
			
		||||
   *   embedded fonts in certain environments (e.g., Postscript interpreters),
 | 
			
		||||
   *   where the glyph data isn't in the font file, or must be overridden by
 | 
			
		||||
   *   different values.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   It is up to client applications to create and implement @FT_Incremental
 | 
			
		||||
   *   objects, as long as they provide implementations for the methods
 | 
			
		||||
   *   @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc
 | 
			
		||||
   *   and @FT_Incremental_GetGlyphMetricsFunc.
 | 
			
		||||
   *
 | 
			
		||||
   *   See the description of @FT_Incremental_InterfaceRec to understand how
 | 
			
		||||
   *   to use incremental objects with FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct FT_IncrementalRec_*  FT_Incremental;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Incremental_MetricsRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A small structure used to contain the basic glyph metrics returned
 | 
			
		||||
   *   by the @FT_Incremental_GetGlyphMetricsFunc method.
 | 
			
		||||
   *
 | 
			
		||||
   * @fields:
 | 
			
		||||
   *   bearing_x ::
 | 
			
		||||
   *     Left bearing, in font units.
 | 
			
		||||
   *
 | 
			
		||||
   *   bearing_y ::
 | 
			
		||||
   *     Top bearing, in font units.
 | 
			
		||||
   *
 | 
			
		||||
   *   advance ::
 | 
			
		||||
   *     Glyph advance, in font units.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   These correspond to horizontal or vertical metrics depending on the
 | 
			
		||||
   *   value of the `vertical' argument to the function
 | 
			
		||||
   *   @FT_Incremental_GetGlyphMetricsFunc.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_Incremental_MetricsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Long  bearing_x;
 | 
			
		||||
    FT_Long  bearing_y;
 | 
			
		||||
    FT_Long  advance;
 | 
			
		||||
 | 
			
		||||
  } FT_Incremental_MetricsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Incremental_Metrics
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A handle to an @FT_Incremental_MetricsRec structure.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
   typedef struct FT_Incremental_MetricsRec_*  FT_Incremental_Metrics;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental_GetGlyphDataFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function called by FreeType to access a given glyph's data bytes
 | 
			
		||||
   *   during @FT_Load_Glyph or @FT_Load_Char if incremental loading is
 | 
			
		||||
   *   enabled.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that the format of the glyph's data bytes depends on the font
 | 
			
		||||
   *   file format.  For TrueType, it must correspond to the raw bytes within
 | 
			
		||||
   *   the `glyf' table.  For Postscript formats, it must correspond to the
 | 
			
		||||
   *   *unencrypted* charstring bytes, without any `lenIV' header.  It is
 | 
			
		||||
   *   undefined for any other format.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   incremental ::
 | 
			
		||||
   *     Handle to an opaque @FT_Incremental handle provided by the client
 | 
			
		||||
   *     application.
 | 
			
		||||
   *
 | 
			
		||||
   *   glyph_index ::
 | 
			
		||||
   *     Index of relevant glyph.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   adata ::
 | 
			
		||||
   *     A structure describing the returned glyph data bytes (which will be
 | 
			
		||||
   *     accessed as a read-only byte block).
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If this function returns successfully the method
 | 
			
		||||
   *   @FT_Incremental_FreeGlyphDataFunc will be called later to release
 | 
			
		||||
   *   the data bytes.
 | 
			
		||||
   *
 | 
			
		||||
   *   Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for
 | 
			
		||||
   *   compound glyphs.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental  incremental,
 | 
			
		||||
                                      FT_UInt         glyph_index,
 | 
			
		||||
                                      FT_Data*        adata );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental_FreeGlyphDataFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to release the glyph data bytes returned by a
 | 
			
		||||
   *   successful call to @FT_Incremental_GetGlyphDataFunc.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   incremental ::
 | 
			
		||||
   *     A handle to an opaque @FT_Incremental handle provided by the client
 | 
			
		||||
   *     application.
 | 
			
		||||
   *
 | 
			
		||||
   *   data ::
 | 
			
		||||
   *     A structure describing the glyph data bytes (which will be accessed
 | 
			
		||||
   *     as a read-only byte block).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental  incremental,
 | 
			
		||||
                                       FT_Data*        data );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental_GetGlyphMetricsFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to retrieve the basic metrics of a given glyph index
 | 
			
		||||
   *   before accessing its data.  This is necessary because, in certain
 | 
			
		||||
   *   formats like TrueType, the metrics are stored in a different place from
 | 
			
		||||
   *   the glyph images proper.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   incremental ::
 | 
			
		||||
   *     A handle to an opaque @FT_Incremental handle provided by the client
 | 
			
		||||
   *     application.
 | 
			
		||||
   *
 | 
			
		||||
   *   glyph_index ::
 | 
			
		||||
   *     Index of relevant glyph.
 | 
			
		||||
   *
 | 
			
		||||
   *   vertical ::
 | 
			
		||||
   *     If true, return vertical metrics.
 | 
			
		||||
   *
 | 
			
		||||
   *   ametrics ::
 | 
			
		||||
   *     This parameter is used for both input and output.
 | 
			
		||||
   *     The original glyph metrics, if any, in font units.  If metrics are
 | 
			
		||||
   *     not available all the values must be set to zero.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   ametrics ::
 | 
			
		||||
   *     The replacement glyph metrics in font units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Incremental_GetGlyphMetricsFunc)
 | 
			
		||||
                      ( FT_Incremental              incremental,
 | 
			
		||||
                        FT_UInt                     glyph_index,
 | 
			
		||||
                        FT_Bool                     vertical,
 | 
			
		||||
                        FT_Incremental_MetricsRec  *ametrics );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Incremental_FuncsRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A table of functions for accessing fonts that load data
 | 
			
		||||
   *   incrementally.  Used in @FT_Incremental_InterfaceRec.
 | 
			
		||||
   *
 | 
			
		||||
   * @fields:
 | 
			
		||||
   *   get_glyph_data ::
 | 
			
		||||
   *     The function to get glyph data.  Must not be null.
 | 
			
		||||
   *
 | 
			
		||||
   *   free_glyph_data ::
 | 
			
		||||
   *     The function to release glyph data.  Must not be null.
 | 
			
		||||
   *
 | 
			
		||||
   *   get_glyph_metrics ::
 | 
			
		||||
   *     The function to get glyph metrics.  May be null if the font does
 | 
			
		||||
   *     not provide overriding glyph metrics.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_Incremental_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Incremental_GetGlyphDataFunc     get_glyph_data;
 | 
			
		||||
    FT_Incremental_FreeGlyphDataFunc    free_glyph_data;
 | 
			
		||||
    FT_Incremental_GetGlyphMetricsFunc  get_glyph_metrics;
 | 
			
		||||
 | 
			
		||||
  } FT_Incremental_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Incremental_InterfaceRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A structure to be used with @FT_Open_Face to indicate that the user
 | 
			
		||||
   *   wants to support incremental glyph loading.  You should use it with
 | 
			
		||||
   *   @FT_PARAM_TAG_INCREMENTAL as in the following example:
 | 
			
		||||
   *
 | 
			
		||||
   *     {
 | 
			
		||||
   *       FT_Incremental_InterfaceRec  inc_int;
 | 
			
		||||
   *       FT_Parameter                 parameter;
 | 
			
		||||
   *       FT_Open_Args                 open_args;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *       // set up incremental descriptor
 | 
			
		||||
   *       inc_int.funcs  = my_funcs;
 | 
			
		||||
   *       inc_int.object = my_object;
 | 
			
		||||
   *
 | 
			
		||||
   *       // set up optional parameter
 | 
			
		||||
   *       parameter.tag  = FT_PARAM_TAG_INCREMENTAL;
 | 
			
		||||
   *       parameter.data = &inc_int;
 | 
			
		||||
   *
 | 
			
		||||
   *       // set up FT_Open_Args structure
 | 
			
		||||
   *       open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;
 | 
			
		||||
   *       open_args.pathname   = my_font_pathname;
 | 
			
		||||
   *       open_args.num_params = 1;
 | 
			
		||||
   *       open_args.params     = ¶meter; // we use one optional argument
 | 
			
		||||
   *
 | 
			
		||||
   *       // open the font
 | 
			
		||||
   *       error = FT_Open_Face( library, &open_args, index, &face );
 | 
			
		||||
   *       ...
 | 
			
		||||
   *     }
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_Incremental_InterfaceRec_
 | 
			
		||||
  {
 | 
			
		||||
    const FT_Incremental_FuncsRec*  funcs;
 | 
			
		||||
    FT_Incremental                  object;
 | 
			
		||||
 | 
			
		||||
  } FT_Incremental_InterfaceRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental_Interface
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A pointer to an @FT_Incremental_InterfaceRec structure.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Incremental_InterfaceRec*   FT_Incremental_Interface;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @constant:
 | 
			
		||||
   *   FT_PARAM_TAG_INCREMENTAL
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A constant used as the tag of @FT_Parameter structures to indicate
 | 
			
		||||
   *   an incremental loading object to be used by FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_PARAM_TAG_INCREMENTAL  FT_MAKE_TAG( 'i', 'n', 'c', 'r' )
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTINCREM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										166
									
								
								include/freetype/ftlcdfil.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								include/freetype/ftlcdfil.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,166 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftlcdfil.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for color filtering of subpixel bitmap glyphs           */
 | 
			
		||||
/*    (specification).                                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2006, 2007, 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 __FT_LCD_FILTER_H__
 | 
			
		||||
#define __FT_LCD_FILTER_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   lcd_filtering
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   LCD Filtering
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   Reduce color fringes of LCD-optimized bitmaps.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The @FT_Library_SetLcdFilter API can be used to specify a low-pass
 | 
			
		||||
   *   filter which is then applied to LCD-optimized bitmaps generated
 | 
			
		||||
   *   through @FT_Render_Glyph.  This is useful to reduce color fringes
 | 
			
		||||
   *   which would occur with unfiltered rendering.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that no filter is active by default, and that this function is
 | 
			
		||||
   *   *not* implemented in default builds of the library.  You need to
 | 
			
		||||
   *   #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file
 | 
			
		||||
   *   in order to activate it.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /****************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @func:
 | 
			
		||||
   *   FT_LcdFilter
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A list of values to identify various types of LCD filters.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_LCD_FILTER_NONE ::
 | 
			
		||||
   *     Do not perform filtering.  When used with subpixel rendering, this
 | 
			
		||||
   *     results in sometimes severe color fringes.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_LCD_FILTER_DEFAULT ::
 | 
			
		||||
   *     The default filter reduces color fringes considerably, at the cost
 | 
			
		||||
   *     of a slight blurriness in the output.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_LCD_FILTER_LIGHT ::
 | 
			
		||||
   *     The light filter is a variant that produces less blurriness at the
 | 
			
		||||
   *     cost of slightly more color fringes than the default one.  It might
 | 
			
		||||
   *     be better, depending on taste, your monitor, or your personal vision.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_LCD_FILTER_LEGACY ::
 | 
			
		||||
   *     This filter corresponds to the original libXft color filter.  It
 | 
			
		||||
   *     provides high contrast output but can exhibit really bad color
 | 
			
		||||
   *     fringes if glyphs are not extremely well hinted to the pixel grid.
 | 
			
		||||
   *     In other words, it only works well if the TrueType bytecode
 | 
			
		||||
   *     interpreter is enabled *and* high-quality hinted fonts are used.
 | 
			
		||||
   *
 | 
			
		||||
   *     This filter is only provided for comparison purposes, and might be
 | 
			
		||||
   *     disabled or stay unsupported in the future.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.3.0
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_LcdFilter_
 | 
			
		||||
  {
 | 
			
		||||
    FT_LCD_FILTER_NONE    = 0,
 | 
			
		||||
    FT_LCD_FILTER_DEFAULT = 1,
 | 
			
		||||
    FT_LCD_FILTER_LIGHT   = 2,
 | 
			
		||||
    FT_LCD_FILTER_LEGACY  = 16,
 | 
			
		||||
 | 
			
		||||
    FT_LCD_FILTER_MAX   /* do not remove */
 | 
			
		||||
 | 
			
		||||
  } FT_LcdFilter;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @func:
 | 
			
		||||
   *   FT_Library_SetLcdFilter
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This function is used to apply color filtering to LCD decimated
 | 
			
		||||
   *   bitmaps, like the ones used when calling @FT_Render_Glyph with
 | 
			
		||||
   *   @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   library ::
 | 
			
		||||
   *     A handle to the target library instance.
 | 
			
		||||
   *
 | 
			
		||||
   *   filter ::
 | 
			
		||||
   *     The filter type.
 | 
			
		||||
   *
 | 
			
		||||
   *     You can use @FT_LCD_FILTER_NONE here to disable this feature, or
 | 
			
		||||
   *     @FT_LCD_FILTER_DEFAULT to use a default filter that should work
 | 
			
		||||
   *     well on most LCD screens.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This feature is always disabled by default.  Clients must make an
 | 
			
		||||
   *   explicit call to this function with a `filter' value other than
 | 
			
		||||
   *   @FT_LCD_FILTER_NONE in order to enable it.
 | 
			
		||||
   *
 | 
			
		||||
   *   Due to *PATENTS* covering subpixel rendering, this function doesn't
 | 
			
		||||
   *   do anything except returning `FT_Err_Unimplemented_Feature' if the
 | 
			
		||||
   *   configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
 | 
			
		||||
   *   defined in your build of the library, which should correspond to all
 | 
			
		||||
   *   default builds of FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   *   The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
 | 
			
		||||
   *   @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char.
 | 
			
		||||
   *
 | 
			
		||||
   *   It does _not_ affect the output of @FT_Outline_Render and
 | 
			
		||||
   *   @FT_Outline_Get_Bitmap.
 | 
			
		||||
   *
 | 
			
		||||
   *   If this feature is activated, the dimensions of LCD glyph bitmaps are
 | 
			
		||||
   *   either larger or taller than the dimensions of the corresponding
 | 
			
		||||
   *   outline with regards to the pixel grid.  For example, for
 | 
			
		||||
   *   @FT_RENDER_MODE_LCD, the filter adds up to 3 pixels to the left, and
 | 
			
		||||
   *   up to 3 pixels to the right.
 | 
			
		||||
   *
 | 
			
		||||
   *   The bitmap offset values are adjusted correctly, so clients shouldn't
 | 
			
		||||
   *   need to modify their layout and glyph positioning code when enabling
 | 
			
		||||
   *   the filter.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.3.0
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Library_SetLcdFilter( FT_Library    library,
 | 
			
		||||
                           FT_LcdFilter  filter );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FT_LCD_FILTER_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										273
									
								
								include/freetype/ftlist.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										273
									
								
								include/freetype/ftlist.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,273 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftlist.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Generic list support for FreeType (specification).                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2003, 2007 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 file implements functions relative to list processing.  Its     */
 | 
			
		||||
  /*  data structures are defined in `freetype.h'.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTLIST_H__
 | 
			
		||||
#define __FTLIST_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>                                                             */
 | 
			
		||||
  /*    list_processing                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    List Processing                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Simple management of lists.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains various definitions related to list          */
 | 
			
		||||
  /*    processing using doubly-linked nodes.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_List                                                            */
 | 
			
		||||
  /*    FT_ListNode                                                        */
 | 
			
		||||
  /*    FT_ListRec                                                         */
 | 
			
		||||
  /*    FT_ListNodeRec                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_List_Add                                                        */
 | 
			
		||||
  /*    FT_List_Insert                                                     */
 | 
			
		||||
  /*    FT_List_Find                                                       */
 | 
			
		||||
  /*    FT_List_Remove                                                     */
 | 
			
		||||
  /*    FT_List_Up                                                         */
 | 
			
		||||
  /*    FT_List_Iterate                                                    */
 | 
			
		||||
  /*    FT_List_Iterator                                                   */
 | 
			
		||||
  /*    FT_List_Finalize                                                   */
 | 
			
		||||
  /*    FT_List_Destructor                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Find                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Finds the list node for a given listed object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    list :: A pointer to the parent list.                              */
 | 
			
		||||
  /*    data :: The address of the listed object.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    List node.  NULL if it wasn't found.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_ListNode )
 | 
			
		||||
  FT_List_Find( FT_List  list,
 | 
			
		||||
                void*    data );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Add                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Appends an element to the end of a list.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    list :: A pointer to the parent list.                              */
 | 
			
		||||
  /*    node :: The node to append.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Add( FT_List      list,
 | 
			
		||||
               FT_ListNode  node );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Insert                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Inserts an element at the head of a list.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    list :: A pointer to parent list.                                  */
 | 
			
		||||
  /*    node :: The node to insert.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Insert( FT_List      list,
 | 
			
		||||
                  FT_ListNode  node );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Remove                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Removes a node from a list.  This function doesn't check whether   */
 | 
			
		||||
  /*    the node is in the list!                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    node :: The node to remove.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    list :: A pointer to the parent list.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Remove( FT_List      list,
 | 
			
		||||
                  FT_ListNode  node );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Up                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Moves a node to the head/top of a list.  Used to maintain LRU      */
 | 
			
		||||
  /*    lists.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    list :: A pointer to the parent list.                              */
 | 
			
		||||
  /*    node :: The node to move.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Up( FT_List      list,
 | 
			
		||||
              FT_ListNode  node );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_List_Iterator                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An FT_List iterator function which is called during a list parse   */
 | 
			
		||||
  /*    by @FT_List_Iterate.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    node :: The current iteration list node.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    user :: A typeless pointer passed to @FT_List_Iterate.             */
 | 
			
		||||
  /*            Can be used to point to the iteration's state.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_List_Iterator)( FT_ListNode  node,
 | 
			
		||||
                       void*        user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Iterate                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Parses a list and calls a given iterator function on each element. */
 | 
			
		||||
  /*    Note that parsing is stopped as soon as one of the iterator calls  */
 | 
			
		||||
  /*    returns a non-zero value.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    list     :: A handle to the list.                                  */
 | 
			
		||||
  /*    iterator :: An iterator function, called on each node of the list. */
 | 
			
		||||
  /*    user     :: A user-supplied field which is passed as the second    */
 | 
			
		||||
  /*                argument to the iterator.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The result (a FreeType error code) of the last iterator call.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_List_Iterate( FT_List           list,
 | 
			
		||||
                   FT_List_Iterator  iterator,
 | 
			
		||||
                   void*             user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_List_Destructor                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An @FT_List iterator function which is called during a list        */
 | 
			
		||||
  /*    finalization by @FT_List_Finalize to destroy all elements in a     */
 | 
			
		||||
  /*    given list.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    system :: The current system object.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    data   :: The current object to destroy.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    user   :: A typeless pointer passed to @FT_List_Iterate.  It can   */
 | 
			
		||||
  /*              be used to point to the iteration's state.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_List_Destructor)( FT_Memory  memory,
 | 
			
		||||
                         void*      data,
 | 
			
		||||
                         void*      user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Finalize                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroys all elements in the list as well as the list itself.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    list    :: A handle to the list.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    destroy :: A list destructor that will be applied to each element  */
 | 
			
		||||
  /*               of the list.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    memory  :: The current memory object which handles deallocation.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    user    :: A user-supplied field which is passed as the last       */
 | 
			
		||||
  /*               argument to the destructor.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Finalize( FT_List             list,
 | 
			
		||||
                    FT_List_Destructor  destroy,
 | 
			
		||||
                    FT_Memory           memory,
 | 
			
		||||
                    void*               user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTLIST_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										99
									
								
								include/freetype/ftlzw.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								include/freetype/ftlzw.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftlzw.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    LZW-compressed stream support.                                       */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004, 2006 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 __FTLZW_H__
 | 
			
		||||
#define __FTLZW_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>                                                             */
 | 
			
		||||
  /*    lzw                                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    LZW Streams                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Using LZW-compressed font files.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of LZW-specific functions.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 /************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Stream_OpenLZW
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Open a new stream to parse LZW-compressed font files.  This is
 | 
			
		||||
  *   mainly used to support the compressed `*.pcf.Z' fonts that come
 | 
			
		||||
  *   with XFree86.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   stream :: The target embedding stream.
 | 
			
		||||
  *
 | 
			
		||||
  *   source :: The source stream.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   The source stream must be opened _before_ calling this function.
 | 
			
		||||
  *
 | 
			
		||||
  *   Calling the internal function `FT_Stream_Close' on the new stream will
 | 
			
		||||
  *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
 | 
			
		||||
  *   objects will be released to the heap.
 | 
			
		||||
  *
 | 
			
		||||
  *   The stream implementation is very basic and resets the decompression
 | 
			
		||||
  *   process each time seeking backwards is needed within the stream
 | 
			
		||||
  *
 | 
			
		||||
  *   In certain builds of the library, LZW compression recognition is
 | 
			
		||||
  *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
 | 
			
		||||
  *   This means that if no font driver is capable of handling the raw
 | 
			
		||||
  *   compressed file, the library will try to open a LZW stream from it
 | 
			
		||||
  *   and re-open the face with it.
 | 
			
		||||
  *
 | 
			
		||||
  *   This function may return `FT_Err_Unimplemented_Feature' if your build
 | 
			
		||||
  *   of FreeType was not compiled with LZW support.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stream_OpenLZW( FT_Stream  stream,
 | 
			
		||||
                     FT_Stream  source );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTLZW_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										274
									
								
								include/freetype/ftmac.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										274
									
								
								include/freetype/ftmac.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,274 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmac.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Additional Mac-specific API.                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2004, 2006, 2007 by                               */
 | 
			
		||||
/*  Just van Rossum, 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* NOTE: Include this file after <freetype/freetype.h> and after any       */
 | 
			
		||||
/*       Mac-specific headers (because this header uses Mac types such as  */
 | 
			
		||||
/*       Handle, FSSpec, FSRef, etc.)                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTMAC_H__
 | 
			
		||||
#define __FTMAC_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* gcc-3.4.1 and later can warn about functions tagged as deprecated */
 | 
			
		||||
#ifndef FT_DEPRECATED_ATTRIBUTE
 | 
			
		||||
#if defined(__GNUC__)                                               && \
 | 
			
		||||
    ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
 | 
			
		||||
#define FT_DEPRECATED_ATTRIBUTE  __attribute__((deprecated))
 | 
			
		||||
#else
 | 
			
		||||
#define FT_DEPRECATED_ATTRIBUTE
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    mac_specific                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Mac Specific Interface                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Only available on the Macintosh.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The following definitions are only available if FreeType is        */
 | 
			
		||||
  /*    compiled on a Macintosh.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Face_From_FOND                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new face object from a FOND resource.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library resource.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    fond       :: A FOND resource.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: Only supported for the -1 `sanity check' special     */
 | 
			
		||||
  /*                  case.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aface      :: A handle to a new face object.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Notes>                                                               */
 | 
			
		||||
  /*    This function can be used to create @FT_Face objects from fonts    */
 | 
			
		||||
  /*    that are installed in the system as follows.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      fond = GetResource( 'FOND', fontName );                          */
 | 
			
		||||
  /*      error = FT_New_Face_From_FOND( library, fond, 0, &face );        */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Face_From_FOND( FT_Library  library,
 | 
			
		||||
                         Handle      fond,
 | 
			
		||||
                         FT_Long     face_index,
 | 
			
		||||
                         FT_Face    *aface )
 | 
			
		||||
                       FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_GetFile_From_Mac_Name                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return an FSSpec for the disk file containing the named font.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    fontName   :: Mac OS name of the font (e.g., Times New Roman       */
 | 
			
		||||
  /*                  Bold).                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    pathSpec   :: FSSpec to the file.  For passing to                  */
 | 
			
		||||
  /*                  @FT_New_Face_From_FSSpec.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: Index of the face.  For passing to                   */
 | 
			
		||||
  /*                  @FT_New_Face_From_FSSpec.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_GetFile_From_Mac_Name( const char*  fontName,
 | 
			
		||||
                            FSSpec*      pathSpec,
 | 
			
		||||
                            FT_Long*     face_index )
 | 
			
		||||
                          FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_GetFile_From_Mac_ATS_Name                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return an FSSpec for the disk file containing the named font.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    fontName   :: Mac OS name of the font in ATS framework.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    pathSpec   :: FSSpec to the file. For passing to                   */
 | 
			
		||||
  /*                  @FT_New_Face_From_FSSpec.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: Index of the face. For passing to                    */
 | 
			
		||||
  /*                  @FT_New_Face_From_FSSpec.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_GetFile_From_Mac_ATS_Name( const char*  fontName,
 | 
			
		||||
                                FSSpec*      pathSpec,
 | 
			
		||||
                                FT_Long*     face_index )
 | 
			
		||||
                              FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_GetFilePath_From_Mac_ATS_Name                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return a pathname of the disk file and face index for given font   */
 | 
			
		||||
  /*    name which is handled by ATS framework.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    fontName    :: Mac OS name of the font in ATS framework.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    path        :: Buffer to store pathname of the file.  For passing  */
 | 
			
		||||
  /*                   to @FT_New_Face.  The client must allocate this     */
 | 
			
		||||
  /*                   buffer before calling this function.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxPathSize :: Lengths of the buffer `path' that client allocated. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index  :: Index of the face.  For passing to @FT_New_Face.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_GetFilePath_From_Mac_ATS_Name( const char*  fontName,
 | 
			
		||||
                                    UInt8*       path,
 | 
			
		||||
                                    UInt32       maxPathSize,
 | 
			
		||||
                                    FT_Long*     face_index )
 | 
			
		||||
                                  FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Face_From_FSSpec                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new face object from a given resource and typeface index  */
 | 
			
		||||
  /*    using an FSSpec to the font file.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library resource.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    spec       :: FSSpec to the font file.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: The index of the face within the resource.  The      */
 | 
			
		||||
  /*                  first face has index 0.                              */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aface      :: A handle to a new face object.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    @FT_New_Face_From_FSSpec is identical to @FT_New_Face except       */
 | 
			
		||||
  /*    it accepts an FSSpec instead of a path.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Face_From_FSSpec( FT_Library     library,
 | 
			
		||||
                           const FSSpec  *spec,
 | 
			
		||||
                           FT_Long        face_index,
 | 
			
		||||
                           FT_Face       *aface )
 | 
			
		||||
                         FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Face_From_FSRef                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new face object from a given resource and typeface index  */
 | 
			
		||||
  /*    using an FSRef to the font file.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library resource.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    spec       :: FSRef to the font file.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: The index of the face within the resource.  The      */
 | 
			
		||||
  /*                  first face has index 0.                              */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aface      :: A handle to a new face object.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    @FT_New_Face_From_FSRef is identical to @FT_New_Face except        */
 | 
			
		||||
  /*    it accepts an FSRef instead of a path.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Face_From_FSRef( FT_Library    library,
 | 
			
		||||
                          const FSRef  *ref,
 | 
			
		||||
                          FT_Long       face_index,
 | 
			
		||||
                          FT_Face      *aface )
 | 
			
		||||
                        FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMAC_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										378
									
								
								include/freetype/ftmm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										378
									
								
								include/freetype/ftmm.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,378 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmm.h                                                                 */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType Multiple Master font interface (specification).             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2003, 2004, 2006 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 __FTMM_H__
 | 
			
		||||
#define __FTMM_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_TYPE1_TABLES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    multiple_masters                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Multiple Masters                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    How to manage Multiple Masters fonts.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The following types and functions are used to manage Multiple      */
 | 
			
		||||
  /*    Master fonts, i.e., the selection of specific design instances by  */
 | 
			
		||||
  /*    setting design axis coordinates.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    George Williams has extended this interface to make it work with   */
 | 
			
		||||
  /*    both Type 1 Multiple Masters fonts and GX distortable (var)        */
 | 
			
		||||
  /*    fonts.  Some of these routines only work with MM fonts, others     */
 | 
			
		||||
  /*    will work with both types.  They are similar enough that a         */
 | 
			
		||||
  /*    consistent interface makes sense.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_MM_Axis                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to model a given axis in design space for  */
 | 
			
		||||
  /*    Multiple Masters fonts.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This structure can't be used for GX var fonts.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    name    :: The axis's name.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    minimum :: The axis's minimum design coordinate.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maximum :: The axis's maximum design coordinate.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_MM_Axis_
 | 
			
		||||
  {
 | 
			
		||||
    FT_String*  name;
 | 
			
		||||
    FT_Long     minimum;
 | 
			
		||||
    FT_Long     maximum;
 | 
			
		||||
 | 
			
		||||
  } FT_MM_Axis;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Multi_Master                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model the axes and space of a Multiple Masters */
 | 
			
		||||
  /*    font.                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This structure can't be used for GX var fonts.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    num_axis    :: Number of axes.  Cannot exceed 4.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_designs :: Number of designs; should be normally 2^num_axis    */
 | 
			
		||||
  /*                   even though the Type 1 specification strangely      */
 | 
			
		||||
  /*                   allows for intermediate designs to be present. This */
 | 
			
		||||
  /*                   number cannot exceed 16.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    axis        :: A table of axis descriptors.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Multi_Master_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt     num_axis;
 | 
			
		||||
    FT_UInt     num_designs;
 | 
			
		||||
    FT_MM_Axis  axis[T1_MAX_MM_AXIS];
 | 
			
		||||
 | 
			
		||||
  } FT_Multi_Master;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Var_Axis                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to model a given axis in design space for  */
 | 
			
		||||
  /*    Multiple Masters and GX var fonts.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    name    :: The axis's name.                                        */
 | 
			
		||||
  /*               Not always meaningful for GX.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    minimum :: The axis's minimum design coordinate.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    def     :: The axis's default design coordinate.                   */
 | 
			
		||||
  /*               FreeType computes meaningful default values for MM; it  */
 | 
			
		||||
  /*               is then an integer value, not in 16.16 format.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maximum :: The axis's maximum design coordinate.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    tag     :: The axis's tag (the GX equivalent to `name').           */
 | 
			
		||||
  /*               FreeType provides default values for MM if possible.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    strid   :: The entry in `name' table (another GX version of        */
 | 
			
		||||
  /*               `name').                                                */
 | 
			
		||||
  /*               Not meaningful for MM.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Var_Axis_
 | 
			
		||||
  {
 | 
			
		||||
    FT_String*  name;
 | 
			
		||||
 | 
			
		||||
    FT_Fixed    minimum;
 | 
			
		||||
    FT_Fixed    def;
 | 
			
		||||
    FT_Fixed    maximum;
 | 
			
		||||
 | 
			
		||||
    FT_ULong    tag;
 | 
			
		||||
    FT_UInt     strid;
 | 
			
		||||
 | 
			
		||||
  } FT_Var_Axis;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Var_Named_Style                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to model a named style in a GX var font.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This structure can't be used for MM fonts.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    coords :: The design coordinates for this style.                   */
 | 
			
		||||
  /*              This is an array with one entry for each axis.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    strid  :: The entry in `name' table identifying this style.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Var_Named_Style_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed*  coords;
 | 
			
		||||
    FT_UInt    strid;
 | 
			
		||||
 | 
			
		||||
  } FT_Var_Named_Style;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_MM_Var                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model the axes and space of a Multiple Masters */
 | 
			
		||||
  /*    or GX var distortable font.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Some fields are specific to one format and not to the other.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    num_axis        :: The number of axes.  The maximum value is 4 for */
 | 
			
		||||
  /*                       MM; no limit in GX.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_designs     :: The number of designs; should be normally       */
 | 
			
		||||
  /*                       2^num_axis for MM fonts.  Not meaningful for GX */
 | 
			
		||||
  /*                       (where every glyph could have a different       */
 | 
			
		||||
  /*                       number of designs).                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_namedstyles :: The number of named styles; only meaningful for */
 | 
			
		||||
  /*                       GX which allows certain design coordinates to   */
 | 
			
		||||
  /*                       have a string ID (in the `name' table)          */
 | 
			
		||||
  /*                       associated with them.  The font can tell the    */
 | 
			
		||||
  /*                       user that, for example, Weight=1.5 is `Bold'.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    axis            :: A table of axis descriptors.                    */
 | 
			
		||||
  /*                       GX fonts contain slightly more data than MM.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    namedstyles     :: A table of named styles.                        */
 | 
			
		||||
  /*                       Only meaningful with GX.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_MM_Var_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt              num_axis;
 | 
			
		||||
    FT_UInt              num_designs;
 | 
			
		||||
    FT_UInt              num_namedstyles;
 | 
			
		||||
    FT_Var_Axis*         axis;
 | 
			
		||||
    FT_Var_Named_Style*  namedstyle;
 | 
			
		||||
 | 
			
		||||
  } FT_MM_Var;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Multi_Master                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieves the Multiple Master descriptor of a given font.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function can't be used with GX fonts.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face    :: A handle to the source face.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    amaster :: The Multiple Masters descriptor.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Multi_Master( FT_Face           face,
 | 
			
		||||
                       FT_Multi_Master  *amaster );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_MM_Var                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieves the Multiple Master/GX var descriptor of a given font.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face    :: A handle to the source face.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    amaster :: The Multiple Masters descriptor.                        */
 | 
			
		||||
  /*               Allocates a data structure, which the user must free    */
 | 
			
		||||
  /*               (a single call to FT_FREE will do it).                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_MM_Var( FT_Face      face,
 | 
			
		||||
                 FT_MM_Var*  *amaster );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_MM_Design_Coordinates                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    For Multiple Masters fonts, choose an interpolated font design     */
 | 
			
		||||
  /*    through design coordinates.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function can't be used with GX fonts.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    face       :: A handle to the source face.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    num_coords :: The number of design coordinates (must be equal to   */
 | 
			
		||||
  /*                  the number of axes in the font).                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    coords     :: An array of design coordinates.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_MM_Design_Coordinates( FT_Face   face,
 | 
			
		||||
                                FT_UInt   num_coords,
 | 
			
		||||
                                FT_Long*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_Var_Design_Coordinates                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    For Multiple Master or GX Var fonts, choose an interpolated font   */
 | 
			
		||||
  /*    design through design coordinates.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    face       :: A handle to the source face.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    num_coords :: The number of design coordinates (must be equal to   */
 | 
			
		||||
  /*                  the number of axes in the font).                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    coords     :: An array of design coordinates.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_Var_Design_Coordinates( FT_Face    face,
 | 
			
		||||
                                 FT_UInt    num_coords,
 | 
			
		||||
                                 FT_Fixed*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_MM_Blend_Coordinates                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    For Multiple Masters and GX var fonts, choose an interpolated font */
 | 
			
		||||
  /*    design through normalized blend coordinates.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    face       :: A handle to the source face.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    num_coords :: The number of design coordinates (must be equal to   */
 | 
			
		||||
  /*                  the number of axes in the font).                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    coords     :: The design coordinates array (each element must be   */
 | 
			
		||||
  /*                  between 0 and 1.0).                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_MM_Blend_Coordinates( FT_Face    face,
 | 
			
		||||
                               FT_UInt    num_coords,
 | 
			
		||||
                               FT_Fixed*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_Var_Blend_Coordinates                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This is another name of @FT_Set_MM_Blend_Coordinates.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_Var_Blend_Coordinates( FT_Face    face,
 | 
			
		||||
                                FT_UInt    num_coords,
 | 
			
		||||
                                FT_Fixed*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										441
									
								
								include/freetype/ftmodapi.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										441
									
								
								include/freetype/ftmodapi.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,441 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmodapi.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType modules public interface (specification).                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2006, 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 __FTMODAPI_H__
 | 
			
		||||
#define __FTMODAPI_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>                                                             */
 | 
			
		||||
  /*    module_management                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Module Management                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    How to add, upgrade, and remove modules from FreeType.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The definitions below are used to manage modules within FreeType.  */
 | 
			
		||||
  /*    Modules can be added, upgraded, and removed at runtime.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* module bit flags */
 | 
			
		||||
#define FT_MODULE_FONT_DRIVER         1  /* this module is a font driver  */
 | 
			
		||||
#define FT_MODULE_RENDERER            2  /* this module is a renderer     */
 | 
			
		||||
#define FT_MODULE_HINTER              4  /* this module is a glyph hinter */
 | 
			
		||||
#define FT_MODULE_STYLER              8  /* this module is a styler       */
 | 
			
		||||
 | 
			
		||||
#define FT_MODULE_DRIVER_SCALABLE     0x100   /* the driver supports      */
 | 
			
		||||
                                              /* scalable fonts           */
 | 
			
		||||
#define FT_MODULE_DRIVER_NO_OUTLINES  0x200   /* the driver does not      */
 | 
			
		||||
                                              /* support vector outlines  */
 | 
			
		||||
#define FT_MODULE_DRIVER_HAS_HINTER   0x400   /* the driver provides its  */
 | 
			
		||||
                                              /* own hinter               */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* deprecated values */
 | 
			
		||||
#define ft_module_font_driver         FT_MODULE_FONT_DRIVER
 | 
			
		||||
#define ft_module_renderer            FT_MODULE_RENDERER
 | 
			
		||||
#define ft_module_hinter              FT_MODULE_HINTER
 | 
			
		||||
#define ft_module_styler              FT_MODULE_STYLER
 | 
			
		||||
 | 
			
		||||
#define ft_module_driver_scalable     FT_MODULE_DRIVER_SCALABLE
 | 
			
		||||
#define ft_module_driver_no_outlines  FT_MODULE_DRIVER_NO_OUTLINES
 | 
			
		||||
#define ft_module_driver_has_hinter   FT_MODULE_DRIVER_HAS_HINTER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Pointer  FT_Module_Interface;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_Module_Constructor                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to initialize (not create) a new module object.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    module :: The module to initialize.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Module_Constructor)( FT_Module  module );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_Module_Destructor                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to finalize (not destroy) a given module object.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    module :: The module to finalize.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Module_Destructor)( FT_Module  module );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_Module_Requester                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to query a given module for a specific interface.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    module :: The module to finalize.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    name ::   The name of the interface in the module.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Module_Interface
 | 
			
		||||
  (*FT_Module_Requester)( FT_Module    module,
 | 
			
		||||
                          const char*  name );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Module_Class                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The module class descriptor.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    module_flags    :: Bit flags describing the module.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_size     :: The size of one module object/instance in       */
 | 
			
		||||
  /*                       bytes.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_name     :: The name of the module.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_version  :: The version, as a 16.16 fixed number            */
 | 
			
		||||
  /*                       (major.minor).                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_requires :: The version of FreeType this module requires,   */
 | 
			
		||||
  /*                       as a 16.16 fixed number (major.minor).  Starts  */
 | 
			
		||||
  /*                       at version 2.0, i.e., 0x20000.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_init     :: The initializing function.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_done     :: The finalizing function.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    get_interface   :: The interface requesting function.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Module_Class_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ULong               module_flags;
 | 
			
		||||
    FT_Long                module_size;
 | 
			
		||||
    const FT_String*       module_name;
 | 
			
		||||
    FT_Fixed               module_version;
 | 
			
		||||
    FT_Fixed               module_requires;
 | 
			
		||||
 | 
			
		||||
    const void*            module_interface;
 | 
			
		||||
 | 
			
		||||
    FT_Module_Constructor  module_init;
 | 
			
		||||
    FT_Module_Destructor   module_done;
 | 
			
		||||
    FT_Module_Requester    get_interface;
 | 
			
		||||
 | 
			
		||||
  } FT_Module_Class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Add_Module                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Adds a new module to a given library instance.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library :: A handle to the library object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    clazz   :: A pointer to class descriptor for the module.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    An error will be returned if a module already exists by that name, */
 | 
			
		||||
  /*    or if the module requires a version of FreeType that is too great. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Add_Module( FT_Library              library,
 | 
			
		||||
                 const FT_Module_Class*  clazz );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Module                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Finds a module by its name.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library     :: A handle to the library object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_name :: The module's name (as an ASCII string).             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    A module handle.  0 if none was found.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    FreeType's internal modules aren't documented very well, and you   */
 | 
			
		||||
  /*    should look up the source code for details.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Module )
 | 
			
		||||
  FT_Get_Module( FT_Library   library,
 | 
			
		||||
                 const char*  module_name );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Remove_Module                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Removes a given module from a library instance.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library :: A handle to a library object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    module  :: A handle to a module object.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The module object is destroyed by the function in case of success. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Remove_Module( FT_Library  library,
 | 
			
		||||
                    FT_Module   module );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Library                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This function is used to create a new FreeType library instance    */
 | 
			
		||||
  /*    from a given memory object.  It is thus possible to use libraries  */
 | 
			
		||||
  /*    with distinct memory allocators within the same program.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    memory   :: A handle to the original memory object.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    alibrary :: A pointer to handle of a new library object.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Library( FT_Memory    memory,
 | 
			
		||||
                  FT_Library  *alibrary );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Done_Library                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Discards a given library object.  This closes all drivers and      */
 | 
			
		||||
  /*    discards all resource objects.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to the target library.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Done_Library( FT_Library  library );
 | 
			
		||||
 | 
			
		||||
/* */
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_DebugHook_Func)( void*  arg );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_Debug_Hook                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Sets a debug hook function for debugging the interpreter of a font */
 | 
			
		||||
  /*    format.                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    hook_index :: The index of the debug hook.  You should use the     */
 | 
			
		||||
  /*                  values defined in `ftobjs.h', e.g.,                  */
 | 
			
		||||
  /*                  `FT_DEBUG_HOOK_TRUETYPE'.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    debug_hook :: The function used to debug the interpreter.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Currently, four debug hook slots are available, but only two (for  */
 | 
			
		||||
  /*    the TrueType and the Type 1 interpreter) are defined.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Since the internal headers of FreeType are no longer installed,    */
 | 
			
		||||
  /*    the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.      */
 | 
			
		||||
  /*    This is a bug and will be fixed in a forthcoming release.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Set_Debug_Hook( FT_Library         library,
 | 
			
		||||
                     FT_UInt            hook_index,
 | 
			
		||||
                     FT_DebugHook_Func  debug_hook );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Add_Default_Modules                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Adds the set of default drivers to a given library object.         */
 | 
			
		||||
  /*    This is only useful when you create a library object with          */
 | 
			
		||||
  /*    @FT_New_Library (usually to plug a custom memory manager).         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library :: A handle to a new library object.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Add_Default_Modules( FT_Library  library );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   truetype_engine
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   The TrueType Engine
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   TrueType bytecode support.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This section contains a function used to query the level of TrueType
 | 
			
		||||
   *   bytecode support compiled in this version of the library.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   *  @enum:
 | 
			
		||||
   *     FT_TrueTypeEngineType
 | 
			
		||||
   *
 | 
			
		||||
   *  @description:
 | 
			
		||||
   *     A list of values describing which kind of TrueType bytecode
 | 
			
		||||
   *     engine is implemented in a given FT_Library instance.  It is used
 | 
			
		||||
   *     by the @FT_Get_TrueType_Engine_Type function.
 | 
			
		||||
   *
 | 
			
		||||
   *  @values:
 | 
			
		||||
   *     FT_TRUETYPE_ENGINE_TYPE_NONE ::
 | 
			
		||||
   *       The library doesn't implement any kind of bytecode interpreter.
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
 | 
			
		||||
   *       The library implements a bytecode interpreter that doesn't
 | 
			
		||||
   *       support the patented operations of the TrueType virtual machine.
 | 
			
		||||
   *
 | 
			
		||||
   *       Its main use is to load certain Asian fonts which position and
 | 
			
		||||
   *       scale glyph components with bytecode instructions.  It produces
 | 
			
		||||
   *       bad output for most other fonts.
 | 
			
		||||
   *
 | 
			
		||||
   *    FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
 | 
			
		||||
   *       The library implements a bytecode interpreter that covers
 | 
			
		||||
   *       the full instruction set of the TrueType virtual machine.
 | 
			
		||||
   *       See the file `docs/PATENTS' for legal aspects.
 | 
			
		||||
   *
 | 
			
		||||
   *  @since:
 | 
			
		||||
   *       2.2
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_TrueTypeEngineType_
 | 
			
		||||
  {
 | 
			
		||||
    FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
 | 
			
		||||
    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
 | 
			
		||||
    FT_TRUETYPE_ENGINE_TYPE_PATENTED
 | 
			
		||||
 | 
			
		||||
  } FT_TrueTypeEngineType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   *  @func:
 | 
			
		||||
   *     FT_Get_TrueType_Engine_Type
 | 
			
		||||
   *
 | 
			
		||||
   *  @description:
 | 
			
		||||
   *     Return a @FT_TrueTypeEngineType value to indicate which level of
 | 
			
		||||
   *     the TrueType virtual machine a given library instance supports.
 | 
			
		||||
   *
 | 
			
		||||
   *  @input:
 | 
			
		||||
   *     library ::
 | 
			
		||||
   *       A library instance.
 | 
			
		||||
   *
 | 
			
		||||
   *  @return:
 | 
			
		||||
   *     A value indicating which level is supported.
 | 
			
		||||
   *
 | 
			
		||||
   *  @since:
 | 
			
		||||
   *     2.2
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_TrueTypeEngineType )
 | 
			
		||||
  FT_Get_TrueType_Engine_Type( FT_Library  library );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMODAPI_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										155
									
								
								include/freetype/ftmoderr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								include/freetype/ftmoderr.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,155 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmoderr.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType module error offsets (specification).                       */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2001, 2002, 2003, 2004, 2005 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 file is used to define the FreeType module error offsets.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* The lower byte gives the error code, the higher byte gives the        */
 | 
			
		||||
  /* module.  The base module has error offset 0.  For example, the error  */
 | 
			
		||||
  /* `FT_Err_Invalid_File_Format' has value 0x003, the error               */
 | 
			
		||||
  /* `TT_Err_Invalid_File_Format' has value 0x1103, the error              */
 | 
			
		||||
  /* `T1_Err_Invalid_File_Format' has value 0x1203, etc.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Undefine the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in ftoption.h   */
 | 
			
		||||
  /* to make the higher byte always zero (disabling the module error       */
 | 
			
		||||
  /* mechanism).                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* It can also be used to create a module error message table easily     */
 | 
			
		||||
  /* with something like                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   {                                                                   */
 | 
			
		||||
  /*     #undef __FTMODERR_H__                                             */
 | 
			
		||||
  /*     #define FT_MODERRDEF( e, v, s )  { FT_Mod_Err_ ## e, s },         */
 | 
			
		||||
  /*     #define FT_MODERR_START_LIST     {                                */
 | 
			
		||||
  /*     #define FT_MODERR_END_LIST       { 0, 0 } };                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     const struct                                                      */
 | 
			
		||||
  /*     {                                                                 */
 | 
			
		||||
  /*       int          mod_err_offset;                                    */
 | 
			
		||||
  /*       const char*  mod_err_msg                                        */
 | 
			
		||||
  /*     } ft_mod_errors[] =                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     #include FT_MODULE_ERRORS_H                                       */
 | 
			
		||||
  /*   }                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* To use such a table, all errors must be ANDed with 0xFF00 to remove   */
 | 
			
		||||
  /* the error code.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTMODERR_H__
 | 
			
		||||
#define __FTMODERR_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                       SETUP MACROS                      *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef  FT_NEED_EXTERN_C
 | 
			
		||||
 | 
			
		||||
#ifndef FT_MODERRDEF
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
 | 
			
		||||
#define FT_MODERRDEF( e, v, s )  FT_Mod_Err_ ## e = v,
 | 
			
		||||
#else
 | 
			
		||||
#define FT_MODERRDEF( e, v, s )  FT_Mod_Err_ ## e = 0,
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define FT_MODERR_START_LIST  enum {
 | 
			
		||||
#define FT_MODERR_END_LIST    FT_Mod_Err_Max };
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_NEED_EXTERN_C
 | 
			
		||||
  extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_MODERRDEF */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****               LIST MODULE ERROR BASES                   *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_MODERR_START_LIST
 | 
			
		||||
  FT_MODERR_START_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_MODERRDEF( Base,      0x000, "base module" )
 | 
			
		||||
  FT_MODERRDEF( Autofit,   0x100, "autofitter module" )
 | 
			
		||||
  FT_MODERRDEF( BDF,       0x200, "BDF module" )
 | 
			
		||||
  FT_MODERRDEF( Cache,     0x300, "cache module" )
 | 
			
		||||
  FT_MODERRDEF( CFF,       0x400, "CFF module" )
 | 
			
		||||
  FT_MODERRDEF( CID,       0x500, "CID module" )
 | 
			
		||||
  FT_MODERRDEF( Gzip,      0x600, "Gzip module" )
 | 
			
		||||
  FT_MODERRDEF( LZW,       0x700, "LZW module" )
 | 
			
		||||
  FT_MODERRDEF( OTvalid,   0x800, "OpenType validation module" )
 | 
			
		||||
  FT_MODERRDEF( PCF,       0x900, "PCF module" )
 | 
			
		||||
  FT_MODERRDEF( PFR,       0xA00, "PFR module" )
 | 
			
		||||
  FT_MODERRDEF( PSaux,     0xB00, "PS auxiliary module" )
 | 
			
		||||
  FT_MODERRDEF( PShinter,  0xC00, "PS hinter module" )
 | 
			
		||||
  FT_MODERRDEF( PSnames,   0xD00, "PS names module" )
 | 
			
		||||
  FT_MODERRDEF( Raster,    0xE00, "raster module" )
 | 
			
		||||
  FT_MODERRDEF( SFNT,      0xF00, "SFNT module" )
 | 
			
		||||
  FT_MODERRDEF( Smooth,   0x1000, "smooth raster module" )
 | 
			
		||||
  FT_MODERRDEF( TrueType, 0x1100, "TrueType module" )
 | 
			
		||||
  FT_MODERRDEF( Type1,    0x1200, "Type 1 module" )
 | 
			
		||||
  FT_MODERRDEF( Type42,   0x1300, "Type 42 module" )
 | 
			
		||||
  FT_MODERRDEF( Winfonts, 0x1400, "Windows FON/FNT module" )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_MODERR_END_LIST
 | 
			
		||||
  FT_MODERR_END_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                      CLEANUP                            *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_NEED_EXTERN_C
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef FT_MODERR_START_LIST
 | 
			
		||||
#undef FT_MODERR_END_LIST
 | 
			
		||||
#undef FT_MODERRDEF
 | 
			
		||||
#undef FT_NEED_EXTERN_C
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMODERR_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										203
									
								
								include/freetype/ftotval.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										203
									
								
								include/freetype/ftotval.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,203 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftotval.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for validating OpenType tables (specification).         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004, 2005, 2006, 2007 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* Warning: This module might be moved to a different library in the       */
 | 
			
		||||
/*          future to avoid a tight dependency between FreeType and the    */
 | 
			
		||||
/*          OpenType specification.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTOTVAL_H__
 | 
			
		||||
#define __FTOTVAL_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>                                                             */
 | 
			
		||||
  /*    ot_validation                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    OpenType Validation                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    An API to validate OpenType tables.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of functions to validate     */
 | 
			
		||||
  /*    some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *    FT_VALIDATE_OTXXX
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    A list of bit-field constants used with @FT_OpenType_Validate to
 | 
			
		||||
  *    indicate which OpenType tables should be validated.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *    FT_VALIDATE_BASE ::
 | 
			
		||||
  *      Validate BASE table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_GDEF ::
 | 
			
		||||
  *      Validate GDEF table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_GPOS ::
 | 
			
		||||
  *      Validate GPOS table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_GSUB ::
 | 
			
		||||
  *      Validate GSUB table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_JSTF ::
 | 
			
		||||
  *      Validate JSTF table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_MATH ::
 | 
			
		||||
  *      Validate MATH table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_OT ::
 | 
			
		||||
  *      Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
#define FT_VALIDATE_BASE  0x0100
 | 
			
		||||
#define FT_VALIDATE_GDEF  0x0200
 | 
			
		||||
#define FT_VALIDATE_GPOS  0x0400
 | 
			
		||||
#define FT_VALIDATE_GSUB  0x0800
 | 
			
		||||
#define FT_VALIDATE_JSTF  0x1000
 | 
			
		||||
#define FT_VALIDATE_MATH  0x2000
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_OT  FT_VALIDATE_BASE | \
 | 
			
		||||
                        FT_VALIDATE_GDEF | \
 | 
			
		||||
                        FT_VALIDATE_GPOS | \
 | 
			
		||||
                        FT_VALIDATE_GSUB | \
 | 
			
		||||
                        FT_VALIDATE_JSTF | \
 | 
			
		||||
                        FT_VALIDATE_MATH
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_OpenType_Validate
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Validate various OpenType tables to assure that all offsets and
 | 
			
		||||
  *    indices are valid.  The idea is that a higher-level library which
 | 
			
		||||
  *    actually does the text layout can access those tables without
 | 
			
		||||
  *    error checking (which can be quite time consuming).
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    validation_flags ::
 | 
			
		||||
  *       A bit field which specifies the tables to be validated.  See
 | 
			
		||||
  *       @FT_VALIDATE_OTXXX for possible values.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    BASE_table ::
 | 
			
		||||
  *       A pointer to the BASE table.
 | 
			
		||||
  *
 | 
			
		||||
  *    GDEF_table ::
 | 
			
		||||
  *       A pointer to the GDEF table.
 | 
			
		||||
  *
 | 
			
		||||
  *    GPOS_table ::
 | 
			
		||||
  *       A pointer to the GPOS table.
 | 
			
		||||
  *
 | 
			
		||||
  *    GSUB_table ::
 | 
			
		||||
  *       A pointer to the GSUB table.
 | 
			
		||||
  *
 | 
			
		||||
  *    JSTF_table ::
 | 
			
		||||
  *       A pointer to the JSTF table.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function only works with OpenType fonts, returning an error
 | 
			
		||||
  *   otherwise.
 | 
			
		||||
  *
 | 
			
		||||
  *   After use, the application should deallocate the five tables with
 | 
			
		||||
  *   @FT_OpenType_Free.  A NULL value indicates that the table either
 | 
			
		||||
  *   doesn't exist in the font, or the application hasn't asked for
 | 
			
		||||
  *   validation.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_OpenType_Validate( FT_Face    face,
 | 
			
		||||
                        FT_UInt    validation_flags,
 | 
			
		||||
                        FT_Bytes  *BASE_table,
 | 
			
		||||
                        FT_Bytes  *GDEF_table,
 | 
			
		||||
                        FT_Bytes  *GPOS_table,
 | 
			
		||||
                        FT_Bytes  *GSUB_table,
 | 
			
		||||
                        FT_Bytes  *JSTF_table );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_OpenType_Free
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Free the buffer allocated by OpenType validator.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    table ::
 | 
			
		||||
  *       The pointer to the buffer that is allocated by
 | 
			
		||||
  *       @FT_OpenType_Validate.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function must be used to free the buffer allocated by
 | 
			
		||||
  *   @FT_OpenType_Validate only.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_OpenType_Free( FT_Face   face,
 | 
			
		||||
                    FT_Bytes  table );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTOTVAL_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										526
									
								
								include/freetype/ftoutln.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										526
									
								
								include/freetype/ftoutln.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,526 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftoutln.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Support for the FT_Outline type used to store glyph shapes of        */
 | 
			
		||||
/*    most scalable font formats (specification).                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 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 __FTOUTLN_H__
 | 
			
		||||
#define __FTOUTLN_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>                                                             */
 | 
			
		||||
  /*    outline_processing                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Outline Processing                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Functions to create, transform, and render vectorial glyph images. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains routines used to create and destroy scalable */
 | 
			
		||||
  /*    glyph images known as `outlines'.  These can also be measured,     */
 | 
			
		||||
  /*    transformed, and converted into bitmaps and pixmaps.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_Outline                                                         */
 | 
			
		||||
  /*    FT_OUTLINE_FLAGS                                                   */
 | 
			
		||||
  /*    FT_Outline_New                                                     */
 | 
			
		||||
  /*    FT_Outline_Done                                                    */
 | 
			
		||||
  /*    FT_Outline_Copy                                                    */
 | 
			
		||||
  /*    FT_Outline_Translate                                               */
 | 
			
		||||
  /*    FT_Outline_Transform                                               */
 | 
			
		||||
  /*    FT_Outline_Embolden                                                */
 | 
			
		||||
  /*    FT_Outline_Reverse                                                 */
 | 
			
		||||
  /*    FT_Outline_Check                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Outline_Get_CBox                                                */
 | 
			
		||||
  /*    FT_Outline_Get_BBox                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Outline_Get_Bitmap                                              */
 | 
			
		||||
  /*    FT_Outline_Render                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Outline_Decompose                                               */
 | 
			
		||||
  /*    FT_Outline_Funcs                                                   */
 | 
			
		||||
  /*    FT_Outline_MoveTo_Func                                             */
 | 
			
		||||
  /*    FT_Outline_LineTo_Func                                             */
 | 
			
		||||
  /*    FT_Outline_ConicTo_Func                                            */
 | 
			
		||||
  /*    FT_Outline_CubicTo_Func                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Decompose                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Walks over an outline's structure to decompose it into individual  */
 | 
			
		||||
  /*    segments and Bézier arcs.  This function is also able to emit      */
 | 
			
		||||
  /*    `move to' and `close to' operations to indicate the start and end  */
 | 
			
		||||
  /*    of new contours in the outline.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    outline        :: A pointer to the source target.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    func_interface :: A table of `emitters', i.e,. function pointers   */
 | 
			
		||||
  /*                      called during decomposition to indicate path     */
 | 
			
		||||
  /*                      operations.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    user           :: A typeless pointer which is passed to each       */
 | 
			
		||||
  /*                      emitter during the decomposition.  It can be     */
 | 
			
		||||
  /*                      used to store the state during the               */
 | 
			
		||||
  /*                      decomposition.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Decompose( FT_Outline*              outline,
 | 
			
		||||
                        const FT_Outline_Funcs*  func_interface,
 | 
			
		||||
                        void*                    user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_New                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Creates a new outline of a given size.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library     :: A handle to the library object from where the       */
 | 
			
		||||
  /*                   outline is allocated.  Note however that the new    */
 | 
			
		||||
  /*                   outline will *not* necessarily be *freed*, when     */
 | 
			
		||||
  /*                   destroying the library, by @FT_Done_FreeType.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    numPoints   :: The maximal number of points within the outline.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    numContours :: The maximal number of contours within the outline.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    anoutline   :: A handle to the new outline.  NULL in case of       */
 | 
			
		||||
  /*                   error.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The reason why this function takes a `library' parameter is simply */
 | 
			
		||||
  /*    to use the library's memory allocator.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_New( FT_Library   library,
 | 
			
		||||
                  FT_UInt      numPoints,
 | 
			
		||||
                  FT_Int       numContours,
 | 
			
		||||
                  FT_Outline  *anoutline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_New_Internal( FT_Memory    memory,
 | 
			
		||||
                           FT_UInt      numPoints,
 | 
			
		||||
                           FT_Int       numContours,
 | 
			
		||||
                           FT_Outline  *anoutline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Done                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroys an outline created with @FT_Outline_New.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle of the library object used to allocate the     */
 | 
			
		||||
  /*               outline.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    outline :: A pointer to the outline object to be discarded.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    If the outline's `owner' field is not set, only the outline        */
 | 
			
		||||
  /*    descriptor will be released.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The reason why this function takes an `library' parameter is       */
 | 
			
		||||
  /*    simply to use ft_mem_free().                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Done( FT_Library   library,
 | 
			
		||||
                   FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Done_Internal( FT_Memory    memory,
 | 
			
		||||
                            FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Check                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Check the contents of an outline descriptor.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    outline :: A handle to a source outline.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Check( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Get_CBox                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Returns an outline's `control box'.  The control box encloses all  */
 | 
			
		||||
  /*    the outline's points, including Bézier control points.  Though it  */
 | 
			
		||||
  /*    coincides with the exact bounding box for most glyphs, it can be   */
 | 
			
		||||
  /*    slightly larger in some situations (like when rotating an outline  */
 | 
			
		||||
  /*    which contains Bézier outside arcs).                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Computing the control box is very fast, while getting the bounding */
 | 
			
		||||
  /*    box can take much more time as it needs to walk over all segments  */
 | 
			
		||||
  /*    and arcs in the outline.  To get the latter, you can use the       */
 | 
			
		||||
  /*    `ftbbox' component which is dedicated to this single task.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the source outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    acbox   :: The outline's control box.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Outline_Get_CBox( const FT_Outline*  outline,
 | 
			
		||||
                       FT_BBox           *acbox );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Translate                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Applies a simple translation to the points of an outline.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the target outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    xOffset :: The horizontal offset.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yOffset :: The vertical offset.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Outline_Translate( const FT_Outline*  outline,
 | 
			
		||||
                        FT_Pos             xOffset,
 | 
			
		||||
                        FT_Pos             yOffset );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Copy                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Copies an outline into another one.  Both objects must have the    */
 | 
			
		||||
  /*    same sizes (number of points & number of contours) when this       */
 | 
			
		||||
  /*    function is called.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    source :: A handle to the source outline.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    target :: A handle to the target outline.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Copy( const FT_Outline*  source,
 | 
			
		||||
                   FT_Outline        *target );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Transform                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Applies a simple 2x2 matrix to all of an outline's points.  Useful */
 | 
			
		||||
  /*    for applying rotations, slanting, flipping, etc.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the target outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    matrix  :: A pointer to the transformation matrix.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You can use @FT_Outline_Translate if you need to translate the     */
 | 
			
		||||
  /*    outline's points.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Outline_Transform( const FT_Outline*  outline,
 | 
			
		||||
                        const FT_Matrix*   matrix );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Embolden                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Emboldens an outline.  The new outline will be at most 4 times     */
 | 
			
		||||
  /*    `strength' pixels wider and higher.  You may think of the left and */
 | 
			
		||||
  /*    bottom borders as unchanged.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Negative `strength' values to reduce the outline thickness are     */
 | 
			
		||||
  /*    possible also.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    outline  :: A handle to the target outline.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    strength :: How strong the glyph is emboldened.  Expressed in      */
 | 
			
		||||
  /*                26.6 pixel format.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The used algorithm to increase or decrease the thickness of the    */
 | 
			
		||||
  /*    glyph doesn't change the number of points; this means that certain */
 | 
			
		||||
  /*    situations like acute angles or intersections are sometimes        */
 | 
			
		||||
  /*    handled incorrectly.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Example call:                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );                   */
 | 
			
		||||
  /*      if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE )             */
 | 
			
		||||
  /*        FT_Outline_Embolden( &face->slot->outline, strength );         */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Embolden( FT_Outline*  outline,
 | 
			
		||||
                       FT_Pos       strength );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Reverse                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Reverses the drawing direction of an outline.  This is used to     */
 | 
			
		||||
  /*    ensure consistent fill conventions for mirrored glyphs.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the target outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This functions toggles the bit flag @FT_OUTLINE_REVERSE_FILL in    */
 | 
			
		||||
  /*    the outline's `flags' field.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It shouldn't be used by a normal client application, unless it     */
 | 
			
		||||
  /*    knows what it is doing.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Outline_Reverse( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Get_Bitmap                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Renders an outline within a bitmap.  The outline's image is simply */
 | 
			
		||||
  /*    OR-ed to the target bitmap.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a FreeType library object.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    outline :: A pointer to the source outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    abitmap :: A pointer to the target bitmap descriptor.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function does NOT CREATE the bitmap, it only renders an       */
 | 
			
		||||
  /*    outline image within the one you pass to it!                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It will use the raster corresponding to the default glyph format.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Get_Bitmap( FT_Library        library,
 | 
			
		||||
                         FT_Outline*       outline,
 | 
			
		||||
                         const FT_Bitmap  *abitmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Render                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Renders an outline within a bitmap using the current scan-convert. */
 | 
			
		||||
  /*    This functions uses an @FT_Raster_Params structure as an argument, */
 | 
			
		||||
  /*    allowing advanced features like direct composition, translucency,  */
 | 
			
		||||
  /*    etc.                                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a FreeType library object.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    outline :: A pointer to the source outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    params  :: A pointer to an @FT_Raster_Params structure used to     */
 | 
			
		||||
  /*               describe the rendering operation.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You should know what you are doing and how @FT_Raster_Params works */
 | 
			
		||||
  /*    to use this function.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The field `params.source' will be set to `outline' before the scan */
 | 
			
		||||
  /*    converter is called, which means that the value you give to it is  */
 | 
			
		||||
  /*    actually ignored.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Render( FT_Library         library,
 | 
			
		||||
                     FT_Outline*        outline,
 | 
			
		||||
                     FT_Raster_Params*  params );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *   FT_Orientation
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   A list of values used to describe an outline's contour orientation.
 | 
			
		||||
  *
 | 
			
		||||
  *   The TrueType and Postscript specifications use different conventions
 | 
			
		||||
  *   to determine whether outline contours should be filled or unfilled.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *   FT_ORIENTATION_TRUETYPE ::
 | 
			
		||||
  *     According to the TrueType specification, clockwise contours must
 | 
			
		||||
  *     be filled, and counter-clockwise ones must be unfilled.
 | 
			
		||||
  *
 | 
			
		||||
  *   FT_ORIENTATION_POSTSCRIPT ::
 | 
			
		||||
  *     According to the Postscript specification, counter-clockwise contours
 | 
			
		||||
  *     must be filled, and clockwise ones must be unfilled.
 | 
			
		||||
  *
 | 
			
		||||
  *   FT_ORIENTATION_FILL_RIGHT ::
 | 
			
		||||
  *     This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
 | 
			
		||||
  *     remember that in TrueType, everything that is to the right of
 | 
			
		||||
  *     the drawing direction of a contour must be filled.
 | 
			
		||||
  *
 | 
			
		||||
  *   FT_ORIENTATION_FILL_LEFT ::
 | 
			
		||||
  *     This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
 | 
			
		||||
  *     remember that in Postscript, everything that is to the left of
 | 
			
		||||
  *     the drawing direction of a contour must be filled.
 | 
			
		||||
  *
 | 
			
		||||
  *   FT_ORIENTATION_NONE ::
 | 
			
		||||
  *     The orientation cannot be determined.  That is, different parts of
 | 
			
		||||
  *     the glyph have different orientation.
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
  typedef enum  FT_Orientation_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ORIENTATION_TRUETYPE   = 0,
 | 
			
		||||
    FT_ORIENTATION_POSTSCRIPT = 1,
 | 
			
		||||
    FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE,
 | 
			
		||||
    FT_ORIENTATION_FILL_LEFT  = FT_ORIENTATION_POSTSCRIPT,
 | 
			
		||||
    FT_ORIENTATION_NONE
 | 
			
		||||
 | 
			
		||||
  } FT_Orientation;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Outline_Get_Orientation
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   This function analyzes a glyph outline and tries to compute its
 | 
			
		||||
  *   fill orientation (see @FT_Orientation).  This is done by computing
 | 
			
		||||
  *   the direction of each global horizontal and/or vertical extrema
 | 
			
		||||
  *   within the outline.
 | 
			
		||||
  *
 | 
			
		||||
  *   Note that this will return @FT_ORIENTATION_TRUETYPE for empty
 | 
			
		||||
  *   outlines.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   outline ::
 | 
			
		||||
  *     A handle to the source outline.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   The orientation.
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Orientation )
 | 
			
		||||
  FT_Outline_Get_Orientation( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTOUTLN_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
							
								
								
									
										172
									
								
								include/freetype/ftpfr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								include/freetype/ftpfr.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,172 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftpfr.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for accessing PFR-specific data (specification only).   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2003, 2004, 2006 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 __FTPFR_H__
 | 
			
		||||
#define __FTPFR_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>                                                             */
 | 
			
		||||
  /*    pfr_fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    PFR Fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    PFR/TrueDoc specific API.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of PFR-specific functions.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_PFR_Metrics
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Return the outline and metrics resolutions of a given PFR face.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face :: Handle to the input face.  It can be a non-PFR face.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    aoutline_resolution ::
 | 
			
		||||
  *      Outline resolution.  This is equivalent to `face->units_per_EM'.
 | 
			
		||||
  *      Optional (parameter can be NULL).
 | 
			
		||||
  *
 | 
			
		||||
  *    ametrics_resolution ::
 | 
			
		||||
  *      Metrics resolution.  This is equivalent to `outline_resolution'
 | 
			
		||||
  *      for non-PFR fonts.  Optional (parameter can be NULL).
 | 
			
		||||
  *
 | 
			
		||||
  *    ametrics_x_scale ::
 | 
			
		||||
  *      A 16.16 fixed-point number used to scale distance expressed
 | 
			
		||||
  *      in metrics units to device sub-pixels.  This is equivalent to
 | 
			
		||||
  *      `face->size->x_scale', but for metrics only.  Optional (parameter
 | 
			
		||||
  *      can be NULL)
 | 
			
		||||
  *
 | 
			
		||||
  *    ametrics_y_scale ::
 | 
			
		||||
  *      Same as `ametrics_x_scale' but for the vertical direction.
 | 
			
		||||
  *      optional (parameter can be NULL)
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *    FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   If the input face is not a PFR, this function will return an error.
 | 
			
		||||
  *   However, in all cases, it will return valid values.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PFR_Metrics( FT_Face    face,
 | 
			
		||||
                      FT_UInt   *aoutline_resolution,
 | 
			
		||||
                      FT_UInt   *ametrics_resolution,
 | 
			
		||||
                      FT_Fixed  *ametrics_x_scale,
 | 
			
		||||
                      FT_Fixed  *ametrics_y_scale );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_PFR_Kerning
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Return the kerning pair corresponding to two glyphs in a PFR face.
 | 
			
		||||
  *    The distance is expressed in metrics units, unlike the result of
 | 
			
		||||
  *    @FT_Get_Kerning.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face  :: A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    left  :: Index of the left glyph.
 | 
			
		||||
  *
 | 
			
		||||
  *    right :: Index of the right glyph.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    avector :: A kerning vector.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *    FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *    This function always return distances in original PFR metrics
 | 
			
		||||
  *    units.  This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
 | 
			
		||||
  *    mode, which always returns distances converted to outline units.
 | 
			
		||||
  *
 | 
			
		||||
  *    You can use the value of the `x_scale' and `y_scale' parameters
 | 
			
		||||
  *    returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PFR_Kerning( FT_Face     face,
 | 
			
		||||
                      FT_UInt     left,
 | 
			
		||||
                      FT_UInt     right,
 | 
			
		||||
                      FT_Vector  *avector );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_PFR_Advance
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Return a given glyph advance, expressed in original metrics units,
 | 
			
		||||
  *    from a PFR font.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face   :: A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    gindex :: The glyph index.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    aadvance :: The glyph advance in metrics units.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *    FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *    You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
 | 
			
		||||
  *    to convert the advance to device sub-pixels (i.e., 1/64th of pixels).
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PFR_Advance( FT_Face   face,
 | 
			
		||||
                      FT_UInt   gindex,
 | 
			
		||||
                      FT_Pos   *aadvance );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTPFR_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										234
									
								
								include/freetype/ftrender.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										234
									
								
								include/freetype/ftrender.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,234 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftrender.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType renderer modules public interface (specification).          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2005, 2006 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 __FTRENDER_H__
 | 
			
		||||
#define __FTRENDER_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_MODULE_H
 | 
			
		||||
#include FT_GLYPH_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    module_management                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* create a new glyph object */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Glyph_InitFunc)( FT_Glyph      glyph,
 | 
			
		||||
                        FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
  /* destroys a given glyph object */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Glyph_DoneFunc)( FT_Glyph  glyph );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Glyph_TransformFunc)( FT_Glyph          glyph,
 | 
			
		||||
                             const FT_Matrix*  matrix,
 | 
			
		||||
                             const FT_Vector*  delta );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Glyph_GetBBoxFunc)( FT_Glyph  glyph,
 | 
			
		||||
                           FT_BBox*  abbox );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Glyph_CopyFunc)( FT_Glyph   source,
 | 
			
		||||
                        FT_Glyph   target );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Glyph_PrepareFunc)( FT_Glyph      glyph,
 | 
			
		||||
                           FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
/* deprecated */
 | 
			
		||||
#define FT_Glyph_Init_Func       FT_Glyph_InitFunc
 | 
			
		||||
#define FT_Glyph_Done_Func       FT_Glyph_DoneFunc
 | 
			
		||||
#define FT_Glyph_Transform_Func  FT_Glyph_TransformFunc
 | 
			
		||||
#define FT_Glyph_BBox_Func       FT_Glyph_GetBBoxFunc
 | 
			
		||||
#define FT_Glyph_Copy_Func       FT_Glyph_CopyFunc
 | 
			
		||||
#define FT_Glyph_Prepare_Func    FT_Glyph_PrepareFunc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  struct  FT_Glyph_Class_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Long                 glyph_size;
 | 
			
		||||
    FT_Glyph_Format         glyph_format;
 | 
			
		||||
    FT_Glyph_InitFunc       glyph_init;
 | 
			
		||||
    FT_Glyph_DoneFunc       glyph_done;
 | 
			
		||||
    FT_Glyph_CopyFunc       glyph_copy;
 | 
			
		||||
    FT_Glyph_TransformFunc  glyph_transform;
 | 
			
		||||
    FT_Glyph_GetBBoxFunc    glyph_bbox;
 | 
			
		||||
    FT_Glyph_PrepareFunc    glyph_prepare;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Renderer_RenderFunc)( FT_Renderer       renderer,
 | 
			
		||||
                             FT_GlyphSlot      slot,
 | 
			
		||||
                             FT_UInt           mode,
 | 
			
		||||
                             const FT_Vector*  origin );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Renderer_TransformFunc)( FT_Renderer       renderer,
 | 
			
		||||
                                FT_GlyphSlot      slot,
 | 
			
		||||
                                const FT_Matrix*  matrix,
 | 
			
		||||
                                const FT_Vector*  delta );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Renderer_GetCBoxFunc)( FT_Renderer   renderer,
 | 
			
		||||
                              FT_GlyphSlot  slot,
 | 
			
		||||
                              FT_BBox*      cbox );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Renderer_SetModeFunc)( FT_Renderer  renderer,
 | 
			
		||||
                              FT_ULong     mode_tag,
 | 
			
		||||
                              FT_Pointer   mode_ptr );
 | 
			
		||||
 | 
			
		||||
/* deprecated identifiers */
 | 
			
		||||
#define FTRenderer_render  FT_Renderer_RenderFunc
 | 
			
		||||
#define FTRenderer_transform  FT_Renderer_TransformFunc
 | 
			
		||||
#define FTRenderer_getCBox  FT_Renderer_GetCBoxFunc
 | 
			
		||||
#define FTRenderer_setMode  FT_Renderer_SetModeFunc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Renderer_Class                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The renderer module class descriptor.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    root            :: The root @FT_Module_Class fields.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_format    :: The glyph image format this renderer handles.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    render_glyph    :: A method used to render the image that is in a  */
 | 
			
		||||
  /*                       given glyph slot into a bitmap.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    transform_glyph :: A method used to transform the image that is in */
 | 
			
		||||
  /*                       a given glyph slot.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    get_glyph_cbox  :: A method used to access the glyph's cbox.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    set_mode        :: A method used to pass additional parameters.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    raster_class    :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.    */
 | 
			
		||||
  /*                       This is a pointer to its raster's class.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    raster          :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.    */
 | 
			
		||||
  /*                       This is a pointer to the corresponding raster   */
 | 
			
		||||
  /*                       object, if any.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Renderer_Class_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Module_Class            root;
 | 
			
		||||
 | 
			
		||||
    FT_Glyph_Format            glyph_format;
 | 
			
		||||
 | 
			
		||||
    FT_Renderer_RenderFunc     render_glyph;
 | 
			
		||||
    FT_Renderer_TransformFunc  transform_glyph;
 | 
			
		||||
    FT_Renderer_GetCBoxFunc    get_glyph_cbox;
 | 
			
		||||
    FT_Renderer_SetModeFunc    set_mode;
 | 
			
		||||
 | 
			
		||||
    FT_Raster_Funcs*           raster_class;
 | 
			
		||||
 | 
			
		||||
  } FT_Renderer_Class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Renderer                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieves the current renderer for a given glyph format.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to the library object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    format  :: The glyph format.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    A renderer handle.  0 if none found.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    An error will be returned if a module already exists by that name, */
 | 
			
		||||
  /*    or if the module requires a version of FreeType that is too great. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    To add a new renderer, simply use @FT_Add_Module.  To retrieve a   */
 | 
			
		||||
  /*    renderer by its name, use @FT_Get_Module.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Renderer )
 | 
			
		||||
  FT_Get_Renderer( FT_Library       library,
 | 
			
		||||
                   FT_Glyph_Format  format );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_Renderer                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Sets the current renderer to use, and set additional mode.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    renderer   :: A handle to the renderer object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_params :: The number of additional parameters.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    parameters :: Additional parameters.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    In case of success, the renderer will be used to convert glyph     */
 | 
			
		||||
  /*    images in the renderer's known format into bitmaps.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This doesn't change the current renderer for other formats.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_Renderer( FT_Library     library,
 | 
			
		||||
                   FT_Renderer    renderer,
 | 
			
		||||
                   FT_UInt        num_params,
 | 
			
		||||
                   FT_Parameter*  parameters );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTRENDER_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										159
									
								
								include/freetype/ftsizes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								include/freetype/ftsizes.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,159 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftsizes.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType size objects management (specification).                    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2003, 2004, 2006 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Typical application would normally not need to use these functions.   */
 | 
			
		||||
  /* However, they have been placed in a public API for the rare cases     */
 | 
			
		||||
  /* where they are needed.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTSIZES_H__
 | 
			
		||||
#define __FTSIZES_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>                                                             */
 | 
			
		||||
  /*    sizes_management                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Size Management                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Managing multiple sizes per face.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    When creating a new face object (e.g., with @FT_New_Face), an      */
 | 
			
		||||
  /*    @FT_Size object is automatically created and used to store all     */
 | 
			
		||||
  /*    pixel-size dependent information, available in the `face->size'    */
 | 
			
		||||
  /*    field.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It is however possible to create more sizes for a given face,      */
 | 
			
		||||
  /*    mostly in order to manage several character pixel sizes of the     */
 | 
			
		||||
  /*    same font family and style.  See @FT_New_Size and @FT_Done_Size.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only           */
 | 
			
		||||
  /*    modify the contents of the current `active' size; you thus need    */
 | 
			
		||||
  /*    to use @FT_Activate_Size to change it.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    99% of applications won't need the functions provided here,        */
 | 
			
		||||
  /*    especially if they use the caching sub-system, so be cautious      */
 | 
			
		||||
  /*    when using these.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Size                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new size object from a given face object.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to a parent face object.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    asize :: A handle to a new size object.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You need to call @FT_Activate_Size in order to select the new size */
 | 
			
		||||
  /*    for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size,      */
 | 
			
		||||
  /*    @FT_Load_Glyph, @FT_Load_Char, etc.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Size( FT_Face   face,
 | 
			
		||||
               FT_Size*  size );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Done_Size                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Discard a given size object.  Note that @FT_Done_Face              */
 | 
			
		||||
  /*    automatically discards all size objects allocated with             */
 | 
			
		||||
  /*    @FT_New_Size.                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    size :: A handle to a target size object.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Done_Size( FT_Size  size );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Activate_Size                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Even though it is possible to create several size objects for a    */
 | 
			
		||||
  /*    given face (see @FT_New_Size for details), functions like          */
 | 
			
		||||
  /*    @FT_Load_Glyph or @FT_Load_Char only use the last-created one to   */
 | 
			
		||||
  /*    determine the `current character pixel size'.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function can be used to `activate' a previously created size  */
 | 
			
		||||
  /*    object.                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    size :: A handle to a target size object.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    If `face' is the size's parent face object, this function changes  */
 | 
			
		||||
  /*    the value of `face->size' to the input size handle.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Activate_Size( FT_Size  size );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSIZES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										170
									
								
								include/freetype/ftsnames.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								include/freetype/ftsnames.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,170 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftsnames.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Simple interface to access SFNT name tables (which are used          */
 | 
			
		||||
/*    to hold font names, copyright info, notices, etc.) (specification).  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    This is _not_ used to retrieve glyph names!                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2006 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 __FT_SFNT_NAMES_H__
 | 
			
		||||
#define __FT_SFNT_NAMES_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>                                                             */
 | 
			
		||||
  /*    sfnt_names                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    SFNT Names                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Access the names embedded in TrueType and OpenType files.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The TrueType and OpenType specification allow the inclusion of     */
 | 
			
		||||
  /*    a special `names table' in font files.  This table contains        */
 | 
			
		||||
  /*    textual (and internationalized) information regarding the font,    */
 | 
			
		||||
  /*    like family name, copyright, version, etc.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The definitions below are used to access them if available.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that this has nothing to do with glyph names!                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_SfntName                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model an SFNT `name' table entry.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    platform_id :: The platform ID for `string'.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    encoding_id :: The encoding ID for `string'.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    language_id :: The language ID for `string'.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    name_id     :: An identifier for `string'.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    string      :: The `name' string.  Note that its format differs    */
 | 
			
		||||
  /*                   depending on the (platform,encoding) pair.  It can  */
 | 
			
		||||
  /*                   be a Pascal String, a UTF-16 one, etc.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                   Generally speaking, the string is not               */
 | 
			
		||||
  /*                   zero-terminated.  Please refer to the TrueType      */
 | 
			
		||||
  /*                   specification for details.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    string_len  :: The length of `string' in bytes.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Possible values for `platform_id', `encoding_id', `language_id',   */
 | 
			
		||||
  /*    and `name_id' are given in the file `ttnameid.h'.  For details     */
 | 
			
		||||
  /*    please refer to the TrueType or OpenType specification.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,       */
 | 
			
		||||
  /*    @TT_ISO_ID_XXX, and @TT_MS_ID_XXX.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_SfntName_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UShort  platform_id;
 | 
			
		||||
    FT_UShort  encoding_id;
 | 
			
		||||
    FT_UShort  language_id;
 | 
			
		||||
    FT_UShort  name_id;
 | 
			
		||||
 | 
			
		||||
    FT_Byte*   string;      /* this string is *not* null-terminated! */
 | 
			
		||||
    FT_UInt    string_len;  /* in bytes */
 | 
			
		||||
 | 
			
		||||
  } FT_SfntName;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Sfnt_Name_Count                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieves the number of name strings in the SFNT `name' table.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to the source face.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The number of strings in the `name' table.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_UInt )
 | 
			
		||||
  FT_Get_Sfnt_Name_Count( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Sfnt_Name                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieves a string of the SFNT `name' table for a given index.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face  :: A handle to the source face.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    idx   :: The index of the `name' string.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aname :: The indexed @FT_SfntName structure.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The `string' array returned in the `aname' structure is not        */
 | 
			
		||||
  /*    null-terminated.                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Use @FT_Get_Sfnt_Name_Count to get the total number of available   */
 | 
			
		||||
  /*    `name' table entries, then do a loop until you get the right       */
 | 
			
		||||
  /*    platform, encoding, and name ID.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Sfnt_Name( FT_Face       face,
 | 
			
		||||
                    FT_UInt       idx,
 | 
			
		||||
                    FT_SfntName  *aname );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FT_SFNT_NAMES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										716
									
								
								include/freetype/ftstroke.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										716
									
								
								include/freetype/ftstroke.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,716 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftstroke.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType path stroker (specification).                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2003, 2004, 2005, 2006, 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 __FT_STROKE_H__
 | 
			
		||||
#define __FT_STROKE_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_OUTLINE_H
 | 
			
		||||
#include FT_GLYPH_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @section:
 | 
			
		||||
  *    glyph_stroker
 | 
			
		||||
  *
 | 
			
		||||
  * @title:
 | 
			
		||||
  *    Glyph Stroker
 | 
			
		||||
  *
 | 
			
		||||
  * @abstract:
 | 
			
		||||
  *    Generating bordered and stroked glyphs.
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    This component generates stroked outlines of a given vectorial
 | 
			
		||||
  *    glyph.  It also allows you to retrieve the `outside' and/or the
 | 
			
		||||
  *    `inside' borders of the stroke.
 | 
			
		||||
  *
 | 
			
		||||
  *    This can be useful to generate `bordered' glyph, i.e., glyphs
 | 
			
		||||
  *    displayed with a coloured (and anti-aliased) border around their
 | 
			
		||||
  *    shape.
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @type:
 | 
			
		||||
  *   FT_Stroker
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Opaque handler to a path stroker object.
 | 
			
		||||
  */
 | 
			
		||||
  typedef struct FT_StrokerRec_*  FT_Stroker;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_Stroker_LineJoin
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   These values determine how two joining lines are rendered
 | 
			
		||||
   *   in a stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_STROKER_LINEJOIN_ROUND ::
 | 
			
		||||
   *     Used to render rounded line joins.  Circular arcs are used
 | 
			
		||||
   *     to join two lines smoothly.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINEJOIN_BEVEL ::
 | 
			
		||||
   *     Used to render beveled line joins; i.e., the two joining lines
 | 
			
		||||
   *     are extended until they intersect.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINEJOIN_MITER ::
 | 
			
		||||
   *     Same as beveled rendering, except that an additional line
 | 
			
		||||
   *     break is added if the angle between the two joining lines
 | 
			
		||||
   *     is too closed (this is useful to avoid unpleasant spikes
 | 
			
		||||
   *     in beveled rendering).
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_Stroker_LineJoin_
 | 
			
		||||
  {
 | 
			
		||||
    FT_STROKER_LINEJOIN_ROUND = 0,
 | 
			
		||||
    FT_STROKER_LINEJOIN_BEVEL,
 | 
			
		||||
    FT_STROKER_LINEJOIN_MITER
 | 
			
		||||
 | 
			
		||||
  } FT_Stroker_LineJoin;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_Stroker_LineCap
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   These values determine how the end of opened sub-paths are
 | 
			
		||||
   *   rendered in a stroke.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_STROKER_LINECAP_BUTT ::
 | 
			
		||||
   *     The end of lines is rendered as a full stop on the last
 | 
			
		||||
   *     point itself.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINECAP_ROUND ::
 | 
			
		||||
   *     The end of lines is rendered as a half-circle around the
 | 
			
		||||
   *     last point.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINECAP_SQUARE ::
 | 
			
		||||
   *     The end of lines is rendered as a square around the
 | 
			
		||||
   *     last point.
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_Stroker_LineCap_
 | 
			
		||||
  {
 | 
			
		||||
    FT_STROKER_LINECAP_BUTT = 0,
 | 
			
		||||
    FT_STROKER_LINECAP_ROUND,
 | 
			
		||||
    FT_STROKER_LINECAP_SQUARE
 | 
			
		||||
 | 
			
		||||
  } FT_Stroker_LineCap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_StrokerBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   These values are used to select a given stroke border
 | 
			
		||||
   *   in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_STROKER_BORDER_LEFT ::
 | 
			
		||||
   *     Select the left border, relative to the drawing direction.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_BORDER_RIGHT ::
 | 
			
		||||
   *     Select the right border, relative to the drawing direction.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   Applications are generally interested in the `inside' and `outside'
 | 
			
		||||
   *   borders.  However, there is no direct mapping between these and the
 | 
			
		||||
   *   `left' and `right' ones, since this really depends on the glyph's
 | 
			
		||||
   *   drawing orientation, which varies between font formats.
 | 
			
		||||
   *
 | 
			
		||||
   *   You can however use @FT_Outline_GetInsideBorder and
 | 
			
		||||
   *   @FT_Outline_GetOutsideBorder to get these.
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_StrokerBorder_
 | 
			
		||||
  {
 | 
			
		||||
    FT_STROKER_BORDER_LEFT = 0,
 | 
			
		||||
    FT_STROKER_BORDER_RIGHT
 | 
			
		||||
 | 
			
		||||
  } FT_StrokerBorder;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Outline_GetInsideBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Retrieve the @FT_StrokerBorder value corresponding to the
 | 
			
		||||
   *   `inside' borders of a given outline.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The source outline handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The border index.  @FT_STROKER_BORDER_LEFT for empty or invalid
 | 
			
		||||
   *   outlines.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_StrokerBorder )
 | 
			
		||||
  FT_Outline_GetInsideBorder( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Outline_GetOutsideBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Retrieve the @FT_StrokerBorder value corresponding to the
 | 
			
		||||
   *   `outside' borders of a given outline.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The source outline handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The border index.  @FT_STROKER_BORDER_LEFT for empty or invalid
 | 
			
		||||
   *   outlines.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_StrokerBorder )
 | 
			
		||||
  FT_Outline_GetOutsideBorder( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_New
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Create a new stroker object.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   library ::
 | 
			
		||||
   *     FreeType library handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   astroker ::
 | 
			
		||||
   *     A new stroker object handle.  NULL in case of error.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0 means success.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_New( FT_Library   library,
 | 
			
		||||
                  FT_Stroker  *astroker );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_Set
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Reset a stroker object's attributes.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   radius ::
 | 
			
		||||
   *     The border radius.
 | 
			
		||||
   *
 | 
			
		||||
   *   line_cap ::
 | 
			
		||||
   *     The line cap style.
 | 
			
		||||
   *
 | 
			
		||||
   *   line_join ::
 | 
			
		||||
   *     The line join style.
 | 
			
		||||
   *
 | 
			
		||||
   *   miter_limit ::
 | 
			
		||||
   *     The miter limit for the FT_STROKER_LINEJOIN_MITER style,
 | 
			
		||||
   *     expressed as 16.16 fixed point value.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The radius is expressed in the same units that the outline
 | 
			
		||||
   *   coordinates.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_Set( FT_Stroker           stroker,
 | 
			
		||||
                  FT_Fixed             radius,
 | 
			
		||||
                  FT_Stroker_LineCap   line_cap,
 | 
			
		||||
                  FT_Stroker_LineJoin  line_join,
 | 
			
		||||
                  FT_Fixed             miter_limit );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_Rewind
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Reset a stroker object without changing its attributes.
 | 
			
		||||
   *   You should call this function before beginning a new
 | 
			
		||||
   *   series of calls to @FT_Stroker_BeginSubPath or
 | 
			
		||||
   *   @FT_Stroker_EndSubPath.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_Rewind( FT_Stroker  stroker );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_ParseOutline
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A convenience function used to parse a whole outline with
 | 
			
		||||
   *   the stroker.  The resulting outline(s) can be retrieved
 | 
			
		||||
   *   later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The source outline.
 | 
			
		||||
   *
 | 
			
		||||
   *   opened ::
 | 
			
		||||
   *     A boolean.  If 1, the outline is treated as an open path instead
 | 
			
		||||
   *     of a closed one.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If `opened' is 0 (the default), the outline is treated as a closed
 | 
			
		||||
   *   path, and the stroker will generate two distinct `border' outlines.
 | 
			
		||||
   *
 | 
			
		||||
   *   If `opened' is 1, the outline is processed as an open path, and the
 | 
			
		||||
   *   stroker will generate a single `stroke' outline.
 | 
			
		||||
   *
 | 
			
		||||
   *   This function calls @FT_Stroker_Rewind automatically.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_ParseOutline( FT_Stroker   stroker,
 | 
			
		||||
                           FT_Outline*  outline,
 | 
			
		||||
                           FT_Bool      opened );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_BeginSubPath
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Start a new sub-path in the stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   to ::
 | 
			
		||||
   *     A pointer to the start vector.
 | 
			
		||||
   *
 | 
			
		||||
   *   open ::
 | 
			
		||||
   *     A boolean.  If 1, the sub-path is treated as an open one.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This function is useful when you need to stroke a path that is
 | 
			
		||||
   *   not stored as an @FT_Outline object.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_BeginSubPath( FT_Stroker  stroker,
 | 
			
		||||
                           FT_Vector*  to,
 | 
			
		||||
                           FT_Bool     open );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_EndSubPath
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Close the current sub-path in the stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should call this function after @FT_Stroker_BeginSubPath.
 | 
			
		||||
   *   If the subpath was not `opened', this function will `draw' a
 | 
			
		||||
   *   single line segment to the start position when needed.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_EndSubPath( FT_Stroker  stroker );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_LineTo
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   `Draw' a single line segment in the stroker's current sub-path,
 | 
			
		||||
   *   from the last position.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   to ::
 | 
			
		||||
   *     A pointer to the destination point.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should call this function between @FT_Stroker_BeginSubPath and
 | 
			
		||||
   *   @FT_Stroker_EndSubPath.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_LineTo( FT_Stroker  stroker,
 | 
			
		||||
                     FT_Vector*  to );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_ConicTo
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   `Draw' a single quadratic Bézier in the stroker's current sub-path,
 | 
			
		||||
   *   from the last position.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   control ::
 | 
			
		||||
   *     A pointer to a Bézier control point.
 | 
			
		||||
   *
 | 
			
		||||
   *   to ::
 | 
			
		||||
   *     A pointer to the destination point.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should call this function between @FT_Stroker_BeginSubPath and
 | 
			
		||||
   *   @FT_Stroker_EndSubPath.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_ConicTo( FT_Stroker  stroker,
 | 
			
		||||
                      FT_Vector*  control,
 | 
			
		||||
                      FT_Vector*  to );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_CubicTo
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   `Draw' a single cubic Bézier in the stroker's current sub-path,
 | 
			
		||||
   *   from the last position.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   control1 ::
 | 
			
		||||
   *     A pointer to the first Bézier control point.
 | 
			
		||||
   *
 | 
			
		||||
   *   control2 ::
 | 
			
		||||
   *     A pointer to second Bézier control point.
 | 
			
		||||
   *
 | 
			
		||||
   *   to ::
 | 
			
		||||
   *     A pointer to the destination point.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should call this function between @FT_Stroker_BeginSubPath and
 | 
			
		||||
   *   @FT_Stroker_EndSubPath.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_CubicTo( FT_Stroker  stroker,
 | 
			
		||||
                      FT_Vector*  control1,
 | 
			
		||||
                      FT_Vector*  control2,
 | 
			
		||||
                      FT_Vector*  to );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_GetBorderCounts
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Call this function once you have finished parsing your paths
 | 
			
		||||
   *   with the stroker.  It will return the number of points and
 | 
			
		||||
   *   contours necessary to export one of the `border' or `stroke'
 | 
			
		||||
   *   outlines generated by the stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   border ::
 | 
			
		||||
   *     The border index.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   anum_points ::
 | 
			
		||||
   *     The number of points.
 | 
			
		||||
   *
 | 
			
		||||
   *   anum_contours ::
 | 
			
		||||
   *     The number of contours.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   When an outline, or a sub-path, is `closed', the stroker generates
 | 
			
		||||
   *   two independent `border' outlines, named `left' and `right'.
 | 
			
		||||
   *
 | 
			
		||||
   *   When the outline, or a sub-path, is `opened', the stroker merges
 | 
			
		||||
   *   the `border' outlines with caps.  The `left' border receives all
 | 
			
		||||
   *   points, while the `right' border becomes empty.
 | 
			
		||||
   *
 | 
			
		||||
   *   Use the function @FT_Stroker_GetCounts instead if you want to
 | 
			
		||||
   *   retrieve the counts associated to both borders.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_GetBorderCounts( FT_Stroker        stroker,
 | 
			
		||||
                              FT_StrokerBorder  border,
 | 
			
		||||
                              FT_UInt          *anum_points,
 | 
			
		||||
                              FT_UInt          *anum_contours );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_ExportBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Call this function after @FT_Stroker_GetBorderCounts to
 | 
			
		||||
   *   export the corresponding border to your own @FT_Outline
 | 
			
		||||
   *   structure.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that this function will append the border points and
 | 
			
		||||
   *   contours to your outline, but will not try to resize its
 | 
			
		||||
   *   arrays.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   border ::
 | 
			
		||||
   *     The border index.
 | 
			
		||||
   *
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The target outline handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   Always call this function after @FT_Stroker_GetBorderCounts to
 | 
			
		||||
   *   get sure that there is enough room in your @FT_Outline object to
 | 
			
		||||
   *   receive all new data.
 | 
			
		||||
   *
 | 
			
		||||
   *   When an outline, or a sub-path, is `closed', the stroker generates
 | 
			
		||||
   *   two independent `border' outlines, named `left' and `right'
 | 
			
		||||
   *
 | 
			
		||||
   *   When the outline, or a sub-path, is `opened', the stroker merges
 | 
			
		||||
   *   the `border' outlines with caps. The `left' border receives all
 | 
			
		||||
   *   points, while the `right' border becomes empty.
 | 
			
		||||
   *
 | 
			
		||||
   *   Use the function @FT_Stroker_Export instead if you want to
 | 
			
		||||
   *   retrieve all borders at once.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_ExportBorder( FT_Stroker        stroker,
 | 
			
		||||
                           FT_StrokerBorder  border,
 | 
			
		||||
                           FT_Outline*       outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_GetCounts
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Call this function once you have finished parsing your paths
 | 
			
		||||
   *   with the stroker.  It returns the number of points and
 | 
			
		||||
   *   contours necessary to export all points/borders from the stroked
 | 
			
		||||
   *   outline/path.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   anum_points ::
 | 
			
		||||
   *     The number of points.
 | 
			
		||||
   *
 | 
			
		||||
   *   anum_contours ::
 | 
			
		||||
   *     The number of contours.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_GetCounts( FT_Stroker  stroker,
 | 
			
		||||
                        FT_UInt    *anum_points,
 | 
			
		||||
                        FT_UInt    *anum_contours );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_Export
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Call this function after @FT_Stroker_GetBorderCounts to
 | 
			
		||||
   *   export the all borders to your own @FT_Outline structure.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that this function will append the border points and
 | 
			
		||||
   *   contours to your outline, but will not try to resize its
 | 
			
		||||
   *   arrays.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The target outline handle.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_Export( FT_Stroker   stroker,
 | 
			
		||||
                     FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_Done
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Destroy a stroker object.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     A stroker handle.  Can be NULL.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_Done( FT_Stroker  stroker );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Glyph_Stroke
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Stroke a given outline glyph object with a given stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @inout:
 | 
			
		||||
   *   pglyph ::
 | 
			
		||||
   *     Source glyph handle on input, new glyph handle on output.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     A stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   destroy ::
 | 
			
		||||
   *     A Boolean.  If 1, the source glyph object is destroyed
 | 
			
		||||
   *     on success.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The source glyph is untouched in case of error.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_Stroke( FT_Glyph    *pglyph,
 | 
			
		||||
                   FT_Stroker   stroker,
 | 
			
		||||
                   FT_Bool      destroy );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Glyph_StrokeBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Stroke a given outline glyph object with a given stroker, but
 | 
			
		||||
   *   only return either its inside or outside border.
 | 
			
		||||
   *
 | 
			
		||||
   * @inout:
 | 
			
		||||
   *   pglyph ::
 | 
			
		||||
   *     Source glyph handle on input, new glyph handle on output.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     A stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   inside ::
 | 
			
		||||
   *     A Boolean.  If 1, return the inside border, otherwise
 | 
			
		||||
   *     the outside border.
 | 
			
		||||
   *
 | 
			
		||||
   *   destroy ::
 | 
			
		||||
   *     A Boolean.  If 1, the source glyph object is destroyed
 | 
			
		||||
   *     on success.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The source glyph is untouched in case of error.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_StrokeBorder( FT_Glyph    *pglyph,
 | 
			
		||||
                         FT_Stroker   stroker,
 | 
			
		||||
                         FT_Bool      inside,
 | 
			
		||||
                         FT_Bool      destroy );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FT_STROKE_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
							
								
								
									
										73
									
								
								include/freetype/ftsynth.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								include/freetype/ftsynth.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftsynth.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType synthesizing code for emboldening and slanting              */
 | 
			
		||||
/*    (specification).                                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2000-2001, 2003, 2006 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*********                                                       *********/
 | 
			
		||||
  /*********        WARNING, THIS IS ALPHA CODE, THIS API          *********/
 | 
			
		||||
  /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/
 | 
			
		||||
  /*********            FREETYPE DEVELOPMENT TEAM                  *********/
 | 
			
		||||
  /*********                                                       *********/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTSYNTH_H__
 | 
			
		||||
#define __FTSYNTH_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
 | 
			
		||||
 | 
			
		||||
  /* Make sure slot owns slot->bitmap. */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
  /* Do not use this function directly!  Copy the code to */
 | 
			
		||||
  /* your application and modify it to suit your need.    */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_GlyphSlot_Embolden( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_GlyphSlot_Oblique( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSYNTH_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										346
									
								
								include/freetype/ftsystem.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										346
									
								
								include/freetype/ftsystem.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,346 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftsystem.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType low-level system interface definition (specification).      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2005 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 __FTSYSTEM_H__
 | 
			
		||||
#define __FTSYSTEM_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*   system_interface                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*   System Interface                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*   How FreeType manages memory and i/o.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   This section contains various definitions related to memory         */
 | 
			
		||||
  /*   management and i/o access.  You need to understand this             */
 | 
			
		||||
  /*   information if you want to use a custom memory manager or you own   */
 | 
			
		||||
  /*   i/o streams.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                  M E M O R Y   M A N A G E M E N T                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Memory
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A handle to a given memory manager object, defined with an
 | 
			
		||||
   *   @FT_MemoryRec structure.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct FT_MemoryRec_*  FT_Memory;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Alloc_Func
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to allocate `size' bytes from `memory'.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   memory ::
 | 
			
		||||
   *     A handle to the source memory manager.
 | 
			
		||||
   *
 | 
			
		||||
   *   size ::
 | 
			
		||||
   *     The size in bytes to allocate.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   Address of new memory block.  0 in case of failure.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void*
 | 
			
		||||
  (*FT_Alloc_Func)( FT_Memory  memory,
 | 
			
		||||
                    long       size );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Free_Func
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to release a given block of memory.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   memory ::
 | 
			
		||||
   *     A handle to the source memory manager.
 | 
			
		||||
   *
 | 
			
		||||
   *   block ::
 | 
			
		||||
   *     The address of the target memory block.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Free_Func)( FT_Memory  memory,
 | 
			
		||||
                   void*      block );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Realloc_Func
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to re-allocate a given block of memory.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   memory ::
 | 
			
		||||
   *     A handle to the source memory manager.
 | 
			
		||||
   *
 | 
			
		||||
   *   cur_size ::
 | 
			
		||||
   *     The block's current size in bytes.
 | 
			
		||||
   *
 | 
			
		||||
   *   new_size ::
 | 
			
		||||
   *     The block's requested new size.
 | 
			
		||||
   *
 | 
			
		||||
   *   block ::
 | 
			
		||||
   *     The block's current address.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   New block address.  0 in case of memory shortage.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   In case of error, the old block must still be available.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void*
 | 
			
		||||
  (*FT_Realloc_Func)( FT_Memory  memory,
 | 
			
		||||
                      long       cur_size,
 | 
			
		||||
                      long       new_size,
 | 
			
		||||
                      void*      block );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_MemoryRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A structure used to describe a given memory manager to FreeType 2.
 | 
			
		||||
   *
 | 
			
		||||
   * @fields:
 | 
			
		||||
   *   user ::
 | 
			
		||||
   *     A generic typeless pointer for user data.
 | 
			
		||||
   *
 | 
			
		||||
   *   alloc ::
 | 
			
		||||
   *     A pointer type to an allocation function.
 | 
			
		||||
   *
 | 
			
		||||
   *   free ::
 | 
			
		||||
   *     A pointer type to an memory freeing function.
 | 
			
		||||
   *
 | 
			
		||||
   *   realloc ::
 | 
			
		||||
   *     A pointer type to a reallocation function.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  struct  FT_MemoryRec_
 | 
			
		||||
  {
 | 
			
		||||
    void*            user;
 | 
			
		||||
    FT_Alloc_Func    alloc;
 | 
			
		||||
    FT_Free_Func     free;
 | 
			
		||||
    FT_Realloc_Func  realloc;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                       I / O   M A N A G E M E N T                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Stream
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A handle to an input stream.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct FT_StreamRec_*  FT_Stream;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_StreamDesc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A union type used to store either a long or a pointer.  This is used
 | 
			
		||||
   *   to store a file descriptor or a `FILE*' in an input stream.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef union  FT_StreamDesc_
 | 
			
		||||
  {
 | 
			
		||||
    long   value;
 | 
			
		||||
    void*  pointer;
 | 
			
		||||
 | 
			
		||||
  } FT_StreamDesc;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Stream_IoFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to seek and read data from a given input stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stream ::
 | 
			
		||||
   *     A handle to the source stream.
 | 
			
		||||
   *
 | 
			
		||||
   *   offset ::
 | 
			
		||||
   *     The offset of read in stream (always from start).
 | 
			
		||||
   *
 | 
			
		||||
   *   buffer ::
 | 
			
		||||
   *     The address of the read buffer.
 | 
			
		||||
   *
 | 
			
		||||
   *   count ::
 | 
			
		||||
   *     The number of bytes to read from the stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The number of bytes effectively read by the stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This function might be called to perform a seek or skip operation
 | 
			
		||||
   *   with a `count' of 0.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef unsigned long
 | 
			
		||||
  (*FT_Stream_IoFunc)( FT_Stream       stream,
 | 
			
		||||
                       unsigned long   offset,
 | 
			
		||||
                       unsigned char*  buffer,
 | 
			
		||||
                       unsigned long   count );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Stream_CloseFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to close a given input stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *  stream ::
 | 
			
		||||
   *     A handle to the target stream.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Stream_CloseFunc)( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_StreamRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A structure used to describe an input stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   base ::
 | 
			
		||||
   *     For memory-based streams, this is the address of the first stream
 | 
			
		||||
   *     byte in memory.  This field should always be set to NULL for
 | 
			
		||||
   *     disk-based streams.
 | 
			
		||||
   *
 | 
			
		||||
   *   size ::
 | 
			
		||||
   *     The stream size in bytes.
 | 
			
		||||
   *
 | 
			
		||||
   *   pos ::
 | 
			
		||||
   *     The current position within the stream.
 | 
			
		||||
   *
 | 
			
		||||
   *   descriptor ::
 | 
			
		||||
   *     This field is a union that can hold an integer or a pointer.  It is
 | 
			
		||||
   *     used by stream implementations to store file descriptors or `FILE*'
 | 
			
		||||
   *     pointers.
 | 
			
		||||
   *
 | 
			
		||||
   *   pathname ::
 | 
			
		||||
   *     This field is completely ignored by FreeType.  However, it is often
 | 
			
		||||
   *     useful during debugging to use it to store the stream's filename
 | 
			
		||||
   *     (where available).
 | 
			
		||||
   *
 | 
			
		||||
   *   read ::
 | 
			
		||||
   *     The stream's input function.
 | 
			
		||||
   *
 | 
			
		||||
   *   close ::
 | 
			
		||||
   *     The stream;s close function.
 | 
			
		||||
   *
 | 
			
		||||
   *   memory ::
 | 
			
		||||
   *     The memory manager to use to preload frames.  This is set
 | 
			
		||||
   *     internally by FreeType and shouldn't be touched by stream
 | 
			
		||||
   *     implementations.
 | 
			
		||||
   *
 | 
			
		||||
   *   cursor ::
 | 
			
		||||
   *     This field is set and used internally by FreeType when parsing
 | 
			
		||||
   *     frames.
 | 
			
		||||
   *
 | 
			
		||||
   *   limit ::
 | 
			
		||||
   *     This field is set and used internally by FreeType when parsing
 | 
			
		||||
   *     frames.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_StreamRec_
 | 
			
		||||
  {
 | 
			
		||||
    unsigned char*       base;
 | 
			
		||||
    unsigned long        size;
 | 
			
		||||
    unsigned long        pos;
 | 
			
		||||
 | 
			
		||||
    FT_StreamDesc        descriptor;
 | 
			
		||||
    FT_StreamDesc        pathname;
 | 
			
		||||
    FT_Stream_IoFunc     read;
 | 
			
		||||
    FT_Stream_CloseFunc  close;
 | 
			
		||||
 | 
			
		||||
    FT_Memory            memory;
 | 
			
		||||
    unsigned char*       cursor;
 | 
			
		||||
    unsigned char*       limit;
 | 
			
		||||
 | 
			
		||||
  } FT_StreamRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSYSTEM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										350
									
								
								include/freetype/fttrigon.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										350
									
								
								include/freetype/fttrigon.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,350 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fttrigon.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType trigonometric functions (specification).                    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2001, 2003, 2005, 2007 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 __FTTRIGON_H__
 | 
			
		||||
#define __FTTRIGON_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>                                                             */
 | 
			
		||||
  /*   computations                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Angle
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This type is used to model angle values in FreeType.  Note that the
 | 
			
		||||
   *   angle is a 16.16 fixed float value expressed in degrees.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Fixed  FT_Angle;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ANGLE_PI
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The angle pi expressed in @FT_Angle units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ANGLE_PI  ( 180L << 16 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ANGLE_2PI
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The angle 2*pi expressed in @FT_Angle units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ANGLE_2PI  ( FT_ANGLE_PI * 2 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ANGLE_PI2
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The angle pi/2 expressed in @FT_Angle units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ANGLE_PI2  ( FT_ANGLE_PI / 2 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ANGLE_PI4
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The angle pi/4 expressed in @FT_Angle units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ANGLE_PI4  ( FT_ANGLE_PI / 4 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Sin
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the sinus of a given angle in fixed point format.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The input angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The sinus value.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If you need both the sinus and cosinus for a given angle, use the
 | 
			
		||||
   *   function @FT_Vector_Unit.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Fixed )
 | 
			
		||||
  FT_Sin( FT_Angle  angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Cos
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the cosinus of a given angle in fixed point format.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The input angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The cosinus value.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If you need both the sinus and cosinus for a given angle, use the
 | 
			
		||||
   *   function @FT_Vector_Unit.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Fixed )
 | 
			
		||||
  FT_Cos( FT_Angle  angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Tan
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the tangent of a given angle in fixed point format.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The input angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The tangent value.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Fixed )
 | 
			
		||||
  FT_Tan( FT_Angle  angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Atan2
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the arc-tangent corresponding to a given vector (x,y) in
 | 
			
		||||
   *   the 2d plane.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   x ::
 | 
			
		||||
   *     The horizontal vector coordinate.
 | 
			
		||||
   *
 | 
			
		||||
   *   y ::
 | 
			
		||||
   *     The vertical vector coordinate.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The arc-tangent value (i.e. angle).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Angle )
 | 
			
		||||
  FT_Atan2( FT_Fixed  x,
 | 
			
		||||
            FT_Fixed  y );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Angle_Diff
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the difference between two angles.  The result is always
 | 
			
		||||
   *   constrained to the ]-PI..PI] interval.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle1 ::
 | 
			
		||||
   *     First angle.
 | 
			
		||||
   *
 | 
			
		||||
   *   angle2 ::
 | 
			
		||||
   *     Second angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   Constrained value of `value2-value1'.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Angle )
 | 
			
		||||
  FT_Angle_Diff( FT_Angle  angle1,
 | 
			
		||||
                 FT_Angle  angle2 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_Unit
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the unit vector corresponding to a given angle.  After the
 | 
			
		||||
   *   call, the value of `vec.x' will be `sin(angle)', and the value of
 | 
			
		||||
   *   `vec.y' will be `cos(angle)'.
 | 
			
		||||
   *
 | 
			
		||||
   *   This function is useful to retrieve both the sinus and cosinus of a
 | 
			
		||||
   *   given angle quickly.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of target vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The address of angle.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Vector_Unit( FT_Vector*  vec,
 | 
			
		||||
                  FT_Angle    angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_Rotate
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Rotate a vector by a given angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @inout:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of target vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The address of angle.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Vector_Rotate( FT_Vector*  vec,
 | 
			
		||||
                    FT_Angle    angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_Length
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the length of a given vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of target vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The vector length, expressed in the same units that the original
 | 
			
		||||
   *   vector coordinates.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Fixed )
 | 
			
		||||
  FT_Vector_Length( FT_Vector*  vec );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_Polarize
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Compute both the length and angle of a given vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of source vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   length ::
 | 
			
		||||
   *     The vector length.
 | 
			
		||||
   *
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The vector angle.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Vector_Polarize( FT_Vector*  vec,
 | 
			
		||||
                      FT_Fixed   *length,
 | 
			
		||||
                      FT_Angle   *angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_From_Polar
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Compute vector coordinates from a length and angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of source vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   length ::
 | 
			
		||||
   *     The vector length.
 | 
			
		||||
   *
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The vector angle.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Vector_From_Polar( FT_Vector*  vec,
 | 
			
		||||
                        FT_Fixed    length,
 | 
			
		||||
                        FT_Angle    angle );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTTRIGON_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										587
									
								
								include/freetype/fttypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										587
									
								
								include/freetype/fttypes.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,587 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fttypes.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType simple types definitions (specification only).              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2004, 2006, 2007, 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 __FTTYPES_H__
 | 
			
		||||
#define __FTTYPES_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_CONFIG_CONFIG_H
 | 
			
		||||
#include FT_SYSTEM_H
 | 
			
		||||
#include FT_IMAGE_H
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    basic_types                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Basic Data Types                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    The basic data types defined by the library.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the basic data types defined by FreeType 2,  */
 | 
			
		||||
  /*    ranging from simple scalar types to bitmap descriptors.  More      */
 | 
			
		||||
  /*    font-specific structures are defined in a different section.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_Byte                                                            */
 | 
			
		||||
  /*    FT_Bytes                                                           */
 | 
			
		||||
  /*    FT_Char                                                            */
 | 
			
		||||
  /*    FT_Int                                                             */
 | 
			
		||||
  /*    FT_UInt                                                            */
 | 
			
		||||
  /*    FT_Int16                                                           */
 | 
			
		||||
  /*    FT_UInt16                                                          */
 | 
			
		||||
  /*    FT_Int32                                                           */
 | 
			
		||||
  /*    FT_UInt32                                                          */
 | 
			
		||||
  /*    FT_Short                                                           */
 | 
			
		||||
  /*    FT_UShort                                                          */
 | 
			
		||||
  /*    FT_Long                                                            */
 | 
			
		||||
  /*    FT_ULong                                                           */
 | 
			
		||||
  /*    FT_Bool                                                            */
 | 
			
		||||
  /*    FT_Offset                                                          */
 | 
			
		||||
  /*    FT_PtrDist                                                         */
 | 
			
		||||
  /*    FT_String                                                          */
 | 
			
		||||
  /*    FT_Tag                                                             */
 | 
			
		||||
  /*    FT_Error                                                           */
 | 
			
		||||
  /*    FT_Fixed                                                           */
 | 
			
		||||
  /*    FT_Pointer                                                         */
 | 
			
		||||
  /*    FT_Pos                                                             */
 | 
			
		||||
  /*    FT_Vector                                                          */
 | 
			
		||||
  /*    FT_BBox                                                            */
 | 
			
		||||
  /*    FT_Matrix                                                          */
 | 
			
		||||
  /*    FT_FWord                                                           */
 | 
			
		||||
  /*    FT_UFWord                                                          */
 | 
			
		||||
  /*    FT_F2Dot14                                                         */
 | 
			
		||||
  /*    FT_UnitVector                                                      */
 | 
			
		||||
  /*    FT_F26Dot6                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Generic                                                         */
 | 
			
		||||
  /*    FT_Generic_Finalizer                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Bitmap                                                          */
 | 
			
		||||
  /*    FT_Pixel_Mode                                                      */
 | 
			
		||||
  /*    FT_Palette_Mode                                                    */
 | 
			
		||||
  /*    FT_Glyph_Format                                                    */
 | 
			
		||||
  /*    FT_IMAGE_TAG                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Bool                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef of unsigned char, used for simple booleans.  As usual,   */
 | 
			
		||||
  /*    values 1 and 0 represent true and false, respectively.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned char  FT_Bool;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_FWord                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A signed 16-bit integer used to store a distance in original font  */
 | 
			
		||||
  /*    units.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed short  FT_FWord;   /* distance in FUnits */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_UFWord                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An unsigned 16-bit integer used to store a distance in original    */
 | 
			
		||||
  /*    font units.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned short  FT_UFWord;  /* unsigned distance */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Char                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple typedef for the _signed_ char type.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed char  FT_Char;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Byte                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple typedef for the _unsigned_ char type.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned char  FT_Byte;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Bytes                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for constant memory areas.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef const FT_Byte*  FT_Bytes;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Tag                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for 32bit tags (as used in the SFNT format).             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_UInt32  FT_Tag;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_String                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple typedef for the char type, usually used for strings.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef char  FT_String;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Short                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for signed short.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed short  FT_Short;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_UShort                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for unsigned short.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned short  FT_UShort;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Int                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for the int type.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed int  FT_Int;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_UInt                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for the unsigned int type.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned int  FT_UInt;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Long                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for signed long.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed long  FT_Long;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_ULong                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for unsigned long.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned long  FT_ULong;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_F2Dot14                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A signed 2.14 fixed float type used for unit vectors.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed short  FT_F2Dot14;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_F26Dot6                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A signed 26.6 fixed float type used for vectorial pixel            */
 | 
			
		||||
  /*    coordinates.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed long  FT_F26Dot6;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Fixed                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This type is used to store 16.16 fixed float values, like scaling  */
 | 
			
		||||
  /*    values or matrix coefficients.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed long  FT_Fixed;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Error                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The FreeType error code type.  A value of 0 is always interpreted  */
 | 
			
		||||
  /*    as a successful operation.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef int  FT_Error;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Pointer                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple typedef for a typeless pointer.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void*  FT_Pointer;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Offset                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This is equivalent to the ANSI C `size_t' type, i.e., the largest  */
 | 
			
		||||
  /*    _unsigned_ integer type used to express a file size or position,   */
 | 
			
		||||
  /*    or a memory block size.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef size_t  FT_Offset;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_PtrDist                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This is equivalent to the ANSI C `ptrdiff_t' type, i.e., the       */
 | 
			
		||||
  /*    largest _signed_ integer type used to express the distance         */
 | 
			
		||||
  /*    between two pointers.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef ft_ptrdiff_t  FT_PtrDist;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_UnitVector                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to store a 2D vector unit vector.  Uses    */
 | 
			
		||||
  /*    FT_F2Dot14 types.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    x :: Horizontal coordinate.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    y :: Vertical coordinate.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_UnitVector_
 | 
			
		||||
  {
 | 
			
		||||
    FT_F2Dot14  x;
 | 
			
		||||
    FT_F2Dot14  y;
 | 
			
		||||
 | 
			
		||||
  } FT_UnitVector;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Matrix                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to store a 2x2 matrix.  Coefficients are   */
 | 
			
		||||
  /*    in 16.16 fixed float format.  The computation performed is:        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       {                                                               */
 | 
			
		||||
  /*          x' = x*xx + y*xy                                             */
 | 
			
		||||
  /*          y' = x*yx + y*yy                                             */
 | 
			
		||||
  /*       }                                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    xx :: Matrix coefficient.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    xy :: Matrix coefficient.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yx :: Matrix coefficient.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yy :: Matrix coefficient.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Matrix_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed  xx, xy;
 | 
			
		||||
    FT_Fixed  yx, yy;
 | 
			
		||||
 | 
			
		||||
  } FT_Matrix;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Data                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Read-only binary data represented as a pointer and a length.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    pointer :: The data.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    length  :: The length of the data in bytes.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Data_
 | 
			
		||||
  {
 | 
			
		||||
    const FT_Byte*  pointer;
 | 
			
		||||
    FT_Int          length;
 | 
			
		||||
 | 
			
		||||
  } FT_Data;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_Generic_Finalizer                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Describes a function used to destroy the `client' data of any      */
 | 
			
		||||
  /*    FreeType object.  See the description of the @FT_Generic type for  */
 | 
			
		||||
  /*    details of usage.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    The address of the FreeType object which is under finalization.    */
 | 
			
		||||
  /*    Its client data is accessed through its `generic' field.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void  (*FT_Generic_Finalizer)(void*  object);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Generic                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Client applications often need to associate their own data to a    */
 | 
			
		||||
  /*    variety of FreeType core objects.  For example, a text layout API  */
 | 
			
		||||
  /*    might want to associate a glyph cache to a given size object.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Most FreeType object contains a `generic' field, of type           */
 | 
			
		||||
  /*    FT_Generic, which usage is left to client applications and font    */
 | 
			
		||||
  /*    servers.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It can be used to store a pointer to client-specific data, as well */
 | 
			
		||||
  /*    as the address of a `finalizer' function, which will be called by  */
 | 
			
		||||
  /*    FreeType when the object is destroyed (for example, the previous   */
 | 
			
		||||
  /*    client example would put the address of the glyph cache destructor */
 | 
			
		||||
  /*    in the `finalizer' field).                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    data      :: A typeless pointer to any client-specified data. This */
 | 
			
		||||
  /*                 field is completely ignored by the FreeType library.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    finalizer :: A pointer to a `generic finalizer' function, which    */
 | 
			
		||||
  /*                 will be called when the object is destroyed.  If this */
 | 
			
		||||
  /*                 field is set to NULL, no code will be called.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Generic_
 | 
			
		||||
  {
 | 
			
		||||
    void*                 data;
 | 
			
		||||
    FT_Generic_Finalizer  finalizer;
 | 
			
		||||
 | 
			
		||||
  } FT_Generic;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Macro>                                                               */
 | 
			
		||||
  /*    FT_MAKE_TAG                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This macro converts four-letter tags which are used to label       */
 | 
			
		||||
  /*    TrueType tables into an unsigned long to be used within FreeType.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The produced values *must* be 32bit integers.  Don't redefine this */
 | 
			
		||||
  /*    macro.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
 | 
			
		||||
          ( ( (FT_ULong)_x1 << 24 ) |     \
 | 
			
		||||
            ( (FT_ULong)_x2 << 16 ) |     \
 | 
			
		||||
            ( (FT_ULong)_x3 <<  8 ) |     \
 | 
			
		||||
              (FT_ULong)_x4         )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                    L I S T   M A N A G E M E N T                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    list_processing                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_ListNode                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*     Many elements and objects in FreeType are listed through an       */
 | 
			
		||||
  /*     @FT_List record (see @FT_ListRec).  As its name suggests, an      */
 | 
			
		||||
  /*     FT_ListNode is a handle to a single list element.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_ListNodeRec_*  FT_ListNode;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_List                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a list record (see @FT_ListRec).                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_ListRec_*  FT_List;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_ListNodeRec                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to hold a single list element.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    prev :: The previous element in the list.  NULL if first.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    next :: The next element in the list.  NULL if last.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    data :: A typeless pointer to the listed object.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_ListNodeRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ListNode  prev;
 | 
			
		||||
    FT_ListNode  next;
 | 
			
		||||
    void*        data;
 | 
			
		||||
 | 
			
		||||
  } FT_ListNodeRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_ListRec                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to hold a simple doubly-linked list.  These are   */
 | 
			
		||||
  /*    used in many parts of FreeType.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    head :: The head (first element) of doubly-linked list.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    tail :: The tail (last element) of doubly-linked list.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_ListRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ListNode  head;
 | 
			
		||||
    FT_ListNode  tail;
 | 
			
		||||
 | 
			
		||||
  } FT_ListRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
#define FT_IS_EMPTY( list )  ( (list).head == 0 )
 | 
			
		||||
 | 
			
		||||
  /* return base error code (without module-specific prefix) */
 | 
			
		||||
#define FT_ERROR_BASE( x )    ( (x) & 0xFF )
 | 
			
		||||
 | 
			
		||||
  /* return module error code */
 | 
			
		||||
#define FT_ERROR_MODULE( x )  ( (x) & 0xFF00U )
 | 
			
		||||
 | 
			
		||||
#define FT_BOOL( x )  ( (FT_Bool)( x ) )
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTTYPES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										274
									
								
								include/freetype/ftwinfnt.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										274
									
								
								include/freetype/ftwinfnt.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,274 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftwinfnt.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for accessing Windows fnt-specific data.                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004, 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 __FTWINFNT_H__
 | 
			
		||||
#define __FTWINFNT_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>                                                             */
 | 
			
		||||
  /*    winfnt_fonts                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Window FNT Files                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Windows FNT specific API.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of Windows FNT specific      */
 | 
			
		||||
  /*    functions.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_WinFNT_ID_XXX
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A list of valid values for the `charset' byte in
 | 
			
		||||
   *   @FT_WinFNT_HeaderRec.  Exact mapping tables for the various cpXXXX
 | 
			
		||||
   *   encodings (except for cp1361) can be found at ftp://ftp.unicode.org
 | 
			
		||||
   *   in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory.  cp1361 is
 | 
			
		||||
   *   roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_WinFNT_ID_DEFAULT ::
 | 
			
		||||
   *     This is used for font enumeration and font creation as a
 | 
			
		||||
   *     `don't care' value.  Valid font files don't contain this value.
 | 
			
		||||
   *     When querying for information about the character set of the font
 | 
			
		||||
   *     that is currently selected into a specified device context, this
 | 
			
		||||
   *     return value (of the related Windows API) simply denotes failure.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_SYMBOL ::
 | 
			
		||||
   *     There is no known mapping table available.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_MAC ::
 | 
			
		||||
   *     Mac Roman encoding.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_OEM ::
 | 
			
		||||
   *     From Michael Pöttgen <michael@poettgen.de>:
 | 
			
		||||
   *
 | 
			
		||||
   *       The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
 | 
			
		||||
   *       is used for the charset of vector fonts, like `modern.fon',
 | 
			
		||||
   *       `roman.fon', and `script.fon' on Windows.
 | 
			
		||||
   *
 | 
			
		||||
   *       The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
 | 
			
		||||
   *       specifies a character set that is operating-system dependent.
 | 
			
		||||
   *
 | 
			
		||||
   *       The `IFIMETRICS' documentation from the `Windows Driver
 | 
			
		||||
   *       Development Kit' says: This font supports an OEM-specific
 | 
			
		||||
   *       character set.  The OEM character set is system dependent.
 | 
			
		||||
   *
 | 
			
		||||
   *       In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
 | 
			
		||||
   *       second default codepage that most international versions of
 | 
			
		||||
   *       Windows have.  It is one of the OEM codepages from
 | 
			
		||||
   *
 | 
			
		||||
   *         http://www.microsoft.com/globaldev/reference/cphome.mspx,
 | 
			
		||||
   *
 | 
			
		||||
   *       and is used for the `DOS boxes', to support legacy applications.
 | 
			
		||||
   *       A German Windows version for example usually uses ANSI codepage
 | 
			
		||||
   *       1252 and OEM codepage 850.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP874 ::
 | 
			
		||||
   *     A superset of Thai TIS 620 and ISO 8859-11.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP932 ::
 | 
			
		||||
   *     A superset of Japanese Shift-JIS (with minor deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP936 ::
 | 
			
		||||
   *     A superset of simplified Chinese GB 2312-1980 (with different
 | 
			
		||||
   *     ordering and minor deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP949 ::
 | 
			
		||||
   *     A superset of Korean Hangul KS C 5601-1987 (with different
 | 
			
		||||
   *     ordering and minor deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP950 ::
 | 
			
		||||
   *     A superset of traditional Chinese Big 5 ETen (with different
 | 
			
		||||
   *     ordering and minor deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1250 ::
 | 
			
		||||
   *     A superset of East European ISO 8859-2 (with slightly different
 | 
			
		||||
   *     ordering).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1251 ::
 | 
			
		||||
   *     A superset of Russian ISO 8859-5 (with different ordering).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1252 ::
 | 
			
		||||
   *     ANSI encoding.  A superset of ISO 8859-1.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1253 ::
 | 
			
		||||
   *     A superset of Greek ISO 8859-7 (with minor modifications).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1254 ::
 | 
			
		||||
   *     A superset of Turkish ISO 8859-9.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1255 ::
 | 
			
		||||
   *     A superset of Hebrew ISO 8859-8 (with some modifications).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1256 ::
 | 
			
		||||
   *     A superset of Arabic ISO 8859-6 (with different ordering).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1257 ::
 | 
			
		||||
   *     A superset of Baltic ISO 8859-13 (with some deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1258 ::
 | 
			
		||||
   *     For Vietnamese.  This encoding doesn't cover all necessary
 | 
			
		||||
   *     characters.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1361 ::
 | 
			
		||||
   *     Korean (Johab).
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_WinFNT_ID_CP1252    0
 | 
			
		||||
#define FT_WinFNT_ID_DEFAULT   1
 | 
			
		||||
#define FT_WinFNT_ID_SYMBOL    2
 | 
			
		||||
#define FT_WinFNT_ID_MAC      77
 | 
			
		||||
#define FT_WinFNT_ID_CP932   128
 | 
			
		||||
#define FT_WinFNT_ID_CP949   129
 | 
			
		||||
#define FT_WinFNT_ID_CP1361  130
 | 
			
		||||
#define FT_WinFNT_ID_CP936   134
 | 
			
		||||
#define FT_WinFNT_ID_CP950   136
 | 
			
		||||
#define FT_WinFNT_ID_CP1253  161
 | 
			
		||||
#define FT_WinFNT_ID_CP1254  162
 | 
			
		||||
#define FT_WinFNT_ID_CP1258  163
 | 
			
		||||
#define FT_WinFNT_ID_CP1255  177
 | 
			
		||||
#define FT_WinFNT_ID_CP1256  178
 | 
			
		||||
#define FT_WinFNT_ID_CP1257  186
 | 
			
		||||
#define FT_WinFNT_ID_CP1251  204
 | 
			
		||||
#define FT_WinFNT_ID_CP874   222
 | 
			
		||||
#define FT_WinFNT_ID_CP1250  238
 | 
			
		||||
#define FT_WinFNT_ID_OEM     255
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_WinFNT_HeaderRec                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Windows FNT Header info.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_WinFNT_HeaderRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UShort  version;
 | 
			
		||||
    FT_ULong   file_size;
 | 
			
		||||
    FT_Byte    copyright[60];
 | 
			
		||||
    FT_UShort  file_type;
 | 
			
		||||
    FT_UShort  nominal_point_size;
 | 
			
		||||
    FT_UShort  vertical_resolution;
 | 
			
		||||
    FT_UShort  horizontal_resolution;
 | 
			
		||||
    FT_UShort  ascent;
 | 
			
		||||
    FT_UShort  internal_leading;
 | 
			
		||||
    FT_UShort  external_leading;
 | 
			
		||||
    FT_Byte    italic;
 | 
			
		||||
    FT_Byte    underline;
 | 
			
		||||
    FT_Byte    strike_out;
 | 
			
		||||
    FT_UShort  weight;
 | 
			
		||||
    FT_Byte    charset;
 | 
			
		||||
    FT_UShort  pixel_width;
 | 
			
		||||
    FT_UShort  pixel_height;
 | 
			
		||||
    FT_Byte    pitch_and_family;
 | 
			
		||||
    FT_UShort  avg_width;
 | 
			
		||||
    FT_UShort  max_width;
 | 
			
		||||
    FT_Byte    first_char;
 | 
			
		||||
    FT_Byte    last_char;
 | 
			
		||||
    FT_Byte    default_char;
 | 
			
		||||
    FT_Byte    break_char;
 | 
			
		||||
    FT_UShort  bytes_per_row;
 | 
			
		||||
    FT_ULong   device_offset;
 | 
			
		||||
    FT_ULong   face_name_offset;
 | 
			
		||||
    FT_ULong   bits_pointer;
 | 
			
		||||
    FT_ULong   bits_offset;
 | 
			
		||||
    FT_Byte    reserved;
 | 
			
		||||
    FT_ULong   flags;
 | 
			
		||||
    FT_UShort  A_space;
 | 
			
		||||
    FT_UShort  B_space;
 | 
			
		||||
    FT_UShort  C_space;
 | 
			
		||||
    FT_UShort  color_table_offset;
 | 
			
		||||
    FT_ULong   reserved1[4];
 | 
			
		||||
 | 
			
		||||
  } FT_WinFNT_HeaderRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_WinFNT_Header                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to an @FT_WinFNT_HeaderRec structure.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_WinFNT_HeaderRec_*  FT_WinFNT_Header;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_WinFNT_Header
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve a Windows FNT font info header.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face    :: A handle to the input face.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    aheader :: The WinFNT header.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This function only works with Windows FNT faces, returning an error
 | 
			
		||||
   *   otherwise.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_WinFNT_Header( FT_Face               face,
 | 
			
		||||
                        FT_WinFNT_HeaderRec  *aheader );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTWINFNT_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
							
								
								
									
										80
									
								
								include/freetype/ftxf86.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								include/freetype/ftxf86.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftxf86.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Support functions for X11.                                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2003, 2004, 2006, 2007 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 __FTXF86_H__
 | 
			
		||||
#define __FTXF86_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>                                                             */
 | 
			
		||||
  /*   font_formats                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*   Font Formats                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*   Getting the font format.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   The single function in this section can be used to get the font     */
 | 
			
		||||
  /*   format.  Note that this information is not needed normally;         */
 | 
			
		||||
  /*   however, there are special cases (like in PDF devices) where it is  */
 | 
			
		||||
  /*   important to differentiate, in spite of FreeType's uniform API.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*   FT_Get_X11_Font_Format                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   Return a string describing the format of a given face, using values */
 | 
			
		||||
  /*   which can be used as an X11 FONT_PROPERTY.  Possible values are     */
 | 
			
		||||
  /*   `TrueType', `Type 1', `BDF', `PCF', `Type 42', `CID Type 1', `CFF', */
 | 
			
		||||
  /*   `PFR', and `Windows FNT'.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*   face ::                                                             */
 | 
			
		||||
  /*     Input face handle.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*   Font format string.  NULL in case of error.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( const char* )
 | 
			
		||||
  FT_Get_X11_Font_Format( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTXF86_H__ */
 | 
			
		||||
							
								
								
									
										205
									
								
								include/freetype/internal/autohint.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										205
									
								
								include/freetype/internal/autohint.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,205 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  autohint.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    High-level `autohint' module-specific interface (specification).     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2007 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* The auto-hinter is used to load and automatically hint glyphs if a    */
 | 
			
		||||
  /* format-specific hinter isn't available.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __AUTOHINT_H__
 | 
			
		||||
#define __AUTOHINT_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* A small technical note regarding automatic hinting in order to        */
 | 
			
		||||
  /* clarify this module interface.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* An automatic hinter might compute two kinds of data for a given face: */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* - global hints: Usually some metrics that describe global properties  */
 | 
			
		||||
  /*                 of the face.  It is computed by scanning more or less */
 | 
			
		||||
  /*                 aggressively the glyphs in the face, and thus can be  */
 | 
			
		||||
  /*                 very slow to compute (even if the size of global      */
 | 
			
		||||
  /*                 hints is really small).                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* - glyph hints:  These describe some important features of the glyph   */
 | 
			
		||||
  /*                 outline, as well as how to align them.  They are      */
 | 
			
		||||
  /*                 generally much faster to compute than global hints.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* The current FreeType auto-hinter does a pretty good job while         */
 | 
			
		||||
  /* performing fast computations for both global and glyph hints.         */
 | 
			
		||||
  /* However, we might be interested in introducing more complex and       */
 | 
			
		||||
  /* powerful algorithms in the future, like the one described in the John */
 | 
			
		||||
  /* D. Hobby paper, which unfortunately requires a lot more horsepower.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Because a sufficiently sophisticated font management system would     */
 | 
			
		||||
  /* typically implement an LRU cache of opened face objects to reduce     */
 | 
			
		||||
  /* memory usage, it is a good idea to be able to avoid recomputing       */
 | 
			
		||||
  /* global hints every time the same face is re-opened.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* We thus provide the ability to cache global hints outside of the face */
 | 
			
		||||
  /* object, in order to speed up font re-opening time.  Of course, this   */
 | 
			
		||||
  /* feature is purely optional, so most client programs won't even notice */
 | 
			
		||||
  /* it.                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* I initially thought that it would be a good idea to cache the glyph   */
 | 
			
		||||
  /* hints too.  However, my general idea now is that if you really need   */
 | 
			
		||||
  /* to cache these too, you are simply in need of a new font format,      */
 | 
			
		||||
  /* where all this information could be stored within the font file and   */
 | 
			
		||||
  /* decoded on the fly.                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct FT_AutoHinterRec_  *FT_AutoHinter;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_AutoHinter_GlobalGetFunc                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieves the global hints computed for a given face object the    */
 | 
			
		||||
  /*    resulting data is dissociated from the face and will survive a     */
 | 
			
		||||
  /*    call to FT_Done_Face().  It must be discarded through the API      */
 | 
			
		||||
  /*    FT_AutoHinter_GlobalDoneFunc().                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    hinter        :: A handle to the source auto-hinter.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face          :: A handle to the source face object.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    global_hints  :: A typeless pointer to the global hints.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    global_len    :: The size in bytes of the global hints.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter  hinter,
 | 
			
		||||
                                  FT_Face        face,
 | 
			
		||||
                                  void**         global_hints,
 | 
			
		||||
                                  long*          global_len );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_AutoHinter_GlobalDoneFunc                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Discards the global hints retrieved through                        */
 | 
			
		||||
  /*    FT_AutoHinter_GlobalGetFunc().  This is the only way these hints   */
 | 
			
		||||
  /*    are freed from memory.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    hinter :: A handle to the auto-hinter module.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    global :: A pointer to retrieved global hints to discard.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter  hinter,
 | 
			
		||||
                                   void*          global );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_AutoHinter_GlobalResetFunc                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This function is used to recompute the global metrics in a given   */
 | 
			
		||||
  /*    font.  This is useful when global font data changes (e.g. Multiple */
 | 
			
		||||
  /*    Masters fonts where blend coordinates change).                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    hinter :: A handle to the source auto-hinter.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face   :: A handle to the face.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter  hinter,
 | 
			
		||||
                                    FT_Face        face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_AutoHinter_GlyphLoadFunc                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This function is used to load, scale, and automatically hint a     */
 | 
			
		||||
  /*    glyph from a given face.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face        :: A handle to the face.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_index :: The glyph index.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    load_flags  :: The load flags.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function is capable of loading composite glyphs by hinting    */
 | 
			
		||||
  /*    each sub-glyph independently (which improves quality).             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It will call the font driver with FT_Load_Glyph(), with            */
 | 
			
		||||
  /*    FT_LOAD_NO_SCALE set.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter  hinter,
 | 
			
		||||
                                  FT_GlyphSlot   slot,
 | 
			
		||||
                                  FT_Size        size,
 | 
			
		||||
                                  FT_UInt        glyph_index,
 | 
			
		||||
                                  FT_Int32       load_flags );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_AutoHinter_ServiceRec                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The auto-hinter module's interface.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_AutoHinter_ServiceRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_AutoHinter_GlobalResetFunc  reset_face;
 | 
			
		||||
    FT_AutoHinter_GlobalGetFunc    get_global_hints;
 | 
			
		||||
    FT_AutoHinter_GlobalDoneFunc   done_global_hints;
 | 
			
		||||
    FT_AutoHinter_GlyphLoadFunc    load_glyph;
 | 
			
		||||
 | 
			
		||||
  } FT_AutoHinter_ServiceRec, *FT_AutoHinter_Service;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __AUTOHINT_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										178
									
								
								include/freetype/internal/ftcalc.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								include/freetype/internal/ftcalc.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,178 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftcalc.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Arithmetic computations (specification).                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 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 __FTCALC_H__
 | 
			
		||||
#define __FTCALC_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_FixedSqrt                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Computes the square root of a 16.16 fixed point value.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    x :: The value to compute the root for.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The result of `sqrt(x)'.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function is not very fast.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( FT_Int32 )
 | 
			
		||||
  FT_SqrtFixed( FT_Int32  x );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Sqrt32                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Computes the square root of an Int32 integer (which will be        */
 | 
			
		||||
  /*    handled as an unsigned long value).                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    x :: The value to compute the root for.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The result of `sqrt(x)'.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Int32 )
 | 
			
		||||
  FT_Sqrt32( FT_Int32  x );
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* FT_MulDiv() and FT_MulFix() are declared in freetype.h.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef TT_USE_BYTECODE_INTERPRETER
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_MulDiv_No_Round                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A very simple function used to perform the computation `(a*b)/c'   */
 | 
			
		||||
  /*    (without rounding) with maximal accuracy (it uses a 64-bit         */
 | 
			
		||||
  /*    intermediate integer whenever necessary).                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function isn't necessarily as fast as some processor specific */
 | 
			
		||||
  /*    operations, but is at least completely portable.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    a :: The first multiplier.                                         */
 | 
			
		||||
  /*    b :: The second multiplier.                                        */
 | 
			
		||||
  /*    c :: The divisor.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The result of `(a*b)/c'.  This function never traps when trying to */
 | 
			
		||||
  /*    divide by zero; it simply returns `MaxInt' or `MinInt' depending   */
 | 
			
		||||
  /*    on the signs of `a' and `b'.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( FT_Long )
 | 
			
		||||
  FT_MulDiv_No_Round( FT_Long  a,
 | 
			
		||||
                      FT_Long  b,
 | 
			
		||||
                      FT_Long  c );
 | 
			
		||||
 | 
			
		||||
#endif /* TT_USE_BYTECODE_INTERPRETER */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A variant of FT_Matrix_Multiply which scales its result afterwards.
 | 
			
		||||
   *  The idea is that both `a' and `b' are scaled by factors of 10 so that
 | 
			
		||||
   *  the values are as precise as possible to get a correct result during
 | 
			
		||||
   *  the 64bit multiplication.  Let `sa' and `sb' be the scaling factors of
 | 
			
		||||
   *  `a' and `b', respectively, then the scaling factor of the result is
 | 
			
		||||
   *  `sa*sb'.
 | 
			
		||||
   */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Matrix_Multiply_Scaled( const FT_Matrix*  a,
 | 
			
		||||
                             FT_Matrix        *b,
 | 
			
		||||
                             FT_Long           scaling );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A variant of FT_Vector_Transform.  See comments for
 | 
			
		||||
   *  FT_Matrix_Multiply_Scaled.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Vector_Transform_Scaled( FT_Vector*        vector,
 | 
			
		||||
                              const FT_Matrix*  matrix,
 | 
			
		||||
                              FT_Long           scaling );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Return -1, 0, or +1, depending on the orientation of a given corner.
 | 
			
		||||
   *  We use the Cartesian coordinate system, with positive vertical values
 | 
			
		||||
   *  going upwards.  The function returns +1 if the corner turns to the
 | 
			
		||||
   *  left, -1 to the right, and 0 for undecidable cases.
 | 
			
		||||
   */
 | 
			
		||||
  FT_BASE( FT_Int )
 | 
			
		||||
  ft_corner_orientation( FT_Pos  in_x,
 | 
			
		||||
                         FT_Pos  in_y,
 | 
			
		||||
                         FT_Pos  out_x,
 | 
			
		||||
                         FT_Pos  out_y );
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Return TRUE if a corner is flat or nearly flat.  This is equivalent to
 | 
			
		||||
   *  saying that the angle difference between the `in' and `out' vectors is
 | 
			
		||||
   *  very small.
 | 
			
		||||
   */
 | 
			
		||||
  FT_BASE( FT_Int )
 | 
			
		||||
  ft_corner_is_flat( FT_Pos  in_x,
 | 
			
		||||
                     FT_Pos  in_y,
 | 
			
		||||
                     FT_Pos  out_x,
 | 
			
		||||
                     FT_Pos  out_y );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define INT_TO_F26DOT6( x )    ( (FT_Long)(x) << 6  )
 | 
			
		||||
#define INT_TO_F2DOT14( x )    ( (FT_Long)(x) << 14 )
 | 
			
		||||
#define INT_TO_FIXED( x )      ( (FT_Long)(x) << 16 )
 | 
			
		||||
#define F2DOT14_TO_FIXED( x )  ( (FT_Long)(x) << 2  )
 | 
			
		||||
#define FLOAT_TO_FIXED( x )    ( (FT_Long)( x * 65536.0 ) )
 | 
			
		||||
 | 
			
		||||
#define ROUND_F26DOT6( x )     ( x >= 0 ? (    ( (x) + 32 ) & -64 )     \
 | 
			
		||||
                                        : ( -( ( 32 - (x) ) & -64 ) ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTCALC_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										250
									
								
								include/freetype/internal/ftdebug.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										250
									
								
								include/freetype/internal/ftdebug.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,250 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftdebug.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Debugging and logging component (specification).                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2004, 2006, 2007, 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  IMPORTANT: A description of FreeType's debugging support can be        */
 | 
			
		||||
/*             found in `docs/DEBUG.TXT'.  Read it if you need to use or   */
 | 
			
		||||
/*             understand this code.                                       */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTDEBUG_H__
 | 
			
		||||
#define __FTDEBUG_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_CONFIG_CONFIG_H
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */
 | 
			
		||||
  /* is already defined; this simplifies the following #ifdefs            */
 | 
			
		||||
  /*                                                                      */
 | 
			
		||||
#ifdef FT_DEBUG_LEVEL_TRACE
 | 
			
		||||
#undef  FT_DEBUG_LEVEL_ERROR
 | 
			
		||||
#define FT_DEBUG_LEVEL_ERROR
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define the trace enums as well as the trace levels array when they    */
 | 
			
		||||
  /* are needed.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef FT_DEBUG_LEVEL_TRACE
 | 
			
		||||
 | 
			
		||||
#define FT_TRACE_DEF( x )  trace_ ## x ,
 | 
			
		||||
 | 
			
		||||
  /* defining the enumeration */
 | 
			
		||||
  typedef enum  FT_Trace_
 | 
			
		||||
  {
 | 
			
		||||
#include FT_INTERNAL_TRACE_H
 | 
			
		||||
    trace_count
 | 
			
		||||
 | 
			
		||||
  } FT_Trace;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* defining the array of trace levels, provided by `src/base/ftdebug.c' */
 | 
			
		||||
  extern int  ft_trace_levels[trace_count];
 | 
			
		||||
 | 
			
		||||
#undef FT_TRACE_DEF
 | 
			
		||||
 | 
			
		||||
#endif /* FT_DEBUG_LEVEL_TRACE */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define the FT_TRACE macro                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* IMPORTANT!                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */
 | 
			
		||||
  /* value before using any TRACE macro.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef FT_DEBUG_LEVEL_TRACE
 | 
			
		||||
 | 
			
		||||
#define FT_TRACE( level, varformat )                      \
 | 
			
		||||
          do                                              \
 | 
			
		||||
          {                                               \
 | 
			
		||||
            if ( ft_trace_levels[FT_COMPONENT] >= level ) \
 | 
			
		||||
              FT_Message varformat;                       \
 | 
			
		||||
          } while ( 0 )
 | 
			
		||||
 | 
			
		||||
#else /* !FT_DEBUG_LEVEL_TRACE */
 | 
			
		||||
 | 
			
		||||
#define FT_TRACE( level, varformat )  do ; while ( 0 )      /* nothing */
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_DEBUG_LEVEL_TRACE */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Trace_Get_Count                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return the number of available trace components.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The number of trace components.  0 if FreeType 2 is not built with */
 | 
			
		||||
  /*    FT_DEBUG_LEVEL_TRACE definition.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function may be useful if you want to access elements of      */
 | 
			
		||||
  /*    the internal `ft_trace_levels' array by an index.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( FT_Int )
 | 
			
		||||
  FT_Trace_Get_Count( void );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Trace_Get_Name                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return the name of a trace component.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    The index of the trace component.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The name of the trace component.  This is a statically allocated   */
 | 
			
		||||
  /*    C string, so do not free it after use.  NULL if FreeType 2 is not  */
 | 
			
		||||
  /*    built with FT_DEBUG_LEVEL_TRACE definition.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Use @FT_Trace_Get_Count to get the number of available trace       */
 | 
			
		||||
  /*    components.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function may be useful if you want to control FreeType 2's    */
 | 
			
		||||
  /*    debug level in your application.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( const char * )
 | 
			
		||||
  FT_Trace_Get_Name( FT_Int  idx );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* You need two opening and closing parentheses!                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Example: FT_TRACE0(( "Value is %i", foo ))                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Output of the FT_TRACEX macros is sent to stderr.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#define FT_TRACE0( varformat )  FT_TRACE( 0, varformat )
 | 
			
		||||
#define FT_TRACE1( varformat )  FT_TRACE( 1, varformat )
 | 
			
		||||
#define FT_TRACE2( varformat )  FT_TRACE( 2, varformat )
 | 
			
		||||
#define FT_TRACE3( varformat )  FT_TRACE( 3, varformat )
 | 
			
		||||
#define FT_TRACE4( varformat )  FT_TRACE( 4, varformat )
 | 
			
		||||
#define FT_TRACE5( varformat )  FT_TRACE( 5, varformat )
 | 
			
		||||
#define FT_TRACE6( varformat )  FT_TRACE( 6, varformat )
 | 
			
		||||
#define FT_TRACE7( varformat )  FT_TRACE( 7, varformat )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define the FT_ERROR macro.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Output of this macro is sent to stderr.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef FT_DEBUG_LEVEL_ERROR
 | 
			
		||||
 | 
			
		||||
#define FT_ERROR( varformat )  FT_Message  varformat
 | 
			
		||||
 | 
			
		||||
#else  /* !FT_DEBUG_LEVEL_ERROR */
 | 
			
		||||
 | 
			
		||||
#define FT_ERROR( varformat )  do ; while ( 0 )      /* nothing */
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_DEBUG_LEVEL_ERROR */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define the FT_ASSERT macro.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef FT_DEBUG_LEVEL_ERROR
 | 
			
		||||
 | 
			
		||||
#define FT_ASSERT( condition )                                      \
 | 
			
		||||
          do                                                        \
 | 
			
		||||
          {                                                         \
 | 
			
		||||
            if ( !( condition ) )                                   \
 | 
			
		||||
              FT_Panic( "assertion failed on line %d of file %s\n", \
 | 
			
		||||
                        __LINE__, __FILE__ );                       \
 | 
			
		||||
          } while ( 0 )
 | 
			
		||||
 | 
			
		||||
#else /* !FT_DEBUG_LEVEL_ERROR */
 | 
			
		||||
 | 
			
		||||
#define FT_ASSERT( condition )  do ; while ( 0 )
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_DEBUG_LEVEL_ERROR */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Define `FT_Message' and `FT_Panic' when needed.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef FT_DEBUG_LEVEL_ERROR
 | 
			
		||||
 | 
			
		||||
#include "stdio.h"  /* for vfprintf() */
 | 
			
		||||
 | 
			
		||||
  /* print a message */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Message( const char*  fmt,
 | 
			
		||||
              ... );
 | 
			
		||||
 | 
			
		||||
  /* print a message and exit */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Panic( const char*  fmt,
 | 
			
		||||
            ... );
 | 
			
		||||
 | 
			
		||||
#endif /* FT_DEBUG_LEVEL_ERROR */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  ft_debug_init( void );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined( _MSC_VER )      /* Visual C++ (and Intel C++) */
 | 
			
		||||
 | 
			
		||||
  /* We disable the warning `conditional expression is constant' here */
 | 
			
		||||
  /* in order to compile cleanly with the maximum level of warnings.  */
 | 
			
		||||
#pragma warning( disable : 4127 )
 | 
			
		||||
 | 
			
		||||
#endif /* _MSC_VER */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTDEBUG_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										246
									
								
								include/freetype/internal/ftdriver.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										246
									
								
								include/freetype/internal/ftdriver.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,246 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftdriver.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType font driver interface (specification).                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2006, 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 __FTDRIVER_H__
 | 
			
		||||
#define __FTDRIVER_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_MODULE_H
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Face_InitFunc)( FT_Stream      stream,
 | 
			
		||||
                       FT_Face        face,
 | 
			
		||||
                       FT_Int         typeface_index,
 | 
			
		||||
                       FT_Int         num_params,
 | 
			
		||||
                       FT_Parameter*  parameters );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Face_DoneFunc)( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Size_InitFunc)( FT_Size  size );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Size_DoneFunc)( FT_Size  size );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Slot_InitFunc)( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Slot_DoneFunc)( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Size_RequestFunc)( FT_Size          size,
 | 
			
		||||
                          FT_Size_Request  req );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Size_SelectFunc)( FT_Size   size,
 | 
			
		||||
                         FT_ULong  size_index );
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Size_ResetPointsFunc)( FT_Size     size,
 | 
			
		||||
                              FT_F26Dot6  char_width,
 | 
			
		||||
                              FT_F26Dot6  char_height,
 | 
			
		||||
                              FT_UInt     horz_resolution,
 | 
			
		||||
                              FT_UInt     vert_resolution );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Size_ResetPixelsFunc)( FT_Size  size,
 | 
			
		||||
                              FT_UInt  pixel_width,
 | 
			
		||||
                              FT_UInt  pixel_height );
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Slot_LoadFunc)( FT_GlyphSlot  slot,
 | 
			
		||||
                       FT_Size       size,
 | 
			
		||||
                       FT_UInt       glyph_index,
 | 
			
		||||
                       FT_Int32      load_flags );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt
 | 
			
		||||
  (*FT_CharMap_CharIndexFunc)( FT_CharMap  charmap,
 | 
			
		||||
                               FT_Long     charcode );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Long
 | 
			
		||||
  (*FT_CharMap_CharNextFunc)( FT_CharMap  charmap,
 | 
			
		||||
                              FT_Long     charcode );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Face_GetKerningFunc)( FT_Face     face,
 | 
			
		||||
                             FT_UInt     left_glyph,
 | 
			
		||||
                             FT_UInt     right_glyph,
 | 
			
		||||
                             FT_Vector*  kerning );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Face_AttachFunc)( FT_Face    face,
 | 
			
		||||
                         FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Face_GetAdvancesFunc)( FT_Face    face,
 | 
			
		||||
                              FT_UInt    first,
 | 
			
		||||
                              FT_UInt    count,
 | 
			
		||||
                              FT_UInt    flags,
 | 
			
		||||
                              FT_Fixed*  advances );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Driver_ClassRec                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The font driver class.  This structure mostly contains pointers to */
 | 
			
		||||
  /*    driver methods.                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    root             :: The parent module.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_object_size :: The size of a face object in bytes.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    size_object_size :: The size of a size object in bytes.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    slot_object_size :: The size of a glyph object in bytes.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    init_face        :: The format-specific face constructor.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    done_face        :: The format-specific face destructor.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    init_size        :: The format-specific size constructor.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    done_size        :: The format-specific size destructor.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    init_slot        :: The format-specific slot constructor.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    done_slot        :: The format-specific slot destructor.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    load_glyph       :: A function handle to load a glyph to a slot.   */
 | 
			
		||||
  /*                        This field is mandatory!                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    get_kerning      :: A function handle to return the unscaled       */
 | 
			
		||||
  /*                        kerning for a given pair of glyphs.  Can be    */
 | 
			
		||||
  /*                        set to 0 if the format doesn't support         */
 | 
			
		||||
  /*                        kerning.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    attach_file      :: This function handle is used to read           */
 | 
			
		||||
  /*                        additional data for a face from another        */
 | 
			
		||||
  /*                        file/stream.  For example, this can be used to */
 | 
			
		||||
  /*                        add data from AFM or PFM files on a Type 1     */
 | 
			
		||||
  /*                        face, or a CIDMap on a CID-keyed face.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    get_advances     :: A function handle used to return advance       */
 | 
			
		||||
  /*                        widths of `count' glyphs (in font units),      */
 | 
			
		||||
  /*                        starting at `first'.  The `vertical' flag must */
 | 
			
		||||
  /*                        be set to get vertical advance heights.  The   */
 | 
			
		||||
  /*                        `advances' buffer is caller-allocated.         */
 | 
			
		||||
  /*                        Currently not implemented.  The idea of this   */
 | 
			
		||||
  /*                        function is to be able to perform              */
 | 
			
		||||
  /*                        device-independent text layout without loading */
 | 
			
		||||
  /*                        a single glyph image.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    request_size     :: A handle to a function used to request the new */
 | 
			
		||||
  /*                        character size.  Can be set to 0 if the        */
 | 
			
		||||
  /*                        scaling done in the base layer suffices.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    select_size      :: A handle to a function used to select a new    */
 | 
			
		||||
  /*                        fixed size.  It is used only if                */
 | 
			
		||||
  /*                        @FT_FACE_FLAG_FIXED_SIZES is set.  Can be set  */
 | 
			
		||||
  /*                        to 0 if the scaling done in the base layer     */
 | 
			
		||||
  /*                        suffices.                                      */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Most function pointers, with the exception of `load_glyph', can be */
 | 
			
		||||
  /*    set to 0 to indicate a default behaviour.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Driver_ClassRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Module_Class           root;
 | 
			
		||||
 | 
			
		||||
    FT_Long                   face_object_size;
 | 
			
		||||
    FT_Long                   size_object_size;
 | 
			
		||||
    FT_Long                   slot_object_size;
 | 
			
		||||
 | 
			
		||||
    FT_Face_InitFunc          init_face;
 | 
			
		||||
    FT_Face_DoneFunc          done_face;
 | 
			
		||||
 | 
			
		||||
    FT_Size_InitFunc          init_size;
 | 
			
		||||
    FT_Size_DoneFunc          done_size;
 | 
			
		||||
 | 
			
		||||
    FT_Slot_InitFunc          init_slot;
 | 
			
		||||
    FT_Slot_DoneFunc          done_slot;
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
    FT_Size_ResetPointsFunc   set_char_sizes;
 | 
			
		||||
    FT_Size_ResetPixelsFunc   set_pixel_sizes;
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
 | 
			
		||||
 | 
			
		||||
    FT_Slot_LoadFunc          load_glyph;
 | 
			
		||||
 | 
			
		||||
    FT_Face_GetKerningFunc    get_kerning;
 | 
			
		||||
    FT_Face_AttachFunc        attach_file;
 | 
			
		||||
    FT_Face_GetAdvancesFunc   get_advances;
 | 
			
		||||
 | 
			
		||||
    /* since version 2.2 */
 | 
			
		||||
    FT_Size_RequestFunc       request_size;
 | 
			
		||||
    FT_Size_SelectFunc        select_size;
 | 
			
		||||
 | 
			
		||||
  } FT_Driver_ClassRec, *FT_Driver_Class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  The following functions are used as stubs for `set_char_sizes' and
 | 
			
		||||
   *  `set_pixel_sizes'; the code uses `request_size' and `select_size'
 | 
			
		||||
   *  functions instead.
 | 
			
		||||
   *
 | 
			
		||||
   *  Implementation is in `src/base/ftobjs.c'.
 | 
			
		||||
   */
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  ft_stub_set_char_sizes( FT_Size     size,
 | 
			
		||||
                          FT_F26Dot6  width,
 | 
			
		||||
                          FT_F26Dot6  height,
 | 
			
		||||
                          FT_UInt     horz_res,
 | 
			
		||||
                          FT_UInt     vert_res );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  ft_stub_set_pixel_sizes( FT_Size  size,
 | 
			
		||||
                           FT_UInt  width,
 | 
			
		||||
                           FT_UInt  height );
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTDRIVER_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										168
									
								
								include/freetype/internal/ftgloadr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										168
									
								
								include/freetype/internal/ftgloadr.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,168 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftgloadr.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType glyph loader (specification).                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2003, 2005, 2006 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 __FTGLOADR_H__
 | 
			
		||||
#define __FTGLOADR_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_GlyphLoader                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The glyph loader is an internal object used to load several glyphs */
 | 
			
		||||
  /*    together (for example, in the case of composites).                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The glyph loader implementation is not part of the high-level API, */
 | 
			
		||||
  /*    hence the forward structure declaration.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_GlyphLoaderRec_*  FT_GlyphLoader ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if 0  /* moved to freetype.h in version 2.2 */
 | 
			
		||||
#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS          1
 | 
			
		||||
#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES      2
 | 
			
		||||
#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID        4
 | 
			
		||||
#define FT_SUBGLYPH_FLAG_SCALE                   8
 | 
			
		||||
#define FT_SUBGLYPH_FLAG_XY_SCALE             0x40
 | 
			
		||||
#define FT_SUBGLYPH_FLAG_2X2                  0x80
 | 
			
		||||
#define FT_SUBGLYPH_FLAG_USE_MY_METRICS      0x200
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_SubGlyphRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Int     index;
 | 
			
		||||
    FT_UShort  flags;
 | 
			
		||||
    FT_Int     arg1;
 | 
			
		||||
    FT_Int     arg2;
 | 
			
		||||
    FT_Matrix  transform;
 | 
			
		||||
 | 
			
		||||
  } FT_SubGlyphRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_GlyphLoadRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Outline   outline;       /* outline             */
 | 
			
		||||
    FT_Vector*   extra_points;  /* extra points table  */
 | 
			
		||||
    FT_Vector*   extra_points2; /* second extra points table */
 | 
			
		||||
    FT_UInt      num_subglyphs; /* number of subglyphs */
 | 
			
		||||
    FT_SubGlyph  subglyphs;     /* subglyphs           */
 | 
			
		||||
 | 
			
		||||
  } FT_GlyphLoadRec, *FT_GlyphLoad;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_GlyphLoaderRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Memory        memory;
 | 
			
		||||
    FT_UInt          max_points;
 | 
			
		||||
    FT_UInt          max_contours;
 | 
			
		||||
    FT_UInt          max_subglyphs;
 | 
			
		||||
    FT_Bool          use_extra;
 | 
			
		||||
 | 
			
		||||
    FT_GlyphLoadRec  base;
 | 
			
		||||
    FT_GlyphLoadRec  current;
 | 
			
		||||
 | 
			
		||||
    void*            other;            /* for possible future extension? */
 | 
			
		||||
 | 
			
		||||
  } FT_GlyphLoaderRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* create new empty glyph loader */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_GlyphLoader_New( FT_Memory        memory,
 | 
			
		||||
                      FT_GlyphLoader  *aloader );
 | 
			
		||||
 | 
			
		||||
  /* add an extra points table to a glyph loader */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_GlyphLoader_CreateExtra( FT_GlyphLoader  loader );
 | 
			
		||||
 | 
			
		||||
  /* destroy a glyph loader */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_GlyphLoader_Done( FT_GlyphLoader  loader );
 | 
			
		||||
 | 
			
		||||
  /* reset a glyph loader (frees everything int it) */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_GlyphLoader_Reset( FT_GlyphLoader  loader );
 | 
			
		||||
 | 
			
		||||
  /* rewind a glyph loader */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_GlyphLoader_Rewind( FT_GlyphLoader  loader );
 | 
			
		||||
 | 
			
		||||
  /* check that there is enough space to add `n_points' and `n_contours' */
 | 
			
		||||
  /* to the glyph loader                                                 */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_GlyphLoader_CheckPoints( FT_GlyphLoader  loader,
 | 
			
		||||
                              FT_UInt         n_points,
 | 
			
		||||
                              FT_UInt         n_contours );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_GLYPHLOADER_CHECK_P( _loader, _count )                    \
 | 
			
		||||
   ( (_count) == 0 || (int)((_loader)->base.outline.n_points    +    \
 | 
			
		||||
                            (_loader)->current.outline.n_points +    \
 | 
			
		||||
                            (_count)) <= (int)(_loader)->max_points )
 | 
			
		||||
 | 
			
		||||
#define FT_GLYPHLOADER_CHECK_C( _loader, _count )                     \
 | 
			
		||||
  ( (_count) == 0 || (int)((_loader)->base.outline.n_contours    +    \
 | 
			
		||||
                           (_loader)->current.outline.n_contours +    \
 | 
			
		||||
                           (_count)) <= (int)(_loader)->max_contours )
 | 
			
		||||
 | 
			
		||||
#define FT_GLYPHLOADER_CHECK_POINTS( _loader, _points,_contours )      \
 | 
			
		||||
  ( ( FT_GLYPHLOADER_CHECK_P( _loader, _points )   &&                  \
 | 
			
		||||
      FT_GLYPHLOADER_CHECK_C( _loader, _contours ) )                   \
 | 
			
		||||
    ? 0                                                                \
 | 
			
		||||
    : FT_GlyphLoader_CheckPoints( (_loader), (_points), (_contours) ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* check that there is enough space to add `n_subs' sub-glyphs to */
 | 
			
		||||
  /* a glyph loader                                                 */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_GlyphLoader_CheckSubGlyphs( FT_GlyphLoader  loader,
 | 
			
		||||
                                 FT_UInt         n_subs );
 | 
			
		||||
 | 
			
		||||
  /* prepare a glyph loader, i.e. empty the current glyph */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_GlyphLoader_Prepare( FT_GlyphLoader  loader );
 | 
			
		||||
 | 
			
		||||
  /* add the current glyph to the base glyph */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_GlyphLoader_Add( FT_GlyphLoader  loader );
 | 
			
		||||
 | 
			
		||||
  /* copy points from one glyph loader to another */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_GlyphLoader_CopyPoints( FT_GlyphLoader  target,
 | 
			
		||||
                             FT_GlyphLoader  source );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTGLOADR_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										368
									
								
								include/freetype/internal/ftmemory.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										368
									
								
								include/freetype/internal/ftmemory.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,368 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmemory.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType memory management macros (specification).               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007 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 __FTMEMORY_H__
 | 
			
		||||
#define __FTMEMORY_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_CONFIG_CONFIG_H
 | 
			
		||||
#include FT_TYPES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Macro>                                                               */
 | 
			
		||||
  /*    FT_SET_ERROR                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This macro is used to set an implicit `error' variable to a given  */
 | 
			
		||||
  /*    expression's value (usually a function call), and convert it to a  */
 | 
			
		||||
  /*    boolean which is set whenever the value is != 0.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#undef  FT_SET_ERROR
 | 
			
		||||
#define FT_SET_ERROR( expression ) \
 | 
			
		||||
          ( ( error = (expression) ) != 0 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                           M E M O R Y                           ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  C++ refuses to handle statements like p = (void*)anything; where `p'
 | 
			
		||||
   *  is a typed pointer.  Since we don't have a `typeof' operator in
 | 
			
		||||
   *  standard C++, we have to use ugly casts.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_ASSIGNP( p, val )  *((void**)&(p)) = (val)
 | 
			
		||||
#else
 | 
			
		||||
#define FT_ASSIGNP( p, val )  (p) = (val)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_DEBUG_MEMORY
 | 
			
		||||
 | 
			
		||||
  FT_BASE( const char* )  _ft_debug_file;
 | 
			
		||||
  FT_BASE( long )         _ft_debug_lineno;
 | 
			
		||||
 | 
			
		||||
#define FT_DEBUG_INNER( exp )  ( _ft_debug_file   = __FILE__, \
 | 
			
		||||
                                 _ft_debug_lineno = __LINE__, \
 | 
			
		||||
                                 (exp) )
 | 
			
		||||
 | 
			
		||||
#define FT_ASSIGNP_INNER( p, exp )  ( _ft_debug_file   = __FILE__, \
 | 
			
		||||
                                      _ft_debug_lineno = __LINE__, \
 | 
			
		||||
                                      FT_ASSIGNP( p, exp ) )
 | 
			
		||||
 | 
			
		||||
#else /* !FT_DEBUG_MEMORY */
 | 
			
		||||
 | 
			
		||||
#define FT_DEBUG_INNER( exp )       (exp)
 | 
			
		||||
#define FT_ASSIGNP_INNER( p, exp )  FT_ASSIGNP( p, exp )
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_DEBUG_MEMORY */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  The allocation functions return a pointer, and the error code
 | 
			
		||||
   *  is written to through the `p_error' parameter.  See below for
 | 
			
		||||
   *  for documentation.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Pointer )
 | 
			
		||||
  ft_mem_alloc( FT_Memory  memory,
 | 
			
		||||
                FT_Long    size,
 | 
			
		||||
                FT_Error  *p_error );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Pointer )
 | 
			
		||||
  ft_mem_qalloc( FT_Memory  memory,
 | 
			
		||||
                 FT_Long    size,
 | 
			
		||||
                 FT_Error  *p_error );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Pointer )
 | 
			
		||||
  ft_mem_realloc( FT_Memory  memory,
 | 
			
		||||
                  FT_Long    item_size,
 | 
			
		||||
                  FT_Long    cur_count,
 | 
			
		||||
                  FT_Long    new_count,
 | 
			
		||||
                  void*      block,
 | 
			
		||||
                  FT_Error  *p_error );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Pointer )
 | 
			
		||||
  ft_mem_qrealloc( FT_Memory  memory,
 | 
			
		||||
                   FT_Long    item_size,
 | 
			
		||||
                   FT_Long    cur_count,
 | 
			
		||||
                   FT_Long    new_count,
 | 
			
		||||
                   void*      block,
 | 
			
		||||
                   FT_Error  *p_error );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  ft_mem_free( FT_Memory    memory,
 | 
			
		||||
               const void*  P );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_ALLOC( ptr, size )                                         \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_alloc( memory, (size), &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_FREE( ptr )                \
 | 
			
		||||
          FT_BEGIN_STMNT                  \
 | 
			
		||||
            ft_mem_free( memory, (ptr) ); \
 | 
			
		||||
            (ptr) = NULL;                 \
 | 
			
		||||
          FT_END_STMNT
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_NEW( ptr )                        \
 | 
			
		||||
          FT_MEM_ALLOC( ptr, sizeof ( *(ptr) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_REALLOC( ptr, cursz, newsz )                        \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, 1,        \
 | 
			
		||||
                                                 (cursz), (newsz), \
 | 
			
		||||
                                                 (ptr), &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_QALLOC( ptr, size )                                         \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_qalloc( memory, (size), &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_QNEW( ptr )                        \
 | 
			
		||||
          FT_MEM_QALLOC( ptr, sizeof ( *(ptr) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_QREALLOC( ptr, cursz, newsz )                         \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, 1,        \
 | 
			
		||||
                                                  (cursz), (newsz), \
 | 
			
		||||
                                                  (ptr), &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_QRENEW_ARRAY( ptr, cursz, newsz )                             \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, sizeof ( *(ptr) ), \
 | 
			
		||||
                                                  (cursz), (newsz),          \
 | 
			
		||||
                                                  (ptr), &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_ALLOC_MULT( ptr, count, item_size )                    \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, (item_size), \
 | 
			
		||||
                                                 0, (count),          \
 | 
			
		||||
                                                 NULL, &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_REALLOC_MULT( ptr, oldcnt, newcnt, itmsz )            \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, (itmsz),    \
 | 
			
		||||
                                                 (oldcnt), (newcnt), \
 | 
			
		||||
                                                 (ptr), &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_QALLOC_MULT( ptr, count, item_size )                    \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, (item_size), \
 | 
			
		||||
                                                  0, (count),          \
 | 
			
		||||
                                                  NULL, &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_QREALLOC_MULT( ptr, oldcnt, newcnt, itmsz)             \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, (itmsz),    \
 | 
			
		||||
                                                  (oldcnt), (newcnt), \
 | 
			
		||||
                                                  (ptr), &error ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_SET_ERROR( cond )  ( (cond), error != 0 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_SET( dest, byte, count )     ft_memset( dest, byte, count )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_COPY( dest, source, count )  ft_memcpy( dest, source, count )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_MOVE( dest, source, count )  ft_memmove( dest, source, count )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_ZERO( dest, count )  FT_MEM_SET( dest, 0, count )
 | 
			
		||||
 | 
			
		||||
#define FT_ZERO( p )                FT_MEM_ZERO( p, sizeof ( *(p) ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_ARRAY_ZERO( dest, count )                        \
 | 
			
		||||
          FT_MEM_ZERO( dest, (count) * sizeof ( *(dest) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_ARRAY_COPY( dest, source, count )                        \
 | 
			
		||||
          FT_MEM_COPY( dest, source, (count) * sizeof ( *(dest) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_ARRAY_MOVE( dest, source, count )                        \
 | 
			
		||||
          FT_MEM_MOVE( dest, source, (count) * sizeof ( *(dest) ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Return the maximum number of addressable elements in an array.
 | 
			
		||||
   *  We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid
 | 
			
		||||
   *  any problems.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ARRAY_MAX( ptr )           ( FT_INT_MAX / sizeof ( *(ptr) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_ARRAY_CHECK( ptr, count )  ( (count) <= FT_ARRAY_MAX( ptr ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* The following functions macros expect that their pointer argument is  */
 | 
			
		||||
  /* _typed_ in order to automatically compute array element sizes.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_NEW_ARRAY( ptr, count )                                      \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, sizeof ( *(ptr) ), \
 | 
			
		||||
                                                 0, (count),                \
 | 
			
		||||
                                                 NULL, &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_RENEW_ARRAY( ptr, cursz, newsz )                             \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, sizeof ( *(ptr) ), \
 | 
			
		||||
                                                 (cursz), (newsz),          \
 | 
			
		||||
                                                 (ptr), &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_QNEW_ARRAY( ptr, count )                                      \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, sizeof ( *(ptr) ), \
 | 
			
		||||
                                                  0, (count),                \
 | 
			
		||||
                                                  NULL, &error ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_QRENEW_ARRAY( ptr, cursz, newsz )                             \
 | 
			
		||||
          FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, sizeof ( *(ptr) ), \
 | 
			
		||||
                                                  (cursz), (newsz),          \
 | 
			
		||||
                                                  (ptr), &error ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_ALLOC( ptr, size )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_ALLOC( ptr, size ) )
 | 
			
		||||
 | 
			
		||||
#define FT_REALLOC( ptr, cursz, newsz )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_REALLOC( ptr, cursz, newsz ) )
 | 
			
		||||
 | 
			
		||||
#define FT_ALLOC_MULT( ptr, count, item_size )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_ALLOC_MULT( ptr, count, item_size ) )
 | 
			
		||||
 | 
			
		||||
#define FT_REALLOC_MULT( ptr, oldcnt, newcnt, itmsz )              \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_REALLOC_MULT( ptr, oldcnt,      \
 | 
			
		||||
                                                 newcnt, itmsz ) )
 | 
			
		||||
 | 
			
		||||
#define FT_QALLOC( ptr, size )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_QALLOC( ptr, size ) )
 | 
			
		||||
 | 
			
		||||
#define FT_QREALLOC( ptr, cursz, newsz )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_QREALLOC( ptr, cursz, newsz ) )
 | 
			
		||||
 | 
			
		||||
#define FT_QALLOC_MULT( ptr, count, item_size )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_QALLOC_MULT( ptr, count, item_size ) )
 | 
			
		||||
 | 
			
		||||
#define FT_QREALLOC_MULT( ptr, oldcnt, newcnt, itmsz )              \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_QREALLOC_MULT( ptr, oldcnt,      \
 | 
			
		||||
                                                  newcnt, itmsz ) )
 | 
			
		||||
 | 
			
		||||
#define FT_FREE( ptr )  FT_MEM_FREE( ptr )
 | 
			
		||||
 | 
			
		||||
#define FT_NEW( ptr )  FT_MEM_SET_ERROR( FT_MEM_NEW( ptr ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEW_ARRAY( ptr, count )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) )
 | 
			
		||||
 | 
			
		||||
#define FT_RENEW_ARRAY( ptr, curcnt, newcnt )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) )
 | 
			
		||||
 | 
			
		||||
#define FT_QNEW( ptr )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_QNEW( ptr ) )
 | 
			
		||||
 | 
			
		||||
#define FT_QNEW_ARRAY( ptr, count )                          \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) )
 | 
			
		||||
 | 
			
		||||
#define FT_QRENEW_ARRAY( ptr, curcnt, newcnt )                          \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Alloc( FT_Memory  memory,
 | 
			
		||||
            FT_Long    size,
 | 
			
		||||
            void*     *P );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_QAlloc( FT_Memory  memory,
 | 
			
		||||
             FT_Long    size,
 | 
			
		||||
             void*     *p );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Realloc( FT_Memory  memory,
 | 
			
		||||
              FT_Long    current,
 | 
			
		||||
              FT_Long    size,
 | 
			
		||||
              void*     *P );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_QRealloc( FT_Memory  memory,
 | 
			
		||||
               FT_Long    current,
 | 
			
		||||
               FT_Long    size,
 | 
			
		||||
               void*     *p );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Free( FT_Memory  memory,
 | 
			
		||||
           void*     *P );
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Pointer )
 | 
			
		||||
  ft_mem_strdup( FT_Memory    memory,
 | 
			
		||||
                 const char*  str,
 | 
			
		||||
                 FT_Error    *p_error );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Pointer )
 | 
			
		||||
  ft_mem_dup( FT_Memory    memory,
 | 
			
		||||
              const void*  address,
 | 
			
		||||
              FT_ULong     size,
 | 
			
		||||
              FT_Error    *p_error );
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_STRDUP( dst, str )                                            \
 | 
			
		||||
          (dst) = (char*)ft_mem_strdup( memory, (const char*)(str), &error )
 | 
			
		||||
 | 
			
		||||
#define FT_STRDUP( dst, str )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_STRDUP( dst, str ) )
 | 
			
		||||
 | 
			
		||||
#define FT_MEM_DUP( dst, address, size )                                    \
 | 
			
		||||
          (dst) = ft_mem_dup( memory, (address), (FT_ULong)(size), &error )
 | 
			
		||||
 | 
			
		||||
#define FT_DUP( dst, address, size )                           \
 | 
			
		||||
          FT_MEM_SET_ERROR( FT_MEM_DUP( dst, address, size ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Return >= 1 if a truncation occurs.            */
 | 
			
		||||
  /* Return 0 if the source string fits the buffer. */
 | 
			
		||||
  /* This is *not* the same as strlcpy().           */
 | 
			
		||||
  FT_BASE( FT_Int )
 | 
			
		||||
  ft_mem_strcpyn( char*        dst,
 | 
			
		||||
                  const char*  src,
 | 
			
		||||
                  FT_ULong     size );
 | 
			
		||||
 | 
			
		||||
#define FT_STRCPYN( dst, src, size )                                         \
 | 
			
		||||
          ft_mem_strcpyn( (char*)dst, (const char*)(src), (FT_ULong)(size) )
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMEMORY_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										874
									
								
								include/freetype/internal/ftobjs.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										874
									
								
								include/freetype/internal/ftobjs.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,874 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftobjs.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType private base classes (specification).                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  This file contains the definition of all internal FreeType classes.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTOBJS_H__
 | 
			
		||||
#define __FTOBJS_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_RENDER_H
 | 
			
		||||
#include FT_SIZES_H
 | 
			
		||||
#include FT_LCD_FILTER_H
 | 
			
		||||
#include FT_INTERNAL_MEMORY_H
 | 
			
		||||
#include FT_INTERNAL_GLYPH_LOADER_H
 | 
			
		||||
#include FT_INTERNAL_DRIVER_H
 | 
			
		||||
#include FT_INTERNAL_AUTOHINT_H
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_INCREMENTAL
 | 
			
		||||
#include FT_INCREMENTAL_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Some generic definitions.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#ifndef TRUE
 | 
			
		||||
#define TRUE  1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef FALSE
 | 
			
		||||
#define FALSE  0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef NULL
 | 
			
		||||
#define NULL  (void*)0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* The min and max functions missing in C.  As usual, be careful not to  */
 | 
			
		||||
  /* write things like FT_MIN( a++, b++ ) to avoid side effects.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_MIN( a, b )  ( (a) < (b) ? (a) : (b) )
 | 
			
		||||
#define FT_MAX( a, b )  ( (a) > (b) ? (a) : (b) )
 | 
			
		||||
 | 
			
		||||
#define FT_ABS( a )     ( (a) < 0 ? -(a) : (a) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_PAD_FLOOR( x, n )  ( (x) & ~((n)-1) )
 | 
			
		||||
#define FT_PAD_ROUND( x, n )  FT_PAD_FLOOR( (x) + ((n)/2), n )
 | 
			
		||||
#define FT_PAD_CEIL( x, n )   FT_PAD_FLOOR( (x) + ((n)-1), n )
 | 
			
		||||
 | 
			
		||||
#define FT_PIX_FLOOR( x )     ( (x) & ~63 )
 | 
			
		||||
#define FT_PIX_ROUND( x )     FT_PIX_FLOOR( (x) + 32 )
 | 
			
		||||
#define FT_PIX_CEIL( x )      FT_PIX_FLOOR( (x) + 63 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Return the highest power of 2 that is <= value; this correspond to
 | 
			
		||||
   *  the highest bit in a given 32-bit value.
 | 
			
		||||
   */
 | 
			
		||||
  FT_BASE( FT_UInt32 )
 | 
			
		||||
  ft_highpow2( FT_UInt32  value );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  character classification functions -- since these are used to parse
 | 
			
		||||
   *  font files, we must not use those in <ctypes.h> which are
 | 
			
		||||
   *  locale-dependent
 | 
			
		||||
   */
 | 
			
		||||
#define  ft_isdigit( x )   ( ( (unsigned)(x) - '0' ) < 10U )
 | 
			
		||||
 | 
			
		||||
#define  ft_isxdigit( x )  ( ( (unsigned)(x) - '0' ) < 10U || \
 | 
			
		||||
                             ( (unsigned)(x) - 'a' ) < 6U  || \
 | 
			
		||||
                             ( (unsigned)(x) - 'A' ) < 6U  )
 | 
			
		||||
 | 
			
		||||
  /* the next two macros assume ASCII representation */
 | 
			
		||||
#define  ft_isupper( x )  ( ( (unsigned)(x) - 'A' ) < 26U )
 | 
			
		||||
#define  ft_islower( x )  ( ( (unsigned)(x) - 'a' ) < 26U )
 | 
			
		||||
 | 
			
		||||
#define  ft_isalpha( x )  ( ft_isupper( x ) || ft_islower( x ) )
 | 
			
		||||
#define  ft_isalnum( x )  ( ft_isdigit( x ) || ft_isalpha( x ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                       C H A R M A P S                           ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /* handle to internal charmap object */
 | 
			
		||||
  typedef struct FT_CMapRec_*              FT_CMap;
 | 
			
		||||
 | 
			
		||||
  /* handle to charmap class structure */
 | 
			
		||||
  typedef const struct FT_CMap_ClassRec_*  FT_CMap_Class;
 | 
			
		||||
 | 
			
		||||
  /* internal charmap object structure */
 | 
			
		||||
  typedef struct  FT_CMapRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_CharMapRec  charmap;
 | 
			
		||||
    FT_CMap_Class  clazz;
 | 
			
		||||
 | 
			
		||||
  } FT_CMapRec;
 | 
			
		||||
 | 
			
		||||
  /* typecase any pointer to a charmap handle */
 | 
			
		||||
#define FT_CMAP( x )              ((FT_CMap)( x ))
 | 
			
		||||
 | 
			
		||||
  /* obvious macros */
 | 
			
		||||
#define FT_CMAP_PLATFORM_ID( x )  FT_CMAP( x )->charmap.platform_id
 | 
			
		||||
#define FT_CMAP_ENCODING_ID( x )  FT_CMAP( x )->charmap.encoding_id
 | 
			
		||||
#define FT_CMAP_ENCODING( x )     FT_CMAP( x )->charmap.encoding
 | 
			
		||||
#define FT_CMAP_FACE( x )         FT_CMAP( x )->charmap.face
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* class method definitions */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_CMap_InitFunc)( FT_CMap     cmap,
 | 
			
		||||
                       FT_Pointer  init_data );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_CMap_DoneFunc)( FT_CMap  cmap );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt
 | 
			
		||||
  (*FT_CMap_CharIndexFunc)( FT_CMap    cmap,
 | 
			
		||||
                            FT_UInt32  char_code );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt
 | 
			
		||||
  (*FT_CMap_CharNextFunc)( FT_CMap     cmap,
 | 
			
		||||
                           FT_UInt32  *achar_code );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt
 | 
			
		||||
  (*FT_CMap_CharVarIndexFunc)( FT_CMap    cmap,
 | 
			
		||||
                               FT_CMap    unicode_cmap,
 | 
			
		||||
                               FT_UInt32  char_code,
 | 
			
		||||
                               FT_UInt32  variant_selector );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Bool
 | 
			
		||||
  (*FT_CMap_CharVarIsDefaultFunc)( FT_CMap    cmap,
 | 
			
		||||
                                   FT_UInt32  char_code,
 | 
			
		||||
                                   FT_UInt32  variant_selector );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt32 *
 | 
			
		||||
  (*FT_CMap_VariantListFunc)( FT_CMap    cmap,
 | 
			
		||||
                              FT_Memory  mem );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt32 *
 | 
			
		||||
  (*FT_CMap_CharVariantListFunc)( FT_CMap    cmap,
 | 
			
		||||
                                  FT_Memory  mem,
 | 
			
		||||
                                  FT_UInt32  char_code );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt32 *
 | 
			
		||||
  (*FT_CMap_VariantCharListFunc)( FT_CMap    cmap,
 | 
			
		||||
                                  FT_Memory  mem,
 | 
			
		||||
                                  FT_UInt32  variant_selector );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_CMap_ClassRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ULong               size;
 | 
			
		||||
    FT_CMap_InitFunc       init;
 | 
			
		||||
    FT_CMap_DoneFunc       done;
 | 
			
		||||
    FT_CMap_CharIndexFunc  char_index;
 | 
			
		||||
    FT_CMap_CharNextFunc   char_next;
 | 
			
		||||
    /* Subsequent entries are special ones for format 14 -- the variant */
 | 
			
		||||
    /* selector subtable which behaves like no other                    */
 | 
			
		||||
 | 
			
		||||
    FT_CMap_CharVarIndexFunc      char_var_index;
 | 
			
		||||
    FT_CMap_CharVarIsDefaultFunc  char_var_default;
 | 
			
		||||
    FT_CMap_VariantListFunc       variant_list;
 | 
			
		||||
    FT_CMap_CharVariantListFunc   charvariant_list;
 | 
			
		||||
    FT_CMap_VariantCharListFunc   variantchar_list;
 | 
			
		||||
 | 
			
		||||
  } FT_CMap_ClassRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* create a new charmap and add it to charmap->face */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_CMap_New( FT_CMap_Class  clazz,
 | 
			
		||||
               FT_Pointer     init_data,
 | 
			
		||||
               FT_CharMap     charmap,
 | 
			
		||||
               FT_CMap       *acmap );
 | 
			
		||||
 | 
			
		||||
  /* destroy a charmap and remove it from face's list */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_CMap_Done( FT_CMap  cmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Face_InternalRec                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This structure contains the internal fields of each FT_Face        */
 | 
			
		||||
  /*    object.  These fields may change between different releases of     */
 | 
			
		||||
  /*    FreeType.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    max_points ::                                                      */
 | 
			
		||||
  /*      The maximal number of points used to store the vectorial outline */
 | 
			
		||||
  /*      of any glyph in this face.  If this value cannot be known in     */
 | 
			
		||||
  /*      advance, or if the face isn't scalable, this should be set to 0. */
 | 
			
		||||
  /*      Only relevant for scalable formats.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    max_contours ::                                                    */
 | 
			
		||||
  /*      The maximal number of contours used to store the vectorial       */
 | 
			
		||||
  /*      outline of any glyph in this face.  If this value cannot be      */
 | 
			
		||||
  /*      known in advance, or if the face isn't scalable, this should be  */
 | 
			
		||||
  /*      set to 0.  Only relevant for scalable formats.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    transform_matrix ::                                                */
 | 
			
		||||
  /*      A 2x2 matrix of 16.16 coefficients used to transform glyph       */
 | 
			
		||||
  /*      outlines after they are loaded from the font.  Only used by the  */
 | 
			
		||||
  /*      convenience functions.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    transform_delta ::                                                 */
 | 
			
		||||
  /*      A translation vector used to transform glyph outlines after they */
 | 
			
		||||
  /*      are loaded from the font.  Only used by the convenience          */
 | 
			
		||||
  /*      functions.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    transform_flags ::                                                 */
 | 
			
		||||
  /*      Some flags used to classify the transform.  Only used by the     */
 | 
			
		||||
  /*      convenience functions.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    services ::                                                        */
 | 
			
		||||
  /*      A cache for frequently used services.  It should be only         */
 | 
			
		||||
  /*      accessed with the macro `FT_FACE_LOOKUP_SERVICE'.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    incremental_interface ::                                           */
 | 
			
		||||
  /*      If non-null, the interface through which glyph data and metrics  */
 | 
			
		||||
  /*      are loaded incrementally for faces that do not provide all of    */
 | 
			
		||||
  /*      this data when first opened.  This field exists only if          */
 | 
			
		||||
  /*      @FT_CONFIG_OPTION_INCREMENTAL is defined.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    ignore_unpatented_hinter ::                                        */
 | 
			
		||||
  /*      This boolean flag instructs the glyph loader to ignore the       */
 | 
			
		||||
  /*      native font hinter, if one is found.  This is exclusively used   */
 | 
			
		||||
  /*      in the case when the unpatented hinter is compiled within the    */
 | 
			
		||||
  /*      library.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Face_InternalRec_
 | 
			
		||||
  {
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
    FT_UShort           reserved1;
 | 
			
		||||
    FT_Short            reserved2;
 | 
			
		||||
#endif
 | 
			
		||||
    FT_Matrix           transform_matrix;
 | 
			
		||||
    FT_Vector           transform_delta;
 | 
			
		||||
    FT_Int              transform_flags;
 | 
			
		||||
 | 
			
		||||
    FT_ServiceCacheRec  services;
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_INCREMENTAL
 | 
			
		||||
    FT_Incremental_InterfaceRec*  incremental_interface;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    FT_Bool             ignore_unpatented_hinter;
 | 
			
		||||
 | 
			
		||||
  } FT_Face_InternalRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Slot_InternalRec                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This structure contains the internal fields of each FT_GlyphSlot   */
 | 
			
		||||
  /*    object.  These fields may change between different releases of     */
 | 
			
		||||
  /*    FreeType.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    loader            :: The glyph loader object used to load outlines */
 | 
			
		||||
  /*                         into the glyph slot.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    flags             :: Possible values are zero or                   */
 | 
			
		||||
  /*                         FT_GLYPH_OWN_BITMAP.  The latter indicates    */
 | 
			
		||||
  /*                         that the FT_GlyphSlot structure owns the      */
 | 
			
		||||
  /*                         bitmap buffer.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_transformed :: Boolean.  Set to TRUE when the loaded glyph   */
 | 
			
		||||
  /*                         must be transformed through a specific        */
 | 
			
		||||
  /*                         font transformation.  This is _not_ the same  */
 | 
			
		||||
  /*                         as the face transform set through             */
 | 
			
		||||
  /*                         FT_Set_Transform().                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_matrix      :: The 2x2 matrix corresponding to the glyph     */
 | 
			
		||||
  /*                         transformation, if necessary.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_delta       :: The 2d translation vector corresponding to    */
 | 
			
		||||
  /*                         the glyph transformation, if necessary.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_hints       :: Format-specific glyph hints management.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
 | 
			
		||||
#define FT_GLYPH_OWN_BITMAP  0x1
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_Slot_InternalRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_GlyphLoader  loader;
 | 
			
		||||
    FT_UInt         flags;
 | 
			
		||||
    FT_Bool         glyph_transformed;
 | 
			
		||||
    FT_Matrix       glyph_matrix;
 | 
			
		||||
    FT_Vector       glyph_delta;
 | 
			
		||||
    void*           glyph_hints;
 | 
			
		||||
 | 
			
		||||
  } FT_GlyphSlot_InternalRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Size_InternalRec                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This structure contains the internal fields of each FT_Size        */
 | 
			
		||||
  /*    object.  Currently, it's empty.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_Size_InternalRec_
 | 
			
		||||
  {
 | 
			
		||||
    /* empty */
 | 
			
		||||
 | 
			
		||||
  } FT_Size_InternalRec;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                         M O D U L E S                           ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_ModuleRec                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A module object instance.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    clazz   :: A pointer to the module's class.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    library :: A handle to the parent library object.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    memory  :: A handle to the memory manager.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    generic :: A generic structure for user-level extensibility (?).   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_ModuleRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Module_Class*  clazz;
 | 
			
		||||
    FT_Library        library;
 | 
			
		||||
    FT_Memory         memory;
 | 
			
		||||
    FT_Generic        generic;
 | 
			
		||||
 | 
			
		||||
  } FT_ModuleRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* typecast an object to a FT_Module */
 | 
			
		||||
#define FT_MODULE( x )          ((FT_Module)( x ))
 | 
			
		||||
#define FT_MODULE_CLASS( x )    FT_MODULE( x )->clazz
 | 
			
		||||
#define FT_MODULE_LIBRARY( x )  FT_MODULE( x )->library
 | 
			
		||||
#define FT_MODULE_MEMORY( x )   FT_MODULE( x )->memory
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_MODULE_IS_DRIVER( x )  ( FT_MODULE_CLASS( x )->module_flags & \
 | 
			
		||||
                                    FT_MODULE_FONT_DRIVER )
 | 
			
		||||
 | 
			
		||||
#define FT_MODULE_IS_RENDERER( x )  ( FT_MODULE_CLASS( x )->module_flags & \
 | 
			
		||||
                                      FT_MODULE_RENDERER )
 | 
			
		||||
 | 
			
		||||
#define FT_MODULE_IS_HINTER( x )  ( FT_MODULE_CLASS( x )->module_flags & \
 | 
			
		||||
                                    FT_MODULE_HINTER )
 | 
			
		||||
 | 
			
		||||
#define FT_MODULE_IS_STYLER( x )  ( FT_MODULE_CLASS( x )->module_flags & \
 | 
			
		||||
                                    FT_MODULE_STYLER )
 | 
			
		||||
 | 
			
		||||
#define FT_DRIVER_IS_SCALABLE( x )  ( FT_MODULE_CLASS( x )->module_flags & \
 | 
			
		||||
                                      FT_MODULE_DRIVER_SCALABLE )
 | 
			
		||||
 | 
			
		||||
#define FT_DRIVER_USES_OUTLINES( x )  !( FT_MODULE_CLASS( x )->module_flags & \
 | 
			
		||||
                                         FT_MODULE_DRIVER_NO_OUTLINES )
 | 
			
		||||
 | 
			
		||||
#define FT_DRIVER_HAS_HINTER( x )  ( FT_MODULE_CLASS( x )->module_flags & \
 | 
			
		||||
                                     FT_MODULE_DRIVER_HAS_HINTER )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Module_Interface                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Finds a module and returns its specific interface as a typeless    */
 | 
			
		||||
  /*    pointer.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library     :: A handle to the library object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_name :: The module's name (as an ASCII string).             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    A module-specific interface if available, 0 otherwise.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You should better be familiar with FreeType internals to know      */
 | 
			
		||||
  /*    which module to look for, and what its interface is :-)            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( const void* )
 | 
			
		||||
  FT_Get_Module_Interface( FT_Library   library,
 | 
			
		||||
                           const char*  mod_name );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Pointer )
 | 
			
		||||
  ft_module_get_service( FT_Module    module,
 | 
			
		||||
                         const char*  service_id );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****               FACE, SIZE & GLYPH SLOT OBJECTS                   ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /* a few macros used to perform easy typecasts with minimal brain damage */
 | 
			
		||||
 | 
			
		||||
#define FT_FACE( x )          ((FT_Face)(x))
 | 
			
		||||
#define FT_SIZE( x )          ((FT_Size)(x))
 | 
			
		||||
#define FT_SLOT( x )          ((FT_GlyphSlot)(x))
 | 
			
		||||
 | 
			
		||||
#define FT_FACE_DRIVER( x )   FT_FACE( x )->driver
 | 
			
		||||
#define FT_FACE_LIBRARY( x )  FT_FACE_DRIVER( x )->root.library
 | 
			
		||||
#define FT_FACE_MEMORY( x )   FT_FACE( x )->memory
 | 
			
		||||
#define FT_FACE_STREAM( x )   FT_FACE( x )->stream
 | 
			
		||||
 | 
			
		||||
#define FT_SIZE_FACE( x )     FT_SIZE( x )->face
 | 
			
		||||
#define FT_SLOT_FACE( x )     FT_SLOT( x )->face
 | 
			
		||||
 | 
			
		||||
#define FT_FACE_SLOT( x )     FT_FACE( x )->glyph
 | 
			
		||||
#define FT_FACE_SIZE( x )     FT_FACE( x )->size
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_GlyphSlot                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    It is sometimes useful to have more than one glyph slot for a      */
 | 
			
		||||
  /*    given face object.  This function is used to create additional     */
 | 
			
		||||
  /*    slots.  All of them are automatically discarded when the face is   */
 | 
			
		||||
  /*    destroyed.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face  :: A handle to a parent face object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aslot :: A handle to a new glyph slot object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_New_GlyphSlot( FT_Face        face,
 | 
			
		||||
                    FT_GlyphSlot  *aslot );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Done_GlyphSlot                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroys a given glyph slot.  Remember however that all slots are  */
 | 
			
		||||
  /*    automatically destroyed with its parent.  Using this function is   */
 | 
			
		||||
  /*    not always mandatory.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    slot :: A handle to a target glyph slot.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Done_GlyphSlot( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
#define FT_REQUEST_WIDTH( req )                                            \
 | 
			
		||||
          ( (req)->horiResolution                                          \
 | 
			
		||||
              ? (FT_Pos)( (req)->width * (req)->horiResolution + 36 ) / 72 \
 | 
			
		||||
              : (req)->width )
 | 
			
		||||
 | 
			
		||||
#define FT_REQUEST_HEIGHT( req )                                            \
 | 
			
		||||
          ( (req)->vertResolution                                           \
 | 
			
		||||
              ? (FT_Pos)( (req)->height * (req)->vertResolution + 36 ) / 72 \
 | 
			
		||||
              : (req)->height )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Set the metrics according to a bitmap strike. */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Select_Metrics( FT_Face   face,
 | 
			
		||||
                     FT_ULong  strike_index );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Set the metrics according to a size request. */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Request_Metrics( FT_Face          face,
 | 
			
		||||
                      FT_Size_Request  req );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Match a size request against `available_sizes'. */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Match_Size( FT_Face          face,
 | 
			
		||||
                 FT_Size_Request  req,
 | 
			
		||||
                 FT_Bool          ignore_width,
 | 
			
		||||
                 FT_ULong*        size_index );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Use the horizontal metrics to synthesize the vertical metrics. */
 | 
			
		||||
  /* If `advance' is zero, it is also synthesized.                  */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  ft_synthesize_vertical_metrics( FT_Glyph_Metrics*  metrics,
 | 
			
		||||
                                  FT_Pos             advance );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Free the bitmap of a given glyphslot when needed (i.e., only when it */
 | 
			
		||||
  /* was allocated with ft_glyphslot_alloc_bitmap).                       */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  ft_glyphslot_free_bitmap( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Allocate a new bitmap buffer in a glyph slot. */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  ft_glyphslot_alloc_bitmap( FT_GlyphSlot  slot,
 | 
			
		||||
                             FT_ULong      size );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Set the bitmap buffer in a glyph slot to a given pointer.  The buffer */
 | 
			
		||||
  /* will not be freed by a later call to ft_glyphslot_free_bitmap.        */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  ft_glyphslot_set_bitmap( FT_GlyphSlot  slot,
 | 
			
		||||
                           FT_Byte*      buffer );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                        R E N D E R E R S                        ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_RENDERER( x )      ((FT_Renderer)( x ))
 | 
			
		||||
#define FT_GLYPH( x )         ((FT_Glyph)( x ))
 | 
			
		||||
#define FT_BITMAP_GLYPH( x )  ((FT_BitmapGlyph)( x ))
 | 
			
		||||
#define FT_OUTLINE_GLYPH( x ) ((FT_OutlineGlyph)( x ))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_RendererRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ModuleRec            root;
 | 
			
		||||
    FT_Renderer_Class*      clazz;
 | 
			
		||||
    FT_Glyph_Format         glyph_format;
 | 
			
		||||
    FT_Glyph_Class          glyph_class;
 | 
			
		||||
 | 
			
		||||
    FT_Raster               raster;
 | 
			
		||||
    FT_Raster_Render_Func   raster_render;
 | 
			
		||||
    FT_Renderer_RenderFunc  render;
 | 
			
		||||
 | 
			
		||||
  } FT_RendererRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                    F O N T   D R I V E R S                      ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* typecast a module into a driver easily */
 | 
			
		||||
#define FT_DRIVER( x )        ((FT_Driver)(x))
 | 
			
		||||
 | 
			
		||||
  /* typecast a module as a driver, and get its driver class */
 | 
			
		||||
#define FT_DRIVER_CLASS( x )  FT_DRIVER( x )->clazz
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_DriverRec                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The root font driver class.  A font driver is responsible for      */
 | 
			
		||||
  /*    managing and loading font files of a given format.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  <Fields>                                                             */
 | 
			
		||||
  /*     root         :: Contains the fields of the root module class.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     clazz        :: A pointer to the font driver's class.  Note that  */
 | 
			
		||||
  /*                     this is NOT root.clazz.  `class' wasn't used      */
 | 
			
		||||
  /*                     as it is a reserved word in C++.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     faces_list   :: The list of faces currently opened by this        */
 | 
			
		||||
  /*                     driver.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     extensions   :: A typeless pointer to the driver's extensions     */
 | 
			
		||||
  /*                     registry, if they are supported through the       */
 | 
			
		||||
  /*                     configuration macro FT_CONFIG_OPTION_EXTENSIONS.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     glyph_loader :: The glyph loader for all faces managed by this    */
 | 
			
		||||
  /*                     driver.  This object isn't defined for unscalable */
 | 
			
		||||
  /*                     formats.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_DriverRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ModuleRec     root;
 | 
			
		||||
    FT_Driver_Class  clazz;
 | 
			
		||||
 | 
			
		||||
    FT_ListRec       faces_list;
 | 
			
		||||
    void*            extensions;
 | 
			
		||||
 | 
			
		||||
    FT_GlyphLoader   glyph_loader;
 | 
			
		||||
 | 
			
		||||
  } FT_DriverRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                       L I B R A R I E S                         ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* This hook is used by the TrueType debugger.  It must be set to an */
 | 
			
		||||
  /* alternate truetype bytecode interpreter function.                 */
 | 
			
		||||
#define FT_DEBUG_HOOK_TRUETYPE            0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Set this debug hook to a non-null pointer to force unpatented hinting */
 | 
			
		||||
  /* for all faces when both TT_USE_BYTECODE_INTERPRETER and               */
 | 
			
		||||
  /* TT_CONFIG_OPTION_UNPATENTED_HINTING are defined.  This is only used   */
 | 
			
		||||
  /* during debugging.                                                     */
 | 
			
		||||
#define FT_DEBUG_HOOK_UNPATENTED_HINTING  1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef void  (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap*      bitmap,
 | 
			
		||||
                                            FT_Render_Mode  render_mode,
 | 
			
		||||
                                            FT_Library      library );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_LibraryRec                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The FreeType library class.  This is the root of all FreeType      */
 | 
			
		||||
  /*    data.  Use FT_New_Library() to create a library object, and        */
 | 
			
		||||
  /*    FT_Done_Library() to discard it and all child objects.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    memory           :: The library's memory object.  Manages memory   */
 | 
			
		||||
  /*                        allocation.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    generic          :: Client data variable.  Used to extend the      */
 | 
			
		||||
  /*                        Library class by higher levels and clients.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    version_major    :: The major version number of the library.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    version_minor    :: The minor version number of the library.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    version_patch    :: The current patch level of the library.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_modules      :: The number of modules currently registered     */
 | 
			
		||||
  /*                        within this library.  This is set to 0 for new */
 | 
			
		||||
  /*                        libraries.  New modules are added through the  */
 | 
			
		||||
  /*                        FT_Add_Module() API function.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    modules          :: A table used to store handles to the currently */
 | 
			
		||||
  /*                        registered modules. Note that each font driver */
 | 
			
		||||
  /*                        contains a list of its opened faces.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    renderers        :: The list of renderers currently registered     */
 | 
			
		||||
  /*                        within the library.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    cur_renderer     :: The current outline renderer.  This is a       */
 | 
			
		||||
  /*                        shortcut used to avoid parsing the list on     */
 | 
			
		||||
  /*                        each call to FT_Outline_Render().  It is a     */
 | 
			
		||||
  /*                        handle to the current renderer for the         */
 | 
			
		||||
  /*                        FT_GLYPH_FORMAT_OUTLINE format.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    auto_hinter      :: XXX                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    raster_pool      :: The raster object's render pool.  This can     */
 | 
			
		||||
  /*                        ideally be changed dynamically at run-time.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    raster_pool_size :: The size of the render pool in bytes.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    debug_hooks      :: XXX                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_LibraryRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Memory          memory;           /* library's memory manager */
 | 
			
		||||
 | 
			
		||||
    FT_Generic         generic;
 | 
			
		||||
 | 
			
		||||
    FT_Int             version_major;
 | 
			
		||||
    FT_Int             version_minor;
 | 
			
		||||
    FT_Int             version_patch;
 | 
			
		||||
 | 
			
		||||
    FT_UInt            num_modules;
 | 
			
		||||
    FT_Module          modules[FT_MAX_MODULES];  /* module objects  */
 | 
			
		||||
 | 
			
		||||
    FT_ListRec         renderers;        /* list of renderers        */
 | 
			
		||||
    FT_Renderer        cur_renderer;     /* current outline renderer */
 | 
			
		||||
    FT_Module          auto_hinter;
 | 
			
		||||
 | 
			
		||||
    FT_Byte*           raster_pool;      /* scan-line conversion */
 | 
			
		||||
                                         /* render pool          */
 | 
			
		||||
    FT_ULong           raster_pool_size; /* size of render pool in bytes */
 | 
			
		||||
 | 
			
		||||
    FT_DebugHook_Func  debug_hooks[4];
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
 | 
			
		||||
    FT_LcdFilter             lcd_filter;
 | 
			
		||||
    FT_Int                   lcd_extra;        /* number of extra pixels */
 | 
			
		||||
    FT_Byte                  lcd_weights[7];   /* filter weights, if any */
 | 
			
		||||
    FT_Bitmap_LcdFilterFunc  lcd_filter_func;  /* filtering callback     */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  } FT_LibraryRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Renderer )
 | 
			
		||||
  FT_Lookup_Renderer( FT_Library       library,
 | 
			
		||||
                      FT_Glyph_Format  format,
 | 
			
		||||
                      FT_ListNode*     node );
 | 
			
		||||
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Render_Glyph_Internal( FT_Library      library,
 | 
			
		||||
                            FT_GlyphSlot    slot,
 | 
			
		||||
                            FT_Render_Mode  render_mode );
 | 
			
		||||
 | 
			
		||||
  typedef const char*
 | 
			
		||||
  (*FT_Face_GetPostscriptNameFunc)( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Face_GetGlyphNameFunc)( FT_Face     face,
 | 
			
		||||
                               FT_UInt     glyph_index,
 | 
			
		||||
                               FT_Pointer  buffer,
 | 
			
		||||
                               FT_UInt     buffer_max );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt
 | 
			
		||||
  (*FT_Face_GetGlyphNameIndexFunc)( FT_Face     face,
 | 
			
		||||
                                    FT_String*  glyph_name );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Memory                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Creates a new memory object.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    A pointer to the new memory object.  0 in case of error.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( FT_Memory )
 | 
			
		||||
  FT_New_Memory( void );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Done_Memory                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Discards memory manager.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    memory :: A handle to the memory manager.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Done_Memory( FT_Memory  memory );
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Define default raster's interface.  The default raster is located in  */
 | 
			
		||||
  /* `src/base/ftraster.c'.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Client applications can register new rasters through the              */
 | 
			
		||||
  /* FT_Set_Raster() API.                                                  */
 | 
			
		||||
 | 
			
		||||
#ifndef FT_NO_DEFAULT_RASTER
 | 
			
		||||
  FT_EXPORT_VAR( FT_Raster_Funcs )  ft_default_raster;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTOBJS_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										196
									
								
								include/freetype/internal/ftrfork.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								include/freetype/internal/ftrfork.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,196 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftrfork.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Embedded resource forks accessor (specification).                    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004, 2006, 2007 by                                          */
 | 
			
		||||
/*  Masatake YAMATO and Redhat K.K.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/* Development of the code in this file is support of                      */
 | 
			
		||||
/* Information-technology Promotion Agency, Japan.                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTRFORK_H__
 | 
			
		||||
#define __FTRFORK_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_INTERNAL_OBJECTS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Number of guessing rules supported in `FT_Raccess_Guess'.            */
 | 
			
		||||
  /* Don't forget to increment the number if you add a new guessing rule. */
 | 
			
		||||
#define FT_RACCESS_N_RULES  9
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* A structure to describe a reference in a resource by its resource ID */
 | 
			
		||||
  /* and internal offset.  The `POST' resource expects to be concatenated */
 | 
			
		||||
  /* by the order of resource IDs instead of its appearance in the file.  */
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_RFork_Ref_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UShort  res_id;
 | 
			
		||||
    FT_ULong   offset;
 | 
			
		||||
 | 
			
		||||
  } FT_RFork_Ref;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Raccess_Guess                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Guess a file name and offset where the actual resource fork is     */
 | 
			
		||||
  /*    stored.  The macro FT_RACCESS_N_RULES holds the number of          */
 | 
			
		||||
  /*    guessing rules;  the guessed result for the Nth rule is            */
 | 
			
		||||
  /*    represented as a triplet: a new file name (new_names[N]), a file   */
 | 
			
		||||
  /*    offset (offsets[N]), and an error code (errors[N]).                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library ::                                                         */
 | 
			
		||||
  /*      A FreeType library instance.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream ::                                                          */
 | 
			
		||||
  /*      A file stream containing the resource fork.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    base_name ::                                                       */
 | 
			
		||||
  /*      The (base) file name of the resource fork used for some          */
 | 
			
		||||
  /*      guessing rules.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    new_names ::                                                       */
 | 
			
		||||
  /*      An array of guessed file names in which the resource forks may   */
 | 
			
		||||
  /*      exist.  If `new_names[N]' is NULL, the guessed file name is      */
 | 
			
		||||
  /*      equal to `base_name'.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    offsets ::                                                         */
 | 
			
		||||
  /*      An array of guessed file offsets.  `offsets[N]' holds the file   */
 | 
			
		||||
  /*      offset of the possible start of the resource fork in file        */
 | 
			
		||||
  /*      `new_names[N]'.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    errors ::                                                          */
 | 
			
		||||
  /*      An array of FreeType error codes.  `errors[N]' is the error      */
 | 
			
		||||
  /*      code of Nth guessing rule function.  If `errors[N]' is not       */
 | 
			
		||||
  /*      FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Raccess_Guess( FT_Library  library,
 | 
			
		||||
                    FT_Stream   stream,
 | 
			
		||||
                    char*       base_name,
 | 
			
		||||
                    char**      new_names,
 | 
			
		||||
                    FT_Long*    offsets,
 | 
			
		||||
                    FT_Error*   errors );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Raccess_Get_HeaderInfo                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Get the information from the header of resource fork.  The         */
 | 
			
		||||
  /*    information includes the file offset where the resource map        */
 | 
			
		||||
  /*    starts, and the file offset where the resource data starts.        */
 | 
			
		||||
  /*    `FT_Raccess_Get_DataOffsets' requires these two data.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library ::                                                         */
 | 
			
		||||
  /*      A FreeType library instance.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream ::                                                          */
 | 
			
		||||
  /*      A file stream containing the resource fork.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    rfork_offset ::                                                    */
 | 
			
		||||
  /*      The file offset where the resource fork starts.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    map_offset ::                                                      */
 | 
			
		||||
  /*      The file offset where the resource map starts.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    rdata_pos ::                                                       */
 | 
			
		||||
  /*      The file offset where the resource data starts.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  FT_Err_Ok means success.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Raccess_Get_HeaderInfo( FT_Library  library,
 | 
			
		||||
                             FT_Stream   stream,
 | 
			
		||||
                             FT_Long     rfork_offset,
 | 
			
		||||
                             FT_Long    *map_offset,
 | 
			
		||||
                             FT_Long    *rdata_pos );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Raccess_Get_DataOffsets                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Get the data offsets for a tag in a resource fork.  Offsets are    */
 | 
			
		||||
  /*    stored in an array because, in some cases, resources in a resource */
 | 
			
		||||
  /*    fork have the same tag.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library ::                                                         */
 | 
			
		||||
  /*      A FreeType library instance.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream ::                                                          */
 | 
			
		||||
  /*      A file stream containing the resource fork.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    map_offset ::                                                      */
 | 
			
		||||
  /*      The file offset where the resource map starts.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    rdata_pos ::                                                       */
 | 
			
		||||
  /*      The file offset where the resource data starts.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    tag ::                                                             */
 | 
			
		||||
  /*      The resource tag.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    offsets ::                                                         */
 | 
			
		||||
  /*      The stream offsets for the resource data specified by `tag'.     */
 | 
			
		||||
  /*      This array is allocated by the function, so you have to call     */
 | 
			
		||||
  /*      @ft_mem_free after use.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    count ::                                                           */
 | 
			
		||||
  /*      The length of offsets array.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  FT_Err_Ok means success.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Normally you should use `FT_Raccess_Get_HeaderInfo' to get the     */
 | 
			
		||||
  /*    value for `map_offset' and `rdata_pos'.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Raccess_Get_DataOffsets( FT_Library  library,
 | 
			
		||||
                              FT_Stream   stream,
 | 
			
		||||
                              FT_Long     map_offset,
 | 
			
		||||
                              FT_Long     rdata_pos,
 | 
			
		||||
                              FT_Long     tag,
 | 
			
		||||
                              FT_Long   **offsets,
 | 
			
		||||
                              FT_Long    *count );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTRFORK_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										328
									
								
								include/freetype/internal/ftserv.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										328
									
								
								include/freetype/internal/ftserv.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,328 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftserv.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType services (specification only).                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004, 2005, 2006, 2007 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  Each module can export one or more `services'.  Each service is      */
 | 
			
		||||
  /*  identified by a constant string and modeled by a pointer; the latter */
 | 
			
		||||
  /*  generally corresponds to a structure containing function pointers.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  Note that a service's data cannot be a mere function pointer because */
 | 
			
		||||
  /*  in C it is possible that function pointers might be implemented      */
 | 
			
		||||
  /*  differently than data pointers (e.g. 48 bits instead of 32).         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTSERV_H__
 | 
			
		||||
#define __FTSERV_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
#if defined( _MSC_VER )      /* Visual C++ (and Intel C++) */
 | 
			
		||||
 | 
			
		||||
  /* we disable the warning `conditional expression is constant' here */
 | 
			
		||||
  /* in order to compile cleanly with the maximum level of warnings   */
 | 
			
		||||
#pragma warning( disable : 4127 )
 | 
			
		||||
 | 
			
		||||
#endif /* _MSC_VER */
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_FACE_FIND_SERVICE
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This macro is used to look up a service from a face's driver module.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   face ::
 | 
			
		||||
   *     The source face handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   id ::
 | 
			
		||||
   *     A string describing the service as defined in the service's
 | 
			
		||||
   *     header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to
 | 
			
		||||
   *     `multi-masters').  It is automatically prefixed with
 | 
			
		||||
   *     `FT_SERVICE_ID_'.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   ptr ::
 | 
			
		||||
   *     A variable that receives the service pointer.  Will be NULL
 | 
			
		||||
   *     if not found.
 | 
			
		||||
   */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 | 
			
		||||
#define FT_FACE_FIND_SERVICE( face, ptr, id )                               \
 | 
			
		||||
  FT_BEGIN_STMNT                                                            \
 | 
			
		||||
    FT_Module    module = FT_MODULE( FT_FACE( face )->driver );             \
 | 
			
		||||
    FT_Pointer   _tmp_  = NULL;                                             \
 | 
			
		||||
    FT_Pointer*  _pptr_ = (FT_Pointer*)&(ptr);                              \
 | 
			
		||||
                                                                            \
 | 
			
		||||
                                                                            \
 | 
			
		||||
    if ( module->clazz->get_interface )                                     \
 | 
			
		||||
      _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \
 | 
			
		||||
    *_pptr_ = _tmp_;                                                        \
 | 
			
		||||
  FT_END_STMNT
 | 
			
		||||
 | 
			
		||||
#else /* !C++ */
 | 
			
		||||
 | 
			
		||||
#define FT_FACE_FIND_SERVICE( face, ptr, id )                               \
 | 
			
		||||
  FT_BEGIN_STMNT                                                            \
 | 
			
		||||
    FT_Module   module = FT_MODULE( FT_FACE( face )->driver );              \
 | 
			
		||||
    FT_Pointer  _tmp_  = NULL;                                              \
 | 
			
		||||
                                                                            \
 | 
			
		||||
    if ( module->clazz->get_interface )                                     \
 | 
			
		||||
      _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \
 | 
			
		||||
    ptr = _tmp_;                                                            \
 | 
			
		||||
  FT_END_STMNT
 | 
			
		||||
 | 
			
		||||
#endif /* !C++ */
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_FACE_FIND_GLOBAL_SERVICE
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This macro is used to look up a service from all modules.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   face ::
 | 
			
		||||
   *     The source face handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   id ::
 | 
			
		||||
   *     A string describing the service as defined in the service's
 | 
			
		||||
   *     header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to
 | 
			
		||||
   *     `multi-masters').  It is automatically prefixed with
 | 
			
		||||
   *     `FT_SERVICE_ID_'.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   ptr ::
 | 
			
		||||
   *     A variable that receives the service pointer.  Will be NULL
 | 
			
		||||
   *     if not found.
 | 
			
		||||
   */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 | 
			
		||||
#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id )               \
 | 
			
		||||
  FT_BEGIN_STMNT                                                   \
 | 
			
		||||
    FT_Module    module = FT_MODULE( FT_FACE( face )->driver );    \
 | 
			
		||||
    FT_Pointer   _tmp_;                                            \
 | 
			
		||||
    FT_Pointer*  _pptr_ = (FT_Pointer*)&(ptr);                     \
 | 
			
		||||
                                                                   \
 | 
			
		||||
                                                                   \
 | 
			
		||||
    _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
 | 
			
		||||
    *_pptr_ = _tmp_;                                               \
 | 
			
		||||
  FT_END_STMNT
 | 
			
		||||
 | 
			
		||||
#else /* !C++ */
 | 
			
		||||
 | 
			
		||||
#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id )               \
 | 
			
		||||
  FT_BEGIN_STMNT                                                   \
 | 
			
		||||
    FT_Module   module = FT_MODULE( FT_FACE( face )->driver );     \
 | 
			
		||||
    FT_Pointer  _tmp_;                                             \
 | 
			
		||||
                                                                   \
 | 
			
		||||
                                                                   \
 | 
			
		||||
    _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
 | 
			
		||||
    ptr   = _tmp_;                                                 \
 | 
			
		||||
  FT_END_STMNT
 | 
			
		||||
 | 
			
		||||
#endif /* !C++ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****         S E R V I C E   D E S C R I P T O R S                 *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  The following structure is used to _describe_ a given service
 | 
			
		||||
   *  to the library.  This is useful to build simple static service lists.
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_ServiceDescRec_
 | 
			
		||||
  {
 | 
			
		||||
    const char*  serv_id;     /* service name         */
 | 
			
		||||
    const void*  serv_data;   /* service pointer/data */
 | 
			
		||||
 | 
			
		||||
  } FT_ServiceDescRec;
 | 
			
		||||
 | 
			
		||||
  typedef const FT_ServiceDescRec*  FT_ServiceDesc;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Parse a list of FT_ServiceDescRec descriptors and look for
 | 
			
		||||
   *  a specific service by ID.  Note that the last element in the
 | 
			
		||||
   *  array must be { NULL, NULL }, and that the function should
 | 
			
		||||
   *  return NULL if the service isn't available.
 | 
			
		||||
   *
 | 
			
		||||
   *  This function can be used by modules to implement their
 | 
			
		||||
   *  `get_service' method.
 | 
			
		||||
   */
 | 
			
		||||
  FT_BASE( FT_Pointer )
 | 
			
		||||
  ft_service_list_lookup( FT_ServiceDesc  service_descriptors,
 | 
			
		||||
                          const char*     service_id );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****             S E R V I C E S   C A C H E                       *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  This structure is used to store a cache for several frequently used
 | 
			
		||||
   *  services.  It is the type of `face->internal->services'.  You
 | 
			
		||||
   *  should only use FT_FACE_LOOKUP_SERVICE to access it.
 | 
			
		||||
   *
 | 
			
		||||
   *  All fields should have the type FT_Pointer to relax compilation
 | 
			
		||||
   *  dependencies.  We assume the developer isn't completely stupid.
 | 
			
		||||
   *
 | 
			
		||||
   *  Each field must be named `service_XXXX' where `XXX' corresponds to
 | 
			
		||||
   *  the correct FT_SERVICE_ID_XXXX macro.  See the definition of
 | 
			
		||||
   *  FT_FACE_LOOKUP_SERVICE below how this is implemented.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_ServiceCacheRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Pointer  service_POSTSCRIPT_FONT_NAME;
 | 
			
		||||
    FT_Pointer  service_MULTI_MASTERS;
 | 
			
		||||
    FT_Pointer  service_GLYPH_DICT;
 | 
			
		||||
    FT_Pointer  service_PFR_METRICS;
 | 
			
		||||
    FT_Pointer  service_WINFNT;
 | 
			
		||||
 | 
			
		||||
  } FT_ServiceCacheRec, *FT_ServiceCache;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A magic number used within the services cache.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_SERVICE_UNAVAILABLE  ((FT_Pointer)-2)  /* magic number */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_FACE_LOOKUP_SERVICE
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This macro is used to lookup a service from a face's driver module
 | 
			
		||||
   *   using its cache.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   face::
 | 
			
		||||
   *     The source face handle containing the cache.
 | 
			
		||||
   *
 | 
			
		||||
   *   field ::
 | 
			
		||||
   *     The field name in the cache.
 | 
			
		||||
   *
 | 
			
		||||
   *   id ::
 | 
			
		||||
   *     The service ID.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   ptr ::
 | 
			
		||||
   *     A variable receiving the service data.  NULL if not available.
 | 
			
		||||
   */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 | 
			
		||||
#define FT_FACE_LOOKUP_SERVICE( face, ptr, id )                \
 | 
			
		||||
  FT_BEGIN_STMNT                                               \
 | 
			
		||||
    FT_Pointer   svc;                                          \
 | 
			
		||||
    FT_Pointer*  Pptr = (FT_Pointer*)&(ptr);                   \
 | 
			
		||||
                                                               \
 | 
			
		||||
                                                               \
 | 
			
		||||
    svc = FT_FACE( face )->internal->services. service_ ## id; \
 | 
			
		||||
    if ( svc == FT_SERVICE_UNAVAILABLE )                       \
 | 
			
		||||
      svc = NULL;                                              \
 | 
			
		||||
    else if ( svc == NULL )                                    \
 | 
			
		||||
    {                                                          \
 | 
			
		||||
      FT_FACE_FIND_SERVICE( face, svc, id );                   \
 | 
			
		||||
                                                               \
 | 
			
		||||
      FT_FACE( face )->internal->services. service_ ## id =    \
 | 
			
		||||
        (FT_Pointer)( svc != NULL ? svc                        \
 | 
			
		||||
                                  : FT_SERVICE_UNAVAILABLE );  \
 | 
			
		||||
    }                                                          \
 | 
			
		||||
    *Pptr = svc;                                               \
 | 
			
		||||
  FT_END_STMNT
 | 
			
		||||
 | 
			
		||||
#else /* !C++ */
 | 
			
		||||
 | 
			
		||||
#define FT_FACE_LOOKUP_SERVICE( face, ptr, id )                \
 | 
			
		||||
  FT_BEGIN_STMNT                                               \
 | 
			
		||||
    FT_Pointer  svc;                                           \
 | 
			
		||||
                                                               \
 | 
			
		||||
                                                               \
 | 
			
		||||
    svc = FT_FACE( face )->internal->services. service_ ## id; \
 | 
			
		||||
    if ( svc == FT_SERVICE_UNAVAILABLE )                       \
 | 
			
		||||
      svc = NULL;                                              \
 | 
			
		||||
    else if ( svc == NULL )                                    \
 | 
			
		||||
    {                                                          \
 | 
			
		||||
      FT_FACE_FIND_SERVICE( face, svc, id );                   \
 | 
			
		||||
                                                               \
 | 
			
		||||
      FT_FACE( face )->internal->services. service_ ## id =    \
 | 
			
		||||
        (FT_Pointer)( svc != NULL ? svc                        \
 | 
			
		||||
                                  : FT_SERVICE_UNAVAILABLE );  \
 | 
			
		||||
    }                                                          \
 | 
			
		||||
    ptr = svc;                                                 \
 | 
			
		||||
  FT_END_STMNT
 | 
			
		||||
 | 
			
		||||
#endif /* !C++ */
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A macro used to define new service structure types.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_DEFINE_SERVICE( name )            \
 | 
			
		||||
  typedef struct FT_Service_ ## name ## Rec_ \
 | 
			
		||||
    FT_Service_ ## name ## Rec ;             \
 | 
			
		||||
  typedef struct FT_Service_ ## name ## Rec_ \
 | 
			
		||||
    const * FT_Service_ ## name ;            \
 | 
			
		||||
  struct FT_Service_ ## name ## Rec_
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  The header files containing the services.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_BDF_H                <freetype/internal/services/svbdf.h>
 | 
			
		||||
#define FT_SERVICE_CID_H                <freetype/internal/services/svcid.h>
 | 
			
		||||
#define FT_SERVICE_GLYPH_DICT_H         <freetype/internal/services/svgldict.h>
 | 
			
		||||
#define FT_SERVICE_GX_VALIDATE_H        <freetype/internal/services/svgxval.h>
 | 
			
		||||
#define FT_SERVICE_KERNING_H            <freetype/internal/services/svkern.h>
 | 
			
		||||
#define FT_SERVICE_MULTIPLE_MASTERS_H   <freetype/internal/services/svmm.h>
 | 
			
		||||
#define FT_SERVICE_OPENTYPE_VALIDATE_H  <freetype/internal/services/svotval.h>
 | 
			
		||||
#define FT_SERVICE_PFR_H                <freetype/internal/services/svpfr.h>
 | 
			
		||||
#define FT_SERVICE_POSTSCRIPT_CMAPS_H   <freetype/internal/services/svpscmap.h>
 | 
			
		||||
#define FT_SERVICE_POSTSCRIPT_INFO_H    <freetype/internal/services/svpsinfo.h>
 | 
			
		||||
#define FT_SERVICE_POSTSCRIPT_NAME_H    <freetype/internal/services/svpostnm.h>
 | 
			
		||||
#define FT_SERVICE_SFNT_H               <freetype/internal/services/svsfnt.h>
 | 
			
		||||
#define FT_SERVICE_TRUETYPE_ENGINE_H    <freetype/internal/services/svtteng.h>
 | 
			
		||||
#define FT_SERVICE_TT_CMAP_H            <freetype/internal/services/svttcmap.h>
 | 
			
		||||
#define FT_SERVICE_WINFNT_H             <freetype/internal/services/svwinfnt.h>
 | 
			
		||||
#define FT_SERVICE_XFREE86_NAME_H       <freetype/internal/services/svxf86nm.h>
 | 
			
		||||
#define FT_SERVICE_TRUETYPE_GLYF_H      <freetype/internal/services/svttglyf.h>
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSERV_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										539
									
								
								include/freetype/internal/ftstream.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										539
									
								
								include/freetype/internal/ftstream.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,539 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftstream.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Stream handling (specification).                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2004, 2005, 2006 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 __FTSTREAM_H__
 | 
			
		||||
#define __FTSTREAM_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_SYSTEM_H
 | 
			
		||||
#include FT_INTERNAL_OBJECTS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* format of an 8-bit frame_op value:           */
 | 
			
		||||
  /*                                              */
 | 
			
		||||
  /* bit  76543210                                */
 | 
			
		||||
  /*      xxxxxxes                                */
 | 
			
		||||
  /*                                              */
 | 
			
		||||
  /* s is set to 1 if the value is signed.        */
 | 
			
		||||
  /* e is set to 1 if the value is little-endian. */
 | 
			
		||||
  /* xxx is a command.                            */
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_OP_SHIFT         2
 | 
			
		||||
#define FT_FRAME_OP_SIGNED        1
 | 
			
		||||
#define FT_FRAME_OP_LITTLE        2
 | 
			
		||||
#define FT_FRAME_OP_COMMAND( x )  ( x >> FT_FRAME_OP_SHIFT )
 | 
			
		||||
 | 
			
		||||
#define FT_MAKE_FRAME_OP( command, little, sign ) \
 | 
			
		||||
          ( ( command << FT_FRAME_OP_SHIFT ) | ( little << 1 ) | sign )
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_OP_END    0
 | 
			
		||||
#define FT_FRAME_OP_START  1  /* start a new frame     */
 | 
			
		||||
#define FT_FRAME_OP_BYTE   2  /* read 1-byte value     */
 | 
			
		||||
#define FT_FRAME_OP_SHORT  3  /* read 2-byte value     */
 | 
			
		||||
#define FT_FRAME_OP_LONG   4  /* read 4-byte value     */
 | 
			
		||||
#define FT_FRAME_OP_OFF3   5  /* read 3-byte value     */
 | 
			
		||||
#define FT_FRAME_OP_BYTES  6  /* read a bytes sequence */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef enum  FT_Frame_Op_
 | 
			
		||||
  {
 | 
			
		||||
    ft_frame_end       = 0,
 | 
			
		||||
    ft_frame_start     = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ),
 | 
			
		||||
 | 
			
		||||
    ft_frame_byte      = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE,  0, 0 ),
 | 
			
		||||
    ft_frame_schar     = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE,  0, 1 ),
 | 
			
		||||
 | 
			
		||||
    ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ),
 | 
			
		||||
    ft_frame_short_be  = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ),
 | 
			
		||||
    ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ),
 | 
			
		||||
    ft_frame_short_le  = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ),
 | 
			
		||||
 | 
			
		||||
    ft_frame_ulong_be  = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ),
 | 
			
		||||
    ft_frame_long_be   = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ),
 | 
			
		||||
    ft_frame_ulong_le  = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ),
 | 
			
		||||
    ft_frame_long_le   = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 1 ),
 | 
			
		||||
 | 
			
		||||
    ft_frame_uoff3_be  = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ),
 | 
			
		||||
    ft_frame_off3_be   = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ),
 | 
			
		||||
    ft_frame_uoff3_le  = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ),
 | 
			
		||||
    ft_frame_off3_le   = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ),
 | 
			
		||||
 | 
			
		||||
    ft_frame_bytes     = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ),
 | 
			
		||||
    ft_frame_skip      = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 )
 | 
			
		||||
 | 
			
		||||
  } FT_Frame_Op;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  FT_Frame_Field_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Byte    value;
 | 
			
		||||
    FT_Byte    size;
 | 
			
		||||
    FT_UShort  offset;
 | 
			
		||||
 | 
			
		||||
  } FT_Frame_Field;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Construct an FT_Frame_Field out of a structure type and a field name. */
 | 
			
		||||
  /* The structure type must be set in the FT_STRUCTURE macro before       */
 | 
			
		||||
  /* calling the FT_FRAME_START() macro.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_FIELD_SIZE( f ) \
 | 
			
		||||
          (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f )
 | 
			
		||||
 | 
			
		||||
#define FT_FIELD_SIZE_DELTA( f ) \
 | 
			
		||||
          (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] )
 | 
			
		||||
 | 
			
		||||
#define FT_FIELD_OFFSET( f ) \
 | 
			
		||||
          (FT_UShort)( offsetof( FT_STRUCTURE, f ) )
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_FIELD( frame_op, field ) \
 | 
			
		||||
          {                               \
 | 
			
		||||
            frame_op,                     \
 | 
			
		||||
            FT_FIELD_SIZE( field ),       \
 | 
			
		||||
            FT_FIELD_OFFSET( field )      \
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
#define FT_MAKE_EMPTY_FIELD( frame_op )  { frame_op, 0, 0 }
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_START( size )   { ft_frame_start, 0, size }
 | 
			
		||||
#define FT_FRAME_END             { ft_frame_end, 0, 0 }
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_LONG( f )       FT_FRAME_FIELD( ft_frame_long_be, f )
 | 
			
		||||
#define FT_FRAME_ULONG( f )      FT_FRAME_FIELD( ft_frame_ulong_be, f )
 | 
			
		||||
#define FT_FRAME_SHORT( f )      FT_FRAME_FIELD( ft_frame_short_be, f )
 | 
			
		||||
#define FT_FRAME_USHORT( f )     FT_FRAME_FIELD( ft_frame_ushort_be, f )
 | 
			
		||||
#define FT_FRAME_OFF3( f )       FT_FRAME_FIELD( ft_frame_off3_be, f )
 | 
			
		||||
#define FT_FRAME_UOFF3( f )      FT_FRAME_FIELD( ft_frame_uoff3_be, f )
 | 
			
		||||
#define FT_FRAME_BYTE( f )       FT_FRAME_FIELD( ft_frame_byte, f )
 | 
			
		||||
#define FT_FRAME_CHAR( f )       FT_FRAME_FIELD( ft_frame_schar, f )
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_LONG_LE( f )    FT_FRAME_FIELD( ft_frame_long_le, f )
 | 
			
		||||
#define FT_FRAME_ULONG_LE( f )   FT_FRAME_FIELD( ft_frame_ulong_le, f )
 | 
			
		||||
#define FT_FRAME_SHORT_LE( f )   FT_FRAME_FIELD( ft_frame_short_le, f )
 | 
			
		||||
#define FT_FRAME_USHORT_LE( f )  FT_FRAME_FIELD( ft_frame_ushort_le, f )
 | 
			
		||||
#define FT_FRAME_OFF3_LE( f )    FT_FRAME_FIELD( ft_frame_off3_le, f )
 | 
			
		||||
#define FT_FRAME_UOFF3_LE( f )   FT_FRAME_FIELD( ft_frame_uoff3_le, f )
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_SKIP_LONG       { ft_frame_long_be, 0, 0 }
 | 
			
		||||
#define FT_FRAME_SKIP_SHORT      { ft_frame_short_be, 0, 0 }
 | 
			
		||||
#define FT_FRAME_SKIP_BYTE       { ft_frame_byte, 0, 0 }
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_BYTES( field, count ) \
 | 
			
		||||
          {                            \
 | 
			
		||||
            ft_frame_bytes,            \
 | 
			
		||||
            count,                     \
 | 
			
		||||
            FT_FIELD_OFFSET( field )   \
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_SKIP_BYTES( count )  { ft_frame_skip, count, 0 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Integer extraction macros -- the `buffer' parameter must ALWAYS be of */
 | 
			
		||||
  /* type `char*' or equivalent (1-byte elements).                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
 | 
			
		||||
#define FT_BYTE_( p, i )  ( ((const FT_Byte*)(p))[(i)] )
 | 
			
		||||
#define FT_INT8_( p, i )  ( ((const FT_Char*)(p))[(i)] )
 | 
			
		||||
 | 
			
		||||
#define FT_INT16( x )   ( (FT_Int16)(x)  )
 | 
			
		||||
#define FT_UINT16( x )  ( (FT_UInt16)(x) )
 | 
			
		||||
#define FT_INT32( x )   ( (FT_Int32)(x)  )
 | 
			
		||||
#define FT_UINT32( x )  ( (FT_UInt32)(x) )
 | 
			
		||||
 | 
			
		||||
#define FT_BYTE_I16( p, i, s )  ( FT_INT16(  FT_BYTE_( p, i ) ) << (s) )
 | 
			
		||||
#define FT_BYTE_U16( p, i, s )  ( FT_UINT16( FT_BYTE_( p, i ) ) << (s) )
 | 
			
		||||
#define FT_BYTE_I32( p, i, s )  ( FT_INT32(  FT_BYTE_( p, i ) ) << (s) )
 | 
			
		||||
#define FT_BYTE_U32( p, i, s )  ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) )
 | 
			
		||||
 | 
			
		||||
#define FT_INT8_I16( p, i, s )  ( FT_INT16(  FT_INT8_( p, i ) ) << (s) )
 | 
			
		||||
#define FT_INT8_U16( p, i, s )  ( FT_UINT16( FT_INT8_( p, i ) ) << (s) )
 | 
			
		||||
#define FT_INT8_I32( p, i, s )  ( FT_INT32(  FT_INT8_( p, i ) ) << (s) )
 | 
			
		||||
#define FT_INT8_U32( p, i, s )  ( FT_UINT32( FT_INT8_( p, i ) ) << (s) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_SHORT( p )  FT_INT16( FT_INT8_I16( p, 0, 8) | \
 | 
			
		||||
                                      FT_BYTE_I16( p, 1, 0) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_USHORT( p )  FT_UINT16( FT_BYTE_U16( p, 0, 8 ) | \
 | 
			
		||||
                                        FT_BYTE_U16( p, 1, 0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_LONG( p )  FT_INT32( FT_INT8_I32( p, 0, 24 ) | \
 | 
			
		||||
                                     FT_BYTE_I32( p, 1, 16 ) | \
 | 
			
		||||
                                     FT_BYTE_I32( p, 2,  8 ) | \
 | 
			
		||||
                                     FT_BYTE_I32( p, 3,  0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_ULONG( p )  FT_UINT32( FT_BYTE_U32( p, 0, 24 ) | \
 | 
			
		||||
                                       FT_BYTE_U32( p, 1, 16 ) | \
 | 
			
		||||
                                       FT_BYTE_U32( p, 2,  8 ) | \
 | 
			
		||||
                                       FT_BYTE_U32( p, 3,  0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_OFF3( p )  FT_INT32( FT_INT8_I32( p, 0, 16 ) | \
 | 
			
		||||
                                     FT_BYTE_I32( p, 1,  8 ) | \
 | 
			
		||||
                                     FT_BYTE_I32( p, 2,  0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_UOFF3( p )  FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \
 | 
			
		||||
                                       FT_BYTE_U32( p, 1,  8 ) | \
 | 
			
		||||
                                       FT_BYTE_U32( p, 2,  0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_SHORT_LE( p )  FT_INT16( FT_INT8_I16( p, 1, 8 ) | \
 | 
			
		||||
                                         FT_BYTE_I16( p, 0, 0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_USHORT_LE( p )  FT_UINT16( FT_BYTE_U16( p, 1, 8 ) |  \
 | 
			
		||||
                                           FT_BYTE_U16( p, 0, 0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_LONG_LE( p )  FT_INT32( FT_INT8_I32( p, 3, 24 ) | \
 | 
			
		||||
                                        FT_BYTE_I32( p, 2, 16 ) | \
 | 
			
		||||
                                        FT_BYTE_I32( p, 1,  8 ) | \
 | 
			
		||||
                                        FT_BYTE_I32( p, 0,  0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_ULONG_LE( p )  FT_UINT32( FT_BYTE_U32( p, 3, 24 ) | \
 | 
			
		||||
                                          FT_BYTE_U32( p, 2, 16 ) | \
 | 
			
		||||
                                          FT_BYTE_U32( p, 1,  8 ) | \
 | 
			
		||||
                                          FT_BYTE_U32( p, 0,  0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_OFF3_LE( p )  FT_INT32( FT_INT8_I32( p, 2, 16 ) | \
 | 
			
		||||
                                        FT_BYTE_I32( p, 1,  8 ) | \
 | 
			
		||||
                                        FT_BYTE_I32( p, 0,  0 ) )
 | 
			
		||||
 | 
			
		||||
#define FT_PEEK_UOFF3_LE( p )  FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \
 | 
			
		||||
                                          FT_BYTE_U32( p, 1,  8 ) | \
 | 
			
		||||
                                          FT_BYTE_U32( p, 0,  0 ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_CHAR( buffer )       \
 | 
			
		||||
          ( (signed char)*buffer++ )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_BYTE( buffer )         \
 | 
			
		||||
          ( (unsigned char)*buffer++ )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_SHORT( buffer )                                   \
 | 
			
		||||
          ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_USHORT( buffer )                                            \
 | 
			
		||||
          ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_OFF3( buffer )                                  \
 | 
			
		||||
          ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_UOFF3( buffer )                                           \
 | 
			
		||||
          ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_LONG( buffer )                                  \
 | 
			
		||||
          ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_ULONG( buffer )                                           \
 | 
			
		||||
          ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_SHORT_LE( buffer )                                   \
 | 
			
		||||
          ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_USHORT_LE( buffer )                                            \
 | 
			
		||||
          ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_OFF3_LE( buffer )                                  \
 | 
			
		||||
          ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_UOFF3_LE( buffer )                                           \
 | 
			
		||||
          ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_LONG_LE( buffer )                                  \
 | 
			
		||||
          ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_NEXT_ULONG_LE( buffer )                                           \
 | 
			
		||||
          ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Each GET_xxxx() macro uses an implicit `stream' variable.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#if 0
 | 
			
		||||
#define FT_GET_MACRO( type )    FT_NEXT_ ## type ( stream->cursor )
 | 
			
		||||
 | 
			
		||||
#define FT_GET_CHAR()       FT_GET_MACRO( CHAR )
 | 
			
		||||
#define FT_GET_BYTE()       FT_GET_MACRO( BYTE )
 | 
			
		||||
#define FT_GET_SHORT()      FT_GET_MACRO( SHORT )
 | 
			
		||||
#define FT_GET_USHORT()     FT_GET_MACRO( USHORT )
 | 
			
		||||
#define FT_GET_OFF3()       FT_GET_MACRO( OFF3 )
 | 
			
		||||
#define FT_GET_UOFF3()      FT_GET_MACRO( UOFF3 )
 | 
			
		||||
#define FT_GET_LONG()       FT_GET_MACRO( LONG )
 | 
			
		||||
#define FT_GET_ULONG()      FT_GET_MACRO( ULONG )
 | 
			
		||||
#define FT_GET_TAG4()       FT_GET_MACRO( ULONG )
 | 
			
		||||
 | 
			
		||||
#define FT_GET_SHORT_LE()   FT_GET_MACRO( SHORT_LE )
 | 
			
		||||
#define FT_GET_USHORT_LE()  FT_GET_MACRO( USHORT_LE )
 | 
			
		||||
#define FT_GET_LONG_LE()    FT_GET_MACRO( LONG_LE )
 | 
			
		||||
#define FT_GET_ULONG_LE()   FT_GET_MACRO( ULONG_LE )
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
#define FT_GET_MACRO( func, type )        ( (type)func( stream ) )
 | 
			
		||||
 | 
			
		||||
#define FT_GET_CHAR()       FT_GET_MACRO( FT_Stream_GetChar, FT_Char )
 | 
			
		||||
#define FT_GET_BYTE()       FT_GET_MACRO( FT_Stream_GetChar, FT_Byte )
 | 
			
		||||
#define FT_GET_SHORT()      FT_GET_MACRO( FT_Stream_GetShort, FT_Short )
 | 
			
		||||
#define FT_GET_USHORT()     FT_GET_MACRO( FT_Stream_GetShort, FT_UShort )
 | 
			
		||||
#define FT_GET_OFF3()       FT_GET_MACRO( FT_Stream_GetOffset, FT_Long )
 | 
			
		||||
#define FT_GET_UOFF3()      FT_GET_MACRO( FT_Stream_GetOffset, FT_ULong )
 | 
			
		||||
#define FT_GET_LONG()       FT_GET_MACRO( FT_Stream_GetLong, FT_Long )
 | 
			
		||||
#define FT_GET_ULONG()      FT_GET_MACRO( FT_Stream_GetLong, FT_ULong )
 | 
			
		||||
#define FT_GET_TAG4()       FT_GET_MACRO( FT_Stream_GetLong, FT_ULong )
 | 
			
		||||
 | 
			
		||||
#define FT_GET_SHORT_LE()   FT_GET_MACRO( FT_Stream_GetShortLE, FT_Short )
 | 
			
		||||
#define FT_GET_USHORT_LE()  FT_GET_MACRO( FT_Stream_GetShortLE, FT_UShort )
 | 
			
		||||
#define FT_GET_LONG_LE()    FT_GET_MACRO( FT_Stream_GetLongLE, FT_Long )
 | 
			
		||||
#define FT_GET_ULONG_LE()   FT_GET_MACRO( FT_Stream_GetLongLE, FT_ULong )
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define FT_READ_MACRO( func, type, var )        \
 | 
			
		||||
          ( var = (type)func( stream, &error ), \
 | 
			
		||||
            error != FT_Err_Ok )
 | 
			
		||||
 | 
			
		||||
#define FT_READ_BYTE( var )       FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var )
 | 
			
		||||
#define FT_READ_CHAR( var )       FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var )
 | 
			
		||||
#define FT_READ_SHORT( var )      FT_READ_MACRO( FT_Stream_ReadShort, FT_Short, var )
 | 
			
		||||
#define FT_READ_USHORT( var )     FT_READ_MACRO( FT_Stream_ReadShort, FT_UShort, var )
 | 
			
		||||
#define FT_READ_OFF3( var )       FT_READ_MACRO( FT_Stream_ReadOffset, FT_Long, var )
 | 
			
		||||
#define FT_READ_UOFF3( var )      FT_READ_MACRO( FT_Stream_ReadOffset, FT_ULong, var )
 | 
			
		||||
#define FT_READ_LONG( var )       FT_READ_MACRO( FT_Stream_ReadLong, FT_Long, var )
 | 
			
		||||
#define FT_READ_ULONG( var )      FT_READ_MACRO( FT_Stream_ReadLong, FT_ULong, var )
 | 
			
		||||
 | 
			
		||||
#define FT_READ_SHORT_LE( var )   FT_READ_MACRO( FT_Stream_ReadShortLE, FT_Short, var )
 | 
			
		||||
#define FT_READ_USHORT_LE( var )  FT_READ_MACRO( FT_Stream_ReadShortLE, FT_UShort, var )
 | 
			
		||||
#define FT_READ_LONG_LE( var )    FT_READ_MACRO( FT_Stream_ReadLongLE, FT_Long, var )
 | 
			
		||||
#define FT_READ_ULONG_LE( var )   FT_READ_MACRO( FT_Stream_ReadLongLE, FT_ULong, var )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
 | 
			
		||||
 | 
			
		||||
  /* initialize a stream for reading a regular system stream */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_Open( FT_Stream    stream,
 | 
			
		||||
                  const char*  filepathname );
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* create a new (input) stream from an FT_Open_Args structure */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_New( FT_Library           library,
 | 
			
		||||
                 const FT_Open_Args*  args,
 | 
			
		||||
                 FT_Stream           *astream );
 | 
			
		||||
 | 
			
		||||
  /* free a stream */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Stream_Free( FT_Stream  stream,
 | 
			
		||||
                  FT_Int     external );
 | 
			
		||||
 | 
			
		||||
  /* initialize a stream for reading in-memory data */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Stream_OpenMemory( FT_Stream       stream,
 | 
			
		||||
                        const FT_Byte*  base,
 | 
			
		||||
                        FT_ULong        size );
 | 
			
		||||
 | 
			
		||||
  /* close a stream (does not destroy the stream structure) */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Stream_Close( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* seek within a stream. position is relative to start of stream */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_Seek( FT_Stream  stream,
 | 
			
		||||
                  FT_ULong   pos );
 | 
			
		||||
 | 
			
		||||
  /* skip bytes in a stream */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_Skip( FT_Stream  stream,
 | 
			
		||||
                  FT_Long    distance );
 | 
			
		||||
 | 
			
		||||
  /* return current stream position */
 | 
			
		||||
  FT_BASE( FT_Long )
 | 
			
		||||
  FT_Stream_Pos( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
  /* read bytes from a stream into a user-allocated buffer, returns an */
 | 
			
		||||
  /* error if not all bytes could be read.                             */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_Read( FT_Stream  stream,
 | 
			
		||||
                  FT_Byte*   buffer,
 | 
			
		||||
                  FT_ULong   count );
 | 
			
		||||
 | 
			
		||||
  /* read bytes from a stream at a given position */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_ReadAt( FT_Stream  stream,
 | 
			
		||||
                    FT_ULong   pos,
 | 
			
		||||
                    FT_Byte*   buffer,
 | 
			
		||||
                    FT_ULong   count );
 | 
			
		||||
 | 
			
		||||
  /* try to read bytes at the end of a stream; return number of bytes */
 | 
			
		||||
  /* really available                                                 */
 | 
			
		||||
  FT_BASE( FT_ULong )
 | 
			
		||||
  FT_Stream_TryRead( FT_Stream  stream,
 | 
			
		||||
                     FT_Byte*   buffer,
 | 
			
		||||
                     FT_ULong   count );
 | 
			
		||||
 | 
			
		||||
  /* Enter a frame of `count' consecutive bytes in a stream.  Returns an */
 | 
			
		||||
  /* error if the frame could not be read/accessed.  The caller can use  */
 | 
			
		||||
  /* the FT_Stream_Get_XXX functions to retrieve frame data without      */
 | 
			
		||||
  /* error checks.                                                       */
 | 
			
		||||
  /*                                                                     */
 | 
			
		||||
  /* You must _always_ call FT_Stream_ExitFrame() once you have entered  */
 | 
			
		||||
  /* a stream frame!                                                     */
 | 
			
		||||
  /*                                                                     */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_EnterFrame( FT_Stream  stream,
 | 
			
		||||
                        FT_ULong   count );
 | 
			
		||||
 | 
			
		||||
  /* exit a stream frame */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Stream_ExitFrame( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
  /* Extract a stream frame.  If the stream is disk-based, a heap block */
 | 
			
		||||
  /* is allocated and the frame bytes are read into it.  If the stream  */
 | 
			
		||||
  /* is memory-based, this function simply set a pointer to the data.   */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /* Useful to optimize access to memory-based streams transparently.   */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  /* All extracted frames must be `freed' with a call to the function   */
 | 
			
		||||
  /* FT_Stream_ReleaseFrame().                                          */
 | 
			
		||||
  /*                                                                    */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_ExtractFrame( FT_Stream  stream,
 | 
			
		||||
                          FT_ULong   count,
 | 
			
		||||
                          FT_Byte**  pbytes );
 | 
			
		||||
 | 
			
		||||
  /* release an extract frame (see FT_Stream_ExtractFrame) */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  FT_Stream_ReleaseFrame( FT_Stream  stream,
 | 
			
		||||
                          FT_Byte**  pbytes );
 | 
			
		||||
 | 
			
		||||
  /* read a byte from an entered frame */
 | 
			
		||||
  FT_BASE( FT_Char )
 | 
			
		||||
  FT_Stream_GetChar( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
  /* read a 16-bit big-endian integer from an entered frame */
 | 
			
		||||
  FT_BASE( FT_Short )
 | 
			
		||||
  FT_Stream_GetShort( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
  /* read a 24-bit big-endian integer from an entered frame */
 | 
			
		||||
  FT_BASE( FT_Long )
 | 
			
		||||
  FT_Stream_GetOffset( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
  /* read a 32-bit big-endian integer from an entered frame */
 | 
			
		||||
  FT_BASE( FT_Long )
 | 
			
		||||
  FT_Stream_GetLong( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
  /* read a 16-bit little-endian integer from an entered frame */
 | 
			
		||||
  FT_BASE( FT_Short )
 | 
			
		||||
  FT_Stream_GetShortLE( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
  /* read a 32-bit little-endian integer from an entered frame */
 | 
			
		||||
  FT_BASE( FT_Long )
 | 
			
		||||
  FT_Stream_GetLongLE( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* read a byte from a stream */
 | 
			
		||||
  FT_BASE( FT_Char )
 | 
			
		||||
  FT_Stream_ReadChar( FT_Stream  stream,
 | 
			
		||||
                      FT_Error*  error );
 | 
			
		||||
 | 
			
		||||
  /* read a 16-bit big-endian integer from a stream */
 | 
			
		||||
  FT_BASE( FT_Short )
 | 
			
		||||
  FT_Stream_ReadShort( FT_Stream  stream,
 | 
			
		||||
                       FT_Error*  error );
 | 
			
		||||
 | 
			
		||||
  /* read a 24-bit big-endian integer from a stream */
 | 
			
		||||
  FT_BASE( FT_Long )
 | 
			
		||||
  FT_Stream_ReadOffset( FT_Stream  stream,
 | 
			
		||||
                        FT_Error*  error );
 | 
			
		||||
 | 
			
		||||
  /* read a 32-bit big-endian integer from a stream */
 | 
			
		||||
  FT_BASE( FT_Long )
 | 
			
		||||
  FT_Stream_ReadLong( FT_Stream  stream,
 | 
			
		||||
                      FT_Error*  error );
 | 
			
		||||
 | 
			
		||||
  /* read a 16-bit little-endian integer from a stream */
 | 
			
		||||
  FT_BASE( FT_Short )
 | 
			
		||||
  FT_Stream_ReadShortLE( FT_Stream  stream,
 | 
			
		||||
                         FT_Error*  error );
 | 
			
		||||
 | 
			
		||||
  /* read a 32-bit little-endian integer from a stream */
 | 
			
		||||
  FT_BASE( FT_Long )
 | 
			
		||||
  FT_Stream_ReadLongLE( FT_Stream  stream,
 | 
			
		||||
                        FT_Error*  error );
 | 
			
		||||
 | 
			
		||||
  /* Read a structure from a stream.  The structure must be described */
 | 
			
		||||
  /* by an array of FT_Frame_Field records.                           */
 | 
			
		||||
  FT_BASE( FT_Error )
 | 
			
		||||
  FT_Stream_ReadFields( FT_Stream              stream,
 | 
			
		||||
                        const FT_Frame_Field*  fields,
 | 
			
		||||
                        void*                  structure );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_STREAM_POS()           \
 | 
			
		||||
          FT_Stream_Pos( stream )
 | 
			
		||||
 | 
			
		||||
#define FT_STREAM_SEEK( position )                           \
 | 
			
		||||
          FT_SET_ERROR( FT_Stream_Seek( stream, position ) )
 | 
			
		||||
 | 
			
		||||
#define FT_STREAM_SKIP( distance )                           \
 | 
			
		||||
          FT_SET_ERROR( FT_Stream_Skip( stream, distance ) )
 | 
			
		||||
 | 
			
		||||
#define FT_STREAM_READ( buffer, count )                   \
 | 
			
		||||
          FT_SET_ERROR( FT_Stream_Read( stream,           \
 | 
			
		||||
                                        (FT_Byte*)buffer, \
 | 
			
		||||
                                        count ) )
 | 
			
		||||
 | 
			
		||||
#define FT_STREAM_READ_AT( position, buffer, count )         \
 | 
			
		||||
          FT_SET_ERROR( FT_Stream_ReadAt( stream,            \
 | 
			
		||||
                                           position,         \
 | 
			
		||||
                                           (FT_Byte*)buffer, \
 | 
			
		||||
                                           count ) )
 | 
			
		||||
 | 
			
		||||
#define FT_STREAM_READ_FIELDS( fields, object )                          \
 | 
			
		||||
          FT_SET_ERROR( FT_Stream_ReadFields( stream, fields, object ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_ENTER( size )                                       \
 | 
			
		||||
          FT_SET_ERROR(                                              \
 | 
			
		||||
            FT_DEBUG_INNER( FT_Stream_EnterFrame( stream, size ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_EXIT()                 \
 | 
			
		||||
          FT_DEBUG_INNER( FT_Stream_ExitFrame( stream ) )
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_EXTRACT( size, bytes )                                       \
 | 
			
		||||
          FT_SET_ERROR(                                                       \
 | 
			
		||||
            FT_DEBUG_INNER( FT_Stream_ExtractFrame( stream, size,             \
 | 
			
		||||
                                                    (FT_Byte**)&(bytes) ) ) )
 | 
			
		||||
 | 
			
		||||
#define FT_FRAME_RELEASE( bytes )                                         \
 | 
			
		||||
          FT_DEBUG_INNER( FT_Stream_ReleaseFrame( stream,                 \
 | 
			
		||||
                                                  (FT_Byte**)&(bytes) ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSTREAM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										134
									
								
								include/freetype/internal/fttrace.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								include/freetype/internal/fttrace.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,134 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fttrace.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Tracing handling (specification only).                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002, 2004, 2005, 2006, 2007 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* definitions of trace levels for FreeType 2 */
 | 
			
		||||
 | 
			
		||||
  /* the first level must always be `trace_any' */
 | 
			
		||||
FT_TRACE_DEF( any )
 | 
			
		||||
 | 
			
		||||
  /* base components */
 | 
			
		||||
FT_TRACE_DEF( calc )      /* calculations            (ftcalc.c)   */
 | 
			
		||||
FT_TRACE_DEF( memory )    /* memory manager          (ftobjs.c)   */
 | 
			
		||||
FT_TRACE_DEF( stream )    /* stream manager          (ftstream.c) */
 | 
			
		||||
FT_TRACE_DEF( io )        /* i/o interface           (ftsystem.c) */
 | 
			
		||||
FT_TRACE_DEF( list )      /* list management         (ftlist.c)   */
 | 
			
		||||
FT_TRACE_DEF( init )      /* initialization          (ftinit.c)   */
 | 
			
		||||
FT_TRACE_DEF( objs )      /* base objects            (ftobjs.c)   */
 | 
			
		||||
FT_TRACE_DEF( outline )   /* outline management      (ftoutln.c)  */
 | 
			
		||||
FT_TRACE_DEF( glyph )     /* glyph management        (ftglyph.c)  */
 | 
			
		||||
 | 
			
		||||
FT_TRACE_DEF( raster )    /* monochrome rasterizer   (ftraster.c) */
 | 
			
		||||
FT_TRACE_DEF( smooth )    /* anti-aliasing raster    (ftgrays.c)  */
 | 
			
		||||
FT_TRACE_DEF( mm )        /* MM interface            (ftmm.c)     */
 | 
			
		||||
FT_TRACE_DEF( raccess )   /* resource fork accessor  (ftrfork.c)  */
 | 
			
		||||
 | 
			
		||||
  /* Cache sub-system */
 | 
			
		||||
FT_TRACE_DEF( cache )     /* cache sub-system        (ftcache.c, etc.) */
 | 
			
		||||
 | 
			
		||||
  /* SFNT driver components */
 | 
			
		||||
FT_TRACE_DEF( sfobjs )    /* SFNT object handler     (sfobjs.c)   */
 | 
			
		||||
FT_TRACE_DEF( ttcmap )    /* charmap handler         (ttcmap.c)   */
 | 
			
		||||
FT_TRACE_DEF( ttkern )    /* kerning handler         (ttkern.c)   */
 | 
			
		||||
FT_TRACE_DEF( ttload )    /* basic TrueType tables   (ttload.c)   */
 | 
			
		||||
FT_TRACE_DEF( ttmtx )     /* metrics-related tables  (ttmtx.c)    */
 | 
			
		||||
FT_TRACE_DEF( ttpost )    /* PS table processing     (ttpost.c)   */
 | 
			
		||||
FT_TRACE_DEF( ttsbit )    /* TrueType sbit handling  (ttsbit.c)   */
 | 
			
		||||
 | 
			
		||||
  /* TrueType driver components */
 | 
			
		||||
FT_TRACE_DEF( ttdriver )  /* TT font driver          (ttdriver.c) */
 | 
			
		||||
FT_TRACE_DEF( ttgload )   /* TT glyph loader         (ttgload.c)  */
 | 
			
		||||
FT_TRACE_DEF( ttinterp )  /* bytecode interpreter    (ttinterp.c) */
 | 
			
		||||
FT_TRACE_DEF( ttobjs )    /* TT objects manager      (ttobjs.c)   */
 | 
			
		||||
FT_TRACE_DEF( ttpload )   /* TT data/program loader  (ttpload.c)  */
 | 
			
		||||
FT_TRACE_DEF( ttgxvar )   /* TrueType GX var handler (ttgxvar.c)  */
 | 
			
		||||
 | 
			
		||||
  /* Type 1 driver components */
 | 
			
		||||
FT_TRACE_DEF( t1driver )
 | 
			
		||||
FT_TRACE_DEF( t1gload )
 | 
			
		||||
FT_TRACE_DEF( t1hint )
 | 
			
		||||
FT_TRACE_DEF( t1load )
 | 
			
		||||
FT_TRACE_DEF( t1objs )
 | 
			
		||||
FT_TRACE_DEF( t1parse )
 | 
			
		||||
 | 
			
		||||
  /* PostScript helper module `psaux' */
 | 
			
		||||
FT_TRACE_DEF( t1decode )
 | 
			
		||||
FT_TRACE_DEF( psobjs )
 | 
			
		||||
 | 
			
		||||
  /* PostScript hinting module `pshinter' */
 | 
			
		||||
FT_TRACE_DEF( pshrec )
 | 
			
		||||
FT_TRACE_DEF( pshalgo1 )
 | 
			
		||||
FT_TRACE_DEF( pshalgo2 )
 | 
			
		||||
 | 
			
		||||
  /* Type 2 driver components */
 | 
			
		||||
FT_TRACE_DEF( cffdriver )
 | 
			
		||||
FT_TRACE_DEF( cffgload )
 | 
			
		||||
FT_TRACE_DEF( cffload )
 | 
			
		||||
FT_TRACE_DEF( cffobjs )
 | 
			
		||||
FT_TRACE_DEF( cffparse )
 | 
			
		||||
 | 
			
		||||
  /* Type 42 driver component */
 | 
			
		||||
FT_TRACE_DEF( t42 )
 | 
			
		||||
 | 
			
		||||
  /* CID driver components */
 | 
			
		||||
FT_TRACE_DEF( cidafm )
 | 
			
		||||
FT_TRACE_DEF( ciddriver )
 | 
			
		||||
FT_TRACE_DEF( cidgload )
 | 
			
		||||
FT_TRACE_DEF( cidload )
 | 
			
		||||
FT_TRACE_DEF( cidobjs )
 | 
			
		||||
FT_TRACE_DEF( cidparse )
 | 
			
		||||
 | 
			
		||||
  /* Windows font component */
 | 
			
		||||
FT_TRACE_DEF( winfnt )
 | 
			
		||||
 | 
			
		||||
  /* PCF font components */
 | 
			
		||||
FT_TRACE_DEF( pcfdriver )
 | 
			
		||||
FT_TRACE_DEF( pcfread )
 | 
			
		||||
 | 
			
		||||
  /* BDF font components */
 | 
			
		||||
FT_TRACE_DEF( bdfdriver )
 | 
			
		||||
FT_TRACE_DEF( bdflib )
 | 
			
		||||
 | 
			
		||||
  /* PFR font component */
 | 
			
		||||
FT_TRACE_DEF( pfr )
 | 
			
		||||
 | 
			
		||||
  /* OpenType validation components */
 | 
			
		||||
FT_TRACE_DEF( otvmodule )
 | 
			
		||||
FT_TRACE_DEF( otvcommon )
 | 
			
		||||
FT_TRACE_DEF( otvbase )
 | 
			
		||||
FT_TRACE_DEF( otvgdef )
 | 
			
		||||
FT_TRACE_DEF( otvgpos )
 | 
			
		||||
FT_TRACE_DEF( otvgsub )
 | 
			
		||||
FT_TRACE_DEF( otvjstf )
 | 
			
		||||
FT_TRACE_DEF( otvmath )
 | 
			
		||||
 | 
			
		||||
  /* TrueTypeGX/AAT validation components */
 | 
			
		||||
FT_TRACE_DEF( gxvmodule )
 | 
			
		||||
FT_TRACE_DEF( gxvcommon )
 | 
			
		||||
FT_TRACE_DEF( gxvfeat )
 | 
			
		||||
FT_TRACE_DEF( gxvmort )
 | 
			
		||||
FT_TRACE_DEF( gxvmorx )
 | 
			
		||||
FT_TRACE_DEF( gxvbsln )
 | 
			
		||||
FT_TRACE_DEF( gxvjust )
 | 
			
		||||
FT_TRACE_DEF( gxvkern )
 | 
			
		||||
FT_TRACE_DEF( gxvopbd )
 | 
			
		||||
FT_TRACE_DEF( gxvtrak )
 | 
			
		||||
FT_TRACE_DEF( gxvprop )
 | 
			
		||||
FT_TRACE_DEF( gxvlcar )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										150
									
								
								include/freetype/internal/ftvalid.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								include/freetype/internal/ftvalid.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,150 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftvalid.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType validation support (specification).                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004 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 __FTVALID_H__
 | 
			
		||||
#define __FTVALID_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_CONFIG_STANDARD_LIBRARY_H   /* for ft_setjmp and ft_longjmp */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                    V A L I D A T I O N                          ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /****                                                                 ****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /* handle to a validation object */
 | 
			
		||||
  typedef struct FT_ValidatorRec_ volatile*  FT_Validator;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* There are three distinct validation levels defined here:              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* FT_VALIDATE_DEFAULT ::                                                */
 | 
			
		||||
  /*   A table that passes this validation level can be used reliably by   */
 | 
			
		||||
  /*   FreeType.  It generally means that all offsets have been checked to */
 | 
			
		||||
  /*   prevent out-of-bound reads, that array counts are correct, etc.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* FT_VALIDATE_TIGHT ::                                                  */
 | 
			
		||||
  /*   A table that passes this validation level can be used reliably and  */
 | 
			
		||||
  /*   doesn't contain invalid data.  For example, a charmap table that    */
 | 
			
		||||
  /*   returns invalid glyph indices will not pass, even though it can     */
 | 
			
		||||
  /*   be used with FreeType in default mode (the library will simply      */
 | 
			
		||||
  /*   return an error later when trying to load the glyph).               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   It also checks that fields which must be a multiple of 2, 4, or 8,  */
 | 
			
		||||
  /*   don't have incorrect values, etc.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* FT_VALIDATE_PARANOID ::                                               */
 | 
			
		||||
  /*   Only for font debugging.  Checks that a table follows the           */
 | 
			
		||||
  /*   specification by 100%.  Very few fonts will be able to pass this    */
 | 
			
		||||
  /*   level anyway but it can be useful for certain tools like font       */
 | 
			
		||||
  /*   editors/converters.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  FT_ValidationLevel_
 | 
			
		||||
  {
 | 
			
		||||
    FT_VALIDATE_DEFAULT = 0,
 | 
			
		||||
    FT_VALIDATE_TIGHT,
 | 
			
		||||
    FT_VALIDATE_PARANOID
 | 
			
		||||
 | 
			
		||||
  } FT_ValidationLevel;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* validator structure */
 | 
			
		||||
  typedef struct  FT_ValidatorRec_
 | 
			
		||||
  {
 | 
			
		||||
    const FT_Byte*      base;        /* address of table in memory       */
 | 
			
		||||
    const FT_Byte*      limit;       /* `base' + sizeof(table) in memory */
 | 
			
		||||
    FT_ValidationLevel  level;       /* validation level                 */
 | 
			
		||||
    FT_Error            error;       /* error returned. 0 means success  */
 | 
			
		||||
 | 
			
		||||
    ft_jmp_buf          jump_buffer; /* used for exception handling      */
 | 
			
		||||
 | 
			
		||||
  } FT_ValidatorRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATOR( x )  ((FT_Validator)( x ))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  ft_validator_init( FT_Validator        valid,
 | 
			
		||||
                     const FT_Byte*      base,
 | 
			
		||||
                     const FT_Byte*      limit,
 | 
			
		||||
                     FT_ValidationLevel  level );
 | 
			
		||||
 | 
			
		||||
  /* Do not use this. It's broken and will cause your validator to crash */
 | 
			
		||||
  /* if you run it on an invalid font.                                   */
 | 
			
		||||
  FT_BASE( FT_Int )
 | 
			
		||||
  ft_validator_run( FT_Validator  valid );
 | 
			
		||||
 | 
			
		||||
  /* Sets the error field in a validator, then calls `longjmp' to return */
 | 
			
		||||
  /* to high-level caller.  Using `setjmp/longjmp' avoids many stupid    */
 | 
			
		||||
  /* error checks within the validation routines.                        */
 | 
			
		||||
  /*                                                                     */
 | 
			
		||||
  FT_BASE( void )
 | 
			
		||||
  ft_validator_error( FT_Validator  valid,
 | 
			
		||||
                      FT_Error      error );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Calls ft_validate_error.  Assumes that the `valid' local variable */
 | 
			
		||||
  /* holds a pointer to the current validator object.                  */
 | 
			
		||||
  /*                                                                   */
 | 
			
		||||
  /* Use preprocessor prescan to pass FT_ERR_PREFIX.                   */
 | 
			
		||||
  /*                                                                   */
 | 
			
		||||
#define FT_INVALID( _prefix, _error )  FT_INVALID_( _prefix, _error )
 | 
			
		||||
#define FT_INVALID_( _prefix, _error ) \
 | 
			
		||||
          ft_validator_error( valid, _prefix ## _error )
 | 
			
		||||
 | 
			
		||||
  /* called when a broken table is detected */
 | 
			
		||||
#define FT_INVALID_TOO_SHORT \
 | 
			
		||||
          FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
 | 
			
		||||
 | 
			
		||||
  /* called when an invalid offset is detected */
 | 
			
		||||
#define FT_INVALID_OFFSET \
 | 
			
		||||
          FT_INVALID( FT_ERR_PREFIX, Invalid_Offset )
 | 
			
		||||
 | 
			
		||||
  /* called when an invalid format/value is detected */
 | 
			
		||||
#define FT_INVALID_FORMAT \
 | 
			
		||||
          FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
 | 
			
		||||
 | 
			
		||||
  /* called when an invalid glyph index is detected */
 | 
			
		||||
#define FT_INVALID_GLYPH_ID \
 | 
			
		||||
          FT_INVALID( FT_ERR_PREFIX, Invalid_Glyph_Index )
 | 
			
		||||
 | 
			
		||||
  /* called when an invalid field value is detected */
 | 
			
		||||
#define FT_INVALID_DATA \
 | 
			
		||||
          FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTVALID_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										50
									
								
								include/freetype/internal/internal.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								include/freetype/internal/internal.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  internal.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Internal header files (specification only).                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004 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 file is automatically included by `ft2build.h'.                  */
 | 
			
		||||
  /* Do not include it manually!                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_INTERNAL_OBJECTS_H             <freetype/internal/ftobjs.h>
 | 
			
		||||
#define FT_INTERNAL_STREAM_H              <freetype/internal/ftstream.h>
 | 
			
		||||
#define FT_INTERNAL_MEMORY_H              <freetype/internal/ftmemory.h>
 | 
			
		||||
#define FT_INTERNAL_DEBUG_H               <freetype/internal/ftdebug.h>
 | 
			
		||||
#define FT_INTERNAL_CALC_H                <freetype/internal/ftcalc.h>
 | 
			
		||||
#define FT_INTERNAL_DRIVER_H              <freetype/internal/ftdriver.h>
 | 
			
		||||
#define FT_INTERNAL_TRACE_H               <freetype/internal/fttrace.h>
 | 
			
		||||
#define FT_INTERNAL_GLYPH_LOADER_H        <freetype/internal/ftgloadr.h>
 | 
			
		||||
#define FT_INTERNAL_SFNT_H                <freetype/internal/sfnt.h>
 | 
			
		||||
#define FT_INTERNAL_SERVICE_H             <freetype/internal/ftserv.h>
 | 
			
		||||
#define FT_INTERNAL_RFORK_H               <freetype/internal/ftrfork.h>
 | 
			
		||||
#define FT_INTERNAL_VALIDATE_H            <freetype/internal/ftvalid.h>
 | 
			
		||||
 | 
			
		||||
#define FT_INTERNAL_TRUETYPE_TYPES_H      <freetype/internal/tttypes.h>
 | 
			
		||||
#define FT_INTERNAL_TYPE1_TYPES_H         <freetype/internal/t1types.h>
 | 
			
		||||
 | 
			
		||||
#define FT_INTERNAL_POSTSCRIPT_AUX_H      <freetype/internal/psaux.h>
 | 
			
		||||
#define FT_INTERNAL_POSTSCRIPT_HINTS_H    <freetype/internal/pshints.h>
 | 
			
		||||
#define FT_INTERNAL_POSTSCRIPT_GLOBALS_H  <freetype/internal/psglobal.h>
 | 
			
		||||
 | 
			
		||||
#define FT_INTERNAL_AUTOHINT_H            <freetype/internal/autohint.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										56
									
								
								include/freetype/internal/pcftypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								include/freetype/internal/pcftypes.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
/*  pcftypes.h
 | 
			
		||||
 | 
			
		||||
  FreeType font driver for pcf fonts
 | 
			
		||||
 | 
			
		||||
  Copyright (C) 2000, 2001, 2002 by
 | 
			
		||||
  Francesco Zappa Nardelli
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in
 | 
			
		||||
all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __PCFTYPES_H__
 | 
			
		||||
#define __PCFTYPES_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  PCF_Public_FaceRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_FaceRec    root;
 | 
			
		||||
    FT_StreamRec  gzip_stream;
 | 
			
		||||
    FT_Stream     gzip_source;
 | 
			
		||||
 | 
			
		||||
    char*         charset_encoding;
 | 
			
		||||
    char*         charset_registry;
 | 
			
		||||
 | 
			
		||||
  } PCF_Public_FaceRec, *PCF_Public_Face;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif  /* __PCFTYPES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										871
									
								
								include/freetype/internal/psaux.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										871
									
								
								include/freetype/internal/psaux.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,871 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  psaux.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auxiliary functions and data structures related to PostScript fonts  */
 | 
			
		||||
/*    (specification).                                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 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 __PSAUX_H__
 | 
			
		||||
#define __PSAUX_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_INTERNAL_OBJECTS_H
 | 
			
		||||
#include FT_INTERNAL_TYPE1_TYPES_H
 | 
			
		||||
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                             T1_TABLE                          *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct PS_TableRec_*              PS_Table;
 | 
			
		||||
  typedef const struct PS_Table_FuncsRec_*  PS_Table_Funcs;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_Table_FuncsRec                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A set of function pointers to manage PS_Table objects.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    table_init    :: Used to initialize a table.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    table_done    :: Finalizes resp. destroy a given table.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    table_add     :: Adds a new object to a table.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    table_release :: Releases table data, then finalizes it.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  PS_Table_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*init)( PS_Table   table,
 | 
			
		||||
             FT_Int     count,
 | 
			
		||||
             FT_Memory  memory );
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*done)( PS_Table  table );
 | 
			
		||||
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*add)( PS_Table    table,
 | 
			
		||||
            FT_Int      idx,
 | 
			
		||||
            void*       object,
 | 
			
		||||
            FT_PtrDist  length );
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*release)( PS_Table  table );
 | 
			
		||||
 | 
			
		||||
  } PS_Table_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_TableRec                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A PS_Table is a simple object used to store an array of objects in */
 | 
			
		||||
  /*    a single memory block.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    block     :: The address in memory of the growheap's block.  This  */
 | 
			
		||||
  /*                 can change between two object adds, due to            */
 | 
			
		||||
  /*                 reallocation.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    cursor    :: The current top of the grow heap within its block.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    capacity  :: The current size of the heap block.  Increments by    */
 | 
			
		||||
  /*                 1kByte chunks.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    max_elems :: The maximum number of elements in table.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_elems :: The current number of elements in table.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    elements  :: A table of element addresses within the block.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    lengths   :: A table of element sizes within the block.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    memory    :: The object used for memory operations                 */
 | 
			
		||||
  /*                 (alloc/realloc).                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    funcs     :: A table of method pointers for this object.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  PS_TableRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Byte*           block;          /* current memory block           */
 | 
			
		||||
    FT_Offset          cursor;         /* current cursor in memory block */
 | 
			
		||||
    FT_Offset          capacity;       /* current size of memory block   */
 | 
			
		||||
    FT_Long            init;
 | 
			
		||||
 | 
			
		||||
    FT_Int             max_elems;
 | 
			
		||||
    FT_Int             num_elems;
 | 
			
		||||
    FT_Byte**          elements;       /* addresses of table elements */
 | 
			
		||||
    FT_PtrDist*        lengths;        /* lengths of table elements   */
 | 
			
		||||
 | 
			
		||||
    FT_Memory          memory;
 | 
			
		||||
    PS_Table_FuncsRec  funcs;
 | 
			
		||||
 | 
			
		||||
  } PS_TableRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                       T1 FIELDS & TOKENS                      *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  typedef struct PS_ParserRec_*  PS_Parser;
 | 
			
		||||
 | 
			
		||||
  typedef struct T1_TokenRec_*   T1_Token;
 | 
			
		||||
 | 
			
		||||
  typedef struct T1_FieldRec_*   T1_Field;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* simple enumeration type used to identify token types */
 | 
			
		||||
  typedef enum  T1_TokenType_
 | 
			
		||||
  {
 | 
			
		||||
    T1_TOKEN_TYPE_NONE = 0,
 | 
			
		||||
    T1_TOKEN_TYPE_ANY,
 | 
			
		||||
    T1_TOKEN_TYPE_STRING,
 | 
			
		||||
    T1_TOKEN_TYPE_ARRAY,
 | 
			
		||||
    T1_TOKEN_TYPE_KEY, /* aka `name' */
 | 
			
		||||
 | 
			
		||||
    /* do not remove */
 | 
			
		||||
    T1_TOKEN_TYPE_MAX
 | 
			
		||||
 | 
			
		||||
  } T1_TokenType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* a simple structure used to identify tokens */
 | 
			
		||||
  typedef struct  T1_TokenRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Byte*      start;   /* first character of token in input stream */
 | 
			
		||||
    FT_Byte*      limit;   /* first character after the token          */
 | 
			
		||||
    T1_TokenType  type;    /* type of token                            */
 | 
			
		||||
 | 
			
		||||
  } T1_TokenRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* enumeration type used to identify object fields */
 | 
			
		||||
  typedef enum  T1_FieldType_
 | 
			
		||||
  {
 | 
			
		||||
    T1_FIELD_TYPE_NONE = 0,
 | 
			
		||||
    T1_FIELD_TYPE_BOOL,
 | 
			
		||||
    T1_FIELD_TYPE_INTEGER,
 | 
			
		||||
    T1_FIELD_TYPE_FIXED,
 | 
			
		||||
    T1_FIELD_TYPE_FIXED_1000,
 | 
			
		||||
    T1_FIELD_TYPE_STRING,
 | 
			
		||||
    T1_FIELD_TYPE_KEY,
 | 
			
		||||
    T1_FIELD_TYPE_BBOX,
 | 
			
		||||
    T1_FIELD_TYPE_INTEGER_ARRAY,
 | 
			
		||||
    T1_FIELD_TYPE_FIXED_ARRAY,
 | 
			
		||||
    T1_FIELD_TYPE_CALLBACK,
 | 
			
		||||
 | 
			
		||||
    /* do not remove */
 | 
			
		||||
    T1_FIELD_TYPE_MAX
 | 
			
		||||
 | 
			
		||||
  } T1_FieldType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef enum  T1_FieldLocation_
 | 
			
		||||
  {
 | 
			
		||||
    T1_FIELD_LOCATION_CID_INFO,
 | 
			
		||||
    T1_FIELD_LOCATION_FONT_DICT,
 | 
			
		||||
    T1_FIELD_LOCATION_FONT_INFO,
 | 
			
		||||
    T1_FIELD_LOCATION_PRIVATE,
 | 
			
		||||
    T1_FIELD_LOCATION_BBOX,
 | 
			
		||||
    T1_FIELD_LOCATION_LOADER,
 | 
			
		||||
    T1_FIELD_LOCATION_FACE,
 | 
			
		||||
    T1_FIELD_LOCATION_BLEND,
 | 
			
		||||
 | 
			
		||||
    /* do not remove */
 | 
			
		||||
    T1_FIELD_LOCATION_MAX
 | 
			
		||||
 | 
			
		||||
  } T1_FieldLocation;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T1_Field_ParseFunc)( FT_Face     face,
 | 
			
		||||
                         FT_Pointer  parser );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* structure type used to model object fields */
 | 
			
		||||
  typedef struct  T1_FieldRec_
 | 
			
		||||
  {
 | 
			
		||||
    const char*         ident;        /* field identifier               */
 | 
			
		||||
    T1_FieldLocation    location;
 | 
			
		||||
    T1_FieldType        type;         /* type of field                  */
 | 
			
		||||
    T1_Field_ParseFunc  reader;
 | 
			
		||||
    FT_UInt             offset;       /* offset of field in object      */
 | 
			
		||||
    FT_Byte             size;         /* size of field in bytes         */
 | 
			
		||||
    FT_UInt             array_max;    /* maximal number of elements for */
 | 
			
		||||
                                      /* array                          */
 | 
			
		||||
    FT_UInt             count_offset; /* offset of element count for    */
 | 
			
		||||
                                      /* arrays                         */
 | 
			
		||||
    FT_UInt             dict;         /* where we expect it             */
 | 
			
		||||
  } T1_FieldRec;
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_DICT_FONTDICT ( 1 << 0 ) /* also FontInfo and FDArray */
 | 
			
		||||
#define T1_FIELD_DICT_PRIVATE  ( 1 << 1 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname, _dict ) \
 | 
			
		||||
          {                                                 \
 | 
			
		||||
            _ident, T1CODE, _type,                          \
 | 
			
		||||
            0,                                              \
 | 
			
		||||
            FT_FIELD_OFFSET( _fname ),                      \
 | 
			
		||||
            FT_FIELD_SIZE( _fname ),                        \
 | 
			
		||||
            0, 0,                                           \
 | 
			
		||||
            _dict                                           \
 | 
			
		||||
          },
 | 
			
		||||
 | 
			
		||||
#define T1_NEW_CALLBACK_FIELD( _ident, _reader, _dict ) \
 | 
			
		||||
          {                                             \
 | 
			
		||||
            _ident, T1CODE, T1_FIELD_TYPE_CALLBACK,     \
 | 
			
		||||
            (T1_Field_ParseFunc)_reader,                \
 | 
			
		||||
            0, 0,                                       \
 | 
			
		||||
            0, 0,                                       \
 | 
			
		||||
            _dict                                       \
 | 
			
		||||
          },
 | 
			
		||||
 | 
			
		||||
#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max, _dict ) \
 | 
			
		||||
          {                                                      \
 | 
			
		||||
            _ident, T1CODE, _type,                               \
 | 
			
		||||
            0,                                                   \
 | 
			
		||||
            FT_FIELD_OFFSET( _fname ),                           \
 | 
			
		||||
            FT_FIELD_SIZE_DELTA( _fname ),                       \
 | 
			
		||||
            _max,                                                \
 | 
			
		||||
            FT_FIELD_OFFSET( num_ ## _fname ),                   \
 | 
			
		||||
            _dict                                                \
 | 
			
		||||
          },
 | 
			
		||||
 | 
			
		||||
#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max, _dict ) \
 | 
			
		||||
          {                                                       \
 | 
			
		||||
            _ident, T1CODE, _type,                                \
 | 
			
		||||
            0,                                                    \
 | 
			
		||||
            FT_FIELD_OFFSET( _fname ),                            \
 | 
			
		||||
            FT_FIELD_SIZE_DELTA( _fname ),                        \
 | 
			
		||||
            _max, 0,                                              \
 | 
			
		||||
            _dict                                                 \
 | 
			
		||||
          },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_BOOL( _ident, _fname, _dict )                             \
 | 
			
		||||
          T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BOOL, _fname, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_NUM( _ident, _fname, _dict )                                 \
 | 
			
		||||
          T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER, _fname, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_FIXED( _ident, _fname, _dict )                             \
 | 
			
		||||
          T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED, _fname, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_FIXED_1000( _ident, _fname, _dict )                     \
 | 
			
		||||
          T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_1000, _fname, \
 | 
			
		||||
                               _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_STRING( _ident, _fname, _dict )                             \
 | 
			
		||||
          T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_STRING, _fname, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_KEY( _ident, _fname, _dict )                             \
 | 
			
		||||
          T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_KEY, _fname, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_BBOX( _ident, _fname, _dict )                             \
 | 
			
		||||
          T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BBOX, _fname, _dict )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_NUM_TABLE( _ident, _fname, _fmax, _dict )         \
 | 
			
		||||
          T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \
 | 
			
		||||
                              _fname, _fmax, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_FIXED_TABLE( _ident, _fname, _fmax, _dict )     \
 | 
			
		||||
          T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \
 | 
			
		||||
                              _fname, _fmax, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_NUM_TABLE2( _ident, _fname, _fmax, _dict )         \
 | 
			
		||||
          T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \
 | 
			
		||||
                               _fname, _fmax, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_FIXED_TABLE2( _ident, _fname, _fmax, _dict )     \
 | 
			
		||||
          T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \
 | 
			
		||||
                               _fname, _fmax, _dict )
 | 
			
		||||
 | 
			
		||||
#define T1_FIELD_CALLBACK( _ident, _name, _dict )       \
 | 
			
		||||
          T1_NEW_CALLBACK_FIELD( _ident, _name, _dict )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                            T1 PARSER                          *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  typedef const struct PS_Parser_FuncsRec_*  PS_Parser_Funcs;
 | 
			
		||||
 | 
			
		||||
  typedef struct  PS_Parser_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    void
 | 
			
		||||
    (*init)( PS_Parser  parser,
 | 
			
		||||
             FT_Byte*   base,
 | 
			
		||||
             FT_Byte*   limit,
 | 
			
		||||
             FT_Memory  memory );
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*done)( PS_Parser  parser );
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*skip_spaces)( PS_Parser  parser );
 | 
			
		||||
    void
 | 
			
		||||
    (*skip_PS_token)( PS_Parser  parser );
 | 
			
		||||
 | 
			
		||||
    FT_Long
 | 
			
		||||
    (*to_int)( PS_Parser  parser );
 | 
			
		||||
    FT_Fixed
 | 
			
		||||
    (*to_fixed)( PS_Parser  parser,
 | 
			
		||||
                 FT_Int     power_ten );
 | 
			
		||||
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*to_bytes)( PS_Parser  parser,
 | 
			
		||||
                 FT_Byte*   bytes,
 | 
			
		||||
                 FT_Long    max_bytes,
 | 
			
		||||
                 FT_Long*   pnum_bytes,
 | 
			
		||||
                 FT_Bool    delimiters );
 | 
			
		||||
 | 
			
		||||
    FT_Int
 | 
			
		||||
    (*to_coord_array)( PS_Parser  parser,
 | 
			
		||||
                       FT_Int     max_coords,
 | 
			
		||||
                       FT_Short*  coords );
 | 
			
		||||
    FT_Int
 | 
			
		||||
    (*to_fixed_array)( PS_Parser  parser,
 | 
			
		||||
                       FT_Int     max_values,
 | 
			
		||||
                       FT_Fixed*  values,
 | 
			
		||||
                       FT_Int     power_ten );
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*to_token)( PS_Parser  parser,
 | 
			
		||||
                 T1_Token   token );
 | 
			
		||||
    void
 | 
			
		||||
    (*to_token_array)( PS_Parser  parser,
 | 
			
		||||
                       T1_Token   tokens,
 | 
			
		||||
                       FT_UInt    max_tokens,
 | 
			
		||||
                       FT_Int*    pnum_tokens );
 | 
			
		||||
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*load_field)( PS_Parser       parser,
 | 
			
		||||
                   const T1_Field  field,
 | 
			
		||||
                   void**          objects,
 | 
			
		||||
                   FT_UInt         max_objects,
 | 
			
		||||
                   FT_ULong*       pflags );
 | 
			
		||||
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*load_field_table)( PS_Parser       parser,
 | 
			
		||||
                         const T1_Field  field,
 | 
			
		||||
                         void**          objects,
 | 
			
		||||
                         FT_UInt         max_objects,
 | 
			
		||||
                         FT_ULong*       pflags );
 | 
			
		||||
 | 
			
		||||
  } PS_Parser_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_ParserRec                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A PS_Parser is an object used to parse a Type 1 font very quickly. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    cursor :: The current position in the text.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    base   :: Start of the processed text.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    limit  :: End of the processed text.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    error  :: The last error returned.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    memory :: The object used for memory operations (alloc/realloc).   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    funcs  :: A table of functions for the parser.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  PS_ParserRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Byte*   cursor;
 | 
			
		||||
    FT_Byte*   base;
 | 
			
		||||
    FT_Byte*   limit;
 | 
			
		||||
    FT_Error   error;
 | 
			
		||||
    FT_Memory  memory;
 | 
			
		||||
 | 
			
		||||
    PS_Parser_FuncsRec  funcs;
 | 
			
		||||
 | 
			
		||||
  } PS_ParserRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                         T1 BUILDER                            *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct T1_BuilderRec_*  T1_Builder;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T1_Builder_Check_Points_Func)( T1_Builder  builder,
 | 
			
		||||
                                   FT_Int      count );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T1_Builder_Add_Point_Func)( T1_Builder  builder,
 | 
			
		||||
                                FT_Pos      x,
 | 
			
		||||
                                FT_Pos      y,
 | 
			
		||||
                                FT_Byte     flag );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T1_Builder_Add_Point1_Func)( T1_Builder  builder,
 | 
			
		||||
                                 FT_Pos      x,
 | 
			
		||||
                                 FT_Pos      y );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T1_Builder_Add_Contour_Func)( T1_Builder  builder );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T1_Builder_Start_Point_Func)( T1_Builder  builder,
 | 
			
		||||
                                  FT_Pos      x,
 | 
			
		||||
                                  FT_Pos      y );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T1_Builder_Close_Contour_Func)( T1_Builder  builder );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef const struct T1_Builder_FuncsRec_*  T1_Builder_Funcs;
 | 
			
		||||
 | 
			
		||||
  typedef struct  T1_Builder_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    void
 | 
			
		||||
    (*init)( T1_Builder    builder,
 | 
			
		||||
             FT_Face       face,
 | 
			
		||||
             FT_Size       size,
 | 
			
		||||
             FT_GlyphSlot  slot,
 | 
			
		||||
             FT_Bool       hinting );
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*done)( T1_Builder   builder );
 | 
			
		||||
 | 
			
		||||
    T1_Builder_Check_Points_Func   check_points;
 | 
			
		||||
    T1_Builder_Add_Point_Func      add_point;
 | 
			
		||||
    T1_Builder_Add_Point1_Func     add_point1;
 | 
			
		||||
    T1_Builder_Add_Contour_Func    add_contour;
 | 
			
		||||
    T1_Builder_Start_Point_Func    start_point;
 | 
			
		||||
    T1_Builder_Close_Contour_Func  close_contour;
 | 
			
		||||
 | 
			
		||||
  } T1_Builder_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* an enumeration type to handle charstring parsing states */
 | 
			
		||||
  typedef enum  T1_ParseState_
 | 
			
		||||
  {
 | 
			
		||||
    T1_Parse_Start,
 | 
			
		||||
    T1_Parse_Have_Width,
 | 
			
		||||
    T1_Parse_Have_Moveto,
 | 
			
		||||
    T1_Parse_Have_Path
 | 
			
		||||
 | 
			
		||||
  } T1_ParseState;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Structure>                                                           */
 | 
			
		||||
  /*    T1_BuilderRec                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*     A structure used during glyph loading to store its outline.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    memory       :: The current memory object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face         :: The current face object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph        :: The current glyph slot.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    loader       :: XXX                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    base         :: The base glyph outline.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    current      :: The current glyph outline.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    max_points   :: maximum points in builder outline                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    max_contours :: Maximal number of contours in builder outline.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    last         :: The last point position.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    pos_x        :: The horizontal translation (if composite glyph).   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    pos_y        :: The vertical translation (if composite glyph).     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    left_bearing :: The left side bearing point.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    advance      :: The horizontal advance vector.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    bbox         :: Unused.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    parse_state  :: An enumeration which controls the charstring       */
 | 
			
		||||
  /*                    parsing state.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    load_points  :: If this flag is not set, no points are loaded.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    no_recurse   :: Set but not used.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    metrics_only :: A boolean indicating that we only want to compute  */
 | 
			
		||||
  /*                    the metrics of a given glyph, not load all of its  */
 | 
			
		||||
  /*                    points.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    funcs        :: An array of function pointers for the builder.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  T1_BuilderRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Memory       memory;
 | 
			
		||||
    FT_Face         face;
 | 
			
		||||
    FT_GlyphSlot    glyph;
 | 
			
		||||
    FT_GlyphLoader  loader;
 | 
			
		||||
    FT_Outline*     base;
 | 
			
		||||
    FT_Outline*     current;
 | 
			
		||||
 | 
			
		||||
    FT_Vector       last;
 | 
			
		||||
 | 
			
		||||
    FT_Pos          pos_x;
 | 
			
		||||
    FT_Pos          pos_y;
 | 
			
		||||
 | 
			
		||||
    FT_Vector       left_bearing;
 | 
			
		||||
    FT_Vector       advance;
 | 
			
		||||
 | 
			
		||||
    FT_BBox         bbox;          /* bounding box */
 | 
			
		||||
    T1_ParseState   parse_state;
 | 
			
		||||
    FT_Bool         load_points;
 | 
			
		||||
    FT_Bool         no_recurse;
 | 
			
		||||
    FT_Bool         shift;
 | 
			
		||||
 | 
			
		||||
    FT_Bool         metrics_only;
 | 
			
		||||
 | 
			
		||||
    void*           hints_funcs;    /* hinter-specific */
 | 
			
		||||
    void*           hints_globals;  /* hinter-specific */
 | 
			
		||||
 | 
			
		||||
    T1_Builder_FuncsRec  funcs;
 | 
			
		||||
 | 
			
		||||
  } T1_BuilderRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                         T1 DECODER                            *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine   */
 | 
			
		||||
  /* calls during glyph loading.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define T1_MAX_SUBRS_CALLS  8
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A     */
 | 
			
		||||
  /* minimum of 16 is required.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define T1_MAX_CHARSTRINGS_OPERANDS  32
 | 
			
		||||
 | 
			
		||||
#endif /* 0 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  T1_Decoder_ZoneRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Byte*  cursor;
 | 
			
		||||
    FT_Byte*  base;
 | 
			
		||||
    FT_Byte*  limit;
 | 
			
		||||
 | 
			
		||||
  } T1_Decoder_ZoneRec, *T1_Decoder_Zone;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct T1_DecoderRec_*              T1_Decoder;
 | 
			
		||||
  typedef const struct T1_Decoder_FuncsRec_*  T1_Decoder_Funcs;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T1_Decoder_Callback)( T1_Decoder  decoder,
 | 
			
		||||
                          FT_UInt     glyph_index );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  T1_Decoder_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*init)( T1_Decoder           decoder,
 | 
			
		||||
             FT_Face              face,
 | 
			
		||||
             FT_Size              size,
 | 
			
		||||
             FT_GlyphSlot         slot,
 | 
			
		||||
             FT_Byte**            glyph_names,
 | 
			
		||||
             PS_Blend             blend,
 | 
			
		||||
             FT_Bool              hinting,
 | 
			
		||||
             FT_Render_Mode       hint_mode,
 | 
			
		||||
             T1_Decoder_Callback  callback );
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*done)( T1_Decoder  decoder );
 | 
			
		||||
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*parse_charstrings)( T1_Decoder  decoder,
 | 
			
		||||
                          FT_Byte*    base,
 | 
			
		||||
                          FT_UInt     len );
 | 
			
		||||
 | 
			
		||||
  } T1_Decoder_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  T1_DecoderRec_
 | 
			
		||||
  {
 | 
			
		||||
    T1_BuilderRec        builder;
 | 
			
		||||
 | 
			
		||||
    FT_Long              stack[T1_MAX_CHARSTRINGS_OPERANDS];
 | 
			
		||||
    FT_Long*             top;
 | 
			
		||||
 | 
			
		||||
    T1_Decoder_ZoneRec   zones[T1_MAX_SUBRS_CALLS + 1];
 | 
			
		||||
    T1_Decoder_Zone      zone;
 | 
			
		||||
 | 
			
		||||
    FT_Service_PsCMaps   psnames;      /* for seac */
 | 
			
		||||
    FT_UInt              num_glyphs;
 | 
			
		||||
    FT_Byte**            glyph_names;
 | 
			
		||||
 | 
			
		||||
    FT_Int               lenIV;        /* internal for sub routine calls */
 | 
			
		||||
    FT_UInt              num_subrs;
 | 
			
		||||
    FT_Byte**            subrs;
 | 
			
		||||
    FT_PtrDist*          subrs_len;    /* array of subrs length (optional) */
 | 
			
		||||
 | 
			
		||||
    FT_Matrix            font_matrix;
 | 
			
		||||
    FT_Vector            font_offset;
 | 
			
		||||
 | 
			
		||||
    FT_Int               flex_state;
 | 
			
		||||
    FT_Int               num_flex_vectors;
 | 
			
		||||
    FT_Vector            flex_vectors[7];
 | 
			
		||||
 | 
			
		||||
    PS_Blend             blend;       /* for multiple master support */
 | 
			
		||||
 | 
			
		||||
    FT_Render_Mode       hint_mode;
 | 
			
		||||
 | 
			
		||||
    T1_Decoder_Callback  parse_callback;
 | 
			
		||||
    T1_Decoder_FuncsRec  funcs;
 | 
			
		||||
 | 
			
		||||
    FT_Int*              buildchar;
 | 
			
		||||
    FT_UInt              len_buildchar;
 | 
			
		||||
 | 
			
		||||
  } T1_DecoderRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                            AFM PARSER                         *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  typedef struct AFM_ParserRec_*  AFM_Parser;
 | 
			
		||||
 | 
			
		||||
  typedef struct  AFM_Parser_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*init)( AFM_Parser  parser,
 | 
			
		||||
             FT_Memory   memory,
 | 
			
		||||
             FT_Byte*    base,
 | 
			
		||||
             FT_Byte*    limit );
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*done)( AFM_Parser  parser );
 | 
			
		||||
 | 
			
		||||
    FT_Error
 | 
			
		||||
    (*parse)( AFM_Parser  parser );
 | 
			
		||||
 | 
			
		||||
  } AFM_Parser_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct AFM_StreamRec_*  AFM_Stream;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    AFM_ParserRec                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An AFM_Parser is a parser for the AFM files.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    memory    :: The object used for memory operations (alloc and      */
 | 
			
		||||
  /*                 realloc).                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream    :: This is an opaque object.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FontInfo  :: The result will be stored here.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    get_index :: A user provided function to get a glyph index by its  */
 | 
			
		||||
  /*                 name.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  AFM_ParserRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Memory     memory;
 | 
			
		||||
    AFM_Stream    stream;
 | 
			
		||||
 | 
			
		||||
    AFM_FontInfo  FontInfo;
 | 
			
		||||
 | 
			
		||||
    FT_Int
 | 
			
		||||
    (*get_index)( const char*  name,
 | 
			
		||||
                  FT_UInt      len,
 | 
			
		||||
                  void*        user_data );
 | 
			
		||||
 | 
			
		||||
    void*         user_data;
 | 
			
		||||
 | 
			
		||||
  } AFM_ParserRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                     TYPE1 CHARMAPS                            *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  typedef const struct T1_CMap_ClassesRec_*  T1_CMap_Classes;
 | 
			
		||||
 | 
			
		||||
  typedef struct T1_CMap_ClassesRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_CMap_Class  standard;
 | 
			
		||||
    FT_CMap_Class  expert;
 | 
			
		||||
    FT_CMap_Class  custom;
 | 
			
		||||
    FT_CMap_Class  unicode;
 | 
			
		||||
 | 
			
		||||
  } T1_CMap_ClassesRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                        PSAux Module Interface                 *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  typedef struct  PSAux_ServiceRec_
 | 
			
		||||
  {
 | 
			
		||||
    /* don't use `PS_Table_Funcs' and friends to avoid compiler warnings */
 | 
			
		||||
    const PS_Table_FuncsRec*    ps_table_funcs;
 | 
			
		||||
    const PS_Parser_FuncsRec*   ps_parser_funcs;
 | 
			
		||||
    const T1_Builder_FuncsRec*  t1_builder_funcs;
 | 
			
		||||
    const T1_Decoder_FuncsRec*  t1_decoder_funcs;
 | 
			
		||||
 | 
			
		||||
    void
 | 
			
		||||
    (*t1_decrypt)( FT_Byte*   buffer,
 | 
			
		||||
                   FT_Offset  length,
 | 
			
		||||
                   FT_UShort  seed );
 | 
			
		||||
 | 
			
		||||
    T1_CMap_Classes  t1_cmap_classes;
 | 
			
		||||
 | 
			
		||||
    /* fields after this comment line were added after version 2.1.10 */
 | 
			
		||||
    const AFM_Parser_FuncsRec*  afm_parser_funcs;
 | 
			
		||||
 | 
			
		||||
  } PSAux_ServiceRec, *PSAux_Service;
 | 
			
		||||
 | 
			
		||||
  /* backwards-compatible type definition */
 | 
			
		||||
  typedef PSAux_ServiceRec   PSAux_Interface;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                 Some convenience functions                    *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#define IS_PS_NEWLINE( ch ) \
 | 
			
		||||
  ( (ch) == '\r' ||         \
 | 
			
		||||
    (ch) == '\n' )
 | 
			
		||||
 | 
			
		||||
#define IS_PS_SPACE( ch )  \
 | 
			
		||||
  ( (ch) == ' '         || \
 | 
			
		||||
    IS_PS_NEWLINE( ch ) || \
 | 
			
		||||
    (ch) == '\t'        || \
 | 
			
		||||
    (ch) == '\f'        || \
 | 
			
		||||
    (ch) == '\0' )
 | 
			
		||||
 | 
			
		||||
#define IS_PS_SPECIAL( ch )       \
 | 
			
		||||
  ( (ch) == '/'                || \
 | 
			
		||||
    (ch) == '(' || (ch) == ')' || \
 | 
			
		||||
    (ch) == '<' || (ch) == '>' || \
 | 
			
		||||
    (ch) == '[' || (ch) == ']' || \
 | 
			
		||||
    (ch) == '{' || (ch) == '}' || \
 | 
			
		||||
    (ch) == '%'                )
 | 
			
		||||
 | 
			
		||||
#define IS_PS_DELIM( ch )  \
 | 
			
		||||
  ( IS_PS_SPACE( ch )   || \
 | 
			
		||||
    IS_PS_SPECIAL( ch ) )
 | 
			
		||||
 | 
			
		||||
#define IS_PS_DIGIT( ch )        \
 | 
			
		||||
  ( (ch) >= '0' && (ch) <= '9' )
 | 
			
		||||
 | 
			
		||||
#define IS_PS_XDIGIT( ch )            \
 | 
			
		||||
  ( IS_PS_DIGIT( ch )              || \
 | 
			
		||||
    ( (ch) >= 'A' && (ch) <= 'F' ) || \
 | 
			
		||||
    ( (ch) >= 'a' && (ch) <= 'f' ) )
 | 
			
		||||
 | 
			
		||||
#define IS_PS_BASE85( ch )       \
 | 
			
		||||
  ( (ch) >= '!' && (ch) <= 'u' )
 | 
			
		||||
 | 
			
		||||
#define IS_PS_TOKEN( cur, limit, token )                                \
 | 
			
		||||
  ( (char)(cur)[0] == (token)[0]                                     && \
 | 
			
		||||
    ( (cur) + sizeof ( (token) ) == (limit) ||                          \
 | 
			
		||||
      ( (cur) + sizeof( (token) ) < (limit)          &&                 \
 | 
			
		||||
        IS_PS_DELIM( (cur)[sizeof ( (token) ) - 1] ) ) )             && \
 | 
			
		||||
    ft_strncmp( (char*)(cur), (token), sizeof ( (token) ) - 1 ) == 0 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __PSAUX_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										687
									
								
								include/freetype/internal/pshints.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										687
									
								
								include/freetype/internal/pshints.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,687 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  pshints.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Interface to Postscript-specific (Type 1 and Type 2) hints           */
 | 
			
		||||
/*    recorders (specification only).  These are used to support native    */
 | 
			
		||||
/*    T1/T2 hints in the `type1', `cid', and `cff' font drivers.           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2001, 2002, 2003, 2005, 2006, 2007 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 __PSHINTS_H__
 | 
			
		||||
#define __PSHINTS_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
#include FT_TYPE1_TABLES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****               INTERNAL REPRESENTATION OF GLOBALS              *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  typedef struct PSH_GlobalsRec_*  PSH_Globals;
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*PSH_Globals_NewFunc)( FT_Memory     memory,
 | 
			
		||||
                          T1_Private*   private_dict,
 | 
			
		||||
                          PSH_Globals*  aglobals );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*PSH_Globals_SetScaleFunc)( PSH_Globals  globals,
 | 
			
		||||
                               FT_Fixed     x_scale,
 | 
			
		||||
                               FT_Fixed     y_scale,
 | 
			
		||||
                               FT_Fixed     x_delta,
 | 
			
		||||
                               FT_Fixed     y_delta );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*PSH_Globals_DestroyFunc)( PSH_Globals  globals );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  PSH_Globals_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    PSH_Globals_NewFunc       create;
 | 
			
		||||
    PSH_Globals_SetScaleFunc  set_scale;
 | 
			
		||||
    PSH_Globals_DestroyFunc   destroy;
 | 
			
		||||
 | 
			
		||||
  } PSH_Globals_FuncsRec, *PSH_Globals_Funcs;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                  PUBLIC TYPE 1 HINTS RECORDER                 *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   T1_Hints
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This is a handle to an opaque structure used to record glyph hints
 | 
			
		||||
   *   from a Type 1 character glyph character string.
 | 
			
		||||
   *
 | 
			
		||||
   *   The methods used to operate on this object are defined by the
 | 
			
		||||
   *   @T1_Hints_FuncsRec structure.  Recording glyph hints is normally
 | 
			
		||||
   *   achieved through the following scheme:
 | 
			
		||||
   *
 | 
			
		||||
   *   - Open a new hint recording session by calling the `open' method.
 | 
			
		||||
   *     This rewinds the recorder and prepare it for new input.
 | 
			
		||||
   *
 | 
			
		||||
   *   - For each hint found in the glyph charstring, call the corresponding
 | 
			
		||||
   *     method (`stem', `stem3', or `reset').  Note that these functions do
 | 
			
		||||
   *     not return an error code.
 | 
			
		||||
   *
 | 
			
		||||
   *   - Close the recording session by calling the `close' method.  It
 | 
			
		||||
   *     returns an error code if the hints were invalid or something
 | 
			
		||||
   *     strange happened (e.g., memory shortage).
 | 
			
		||||
   *
 | 
			
		||||
   *   The hints accumulated in the object can later be used by the
 | 
			
		||||
   *   PostScript hinter.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct T1_HintsRec_*  T1_Hints;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   T1_Hints_Funcs
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A pointer to the @T1_Hints_FuncsRec structure that defines the API of
 | 
			
		||||
   *   a given @T1_Hints object.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef const struct T1_Hints_FuncsRec_*  T1_Hints_Funcs;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T1_Hints_OpenFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T1_Hints class used to prepare it for a new Type 1
 | 
			
		||||
   *   hints recording session.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 1 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should always call the @T1_Hints_CloseFunc method in order to
 | 
			
		||||
   *   close an opened recording session.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T1_Hints_OpenFunc)( T1_Hints  hints );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T1_Hints_SetStemFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T1_Hints class used to record a new horizontal or
 | 
			
		||||
   *   vertical stem.  This corresponds to the Type 1 `hstem' and `vstem'
 | 
			
		||||
   *   operators.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 1 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   dimension ::
 | 
			
		||||
   *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).
 | 
			
		||||
   *
 | 
			
		||||
   *   coords ::
 | 
			
		||||
   *     Array of 2 integers, used as (position,length) stem descriptor.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
 | 
			
		||||
   *   horizontal coordinates (x) for vertical stems (dim=1).
 | 
			
		||||
   *
 | 
			
		||||
   *   `coords[0]' is the absolute stem position (lowest coordinate);
 | 
			
		||||
   *   `coords[1]' is the length.
 | 
			
		||||
   *
 | 
			
		||||
   *   The length can be negative, in which case it must be either -20 or
 | 
			
		||||
   *   -21.  It is interpreted as a `ghost' stem, according to the Type 1
 | 
			
		||||
   *   specification.
 | 
			
		||||
   *
 | 
			
		||||
   *   If the length is -21 (corresponding to a bottom ghost stem), then
 | 
			
		||||
   *   the real stem position is `coords[0]+coords[1]'.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T1_Hints_SetStemFunc)( T1_Hints  hints,
 | 
			
		||||
                           FT_UInt   dimension,
 | 
			
		||||
                           FT_Long*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T1_Hints_SetStem3Func
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T1_Hints class used to record three
 | 
			
		||||
   *   counter-controlled horizontal or vertical stems at once.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 1 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   dimension ::
 | 
			
		||||
   *     0 for horizontal stems, 1 for vertical ones.
 | 
			
		||||
   *
 | 
			
		||||
   *   coords ::
 | 
			
		||||
   *     An array of 6 integers, holding 3 (position,length) pairs for the
 | 
			
		||||
   *     counter-controlled stems.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
 | 
			
		||||
   *   horizontal coordinates (x) for vertical stems (dim=1).
 | 
			
		||||
   *
 | 
			
		||||
   *   The lengths cannot be negative (ghost stems are never
 | 
			
		||||
   *   counter-controlled).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T1_Hints_SetStem3Func)( T1_Hints  hints,
 | 
			
		||||
                            FT_UInt   dimension,
 | 
			
		||||
                            FT_Long*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T1_Hints_ResetFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T1_Hints class used to reset the stems hints in a
 | 
			
		||||
   *   recording session.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 1 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   end_point ::
 | 
			
		||||
   *     The index of the last point in the input glyph in which the
 | 
			
		||||
   *     previously defined hints apply.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T1_Hints_ResetFunc)( T1_Hints  hints,
 | 
			
		||||
                         FT_UInt   end_point );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T1_Hints_CloseFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T1_Hints class used to close a hint recording
 | 
			
		||||
   *   session.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 1 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   end_point ::
 | 
			
		||||
   *     The index of the last point in the input glyph.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The error code is set to indicate that an error occurred during the
 | 
			
		||||
   *   recording session.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T1_Hints_CloseFunc)( T1_Hints  hints,
 | 
			
		||||
                         FT_UInt   end_point );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T1_Hints_ApplyFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T1_Hints class used to apply hints to the
 | 
			
		||||
   *   corresponding glyph outline.  Must be called once all hints have been
 | 
			
		||||
   *   recorded.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 1 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     A pointer to the target outline descriptor.
 | 
			
		||||
   *
 | 
			
		||||
   *   globals ::
 | 
			
		||||
   *     The hinter globals for this font.
 | 
			
		||||
   *
 | 
			
		||||
   *   hint_mode ::
 | 
			
		||||
   *     Hinting information.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   On input, all points within the outline are in font coordinates. On
 | 
			
		||||
   *   output, they are in 1/64th of pixels.
 | 
			
		||||
   *
 | 
			
		||||
   *   The scaling transformation is taken from the `globals' object which
 | 
			
		||||
   *   must correspond to the same font as the glyph.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T1_Hints_ApplyFunc)( T1_Hints        hints,
 | 
			
		||||
                         FT_Outline*     outline,
 | 
			
		||||
                         PSH_Globals     globals,
 | 
			
		||||
                         FT_Render_Mode  hint_mode );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   T1_Hints_FuncsRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The structure used to provide the API to @T1_Hints objects.
 | 
			
		||||
   *
 | 
			
		||||
   * @fields:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the T1 Hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   open ::
 | 
			
		||||
   *     The function to open a recording session.
 | 
			
		||||
   *
 | 
			
		||||
   *   close ::
 | 
			
		||||
   *     The function to close a recording session.
 | 
			
		||||
   *
 | 
			
		||||
   *   stem ::
 | 
			
		||||
   *     The function to set a simple stem.
 | 
			
		||||
   *
 | 
			
		||||
   *   stem3 ::
 | 
			
		||||
   *     The function to set counter-controlled stems.
 | 
			
		||||
   *
 | 
			
		||||
   *   reset ::
 | 
			
		||||
   *     The function to reset stem hints.
 | 
			
		||||
   *
 | 
			
		||||
   *   apply ::
 | 
			
		||||
   *     The function to apply the hints to the corresponding glyph outline.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  T1_Hints_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    T1_Hints               hints;
 | 
			
		||||
    T1_Hints_OpenFunc      open;
 | 
			
		||||
    T1_Hints_CloseFunc     close;
 | 
			
		||||
    T1_Hints_SetStemFunc   stem;
 | 
			
		||||
    T1_Hints_SetStem3Func  stem3;
 | 
			
		||||
    T1_Hints_ResetFunc     reset;
 | 
			
		||||
    T1_Hints_ApplyFunc     apply;
 | 
			
		||||
 | 
			
		||||
  } T1_Hints_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                  PUBLIC TYPE 2 HINTS RECORDER                 *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   T2_Hints
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This is a handle to an opaque structure used to record glyph hints
 | 
			
		||||
   *   from a Type 2 character glyph character string.
 | 
			
		||||
   *
 | 
			
		||||
   *   The methods used to operate on this object are defined by the
 | 
			
		||||
   *   @T2_Hints_FuncsRec structure.  Recording glyph hints is normally
 | 
			
		||||
   *   achieved through the following scheme:
 | 
			
		||||
   *
 | 
			
		||||
   *   - Open a new hint recording session by calling the `open' method.
 | 
			
		||||
   *     This rewinds the recorder and prepare it for new input.
 | 
			
		||||
   *
 | 
			
		||||
   *   - For each hint found in the glyph charstring, call the corresponding
 | 
			
		||||
   *     method (`stems', `hintmask', `counters').  Note that these
 | 
			
		||||
   *     functions do not return an error code.
 | 
			
		||||
   *
 | 
			
		||||
   *   - Close the recording session by calling the `close' method.  It
 | 
			
		||||
   *     returns an error code if the hints were invalid or something
 | 
			
		||||
   *     strange happened (e.g., memory shortage).
 | 
			
		||||
   *
 | 
			
		||||
   *   The hints accumulated in the object can later be used by the
 | 
			
		||||
   *   Postscript hinter.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct T2_HintsRec_*  T2_Hints;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   T2_Hints_Funcs
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A pointer to the @T2_Hints_FuncsRec structure that defines the API of
 | 
			
		||||
   *   a given @T2_Hints object.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef const struct T2_Hints_FuncsRec_*  T2_Hints_Funcs;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T2_Hints_OpenFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T2_Hints class used to prepare it for a new Type 2
 | 
			
		||||
   *   hints recording session.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 2 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should always call the @T2_Hints_CloseFunc method in order to
 | 
			
		||||
   *   close an opened recording session.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T2_Hints_OpenFunc)( T2_Hints  hints );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T2_Hints_StemsFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T2_Hints class used to set the table of stems in
 | 
			
		||||
   *   either the vertical or horizontal dimension.  Equivalent to the
 | 
			
		||||
   *   `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 2 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   dimension ::
 | 
			
		||||
   *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).
 | 
			
		||||
   *
 | 
			
		||||
   *   count ::
 | 
			
		||||
   *     The number of stems.
 | 
			
		||||
   *
 | 
			
		||||
   *   coords ::
 | 
			
		||||
   *     An array of `count' (position,length) pairs.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
 | 
			
		||||
   *   horizontal coordinates (x) for vertical stems (dim=1).
 | 
			
		||||
   *
 | 
			
		||||
   *   There are `2*count' elements in the `coords' array.  Each even
 | 
			
		||||
   *   element is an absolute position in font units, each odd element is a
 | 
			
		||||
   *   length in font units.
 | 
			
		||||
   *
 | 
			
		||||
   *   A length can be negative, in which case it must be either -20 or
 | 
			
		||||
   *   -21.  It is interpreted as a `ghost' stem, according to the Type 1
 | 
			
		||||
   *   specification.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T2_Hints_StemsFunc)( T2_Hints   hints,
 | 
			
		||||
                         FT_UInt    dimension,
 | 
			
		||||
                         FT_UInt    count,
 | 
			
		||||
                         FT_Fixed*  coordinates );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T2_Hints_MaskFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T2_Hints class used to set a given hintmask (this
 | 
			
		||||
   *   corresponds to the `hintmask' Type 2 operator).
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 2 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   end_point ::
 | 
			
		||||
   *     The glyph index of the last point to which the previously defined
 | 
			
		||||
   *     or activated hints apply.
 | 
			
		||||
   *
 | 
			
		||||
   *   bit_count ::
 | 
			
		||||
   *     The number of bits in the hint mask.
 | 
			
		||||
   *
 | 
			
		||||
   *   bytes ::
 | 
			
		||||
   *     An array of bytes modelling the hint mask.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If the hintmask starts the charstring (before any glyph point
 | 
			
		||||
   *   definition), the value of `end_point' should be 0.
 | 
			
		||||
   *
 | 
			
		||||
   *   `bit_count' is the number of meaningful bits in the `bytes' array; it
 | 
			
		||||
   *   must be equal to the total number of hints defined so far (i.e.,
 | 
			
		||||
   *   horizontal+verticals).
 | 
			
		||||
   *
 | 
			
		||||
   *   The `bytes' array can come directly from the Type 2 charstring and
 | 
			
		||||
   *   respects the same format.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T2_Hints_MaskFunc)( T2_Hints        hints,
 | 
			
		||||
                        FT_UInt         end_point,
 | 
			
		||||
                        FT_UInt         bit_count,
 | 
			
		||||
                        const FT_Byte*  bytes );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T2_Hints_CounterFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T2_Hints class used to set a given counter mask
 | 
			
		||||
   *   (this corresponds to the `hintmask' Type 2 operator).
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 2 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   end_point ::
 | 
			
		||||
   *     A glyph index of the last point to which the previously defined or
 | 
			
		||||
   *     active hints apply.
 | 
			
		||||
   *
 | 
			
		||||
   *   bit_count ::
 | 
			
		||||
   *     The number of bits in the hint mask.
 | 
			
		||||
   *
 | 
			
		||||
   *   bytes ::
 | 
			
		||||
   *     An array of bytes modelling the hint mask.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If the hintmask starts the charstring (before any glyph point
 | 
			
		||||
   *   definition), the value of `end_point' should be 0.
 | 
			
		||||
   *
 | 
			
		||||
   *   `bit_count' is the number of meaningful bits in the `bytes' array; it
 | 
			
		||||
   *   must be equal to the total number of hints defined so far (i.e.,
 | 
			
		||||
   *   horizontal+verticals).
 | 
			
		||||
   *
 | 
			
		||||
   *    The `bytes' array can come directly from the Type 2 charstring and
 | 
			
		||||
   *    respects the same format.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*T2_Hints_CounterFunc)( T2_Hints        hints,
 | 
			
		||||
                           FT_UInt         bit_count,
 | 
			
		||||
                           const FT_Byte*  bytes );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T2_Hints_CloseFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T2_Hints class used to close a hint recording
 | 
			
		||||
   *   session.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 2 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   end_point ::
 | 
			
		||||
   *     The index of the last point in the input glyph.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The error code is set to indicate that an error occurred during the
 | 
			
		||||
   *   recording session.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T2_Hints_CloseFunc)( T2_Hints  hints,
 | 
			
		||||
                         FT_UInt   end_point );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   T2_Hints_ApplyFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A method of the @T2_Hints class used to apply hints to the
 | 
			
		||||
   *   corresponding glyph outline.  Must be called after the `close'
 | 
			
		||||
   *   method.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the Type 2 hints recorder.
 | 
			
		||||
   *
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     A pointer to the target outline descriptor.
 | 
			
		||||
   *
 | 
			
		||||
   *   globals ::
 | 
			
		||||
   *     The hinter globals for this font.
 | 
			
		||||
   *
 | 
			
		||||
   *   hint_mode ::
 | 
			
		||||
   *     Hinting information.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   On input, all points within the outline are in font coordinates. On
 | 
			
		||||
   *   output, they are in 1/64th of pixels.
 | 
			
		||||
   *
 | 
			
		||||
   *   The scaling transformation is taken from the `globals' object which
 | 
			
		||||
   *   must correspond to the same font than the glyph.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*T2_Hints_ApplyFunc)( T2_Hints        hints,
 | 
			
		||||
                         FT_Outline*     outline,
 | 
			
		||||
                         PSH_Globals     globals,
 | 
			
		||||
                         FT_Render_Mode  hint_mode );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   T2_Hints_FuncsRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The structure used to provide the API to @T2_Hints objects.
 | 
			
		||||
   *
 | 
			
		||||
   * @fields:
 | 
			
		||||
   *   hints ::
 | 
			
		||||
   *     A handle to the T2 hints recorder object.
 | 
			
		||||
   *
 | 
			
		||||
   *   open ::
 | 
			
		||||
   *     The function to open a recording session.
 | 
			
		||||
   *
 | 
			
		||||
   *   close ::
 | 
			
		||||
   *     The function to close a recording session.
 | 
			
		||||
   *
 | 
			
		||||
   *   stems ::
 | 
			
		||||
   *     The function to set the dimension's stems table.
 | 
			
		||||
   *
 | 
			
		||||
   *   hintmask ::
 | 
			
		||||
   *     The function to set hint masks.
 | 
			
		||||
   *
 | 
			
		||||
   *   counter ::
 | 
			
		||||
   *     The function to set counter masks.
 | 
			
		||||
   *
 | 
			
		||||
   *   apply ::
 | 
			
		||||
   *     The function to apply the hints on the corresponding glyph outline.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  T2_Hints_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    T2_Hints              hints;
 | 
			
		||||
    T2_Hints_OpenFunc     open;
 | 
			
		||||
    T2_Hints_CloseFunc    close;
 | 
			
		||||
    T2_Hints_StemsFunc    stems;
 | 
			
		||||
    T2_Hints_MaskFunc     hintmask;
 | 
			
		||||
    T2_Hints_CounterFunc  counter;
 | 
			
		||||
    T2_Hints_ApplyFunc    apply;
 | 
			
		||||
 | 
			
		||||
  } T2_Hints_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  PSHinter_Interface_
 | 
			
		||||
  {
 | 
			
		||||
    PSH_Globals_Funcs  (*get_globals_funcs)( FT_Module  module );
 | 
			
		||||
    T1_Hints_Funcs     (*get_t1_funcs)     ( FT_Module  module );
 | 
			
		||||
    T2_Hints_Funcs     (*get_t2_funcs)     ( FT_Module  module );
 | 
			
		||||
 | 
			
		||||
  } PSHinter_Interface;
 | 
			
		||||
 | 
			
		||||
  typedef PSHinter_Interface*  PSHinter_Service;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __PSHINTS_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										57
									
								
								include/freetype/internal/services/svbdf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								include/freetype/internal/services/svbdf.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svbdf.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType BDF services (specification).                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003 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 __SVBDF_H__
 | 
			
		||||
#define __SVBDF_H__
 | 
			
		||||
 | 
			
		||||
#include FT_BDF_H
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_BDF  "bdf"
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_BDF_GetCharsetIdFunc)( FT_Face       face,
 | 
			
		||||
                              const char*  *acharset_encoding,
 | 
			
		||||
                              const char*  *acharset_registry );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_BDF_GetPropertyFunc)( FT_Face           face,
 | 
			
		||||
                             const char*       prop_name,
 | 
			
		||||
                             BDF_PropertyRec  *aproperty );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( BDF )
 | 
			
		||||
  {
 | 
			
		||||
    FT_BDF_GetCharsetIdFunc  get_charset_id;
 | 
			
		||||
    FT_BDF_GetPropertyFunc   get_property;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVBDF_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										49
									
								
								include/freetype/internal/services/svcid.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								include/freetype/internal/services/svcid.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svcid.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType CID font services (specification).                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2007 by Derek Clegg.                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  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 __SVCID_H__
 | 
			
		||||
#define __SVCID_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_CID  "CID"
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_CID_GetRegistryOrderingSupplementFunc)( FT_Face       face,
 | 
			
		||||
                                               const char*  *registry,
 | 
			
		||||
                                               const char*  *ordering,
 | 
			
		||||
                                               FT_Int       *supplement );
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( CID )
 | 
			
		||||
  {
 | 
			
		||||
    FT_CID_GetRegistryOrderingSupplementFunc  get_ros;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVCID_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										60
									
								
								include/freetype/internal/services/svgldict.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								include/freetype/internal/services/svgldict.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svgldict.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType glyph dictionary services (specification).              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003 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 __SVGLDICT_H__
 | 
			
		||||
#define __SVGLDICT_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A service used to retrieve glyph names, as well as to find the
 | 
			
		||||
   *  index of a given glyph name in a font.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_GLYPH_DICT  "glyph-dict"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_GlyphDict_GetNameFunc)( FT_Face     face,
 | 
			
		||||
                               FT_UInt     glyph_index,
 | 
			
		||||
                               FT_Pointer  buffer,
 | 
			
		||||
                               FT_UInt     buffer_max );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt
 | 
			
		||||
  (*FT_GlyphDict_NameIndexFunc)( FT_Face     face,
 | 
			
		||||
                                 FT_String*  glyph_name );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( GlyphDict )
 | 
			
		||||
  {
 | 
			
		||||
    FT_GlyphDict_GetNameFunc    get_name;
 | 
			
		||||
    FT_GlyphDict_NameIndexFunc  name_index;  /* optional */
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVGLDICT_H__ */
 | 
			
		||||
							
								
								
									
										72
									
								
								include/freetype/internal/services/svgxval.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								include/freetype/internal/services/svgxval.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svgxval.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004, 2005 by                                                */
 | 
			
		||||
/*  Masatake YAMATO, Red Hat K.K.,                                         */
 | 
			
		||||
/*  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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* gxvalid is derived from both gxlayout module and otvalid module.        */
 | 
			
		||||
/* Development of gxlayout is supported by the Information-technology      */
 | 
			
		||||
/* Promotion Agency(IPA), Japan.                                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __SVGXVAL_H__
 | 
			
		||||
#define __SVGXVAL_H__
 | 
			
		||||
 | 
			
		||||
#include FT_GX_VALIDATE_H
 | 
			
		||||
#include FT_INTERNAL_VALIDATE_H
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_GX_VALIDATE           "truetypegx-validate"
 | 
			
		||||
#define FT_SERVICE_ID_CLASSICKERN_VALIDATE  "classickern-validate"
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*gxv_validate_func)( FT_Face   face,
 | 
			
		||||
                        FT_UInt   gx_flags,
 | 
			
		||||
                        FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
 | 
			
		||||
                        FT_UInt   table_length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*ckern_validate_func)( FT_Face   face,
 | 
			
		||||
                          FT_UInt   ckern_flags,
 | 
			
		||||
                          FT_Bytes  *ckern_table );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( GXvalidate )
 | 
			
		||||
  {
 | 
			
		||||
    gxv_validate_func  validate;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( CKERNvalidate )
 | 
			
		||||
  {
 | 
			
		||||
    ckern_validate_func  validate;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVGXVAL_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										51
									
								
								include/freetype/internal/services/svkern.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								include/freetype/internal/services/svkern.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svkern.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType Kerning service (specification).                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2006 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 __SVKERN_H__
 | 
			
		||||
#define __SVKERN_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
#include FT_TRUETYPE_TABLES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_KERNING  "kerning"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Kerning_TrackGetFunc)( FT_Face    face,
 | 
			
		||||
                              FT_Fixed   point_size,
 | 
			
		||||
                              FT_Int     degree,
 | 
			
		||||
                              FT_Fixed*  akerning );
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( Kerning )
 | 
			
		||||
  {
 | 
			
		||||
    FT_Kerning_TrackGetFunc  get_track;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVKERN_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										79
									
								
								include/freetype/internal/services/svmm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								include/freetype/internal/services/svmm.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,79 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svmm.h                                                                 */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType Multiple Masters and GX var services (specification).   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004 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 __SVMM_H__
 | 
			
		||||
#define __SVMM_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A service used to manage multiple-masters data in a given face.
 | 
			
		||||
   *
 | 
			
		||||
   *  See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_MULTI_MASTERS  "multi-masters"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Get_MM_Func)( FT_Face           face,
 | 
			
		||||
                     FT_Multi_Master*  master );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Get_MM_Var_Func)( FT_Face      face,
 | 
			
		||||
                         FT_MM_Var*  *master );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Set_MM_Design_Func)( FT_Face   face,
 | 
			
		||||
                            FT_UInt   num_coords,
 | 
			
		||||
                            FT_Long*  coords );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Set_Var_Design_Func)( FT_Face    face,
 | 
			
		||||
                             FT_UInt    num_coords,
 | 
			
		||||
                             FT_Fixed*  coords );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Set_MM_Blend_Func)( FT_Face   face,
 | 
			
		||||
                           FT_UInt   num_coords,
 | 
			
		||||
                           FT_Long*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( MultiMasters )
 | 
			
		||||
  {
 | 
			
		||||
    FT_Get_MM_Func          get_mm;
 | 
			
		||||
    FT_Set_MM_Design_Func   set_mm_design;
 | 
			
		||||
    FT_Set_MM_Blend_Func    set_mm_blend;
 | 
			
		||||
    FT_Get_MM_Var_Func      get_mm_var;
 | 
			
		||||
    FT_Set_Var_Design_Func  set_var_design;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __SVMM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										55
									
								
								include/freetype/internal/services/svotval.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								include/freetype/internal/services/svotval.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svotval.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType OpenType validation service (specification).            */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004, 2006 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 __SVOTVAL_H__
 | 
			
		||||
#define __SVOTVAL_H__
 | 
			
		||||
 | 
			
		||||
#include FT_OPENTYPE_VALIDATE_H
 | 
			
		||||
#include FT_INTERNAL_VALIDATE_H
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_OPENTYPE_VALIDATE  "opentype-validate"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*otv_validate_func)( FT_Face volatile  face,
 | 
			
		||||
                        FT_UInt           ot_flags,
 | 
			
		||||
                        FT_Bytes         *base,
 | 
			
		||||
                        FT_Bytes         *gdef,
 | 
			
		||||
                        FT_Bytes         *gpos,
 | 
			
		||||
                        FT_Bytes         *gsub,
 | 
			
		||||
                        FT_Bytes         *jstf );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( OTvalidate )
 | 
			
		||||
  {
 | 
			
		||||
    otv_validate_func  validate;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVOTVAL_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										66
									
								
								include/freetype/internal/services/svpfr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								include/freetype/internal/services/svpfr.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svpfr.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Internal PFR service functions (specification).                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2006 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 __SVPFR_H__
 | 
			
		||||
#define __SVPFR_H__
 | 
			
		||||
 | 
			
		||||
#include FT_PFR_H
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_PFR_METRICS  "pfr-metrics"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_PFR_GetMetricsFunc)( FT_Face    face,
 | 
			
		||||
                            FT_UInt   *aoutline,
 | 
			
		||||
                            FT_UInt   *ametrics,
 | 
			
		||||
                            FT_Fixed  *ax_scale,
 | 
			
		||||
                            FT_Fixed  *ay_scale );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_PFR_GetKerningFunc)( FT_Face     face,
 | 
			
		||||
                            FT_UInt     left,
 | 
			
		||||
                            FT_UInt     right,
 | 
			
		||||
                            FT_Vector  *avector );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_PFR_GetAdvanceFunc)( FT_Face   face,
 | 
			
		||||
                            FT_UInt   gindex,
 | 
			
		||||
                            FT_Pos   *aadvance );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( PfrMetrics )
 | 
			
		||||
  {
 | 
			
		||||
    FT_PFR_GetMetricsFunc  get_metrics;
 | 
			
		||||
    FT_PFR_GetKerningFunc  get_kerning;
 | 
			
		||||
    FT_PFR_GetAdvanceFunc  get_advance;
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __SVPFR_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										58
									
								
								include/freetype/internal/services/svpostnm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								include/freetype/internal/services/svpostnm.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svpostnm.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType PostScript name services (specification).               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2007 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 __SVPOSTNM_H__
 | 
			
		||||
#define __SVPOSTNM_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A trivial service used to retrieve the PostScript name of a given
 | 
			
		||||
   *  font when available.  The `get_name' field should never be NULL.
 | 
			
		||||
   *
 | 
			
		||||
   *  The corresponding function can return NULL to indicate that the
 | 
			
		||||
   *  PostScript name is not available.
 | 
			
		||||
   *
 | 
			
		||||
   *  The name is owned by the face and will be destroyed with it.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_POSTSCRIPT_FONT_NAME  "postscript-font-name"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef const char*
 | 
			
		||||
  (*FT_PsName_GetFunc)( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( PsFontName )
 | 
			
		||||
  {
 | 
			
		||||
    FT_PsName_GetFunc  get_ps_font_name;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVPOSTNM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										129
									
								
								include/freetype/internal/services/svpscmap.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								include/freetype/internal/services/svpscmap.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,129 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svpscmap.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType PostScript charmap service (specification).             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2006 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 __SVPSCMAP_H__
 | 
			
		||||
#define __SVPSCMAP_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_OBJECTS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_POSTSCRIPT_CMAPS  "postscript-cmaps"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Adobe glyph name to unicode value.
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_UInt32
 | 
			
		||||
  (*PS_Unicode_ValueFunc)( const char*  glyph_name );
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Macintosh name id to glyph name.  NULL if invalid index.
 | 
			
		||||
   */
 | 
			
		||||
  typedef const char*
 | 
			
		||||
  (*PS_Macintosh_NameFunc)( FT_UInt  name_index );
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Adobe standard string ID to glyph name.  NULL if invalid index.
 | 
			
		||||
   */
 | 
			
		||||
  typedef const char*
 | 
			
		||||
  (*PS_Adobe_Std_StringsFunc)( FT_UInt  string_index );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Simple unicode -> glyph index charmap built from font glyph names
 | 
			
		||||
   *  table.
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  PS_UniMap_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt32  unicode;      /* bit 31 set: is glyph variant */
 | 
			
		||||
    FT_UInt    glyph_index;
 | 
			
		||||
 | 
			
		||||
  } PS_UniMap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct PS_UnicodesRec_*  PS_Unicodes;
 | 
			
		||||
 | 
			
		||||
  typedef struct  PS_UnicodesRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_CMapRec  cmap;
 | 
			
		||||
    FT_UInt     num_maps;
 | 
			
		||||
    PS_UniMap*  maps;
 | 
			
		||||
 | 
			
		||||
  } PS_UnicodesRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A function which returns a glyph name for a given index.  Returns
 | 
			
		||||
   *  NULL if invalid index.
 | 
			
		||||
   */
 | 
			
		||||
  typedef const char*
 | 
			
		||||
  (*PS_GetGlyphNameFunc)( FT_Pointer  data,
 | 
			
		||||
                          FT_UInt     string_index );
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A function used to release the glyph name returned by
 | 
			
		||||
   *  PS_GetGlyphNameFunc, when needed
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*PS_FreeGlyphNameFunc)( FT_Pointer  data,
 | 
			
		||||
                           const char*  name );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*PS_Unicodes_InitFunc)( FT_Memory             memory,
 | 
			
		||||
                           PS_Unicodes           unicodes,
 | 
			
		||||
                           FT_UInt               num_glyphs,
 | 
			
		||||
                           PS_GetGlyphNameFunc   get_glyph_name,
 | 
			
		||||
                           PS_FreeGlyphNameFunc  free_glyph_name,
 | 
			
		||||
                           FT_Pointer            glyph_data );
 | 
			
		||||
 | 
			
		||||
  typedef FT_UInt
 | 
			
		||||
  (*PS_Unicodes_CharIndexFunc)( PS_Unicodes  unicodes,
 | 
			
		||||
                                FT_UInt32    unicode );
 | 
			
		||||
 | 
			
		||||
  typedef FT_ULong
 | 
			
		||||
  (*PS_Unicodes_CharNextFunc)( PS_Unicodes  unicodes,
 | 
			
		||||
                               FT_UInt32   *unicode );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( PsCMaps )
 | 
			
		||||
  {
 | 
			
		||||
    PS_Unicode_ValueFunc       unicode_value;
 | 
			
		||||
 | 
			
		||||
    PS_Unicodes_InitFunc       unicodes_init;
 | 
			
		||||
    PS_Unicodes_CharIndexFunc  unicodes_char_index;
 | 
			
		||||
    PS_Unicodes_CharNextFunc   unicodes_char_next;
 | 
			
		||||
 | 
			
		||||
    PS_Macintosh_NameFunc      macintosh_name;
 | 
			
		||||
    PS_Adobe_Std_StringsFunc   adobe_std_strings;
 | 
			
		||||
    const unsigned short*      adobe_std_encoding;
 | 
			
		||||
    const unsigned short*      adobe_expert_encoding;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVPSCMAP_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										60
									
								
								include/freetype/internal/services/svpsinfo.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								include/freetype/internal/services/svpsinfo.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svpsinfo.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType PostScript info service (specification).                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004 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 __SVPSINFO_H__
 | 
			
		||||
#define __SVPSINFO_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
#include FT_INTERNAL_TYPE1_TYPES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_POSTSCRIPT_INFO  "postscript-info"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*PS_GetFontInfoFunc)( FT_Face          face,
 | 
			
		||||
                         PS_FontInfoRec*  afont_info );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Int
 | 
			
		||||
  (*PS_HasGlyphNamesFunc)( FT_Face   face );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*PS_GetFontPrivateFunc)( FT_Face         face,
 | 
			
		||||
                            PS_PrivateRec*  afont_private );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( PsInfo )
 | 
			
		||||
  {
 | 
			
		||||
    PS_GetFontInfoFunc     ps_get_font_info;
 | 
			
		||||
    PS_HasGlyphNamesFunc   ps_has_glyph_names;
 | 
			
		||||
    PS_GetFontPrivateFunc  ps_get_font_private;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVPSINFO_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										80
									
								
								include/freetype/internal/services/svsfnt.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								include/freetype/internal/services/svsfnt.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svsfnt.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType SFNT table loading service (specification).             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004 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 __SVSFNT_H__
 | 
			
		||||
#define __SVSFNT_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
#include FT_TRUETYPE_TABLES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  SFNT table loading service.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_SFNT_TABLE  "sfnt-table"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Used to implement FT_Load_Sfnt_Table().
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_SFNT_TableLoadFunc)( FT_Face    face,
 | 
			
		||||
                            FT_ULong   tag,
 | 
			
		||||
                            FT_Long    offset,
 | 
			
		||||
                            FT_Byte*   buffer,
 | 
			
		||||
                            FT_ULong*  length );
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Used to implement FT_Get_Sfnt_Table().
 | 
			
		||||
   */
 | 
			
		||||
  typedef void*
 | 
			
		||||
  (*FT_SFNT_TableGetFunc)( FT_Face      face,
 | 
			
		||||
                           FT_Sfnt_Tag  tag );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Used to implement FT_Sfnt_Table_Info().
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_SFNT_TableInfoFunc)( FT_Face    face,
 | 
			
		||||
                            FT_UInt    idx,
 | 
			
		||||
                            FT_ULong  *tag,
 | 
			
		||||
                            FT_ULong  *length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( SFNT_Table )
 | 
			
		||||
  {
 | 
			
		||||
    FT_SFNT_TableLoadFunc  load_table;
 | 
			
		||||
    FT_SFNT_TableGetFunc   get_table;
 | 
			
		||||
    FT_SFNT_TableInfoFunc  table_info;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVSFNT_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										78
									
								
								include/freetype/internal/services/svttcmap.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								include/freetype/internal/services/svttcmap.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svsttcmap.h                                                            */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType TrueType/sfnt cmap extra information service.           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003 by                                                      */
 | 
			
		||||
/*  Masatake YAMATO, Redhat K.K.                                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003 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.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
/* Development of this service is support of
 | 
			
		||||
   Information-technology Promotion Agency, Japan. */
 | 
			
		||||
 | 
			
		||||
#ifndef __SVTTCMAP_H__
 | 
			
		||||
#define __SVTTCMAP_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
#include FT_TRUETYPE_TABLES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_TT_CMAP "tt-cmaps"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_CMapInfo                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to store TrueType/sfnt specific cmap information  */
 | 
			
		||||
  /*    which is not covered by the generic @FT_CharMap structure.  This   */
 | 
			
		||||
  /*    structure can be accessed with the @FT_Get_TT_CMap_Info function.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    language ::                                                        */
 | 
			
		||||
  /*      The language ID used in Mac fonts.  Definitions of values are in */
 | 
			
		||||
  /*      freetype/ttnameid.h.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_CMapInfo_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ULong language;
 | 
			
		||||
    FT_Long  format;
 | 
			
		||||
 | 
			
		||||
  } TT_CMapInfo;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_CMap_Info_GetFunc)( FT_CharMap    charmap,
 | 
			
		||||
                           TT_CMapInfo  *cmap_info );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( TTCMaps )
 | 
			
		||||
  {
 | 
			
		||||
    TT_CMap_Info_GetFunc  get_cmap_info;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __SVTTCMAP_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										53
									
								
								include/freetype/internal/services/svtteng.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								include/freetype/internal/services/svtteng.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svtteng.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType TrueType engine query service (specification).          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2006 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 __SVTTENG_H__
 | 
			
		||||
#define __SVTTENG_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
#include FT_MODULE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  SFNT table loading service.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_TRUETYPE_ENGINE  "truetype-engine"
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Used to implement FT_Get_TrueType_Engine_Type
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( TrueTypeEngine )
 | 
			
		||||
  {
 | 
			
		||||
    FT_TrueTypeEngineType  engine_type;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVTTENG_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										48
									
								
								include/freetype/internal/services/svttglyf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								include/freetype/internal/services/svttglyf.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svttglyf.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType TrueType glyph service.                                 */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2007 by David Turner.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  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 __SVTTGLYF_H__
 | 
			
		||||
#define __SVTTGLYF_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
#include FT_TRUETYPE_TABLES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_TT_GLYF "tt-glyf"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_ULong
 | 
			
		||||
  (*TT_Glyf_GetLocationFunc)( FT_Face    face,
 | 
			
		||||
                              FT_UInt    gindex,
 | 
			
		||||
                              FT_ULong  *psize );
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( TTGlyf )
 | 
			
		||||
  {
 | 
			
		||||
    TT_Glyf_GetLocationFunc  get_location;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __SVTTGLYF_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										50
									
								
								include/freetype/internal/services/svwinfnt.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								include/freetype/internal/services/svwinfnt.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svwinfnt.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType Windows FNT/FONT service (specification).               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003 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 __SVWINFNT_H__
 | 
			
		||||
#define __SVWINFNT_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
#include FT_WINFONTS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_WINFNT  "winfonts"
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_WinFnt_GetHeaderFunc)( FT_Face               face,
 | 
			
		||||
                              FT_WinFNT_HeaderRec  *aheader );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_DEFINE_SERVICE( WinFnt )
 | 
			
		||||
  {
 | 
			
		||||
    FT_WinFnt_GetHeaderFunc  get_header;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVWINFNT_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										55
									
								
								include/freetype/internal/services/svxf86nm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								include/freetype/internal/services/svxf86nm.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  svxf86nm.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    The FreeType XFree86 services (specification only).                  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003 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 __SVXF86NM_H__
 | 
			
		||||
#define __SVXF86NM_H__
 | 
			
		||||
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  A trivial service used to return the name of a face's font driver,
 | 
			
		||||
   *  according to the XFree86 nomenclature.  Note that the service data
 | 
			
		||||
   *  is a simple constant string pointer.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_SERVICE_ID_XF86_NAME  "xf86-driver-name"
 | 
			
		||||
 | 
			
		||||
#define FT_XF86_FORMAT_TRUETYPE  "TrueType"
 | 
			
		||||
#define FT_XF86_FORMAT_TYPE_1    "Type 1"
 | 
			
		||||
#define FT_XF86_FORMAT_BDF       "BDF"
 | 
			
		||||
#define FT_XF86_FORMAT_PCF       "PCF"
 | 
			
		||||
#define FT_XF86_FORMAT_TYPE_42   "Type 42"
 | 
			
		||||
#define FT_XF86_FORMAT_CID       "CID Type 1"
 | 
			
		||||
#define FT_XF86_FORMAT_CFF       "CFF"
 | 
			
		||||
#define FT_XF86_FORMAT_PFR       "PFR"
 | 
			
		||||
#define FT_XF86_FORMAT_WINFNT    "Windows FNT"
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __SVXF86NM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										762
									
								
								include/freetype/internal/sfnt.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										762
									
								
								include/freetype/internal/sfnt.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,762 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  sfnt.h                                                                 */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    High-level `sfnt' driver interface (specification).                  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 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 __SFNT_H__
 | 
			
		||||
#define __SFNT_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_INTERNAL_DRIVER_H
 | 
			
		||||
#include FT_INTERNAL_TRUETYPE_TYPES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Init_Face_Func                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    First part of the SFNT face object initialization.  This finds     */
 | 
			
		||||
  /*    the face in a SFNT file or collection, and load its format tag in  */
 | 
			
		||||
  /*    face->format_tag.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    stream     :: The input stream.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face       :: A handle to the target face object.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: The index of the TrueType font, if we are opening a  */
 | 
			
		||||
  /*                  collection.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_params :: The number of additional parameters.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    params     :: Optional additional parameters.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The stream cursor must be at the font file's origin.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function recognizes fonts embedded in a `TrueType             */
 | 
			
		||||
  /*    collection'.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Once the format tag has been validated by the font driver, it      */
 | 
			
		||||
  /*    should then call the TT_Load_Face_Func() callback to read the rest */
 | 
			
		||||
  /*    of the SFNT tables in the object.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Init_Face_Func)( FT_Stream      stream,
 | 
			
		||||
                        TT_Face        face,
 | 
			
		||||
                        FT_Int         face_index,
 | 
			
		||||
                        FT_Int         num_params,
 | 
			
		||||
                        FT_Parameter*  params );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_Face_Func                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Second part of the SFNT face object initialization.  This loads    */
 | 
			
		||||
  /*    the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the    */
 | 
			
		||||
  /*    face object.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    stream     :: The input stream.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face       :: A handle to the target face object.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: The index of the TrueType font, if we are opening a  */
 | 
			
		||||
  /*                  collection.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_params :: The number of additional parameters.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    params     :: Optional additional parameters.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function must be called after TT_Init_Face_Func().            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_Face_Func)( FT_Stream      stream,
 | 
			
		||||
                        TT_Face        face,
 | 
			
		||||
                        FT_Int         face_index,
 | 
			
		||||
                        FT_Int         num_params,
 | 
			
		||||
                        FT_Parameter*  params );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Done_Face_Func                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A callback used to delete the common SFNT data from a face.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to the target face object.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function does NOT destroy the face object.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*TT_Done_Face_Func)( TT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_SFNT_HeaderRec_Func                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Loads the header of a SFNT font file.  Supports collections.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face       :: A handle to the target face object.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream     :: The input stream.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: The index of the TrueType font, if we are opening a  */
 | 
			
		||||
  /*                  collection.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    sfnt       :: The SFNT header.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The stream cursor must be at the font file's origin.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function recognizes fonts embedded in a `TrueType             */
 | 
			
		||||
  /*    collection'.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function checks that the header is valid by looking at the    */
 | 
			
		||||
  /*    values of `search_range', `entry_selector', and `range_shift'.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_SFNT_HeaderRec_Func)( TT_Face      face,
 | 
			
		||||
                                  FT_Stream    stream,
 | 
			
		||||
                                  FT_Long      face_index,
 | 
			
		||||
                                  SFNT_Header  sfnt );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_Directory_Func                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Loads the table directory into a face object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face   :: A handle to the target face object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream :: The input stream.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    sfnt   :: The SFNT header.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The stream cursor must be on the first byte after the 4-byte font  */
 | 
			
		||||
  /*    format tag.  This is the case just after a call to                 */
 | 
			
		||||
  /*    TT_Load_Format_Tag().                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_Directory_Func)( TT_Face      face,
 | 
			
		||||
                             FT_Stream    stream,
 | 
			
		||||
                             SFNT_Header  sfnt );
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_Any_Func                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Load any font table into client memory.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face   :: The face object to look for.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    tag    :: The tag of table to load.  Use the value 0 if you want   */
 | 
			
		||||
  /*              to access the whole font file, else set this parameter   */
 | 
			
		||||
  /*              to a valid TrueType table tag that you can forge with    */
 | 
			
		||||
  /*              the MAKE_TT_TAG macro.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    offset :: The starting offset in the table (or the file if         */
 | 
			
		||||
  /*              tag == 0).                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    length :: The address of the decision variable:                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                If length == NULL:                                     */
 | 
			
		||||
  /*                  Loads the whole table.  Returns an error if          */
 | 
			
		||||
  /*                  `offset' == 0!                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                If *length == 0:                                       */
 | 
			
		||||
  /*                  Exits immediately; returning the length of the given */
 | 
			
		||||
  /*                  table or of the font file, depending on the value of */
 | 
			
		||||
  /*                  `tag'.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                If *length != 0:                                       */
 | 
			
		||||
  /*                  Loads the next `length' bytes of table or font,      */
 | 
			
		||||
  /*                  starting at offset `offset' (in table or font too).  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    buffer :: The address of target buffer.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    TrueType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_Any_Func)( TT_Face    face,
 | 
			
		||||
                       FT_ULong   tag,
 | 
			
		||||
                       FT_Long    offset,
 | 
			
		||||
                       FT_Byte   *buffer,
 | 
			
		||||
                       FT_ULong*  length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Find_SBit_Image_Func                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Check whether an embedded bitmap (an `sbit') exists for a given    */
 | 
			
		||||
  /*    glyph, at a given strike.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face          :: The target face object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_index   :: The glyph index.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    strike_index  :: The current strike index.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    arange        :: The SBit range containing the glyph index.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    astrike       :: The SBit strike containing the glyph index.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    aglyph_offset :: The offset of the glyph data in `EBDT' table.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.  Returns                    */
 | 
			
		||||
  /*    SFNT_Err_Invalid_Argument if no sbit exists for the requested      */
 | 
			
		||||
  /*    glyph.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Find_SBit_Image_Func)( TT_Face          face,
 | 
			
		||||
                              FT_UInt          glyph_index,
 | 
			
		||||
                              FT_ULong         strike_index,
 | 
			
		||||
                              TT_SBit_Range   *arange,
 | 
			
		||||
                              TT_SBit_Strike  *astrike,
 | 
			
		||||
                              FT_ULong        *aglyph_offset );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_SBit_Metrics_Func                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Get the big metrics for a given embedded bitmap.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    stream      :: The input stream.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    range       :: The SBit range containing the glyph.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    big_metrics :: A big SBit metrics structure for the glyph.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The stream cursor must be positioned at the glyph's offset within  */
 | 
			
		||||
  /*    the `EBDT' table before the call.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    If the image format uses variable metrics, the stream cursor is    */
 | 
			
		||||
  /*    positioned just after the metrics header in the `EBDT' table on    */
 | 
			
		||||
  /*    function exit.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_SBit_Metrics_Func)( FT_Stream        stream,
 | 
			
		||||
                                TT_SBit_Range    range,
 | 
			
		||||
                                TT_SBit_Metrics  metrics );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_SBit_Image_Func                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Load a given glyph sbit image from the font resource.  This also   */
 | 
			
		||||
  /*    returns its metrics.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face ::                                                            */
 | 
			
		||||
  /*      The target face object.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    strike_index ::                                                    */
 | 
			
		||||
  /*      The strike index.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_index ::                                                     */
 | 
			
		||||
  /*      The current glyph index.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    load_flags ::                                                      */
 | 
			
		||||
  /*      The current load flags.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream ::                                                          */
 | 
			
		||||
  /*      The input stream.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    amap ::                                                            */
 | 
			
		||||
  /*      The target pixmap.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    ametrics ::                                                        */
 | 
			
		||||
  /*      A big sbit metrics structure for the glyph image.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.  Returns an error if no     */
 | 
			
		||||
  /*    glyph sbit exists for the index.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  <Note>                                                               */
 | 
			
		||||
  /*    The `map.buffer' field is always freed before the glyph is loaded. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_SBit_Image_Func)( TT_Face              face,
 | 
			
		||||
                              FT_ULong             strike_index,
 | 
			
		||||
                              FT_UInt              glyph_index,
 | 
			
		||||
                              FT_UInt              load_flags,
 | 
			
		||||
                              FT_Stream            stream,
 | 
			
		||||
                              FT_Bitmap           *amap,
 | 
			
		||||
                              TT_SBit_MetricsRec  *ametrics );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Set_SBit_Strike_OldFunc                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Select an sbit strike for a given size request.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face          :: The target face object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    req           :: The size request.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    astrike_index :: The index of the sbit strike.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.  Returns an error if no     */
 | 
			
		||||
  /*    sbit strike exists for the selected ppem values.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Set_SBit_Strike_OldFunc)( TT_Face    face,
 | 
			
		||||
                                 FT_UInt    x_ppem,
 | 
			
		||||
                                 FT_UInt    y_ppem,
 | 
			
		||||
                                 FT_ULong*  astrike_index );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_CharMap_Load_Func                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Loads a given TrueType character map into memory.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face   :: A handle to the parent face object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream :: A handle to the current stream object.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    cmap   :: A pointer to a cmap object.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The function assumes that the stream is already in use (i.e.,      */
 | 
			
		||||
  /*    opened).  In case of error, all partially allocated tables are     */
 | 
			
		||||
  /*    released.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_CharMap_Load_Func)( TT_Face    face,
 | 
			
		||||
                           void*      cmap,
 | 
			
		||||
                           FT_Stream  input );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_CharMap_Free_Func                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroys a character mapping table.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to the parent face object.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    cmap :: A handle to a cmap object.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_CharMap_Free_Func)( TT_Face       face,
 | 
			
		||||
                           void*         cmap );
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Set_SBit_Strike_Func                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Select an sbit strike for a given size request.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face          :: The target face object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    req           :: The size request.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    astrike_index :: The index of the sbit strike.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.  Returns an error if no     */
 | 
			
		||||
  /*    sbit strike exists for the selected ppem values.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Set_SBit_Strike_Func)( TT_Face          face,
 | 
			
		||||
                              FT_Size_Request  req,
 | 
			
		||||
                              FT_ULong*        astrike_index );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_Strike_Metrics_Func                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Load the metrics of a given strike.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face          :: The target face object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    strike_index  :: The strike index.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    metrics       :: the metrics of the strike.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.  Returns an error if no     */
 | 
			
		||||
  /*    such sbit strike exists.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_Strike_Metrics_Func)( TT_Face           face,
 | 
			
		||||
                                  FT_ULong          strike_index,
 | 
			
		||||
                                  FT_Size_Metrics*  metrics );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Get_PS_Name_Func                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Get the PostScript glyph name of a glyph.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    idx  :: The glyph index.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    PSname :: The address of a string pointer.  Will be NULL in case   */
 | 
			
		||||
  /*              of error, otherwise it is a pointer to the glyph name.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*              You must not modify the returned string!                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Get_PS_Name_Func)( TT_Face      face,
 | 
			
		||||
                          FT_UInt      idx,
 | 
			
		||||
                          FT_String**  PSname );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_Metrics_Func                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Load a metrics table, which is a table with a horizontal and a     */
 | 
			
		||||
  /*    vertical version.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face     :: A handle to the target face object.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream   :: The input stream.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    vertical :: A boolean flag.  If set, load the vertical one.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_Metrics_Func)( TT_Face    face,
 | 
			
		||||
                           FT_Stream  stream,
 | 
			
		||||
                           FT_Bool    vertical );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Get_Metrics_Func                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Load the horizontal or vertical header in a face object.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face     :: A handle to the target face object.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream   :: The input stream.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    vertical :: A boolean flag.  If set, load vertical metrics.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Get_Metrics_Func)( TT_Face     face,
 | 
			
		||||
                          FT_Bool     vertical,
 | 
			
		||||
                          FT_UInt     gindex,
 | 
			
		||||
                          FT_Short*   abearing,
 | 
			
		||||
                          FT_UShort*  aadvance );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Load_Table_Func                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Load a given TrueType table.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face   :: A handle to the target face object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    stream :: The input stream.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The function uses `face->goto_table' to seek the stream to the     */
 | 
			
		||||
  /*    start of the table, except while loading the font directory.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*TT_Load_Table_Func)( TT_Face    face,
 | 
			
		||||
                         FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    TT_Free_Table_Func                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Free a given TrueType table.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to the target face object.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*TT_Free_Table_Func)( TT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *    TT_Face_GetKerningFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Return the horizontal kerning value between two glyphs.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face        :: A handle to the source face object.
 | 
			
		||||
   *    left_glyph  :: The left glyph index.
 | 
			
		||||
   *    right_glyph :: The right glyph index.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    The kerning value in font units.
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Int
 | 
			
		||||
  (*TT_Face_GetKerningFunc)( TT_Face  face,
 | 
			
		||||
                             FT_UInt  left_glyph,
 | 
			
		||||
                             FT_UInt  right_glyph );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    SFNT_Interface                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This structure holds pointers to the functions used to load and    */
 | 
			
		||||
  /*    free the basic tables that are required in a `sfnt' font file.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    Check the various xxx_Func() descriptions for details.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  SFNT_Interface_
 | 
			
		||||
  {
 | 
			
		||||
    TT_Loader_GotoTableFunc      goto_table;
 | 
			
		||||
 | 
			
		||||
    TT_Init_Face_Func            init_face;
 | 
			
		||||
    TT_Load_Face_Func            load_face;
 | 
			
		||||
    TT_Done_Face_Func            done_face;
 | 
			
		||||
    FT_Module_Requester          get_interface;
 | 
			
		||||
 | 
			
		||||
    TT_Load_Any_Func             load_any;
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
    TT_Load_SFNT_HeaderRec_Func  load_sfnt_header;
 | 
			
		||||
    TT_Load_Directory_Func       load_directory;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    /* these functions are called by `load_face' but they can also  */
 | 
			
		||||
    /* be called from external modules, if there is a need to do so */
 | 
			
		||||
    TT_Load_Table_Func           load_head;
 | 
			
		||||
    TT_Load_Metrics_Func         load_hhea;
 | 
			
		||||
    TT_Load_Table_Func           load_cmap;
 | 
			
		||||
    TT_Load_Table_Func           load_maxp;
 | 
			
		||||
    TT_Load_Table_Func           load_os2;
 | 
			
		||||
    TT_Load_Table_Func           load_post;
 | 
			
		||||
 | 
			
		||||
    TT_Load_Table_Func           load_name;
 | 
			
		||||
    TT_Free_Table_Func           free_name;
 | 
			
		||||
 | 
			
		||||
    /* optional tables */
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
    TT_Load_Table_Func           load_hdmx_stub;
 | 
			
		||||
    TT_Free_Table_Func           free_hdmx_stub;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    /* this field was called `load_kerning' up to version 2.1.10 */
 | 
			
		||||
    TT_Load_Table_Func           load_kern;
 | 
			
		||||
 | 
			
		||||
    TT_Load_Table_Func           load_gasp;
 | 
			
		||||
    TT_Load_Table_Func           load_pclt;
 | 
			
		||||
 | 
			
		||||
    /* see `ttload.h'; this field was called `load_bitmap_header' up to */
 | 
			
		||||
    /* version 2.1.10                                                   */
 | 
			
		||||
    TT_Load_Table_Func           load_bhed;
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
 | 
			
		||||
    /* see `ttsbit.h' */
 | 
			
		||||
    TT_Set_SBit_Strike_OldFunc   set_sbit_strike_stub;
 | 
			
		||||
    TT_Load_Table_Func           load_sbits_stub;
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     *  The following two fields appeared in version 2.1.8, and were placed
 | 
			
		||||
     *  between `load_sbits' and `load_sbit_image'.  We support them as a
 | 
			
		||||
     *  special exception since they are used by Xfont library within the
 | 
			
		||||
     *  X.Org xserver, and because the probability that other rogue clients
 | 
			
		||||
     *  use the other version 2.1.7 fields below is _extremely_ low.
 | 
			
		||||
     *
 | 
			
		||||
     *  Note that this forces us to disable an interesting memory-saving
 | 
			
		||||
     *  optimization though...
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    TT_Find_SBit_Image_Func      find_sbit_image;
 | 
			
		||||
    TT_Load_SBit_Metrics_Func    load_sbit_metrics;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    TT_Load_SBit_Image_Func      load_sbit_image;
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
    TT_Free_Table_Func           free_sbits_stub;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    /* see `ttpost.h' */
 | 
			
		||||
    TT_Get_PS_Name_Func          get_psname;
 | 
			
		||||
    TT_Free_Table_Func           free_psnames;
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
    TT_CharMap_Load_Func         load_charmap_stub;
 | 
			
		||||
    TT_CharMap_Free_Func         free_charmap_stub;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    /* starting here, the structure differs from version 2.1.7 */
 | 
			
		||||
 | 
			
		||||
    /* this field was introduced in version 2.1.8, named `get_psname' */
 | 
			
		||||
    TT_Face_GetKerningFunc       get_kerning;
 | 
			
		||||
 | 
			
		||||
    /* new elements introduced after version 2.1.10 */
 | 
			
		||||
 | 
			
		||||
    /* load the font directory, i.e., the offset table and */
 | 
			
		||||
    /* the table directory                                 */
 | 
			
		||||
    TT_Load_Table_Func           load_font_dir;
 | 
			
		||||
    TT_Load_Metrics_Func         load_hmtx;
 | 
			
		||||
 | 
			
		||||
    TT_Load_Table_Func           load_eblc;
 | 
			
		||||
    TT_Free_Table_Func           free_eblc;
 | 
			
		||||
 | 
			
		||||
    TT_Set_SBit_Strike_Func      set_sbit_strike;
 | 
			
		||||
    TT_Load_Strike_Metrics_Func  load_strike_metrics;
 | 
			
		||||
 | 
			
		||||
    TT_Get_Metrics_Func          get_metrics;
 | 
			
		||||
 | 
			
		||||
  } SFNT_Interface;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* transitional */
 | 
			
		||||
  typedef SFNT_Interface*   SFNT_Service;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __SFNT_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										252
									
								
								include/freetype/internal/t1types.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										252
									
								
								include/freetype/internal/t1types.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,252 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  t1types.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Basic Type1/Type2 type definitions and interface (specification      */
 | 
			
		||||
/*    only).                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2006 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 __T1TYPES_H__
 | 
			
		||||
#define __T1TYPES_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_TYPE1_TABLES_H
 | 
			
		||||
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
 | 
			
		||||
#include FT_INTERNAL_SERVICE_H
 | 
			
		||||
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***              REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS              ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    T1_EncodingRec                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure modeling a custom encoding.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    num_chars  :: The number of character codes in the encoding.       */
 | 
			
		||||
  /*                  Usually 256.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    code_first :: The lowest valid character code in the encoding.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    code_last  :: The highest valid character code in the encoding.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    char_index :: An array of corresponding glyph indices.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    char_name  :: An array of corresponding glyph names.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  T1_EncodingRecRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Int       num_chars;
 | 
			
		||||
    FT_Int       code_first;
 | 
			
		||||
    FT_Int       code_last;
 | 
			
		||||
 | 
			
		||||
    FT_UShort*   char_index;
 | 
			
		||||
    FT_String**  char_name;
 | 
			
		||||
 | 
			
		||||
  } T1_EncodingRec, *T1_Encoding;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef enum  T1_EncodingType_
 | 
			
		||||
  {
 | 
			
		||||
    T1_ENCODING_TYPE_NONE = 0,
 | 
			
		||||
    T1_ENCODING_TYPE_ARRAY,
 | 
			
		||||
    T1_ENCODING_TYPE_STANDARD,
 | 
			
		||||
    T1_ENCODING_TYPE_ISOLATIN1,
 | 
			
		||||
    T1_ENCODING_TYPE_EXPERT
 | 
			
		||||
 | 
			
		||||
  } T1_EncodingType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  T1_FontRec_
 | 
			
		||||
  {
 | 
			
		||||
    PS_FontInfoRec   font_info;         /* font info dictionary */
 | 
			
		||||
    PS_PrivateRec    private_dict;      /* private dictionary   */
 | 
			
		||||
    FT_String*       font_name;         /* top-level dictionary */
 | 
			
		||||
 | 
			
		||||
    T1_EncodingType  encoding_type;
 | 
			
		||||
    T1_EncodingRec   encoding;
 | 
			
		||||
 | 
			
		||||
    FT_Byte*         subrs_block;
 | 
			
		||||
    FT_Byte*         charstrings_block;
 | 
			
		||||
    FT_Byte*         glyph_names_block;
 | 
			
		||||
 | 
			
		||||
    FT_Int           num_subrs;
 | 
			
		||||
    FT_Byte**        subrs;
 | 
			
		||||
    FT_PtrDist*      subrs_len;
 | 
			
		||||
 | 
			
		||||
    FT_Int           num_glyphs;
 | 
			
		||||
    FT_String**      glyph_names;       /* array of glyph names       */
 | 
			
		||||
    FT_Byte**        charstrings;       /* array of glyph charstrings */
 | 
			
		||||
    FT_PtrDist*      charstrings_len;
 | 
			
		||||
 | 
			
		||||
    FT_Byte          paint_type;
 | 
			
		||||
    FT_Byte          font_type;
 | 
			
		||||
    FT_Matrix        font_matrix;
 | 
			
		||||
    FT_Vector        font_offset;
 | 
			
		||||
    FT_BBox          font_bbox;
 | 
			
		||||
    FT_Long          font_id;
 | 
			
		||||
 | 
			
		||||
    FT_Fixed         stroke_width;
 | 
			
		||||
 | 
			
		||||
  } T1_FontRec, *T1_Font;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  CID_SubrsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt    num_subrs;
 | 
			
		||||
    FT_Byte**  code;
 | 
			
		||||
 | 
			
		||||
  } CID_SubrsRec, *CID_Subrs;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***                AFM FONT INFORMATION STRUCTURES                    ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  typedef struct  AFM_TrackKernRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Int    degree;
 | 
			
		||||
    FT_Fixed  min_ptsize;
 | 
			
		||||
    FT_Fixed  min_kern;
 | 
			
		||||
    FT_Fixed  max_ptsize;
 | 
			
		||||
    FT_Fixed  max_kern;
 | 
			
		||||
 | 
			
		||||
  } AFM_TrackKernRec, *AFM_TrackKern;
 | 
			
		||||
 | 
			
		||||
  typedef struct  AFM_KernPairRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Int  index1;
 | 
			
		||||
    FT_Int  index2;
 | 
			
		||||
    FT_Int  x;
 | 
			
		||||
    FT_Int  y;
 | 
			
		||||
 | 
			
		||||
  } AFM_KernPairRec, *AFM_KernPair;
 | 
			
		||||
 | 
			
		||||
  typedef struct  AFM_FontInfoRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Bool        IsCIDFont;
 | 
			
		||||
    FT_BBox        FontBBox;
 | 
			
		||||
    FT_Fixed       Ascender;
 | 
			
		||||
    FT_Fixed       Descender;
 | 
			
		||||
    AFM_TrackKern  TrackKerns;   /* free if non-NULL */
 | 
			
		||||
    FT_Int         NumTrackKern;
 | 
			
		||||
    AFM_KernPair   KernPairs;    /* free if non-NULL */
 | 
			
		||||
    FT_Int         NumKernPair;
 | 
			
		||||
 | 
			
		||||
  } AFM_FontInfoRec, *AFM_FontInfo;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***                ORIGINAL T1_FACE CLASS DEFINITION                  ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /***                                                                   ***/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct T1_FaceRec_*   T1_Face;
 | 
			
		||||
  typedef struct CID_FaceRec_*  CID_Face;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  T1_FaceRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_FaceRec      root;
 | 
			
		||||
    T1_FontRec      type1;
 | 
			
		||||
    const void*     psnames;
 | 
			
		||||
    const void*     psaux;
 | 
			
		||||
    const void*     afm_data;
 | 
			
		||||
    FT_CharMapRec   charmaprecs[2];
 | 
			
		||||
    FT_CharMap      charmaps[2];
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 | 
			
		||||
    PS_Unicodes     unicode_map;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    /* support for Multiple Masters fonts */
 | 
			
		||||
    PS_Blend        blend;
 | 
			
		||||
 | 
			
		||||
    /* undocumented, optional: indices of subroutines that express      */
 | 
			
		||||
    /* the NormalizeDesignVector and the ConvertDesignVector procedure, */
 | 
			
		||||
    /* respectively, as Type 2 charstrings; -1 if keywords not present  */
 | 
			
		||||
    FT_Int           ndv_idx;
 | 
			
		||||
    FT_Int           cdv_idx;
 | 
			
		||||
 | 
			
		||||
    /* undocumented, optional: has the same meaning as len_buildchar */
 | 
			
		||||
    /* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25    */
 | 
			
		||||
    FT_UInt          len_buildchar;
 | 
			
		||||
    FT_Int*          buildchar;
 | 
			
		||||
 | 
			
		||||
    /* since version 2.1 - interface to PostScript hinter */
 | 
			
		||||
    const void*     pshinter;
 | 
			
		||||
 | 
			
		||||
  } T1_FaceRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  CID_FaceRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_FaceRec       root;
 | 
			
		||||
    void*            psnames;
 | 
			
		||||
    void*            psaux;
 | 
			
		||||
    CID_FaceInfoRec  cid;
 | 
			
		||||
    void*            afm_data;
 | 
			
		||||
    CID_Subrs        subrs;
 | 
			
		||||
 | 
			
		||||
    /* since version 2.1 - interface to PostScript hinter */
 | 
			
		||||
    void*            pshinter;
 | 
			
		||||
 | 
			
		||||
    /* since version 2.1.8, but was originally positioned after `afm_data' */
 | 
			
		||||
    FT_Byte*         binary_data; /* used if hex data has been converted */
 | 
			
		||||
    FT_Stream        cid_stream;
 | 
			
		||||
 | 
			
		||||
  } CID_FaceRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __T1TYPES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										1543
									
								
								include/freetype/internal/tttypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1543
									
								
								include/freetype/internal/tttypes.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										504
									
								
								include/freetype/t1tables.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										504
									
								
								include/freetype/t1tables.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,504 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  t1tables.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Basic Type 1/Type 2 tables definitions and interface (specification  */
 | 
			
		||||
/*    only).                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 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 __T1TABLES_H__
 | 
			
		||||
#define __T1TABLES_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>                                                             */
 | 
			
		||||
  /*    type1_tables                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Type 1 Tables                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Type 1 (PostScript) specific font tables.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the definition of Type 1-specific tables,    */
 | 
			
		||||
  /*    including structures related to other PostScript font formats.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */
 | 
			
		||||
  /* structures in order to support Multiple Master fonts.               */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_FontInfoRec                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a Type1/Type2 FontInfo dictionary.  Note */
 | 
			
		||||
  /*    that for Multiple Master fonts, each instance has its own          */
 | 
			
		||||
  /*    FontInfo dictionary.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  PS_FontInfoRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_String*  version;
 | 
			
		||||
    FT_String*  notice;
 | 
			
		||||
    FT_String*  full_name;
 | 
			
		||||
    FT_String*  family_name;
 | 
			
		||||
    FT_String*  weight;
 | 
			
		||||
    FT_Long     italic_angle;
 | 
			
		||||
    FT_Bool     is_fixed_pitch;
 | 
			
		||||
    FT_Short    underline_position;
 | 
			
		||||
    FT_UShort   underline_thickness;
 | 
			
		||||
 | 
			
		||||
  } PS_FontInfoRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_FontInfo                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a @PS_FontInfoRec structure.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct PS_FontInfoRec_*  PS_FontInfo;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    T1_FontInfo                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This type is equivalent to @PS_FontInfoRec.  It is deprecated but  */
 | 
			
		||||
  /*    kept to maintain source compatibility between various versions of  */
 | 
			
		||||
  /*    FreeType.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef PS_FontInfoRec  T1_FontInfo;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_PrivateRec                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a Type1/Type2 private dictionary.  Note  */
 | 
			
		||||
  /*    that for Multiple Master fonts, each instance has its own Private  */
 | 
			
		||||
  /*    dictionary.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  PS_PrivateRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Int     unique_id;
 | 
			
		||||
    FT_Int     lenIV;
 | 
			
		||||
 | 
			
		||||
    FT_Byte    num_blue_values;
 | 
			
		||||
    FT_Byte    num_other_blues;
 | 
			
		||||
    FT_Byte    num_family_blues;
 | 
			
		||||
    FT_Byte    num_family_other_blues;
 | 
			
		||||
 | 
			
		||||
    FT_Short   blue_values[14];
 | 
			
		||||
    FT_Short   other_blues[10];
 | 
			
		||||
 | 
			
		||||
    FT_Short   family_blues      [14];
 | 
			
		||||
    FT_Short   family_other_blues[10];
 | 
			
		||||
 | 
			
		||||
    FT_Fixed   blue_scale;
 | 
			
		||||
    FT_Int     blue_shift;
 | 
			
		||||
    FT_Int     blue_fuzz;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  standard_width[1];
 | 
			
		||||
    FT_UShort  standard_height[1];
 | 
			
		||||
 | 
			
		||||
    FT_Byte    num_snap_widths;
 | 
			
		||||
    FT_Byte    num_snap_heights;
 | 
			
		||||
    FT_Bool    force_bold;
 | 
			
		||||
    FT_Bool    round_stem_up;
 | 
			
		||||
 | 
			
		||||
    FT_Short   snap_widths [13];  /* including std width  */
 | 
			
		||||
    FT_Short   snap_heights[13];  /* including std height */
 | 
			
		||||
 | 
			
		||||
    FT_Fixed   expansion_factor;
 | 
			
		||||
 | 
			
		||||
    FT_Long    language_group;
 | 
			
		||||
    FT_Long    password;
 | 
			
		||||
 | 
			
		||||
    FT_Short   min_feature[2];
 | 
			
		||||
 | 
			
		||||
  } PS_PrivateRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_Private                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a @PS_PrivateRec structure.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct PS_PrivateRec_*  PS_Private;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    T1_Private                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   This type is equivalent to @PS_PrivateRec.  It is deprecated but    */
 | 
			
		||||
  /*   kept to maintain source compatibility between various versions of   */
 | 
			
		||||
  /*   FreeType.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef PS_PrivateRec  T1_Private;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    T1_Blend_Flags                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A set of flags used to indicate which fields are present in a      */
 | 
			
		||||
  /*    given blend dictionary (font info or private).  Used to support    */
 | 
			
		||||
  /*    Multiple Masters fonts.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  T1_Blend_Flags_
 | 
			
		||||
  {
 | 
			
		||||
    /*# required fields in a FontInfo blend dictionary */
 | 
			
		||||
    T1_BLEND_UNDERLINE_POSITION = 0,
 | 
			
		||||
    T1_BLEND_UNDERLINE_THICKNESS,
 | 
			
		||||
    T1_BLEND_ITALIC_ANGLE,
 | 
			
		||||
 | 
			
		||||
    /*# required fields in a Private blend dictionary */
 | 
			
		||||
    T1_BLEND_BLUE_VALUES,
 | 
			
		||||
    T1_BLEND_OTHER_BLUES,
 | 
			
		||||
    T1_BLEND_STANDARD_WIDTH,
 | 
			
		||||
    T1_BLEND_STANDARD_HEIGHT,
 | 
			
		||||
    T1_BLEND_STEM_SNAP_WIDTHS,
 | 
			
		||||
    T1_BLEND_STEM_SNAP_HEIGHTS,
 | 
			
		||||
    T1_BLEND_BLUE_SCALE,
 | 
			
		||||
    T1_BLEND_BLUE_SHIFT,
 | 
			
		||||
    T1_BLEND_FAMILY_BLUES,
 | 
			
		||||
    T1_BLEND_FAMILY_OTHER_BLUES,
 | 
			
		||||
    T1_BLEND_FORCE_BOLD,
 | 
			
		||||
 | 
			
		||||
    /*# never remove */
 | 
			
		||||
    T1_BLEND_MAX
 | 
			
		||||
 | 
			
		||||
  } T1_Blend_Flags;
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*# backwards compatible definitions */
 | 
			
		||||
#define t1_blend_underline_position   T1_BLEND_UNDERLINE_POSITION
 | 
			
		||||
#define t1_blend_underline_thickness  T1_BLEND_UNDERLINE_THICKNESS
 | 
			
		||||
#define t1_blend_italic_angle         T1_BLEND_ITALIC_ANGLE
 | 
			
		||||
#define t1_blend_blue_values          T1_BLEND_BLUE_VALUES
 | 
			
		||||
#define t1_blend_other_blues          T1_BLEND_OTHER_BLUES
 | 
			
		||||
#define t1_blend_standard_widths      T1_BLEND_STANDARD_WIDTH
 | 
			
		||||
#define t1_blend_standard_height      T1_BLEND_STANDARD_HEIGHT
 | 
			
		||||
#define t1_blend_stem_snap_widths     T1_BLEND_STEM_SNAP_WIDTHS
 | 
			
		||||
#define t1_blend_stem_snap_heights    T1_BLEND_STEM_SNAP_HEIGHTS
 | 
			
		||||
#define t1_blend_blue_scale           T1_BLEND_BLUE_SCALE
 | 
			
		||||
#define t1_blend_blue_shift           T1_BLEND_BLUE_SHIFT
 | 
			
		||||
#define t1_blend_family_blues         T1_BLEND_FAMILY_BLUES
 | 
			
		||||
#define t1_blend_family_other_blues   T1_BLEND_FAMILY_OTHER_BLUES
 | 
			
		||||
#define t1_blend_force_bold           T1_BLEND_FORCE_BOLD
 | 
			
		||||
#define t1_blend_max                  T1_BLEND_MAX
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* maximum number of Multiple Masters designs, as defined in the spec */
 | 
			
		||||
#define T1_MAX_MM_DESIGNS     16
 | 
			
		||||
 | 
			
		||||
  /* maximum number of Multiple Masters axes, as defined in the spec */
 | 
			
		||||
#define T1_MAX_MM_AXIS        4
 | 
			
		||||
 | 
			
		||||
  /* maximum number of elements in a design map */
 | 
			
		||||
#define T1_MAX_MM_MAP_POINTS  20
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* this structure is used to store the BlendDesignMap entry for an axis */
 | 
			
		||||
  typedef struct  PS_DesignMap_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Byte    num_points;
 | 
			
		||||
    FT_Long*   design_points;
 | 
			
		||||
    FT_Fixed*  blend_points;
 | 
			
		||||
 | 
			
		||||
  } PS_DesignMapRec, *PS_DesignMap;
 | 
			
		||||
 | 
			
		||||
  /* backwards-compatible definition */
 | 
			
		||||
  typedef PS_DesignMapRec  T1_DesignMap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  PS_BlendRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt          num_designs;
 | 
			
		||||
    FT_UInt          num_axis;
 | 
			
		||||
 | 
			
		||||
    FT_String*       axis_names[T1_MAX_MM_AXIS];
 | 
			
		||||
    FT_Fixed*        design_pos[T1_MAX_MM_DESIGNS];
 | 
			
		||||
    PS_DesignMapRec  design_map[T1_MAX_MM_AXIS];
 | 
			
		||||
 | 
			
		||||
    FT_Fixed*        weight_vector;
 | 
			
		||||
    FT_Fixed*        default_weight_vector;
 | 
			
		||||
 | 
			
		||||
    PS_FontInfo      font_infos[T1_MAX_MM_DESIGNS + 1];
 | 
			
		||||
    PS_Private       privates  [T1_MAX_MM_DESIGNS + 1];
 | 
			
		||||
 | 
			
		||||
    FT_ULong         blend_bitflags;
 | 
			
		||||
 | 
			
		||||
    FT_BBox*         bboxes    [T1_MAX_MM_DESIGNS + 1];
 | 
			
		||||
 | 
			
		||||
    /* since 2.3.0 */
 | 
			
		||||
 | 
			
		||||
    /* undocumented, optional: the default design instance;   */
 | 
			
		||||
    /* corresponds to default_weight_vector --                */
 | 
			
		||||
    /* num_default_design_vector == 0 means it is not present */
 | 
			
		||||
    /* in the font and associated metrics files               */
 | 
			
		||||
    FT_UInt          default_design_vector[T1_MAX_MM_DESIGNS];
 | 
			
		||||
    FT_UInt          num_default_design_vector;
 | 
			
		||||
 | 
			
		||||
  } PS_BlendRec, *PS_Blend;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* backwards-compatible definition */
 | 
			
		||||
  typedef PS_BlendRec  T1_Blend;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FaceDictRec                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to represent data in a CID top-level dictionary.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  CID_FaceDictRec_
 | 
			
		||||
  {
 | 
			
		||||
    PS_PrivateRec  private_dict;
 | 
			
		||||
 | 
			
		||||
    FT_UInt        len_buildchar;
 | 
			
		||||
    FT_Fixed       forcebold_threshold;
 | 
			
		||||
    FT_Pos         stroke_width;
 | 
			
		||||
    FT_Fixed       expansion_factor;
 | 
			
		||||
 | 
			
		||||
    FT_Byte        paint_type;
 | 
			
		||||
    FT_Byte        font_type;
 | 
			
		||||
    FT_Matrix      font_matrix;
 | 
			
		||||
    FT_Vector      font_offset;
 | 
			
		||||
 | 
			
		||||
    FT_UInt        num_subrs;
 | 
			
		||||
    FT_ULong       subrmap_offset;
 | 
			
		||||
    FT_Int         sd_bytes;
 | 
			
		||||
 | 
			
		||||
  } CID_FaceDictRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FaceDict                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a @CID_FaceDictRec structure.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct CID_FaceDictRec_*  CID_FaceDict;
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* backwards-compatible definition */
 | 
			
		||||
  typedef CID_FaceDictRec  CID_FontDict;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FaceInfoRec                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to represent CID Face information.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  CID_FaceInfoRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_String*      cid_font_name;
 | 
			
		||||
    FT_Fixed        cid_version;
 | 
			
		||||
    FT_Int          cid_font_type;
 | 
			
		||||
 | 
			
		||||
    FT_String*      registry;
 | 
			
		||||
    FT_String*      ordering;
 | 
			
		||||
    FT_Int          supplement;
 | 
			
		||||
 | 
			
		||||
    PS_FontInfoRec  font_info;
 | 
			
		||||
    FT_BBox         font_bbox;
 | 
			
		||||
    FT_ULong        uid_base;
 | 
			
		||||
 | 
			
		||||
    FT_Int          num_xuid;
 | 
			
		||||
    FT_ULong        xuid[16];
 | 
			
		||||
 | 
			
		||||
    FT_ULong        cidmap_offset;
 | 
			
		||||
    FT_Int          fd_bytes;
 | 
			
		||||
    FT_Int          gd_bytes;
 | 
			
		||||
    FT_ULong        cid_count;
 | 
			
		||||
 | 
			
		||||
    FT_Int          num_dicts;
 | 
			
		||||
    CID_FaceDict    font_dicts;
 | 
			
		||||
 | 
			
		||||
    FT_ULong        data_offset;
 | 
			
		||||
 | 
			
		||||
  } CID_FaceInfoRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FaceInfo                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a @CID_FaceInfoRec structure.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct CID_FaceInfoRec_*  CID_FaceInfo;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_Info                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   This type is equivalent to @CID_FaceInfoRec.  It is deprecated but  */
 | 
			
		||||
  /*   kept to maintain source compatibility between various versions of   */
 | 
			
		||||
  /*   FreeType.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef CID_FaceInfoRec  CID_Info;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Has_PS_Glyph_Names
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Return true if a given face provides reliable Postscript glyph
 | 
			
		||||
   *    names.  This is similar to using the @FT_HAS_GLYPH_NAMES macro,
 | 
			
		||||
   *    except that certain fonts (mostly TrueType) contain incorrect
 | 
			
		||||
   *    glyph name tables.
 | 
			
		||||
   *
 | 
			
		||||
   *    When this function returns true, the caller is sure that the glyph
 | 
			
		||||
   *    names returned by @FT_Get_Glyph_Name are reliable.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       face handle
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    Boolean.  True if glyph names are reliable.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Int )
 | 
			
		||||
  FT_Has_PS_Glyph_Names( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_PS_Font_Info
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the @PS_FontInfoRec structure corresponding to a given
 | 
			
		||||
   *    Postscript font.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       Postscript face handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    afont_info ::
 | 
			
		||||
   *       Output font info structure pointer.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    The string pointers within the font info structure are owned by
 | 
			
		||||
   *    the face and don't need to be freed by the caller.
 | 
			
		||||
   *
 | 
			
		||||
   *    If the font's format is not Postscript-based, this function will
 | 
			
		||||
   *    return the `FT_Err_Invalid_Argument' error code.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PS_Font_Info( FT_Face      face,
 | 
			
		||||
                       PS_FontInfo  afont_info );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_PS_Font_Private
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the @PS_PrivateRec structure corresponding to a given
 | 
			
		||||
   *    Postscript font.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       Postscript face handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    afont_private ::
 | 
			
		||||
   *       Output private dictionary structure pointer.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0 means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    The string pointers within the font info structure are owned by
 | 
			
		||||
   *    the face and don't need to be freed by the caller.
 | 
			
		||||
   *
 | 
			
		||||
   *    If the font's format is not Postscript-based, this function will
 | 
			
		||||
   *    return the `FT_Err_Invalid_Argument' error code.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PS_Font_Private( FT_Face     face,
 | 
			
		||||
                          PS_Private  afont_private );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __T1TABLES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										1146
									
								
								include/freetype/ttnameid.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1146
									
								
								include/freetype/ttnameid.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										756
									
								
								include/freetype/tttables.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										756
									
								
								include/freetype/tttables.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,756 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  tttables.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Basic SFNT/TrueType tables definitions and interface                 */
 | 
			
		||||
/*    (specification only).                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 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 __TTTABLES_H__
 | 
			
		||||
#define __TTTABLES_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>                                                             */
 | 
			
		||||
  /*    truetype_tables                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    TrueType Tables                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    TrueType specific table types and functions.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the definition of TrueType-specific tables   */
 | 
			
		||||
  /*    as well as some routines used to access and process them.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_Header                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType font header table.  All       */
 | 
			
		||||
  /*    fields follow the TrueType specification.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_Header_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   Table_Version;
 | 
			
		||||
    FT_Fixed   Font_Revision;
 | 
			
		||||
 | 
			
		||||
    FT_Long    CheckSum_Adjust;
 | 
			
		||||
    FT_Long    Magic_Number;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  Flags;
 | 
			
		||||
    FT_UShort  Units_Per_EM;
 | 
			
		||||
 | 
			
		||||
    FT_Long    Created [2];
 | 
			
		||||
    FT_Long    Modified[2];
 | 
			
		||||
 | 
			
		||||
    FT_Short   xMin;
 | 
			
		||||
    FT_Short   yMin;
 | 
			
		||||
    FT_Short   xMax;
 | 
			
		||||
    FT_Short   yMax;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  Mac_Style;
 | 
			
		||||
    FT_UShort  Lowest_Rec_PPEM;
 | 
			
		||||
 | 
			
		||||
    FT_Short   Font_Direction;
 | 
			
		||||
    FT_Short   Index_To_Loc_Format;
 | 
			
		||||
    FT_Short   Glyph_Data_Format;
 | 
			
		||||
 | 
			
		||||
  } TT_Header;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_HoriHeader                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType horizontal header, the `hhea' */
 | 
			
		||||
  /*    table, as well as the corresponding horizontal metrics table,      */
 | 
			
		||||
  /*    i.e., the `hmtx' table.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    Version                :: The table version.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Ascender               :: The font's ascender, i.e., the distance  */
 | 
			
		||||
  /*                              from the baseline to the top-most of all */
 | 
			
		||||
  /*                              glyph points found in the font.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                              This value is invalid in many fonts, as  */
 | 
			
		||||
  /*                              it is usually set by the font designer,  */
 | 
			
		||||
  /*                              and often reflects only a portion of the */
 | 
			
		||||
  /*                              glyphs found in the font (maybe ASCII).  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                              You should use the `sTypoAscender' field */
 | 
			
		||||
  /*                              of the OS/2 table instead if you want    */
 | 
			
		||||
  /*                              the correct one.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Descender              :: The font's descender, i.e., the distance */
 | 
			
		||||
  /*                              from the baseline to the bottom-most of  */
 | 
			
		||||
  /*                              all glyph points found in the font.  It  */
 | 
			
		||||
  /*                              is negative.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                              This value is invalid in many fonts, as  */
 | 
			
		||||
  /*                              it is usually set by the font designer,  */
 | 
			
		||||
  /*                              and often reflects only a portion of the */
 | 
			
		||||
  /*                              glyphs found in the font (maybe ASCII).  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                              You should use the `sTypoDescender'      */
 | 
			
		||||
  /*                              field of the OS/2 table instead if you   */
 | 
			
		||||
  /*                              want the correct one.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Line_Gap               :: The font's line gap, i.e., the distance  */
 | 
			
		||||
  /*                              to add to the ascender and descender to  */
 | 
			
		||||
  /*                              get the BTB, i.e., the                   */
 | 
			
		||||
  /*                              baseline-to-baseline distance for the    */
 | 
			
		||||
  /*                              font.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    advance_Width_Max      :: This field is the maximum of all advance */
 | 
			
		||||
  /*                              widths found in the font.  It can be     */
 | 
			
		||||
  /*                              used to compute the maximum width of an  */
 | 
			
		||||
  /*                              arbitrary string of text.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    min_Left_Side_Bearing  :: The minimum left side bearing of all     */
 | 
			
		||||
  /*                              glyphs within the font.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    min_Right_Side_Bearing :: The minimum right side bearing of all    */
 | 
			
		||||
  /*                              glyphs within the font.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    xMax_Extent            :: The maximum horizontal extent (i.e., the */
 | 
			
		||||
  /*                              `width' of a glyph's bounding box) for   */
 | 
			
		||||
  /*                              all glyphs in the font.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Slope_Rise       :: The rise coefficient of the cursor's     */
 | 
			
		||||
  /*                              slope of the cursor (slope=rise/run).    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Slope_Run        :: The run coefficient of the cursor's      */
 | 
			
		||||
  /*                              slope.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Reserved               :: 8 reserved bytes.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    metric_Data_Format     :: Always 0.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    number_Of_HMetrics     :: Number of HMetrics entries in the `hmtx' */
 | 
			
		||||
  /*                              table -- this value can be smaller than  */
 | 
			
		||||
  /*                              the total number of glyphs in the font.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    long_metrics           :: A pointer into the `hmtx' table.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    short_metrics          :: A pointer into the `hmtx' table.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should   */
 | 
			
		||||
  /*               be identical except for the names of their fields which */
 | 
			
		||||
  /*               are different.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*               This ensures that a single function in the `ttload'     */
 | 
			
		||||
  /*               module is able to read both the horizontal and vertical */
 | 
			
		||||
  /*               headers.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_HoriHeader_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   Version;
 | 
			
		||||
    FT_Short   Ascender;
 | 
			
		||||
    FT_Short   Descender;
 | 
			
		||||
    FT_Short   Line_Gap;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  advance_Width_Max;      /* advance width maximum */
 | 
			
		||||
 | 
			
		||||
    FT_Short   min_Left_Side_Bearing;  /* minimum left-sb       */
 | 
			
		||||
    FT_Short   min_Right_Side_Bearing; /* minimum right-sb      */
 | 
			
		||||
    FT_Short   xMax_Extent;            /* xmax extents          */
 | 
			
		||||
    FT_Short   caret_Slope_Rise;
 | 
			
		||||
    FT_Short   caret_Slope_Run;
 | 
			
		||||
    FT_Short   caret_Offset;
 | 
			
		||||
 | 
			
		||||
    FT_Short   Reserved[4];
 | 
			
		||||
 | 
			
		||||
    FT_Short   metric_Data_Format;
 | 
			
		||||
    FT_UShort  number_Of_HMetrics;
 | 
			
		||||
 | 
			
		||||
    /* The following fields are not defined by the TrueType specification */
 | 
			
		||||
    /* but they are used to connect the metrics header to the relevant    */
 | 
			
		||||
    /* `HMTX' table.                                                      */
 | 
			
		||||
 | 
			
		||||
    void*      long_metrics;
 | 
			
		||||
    void*      short_metrics;
 | 
			
		||||
 | 
			
		||||
  } TT_HoriHeader;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_VertHeader                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType vertical header, the `vhea'   */
 | 
			
		||||
  /*    table, as well as the corresponding vertical metrics table, i.e.,  */
 | 
			
		||||
  /*    the `vmtx' table.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    Version                 :: The table version.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Ascender                :: The font's ascender, i.e., the distance */
 | 
			
		||||
  /*                               from the baseline to the top-most of    */
 | 
			
		||||
  /*                               all glyph points found in the font.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                               This value is invalid in many fonts, as */
 | 
			
		||||
  /*                               it is usually set by the font designer, */
 | 
			
		||||
  /*                               and often reflects only a portion of    */
 | 
			
		||||
  /*                               the glyphs found in the font (maybe     */
 | 
			
		||||
  /*                               ASCII).                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                               You should use the `sTypoAscender'      */
 | 
			
		||||
  /*                               field of the OS/2 table instead if you  */
 | 
			
		||||
  /*                               want the correct one.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Descender               :: The font's descender, i.e., the         */
 | 
			
		||||
  /*                               distance from the baseline to the       */
 | 
			
		||||
  /*                               bottom-most of all glyph points found   */
 | 
			
		||||
  /*                               in the font.  It is negative.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                               This value is invalid in many fonts, as */
 | 
			
		||||
  /*                               it is usually set by the font designer, */
 | 
			
		||||
  /*                               and often reflects only a portion of    */
 | 
			
		||||
  /*                               the glyphs found in the font (maybe     */
 | 
			
		||||
  /*                               ASCII).                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                               You should use the `sTypoDescender'     */
 | 
			
		||||
  /*                               field of the OS/2 table instead if you  */
 | 
			
		||||
  /*                               want the correct one.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Line_Gap                :: The font's line gap, i.e., the distance */
 | 
			
		||||
  /*                               to add to the ascender and descender to */
 | 
			
		||||
  /*                               get the BTB, i.e., the                  */
 | 
			
		||||
  /*                               baseline-to-baseline distance for the   */
 | 
			
		||||
  /*                               font.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    advance_Height_Max      :: This field is the maximum of all        */
 | 
			
		||||
  /*                               advance heights found in the font.  It  */
 | 
			
		||||
  /*                               can be used to compute the maximum      */
 | 
			
		||||
  /*                               height of an arbitrary string of text.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    min_Top_Side_Bearing    :: The minimum top side bearing of all     */
 | 
			
		||||
  /*                               glyphs within the font.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    min_Bottom_Side_Bearing :: The minimum bottom side bearing of all  */
 | 
			
		||||
  /*                               glyphs within the font.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yMax_Extent             :: The maximum vertical extent (i.e., the  */
 | 
			
		||||
  /*                               `height' of a glyph's bounding box) for */
 | 
			
		||||
  /*                               all glyphs in the font.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Slope_Rise        :: The rise coefficient of the cursor's    */
 | 
			
		||||
  /*                               slope of the cursor (slope=rise/run).   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Slope_Run         :: The run coefficient of the cursor's     */
 | 
			
		||||
  /*                               slope.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Offset            :: The cursor's offset for slanted fonts.  */
 | 
			
		||||
  /*                               This value is `reserved' in vmtx        */
 | 
			
		||||
  /*                               version 1.0.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Reserved                :: 8 reserved bytes.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    metric_Data_Format      :: Always 0.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    number_Of_HMetrics      :: Number of VMetrics entries in the       */
 | 
			
		||||
  /*                               `vmtx' table -- this value can be       */
 | 
			
		||||
  /*                               smaller than the total number of glyphs */
 | 
			
		||||
  /*                               in the font.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    long_metrics           :: A pointer into the `vmtx' table.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    short_metrics          :: A pointer into the `vmtx' table.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should   */
 | 
			
		||||
  /*               be identical except for the names of their fields which */
 | 
			
		||||
  /*               are different.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*               This ensures that a single function in the `ttload'     */
 | 
			
		||||
  /*               module is able to read both the horizontal and vertical */
 | 
			
		||||
  /*               headers.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_VertHeader_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   Version;
 | 
			
		||||
    FT_Short   Ascender;
 | 
			
		||||
    FT_Short   Descender;
 | 
			
		||||
    FT_Short   Line_Gap;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  advance_Height_Max;      /* advance height maximum */
 | 
			
		||||
 | 
			
		||||
    FT_Short   min_Top_Side_Bearing;    /* minimum left-sb or top-sb       */
 | 
			
		||||
    FT_Short   min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb   */
 | 
			
		||||
    FT_Short   yMax_Extent;             /* xmax or ymax extents            */
 | 
			
		||||
    FT_Short   caret_Slope_Rise;
 | 
			
		||||
    FT_Short   caret_Slope_Run;
 | 
			
		||||
    FT_Short   caret_Offset;
 | 
			
		||||
 | 
			
		||||
    FT_Short   Reserved[4];
 | 
			
		||||
 | 
			
		||||
    FT_Short   metric_Data_Format;
 | 
			
		||||
    FT_UShort  number_Of_VMetrics;
 | 
			
		||||
 | 
			
		||||
    /* The following fields are not defined by the TrueType specification */
 | 
			
		||||
    /* but they're used to connect the metrics header to the relevant     */
 | 
			
		||||
    /* `HMTX' or `VMTX' table.                                            */
 | 
			
		||||
 | 
			
		||||
    void*      long_metrics;
 | 
			
		||||
    void*      short_metrics;
 | 
			
		||||
 | 
			
		||||
  } TT_VertHeader;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_OS2                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType OS/2 table. This is the long  */
 | 
			
		||||
  /*    table version.  All fields comply to the TrueType specification.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that we now support old Mac fonts which do not include an     */
 | 
			
		||||
  /*    OS/2 table.  In this case, the `version' field is always set to    */
 | 
			
		||||
  /*    0xFFFF.                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_OS2_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UShort  version;                /* 0x0001 - more or 0xFFFF */
 | 
			
		||||
    FT_Short   xAvgCharWidth;
 | 
			
		||||
    FT_UShort  usWeightClass;
 | 
			
		||||
    FT_UShort  usWidthClass;
 | 
			
		||||
    FT_Short   fsType;
 | 
			
		||||
    FT_Short   ySubscriptXSize;
 | 
			
		||||
    FT_Short   ySubscriptYSize;
 | 
			
		||||
    FT_Short   ySubscriptXOffset;
 | 
			
		||||
    FT_Short   ySubscriptYOffset;
 | 
			
		||||
    FT_Short   ySuperscriptXSize;
 | 
			
		||||
    FT_Short   ySuperscriptYSize;
 | 
			
		||||
    FT_Short   ySuperscriptXOffset;
 | 
			
		||||
    FT_Short   ySuperscriptYOffset;
 | 
			
		||||
    FT_Short   yStrikeoutSize;
 | 
			
		||||
    FT_Short   yStrikeoutPosition;
 | 
			
		||||
    FT_Short   sFamilyClass;
 | 
			
		||||
 | 
			
		||||
    FT_Byte    panose[10];
 | 
			
		||||
 | 
			
		||||
    FT_ULong   ulUnicodeRange1;        /* Bits 0-31   */
 | 
			
		||||
    FT_ULong   ulUnicodeRange2;        /* Bits 32-63  */
 | 
			
		||||
    FT_ULong   ulUnicodeRange3;        /* Bits 64-95  */
 | 
			
		||||
    FT_ULong   ulUnicodeRange4;        /* Bits 96-127 */
 | 
			
		||||
 | 
			
		||||
    FT_Char    achVendID[4];
 | 
			
		||||
 | 
			
		||||
    FT_UShort  fsSelection;
 | 
			
		||||
    FT_UShort  usFirstCharIndex;
 | 
			
		||||
    FT_UShort  usLastCharIndex;
 | 
			
		||||
    FT_Short   sTypoAscender;
 | 
			
		||||
    FT_Short   sTypoDescender;
 | 
			
		||||
    FT_Short   sTypoLineGap;
 | 
			
		||||
    FT_UShort  usWinAscent;
 | 
			
		||||
    FT_UShort  usWinDescent;
 | 
			
		||||
 | 
			
		||||
    /* only version 1 tables: */
 | 
			
		||||
 | 
			
		||||
    FT_ULong   ulCodePageRange1;       /* Bits 0-31   */
 | 
			
		||||
    FT_ULong   ulCodePageRange2;       /* Bits 32-63  */
 | 
			
		||||
 | 
			
		||||
    /* only version 2 tables: */
 | 
			
		||||
 | 
			
		||||
    FT_Short   sxHeight;
 | 
			
		||||
    FT_Short   sCapHeight;
 | 
			
		||||
    FT_UShort  usDefaultChar;
 | 
			
		||||
    FT_UShort  usBreakChar;
 | 
			
		||||
    FT_UShort  usMaxContext;
 | 
			
		||||
 | 
			
		||||
  } TT_OS2;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_Postscript                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType Postscript table.  All fields */
 | 
			
		||||
  /*    comply to the TrueType specification.  This structure does not     */
 | 
			
		||||
  /*    reference the Postscript glyph names, which can be nevertheless    */
 | 
			
		||||
  /*    accessed with the `ttpost' module.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_Postscript_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed  FormatType;
 | 
			
		||||
    FT_Fixed  italicAngle;
 | 
			
		||||
    FT_Short  underlinePosition;
 | 
			
		||||
    FT_Short  underlineThickness;
 | 
			
		||||
    FT_ULong  isFixedPitch;
 | 
			
		||||
    FT_ULong  minMemType42;
 | 
			
		||||
    FT_ULong  maxMemType42;
 | 
			
		||||
    FT_ULong  minMemType1;
 | 
			
		||||
    FT_ULong  maxMemType1;
 | 
			
		||||
 | 
			
		||||
    /* Glyph names follow in the file, but we don't   */
 | 
			
		||||
    /* load them by default.  See the ttpost.c file.  */
 | 
			
		||||
 | 
			
		||||
  } TT_Postscript;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_PCLT                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType PCLT table.  All fields       */
 | 
			
		||||
  /*    comply to the TrueType specification.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_PCLT_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   Version;
 | 
			
		||||
    FT_ULong   FontNumber;
 | 
			
		||||
    FT_UShort  Pitch;
 | 
			
		||||
    FT_UShort  xHeight;
 | 
			
		||||
    FT_UShort  Style;
 | 
			
		||||
    FT_UShort  TypeFamily;
 | 
			
		||||
    FT_UShort  CapHeight;
 | 
			
		||||
    FT_UShort  SymbolSet;
 | 
			
		||||
    FT_Char    TypeFace[16];
 | 
			
		||||
    FT_Char    CharacterComplement[8];
 | 
			
		||||
    FT_Char    FileName[6];
 | 
			
		||||
    FT_Char    StrokeWeight;
 | 
			
		||||
    FT_Char    WidthType;
 | 
			
		||||
    FT_Byte    SerifStyle;
 | 
			
		||||
    FT_Byte    Reserved;
 | 
			
		||||
 | 
			
		||||
  } TT_PCLT;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_MaxProfile                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The maximum profile is a table containing many max values which    */
 | 
			
		||||
  /*    can be used to pre-allocate arrays.  This ensures that no memory   */
 | 
			
		||||
  /*    allocation occurs during a glyph load.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    version               :: The version number.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    numGlyphs             :: The number of glyphs in this TrueType     */
 | 
			
		||||
  /*                             font.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxPoints             :: The maximum number of points in a         */
 | 
			
		||||
  /*                             non-composite TrueType glyph.  See also   */
 | 
			
		||||
  /*                             the structure element                     */
 | 
			
		||||
  /*                             `maxCompositePoints'.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxContours           :: The maximum number of contours in a       */
 | 
			
		||||
  /*                             non-composite TrueType glyph.  See also   */
 | 
			
		||||
  /*                             the structure element                     */
 | 
			
		||||
  /*                             `maxCompositeContours'.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxCompositePoints    :: The maximum number of points in a         */
 | 
			
		||||
  /*                             composite TrueType glyph.  See also the   */
 | 
			
		||||
  /*                             structure element `maxPoints'.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxCompositeContours  :: The maximum number of contours in a       */
 | 
			
		||||
  /*                             composite TrueType glyph.  See also the   */
 | 
			
		||||
  /*                             structure element `maxContours'.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxZones              :: The maximum number of zones used for      */
 | 
			
		||||
  /*                             glyph hinting.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxTwilightPoints     :: The maximum number of points in the       */
 | 
			
		||||
  /*                             twilight zone used for glyph hinting.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxStorage            :: The maximum number of elements in the     */
 | 
			
		||||
  /*                             storage area used for glyph hinting.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxFunctionDefs       :: The maximum number of function            */
 | 
			
		||||
  /*                             definitions in the TrueType bytecode for  */
 | 
			
		||||
  /*                             this font.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxInstructionDefs    :: The maximum number of instruction         */
 | 
			
		||||
  /*                             definitions in the TrueType bytecode for  */
 | 
			
		||||
  /*                             this font.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxStackElements      :: The maximum number of stack elements used */
 | 
			
		||||
  /*                             during bytecode interpretation.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxSizeOfInstructions :: The maximum number of TrueType opcodes    */
 | 
			
		||||
  /*                             used for glyph hinting.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxComponentElements  :: The maximum number of simple (i.e., non-  */
 | 
			
		||||
  /*                             composite) glyphs in a composite glyph.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxComponentDepth     :: The maximum nesting depth of composite    */
 | 
			
		||||
  /*                             glyphs.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This structure is only used during font loading.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_MaxProfile_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   version;
 | 
			
		||||
    FT_UShort  numGlyphs;
 | 
			
		||||
    FT_UShort  maxPoints;
 | 
			
		||||
    FT_UShort  maxContours;
 | 
			
		||||
    FT_UShort  maxCompositePoints;
 | 
			
		||||
    FT_UShort  maxCompositeContours;
 | 
			
		||||
    FT_UShort  maxZones;
 | 
			
		||||
    FT_UShort  maxTwilightPoints;
 | 
			
		||||
    FT_UShort  maxStorage;
 | 
			
		||||
    FT_UShort  maxFunctionDefs;
 | 
			
		||||
    FT_UShort  maxInstructionDefs;
 | 
			
		||||
    FT_UShort  maxStackElements;
 | 
			
		||||
    FT_UShort  maxSizeOfInstructions;
 | 
			
		||||
    FT_UShort  maxComponentElements;
 | 
			
		||||
    FT_UShort  maxComponentDepth;
 | 
			
		||||
 | 
			
		||||
  } TT_MaxProfile;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    FT_Sfnt_Tag                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An enumeration used to specify the index of an SFNT table.         */
 | 
			
		||||
  /*    Used in the @FT_Get_Sfnt_Table API function.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  FT_Sfnt_Tag_
 | 
			
		||||
  {
 | 
			
		||||
    ft_sfnt_head = 0,
 | 
			
		||||
    ft_sfnt_maxp = 1,
 | 
			
		||||
    ft_sfnt_os2  = 2,
 | 
			
		||||
    ft_sfnt_hhea = 3,
 | 
			
		||||
    ft_sfnt_vhea = 4,
 | 
			
		||||
    ft_sfnt_post = 5,
 | 
			
		||||
    ft_sfnt_pclt = 6,
 | 
			
		||||
 | 
			
		||||
    sfnt_max   /* internal end mark */
 | 
			
		||||
 | 
			
		||||
  } FT_Sfnt_Tag;
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Sfnt_Table                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Returns a pointer to a given SFNT table within a face.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to the source.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    tag  :: The index of the SFNT table.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    A type-less pointer to the table.  This will be 0 in case of       */
 | 
			
		||||
  /*    error, or if the corresponding table was not found *OR* loaded     */
 | 
			
		||||
  /*    from the file.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The table is owned by the face object and disappears with it.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function is only useful to access SFNT tables that are loaded */
 | 
			
		||||
  /*    by the sfnt, truetype, and opentype drivers.  See @FT_Sfnt_Tag for */
 | 
			
		||||
  /*    a list.                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void* )
 | 
			
		||||
  FT_Get_Sfnt_Table( FT_Face      face,
 | 
			
		||||
                     FT_Sfnt_Tag  tag );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Load_Sfnt_Table
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Loads any font table into client memory.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   face ::
 | 
			
		||||
  *     A handle to the source face.
 | 
			
		||||
  *
 | 
			
		||||
  *   tag ::
 | 
			
		||||
  *     The four-byte tag of the table to load.  Use the value 0 if you want
 | 
			
		||||
  *     to access the whole font file.  Otherwise, you can use one of the
 | 
			
		||||
  *     definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new
 | 
			
		||||
  *     one with @FT_MAKE_TAG.
 | 
			
		||||
  *
 | 
			
		||||
  *   offset ::
 | 
			
		||||
  *     The starting offset in the table (or file if tag == 0).
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *   buffer ::
 | 
			
		||||
  *     The target buffer address.  The client must ensure that the memory
 | 
			
		||||
  *     array is big enough to hold the data.
 | 
			
		||||
  *
 | 
			
		||||
  * @inout:
 | 
			
		||||
  *   length ::
 | 
			
		||||
  *     If the `length' parameter is NULL, then try to load the whole table.
 | 
			
		||||
  *     Return an error code if it fails.
 | 
			
		||||
  *
 | 
			
		||||
  *     Else, if `*length' is 0, exit immediately while returning the
 | 
			
		||||
  *     table's (or file) full size in it.
 | 
			
		||||
  *
 | 
			
		||||
  *     Else the number of bytes to read from the table or file, from the
 | 
			
		||||
  *     starting offset.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   If you need to determine the table's length you should first call this
 | 
			
		||||
  *   function with `*length' set to 0, as in the following example:
 | 
			
		||||
  *
 | 
			
		||||
  *     {
 | 
			
		||||
  *       FT_ULong  length = 0;
 | 
			
		||||
  *
 | 
			
		||||
  *
 | 
			
		||||
  *       error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
 | 
			
		||||
  *       if ( error ) { ... table does not exist ... }
 | 
			
		||||
  *
 | 
			
		||||
  *       buffer = malloc( length );
 | 
			
		||||
  *       if ( buffer == NULL ) { ... not enough memory ... }
 | 
			
		||||
  *
 | 
			
		||||
  *       error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
 | 
			
		||||
  *       if ( error ) { ... could not load table ... }
 | 
			
		||||
  *     }
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Load_Sfnt_Table( FT_Face    face,
 | 
			
		||||
                      FT_ULong   tag,
 | 
			
		||||
                      FT_Long    offset,
 | 
			
		||||
                      FT_Byte*   buffer,
 | 
			
		||||
                      FT_ULong*  length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Sfnt_Table_Info
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Returns information on an SFNT table.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   face ::
 | 
			
		||||
  *     A handle to the source face.
 | 
			
		||||
  *
 | 
			
		||||
  *   table_index ::
 | 
			
		||||
  *     The index of an SFNT table.  The function returns
 | 
			
		||||
  *     FT_Err_Table_Missing for an invalid value.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *   tag ::
 | 
			
		||||
  *     The name tag of the SFNT table.
 | 
			
		||||
  *
 | 
			
		||||
  *   length ::
 | 
			
		||||
  *     The length of the SFNT table.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0 means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   SFNT tables with length zero are treated as missing by Windows.
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Sfnt_Table_Info( FT_Face    face,
 | 
			
		||||
                      FT_UInt    table_index,
 | 
			
		||||
                      FT_ULong  *tag,
 | 
			
		||||
                      FT_ULong  *length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_CMap_Language_ID                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return TrueType/sfnt specific cmap language ID.  Definitions of    */
 | 
			
		||||
  /*    language ID values are in `freetype/ttnameid.h'.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    charmap ::                                                         */
 | 
			
		||||
  /*      The target charmap.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The language ID of `charmap'.  If `charmap' doesn't belong to a    */
 | 
			
		||||
  /*    TrueType/sfnt face, just return 0 as the default value.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_ULong )
 | 
			
		||||
  FT_Get_CMap_Language_ID( FT_CharMap  charmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_CMap_Format                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return TrueType/sfnt specific cmap format.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    charmap ::                                                         */
 | 
			
		||||
  /*      The target charmap.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The format of `charmap'.  If `charmap' doesn't belong to a         */
 | 
			
		||||
  /*    TrueType/sfnt face, return -1.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Long )
 | 
			
		||||
  FT_Get_CMap_Format( FT_CharMap  charmap );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __TTTABLES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										100
									
								
								include/freetype/tttags.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								include/freetype/tttags.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,100 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  tttags.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Tags for TrueType and OpenType tables (specification only).          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2004, 2005, 2007 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 __TTAGS_H__
 | 
			
		||||
#define __TTAGS_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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define TTAG_avar  FT_MAKE_TAG( 'a', 'v', 'a', 'r' )
 | 
			
		||||
#define TTAG_BASE  FT_MAKE_TAG( 'B', 'A', 'S', 'E' )
 | 
			
		||||
#define TTAG_bdat  FT_MAKE_TAG( 'b', 'd', 'a', 't' )
 | 
			
		||||
#define TTAG_BDF   FT_MAKE_TAG( 'B', 'D', 'F', ' ' )
 | 
			
		||||
#define TTAG_bhed  FT_MAKE_TAG( 'b', 'h', 'e', 'd' )
 | 
			
		||||
#define TTAG_bloc  FT_MAKE_TAG( 'b', 'l', 'o', 'c' )
 | 
			
		||||
#define TTAG_bsln  FT_MAKE_TAG( 'b', 's', 'l', 'n' )
 | 
			
		||||
#define TTAG_CFF   FT_MAKE_TAG( 'C', 'F', 'F', ' ' )
 | 
			
		||||
#define TTAG_cmap  FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
 | 
			
		||||
#define TTAG_cvar  FT_MAKE_TAG( 'c', 'v', 'a', 'r' )
 | 
			
		||||
#define TTAG_cvt   FT_MAKE_TAG( 'c', 'v', 't', ' ' )
 | 
			
		||||
#define TTAG_DSIG  FT_MAKE_TAG( 'D', 'S', 'I', 'G' )
 | 
			
		||||
#define TTAG_EBDT  FT_MAKE_TAG( 'E', 'B', 'D', 'T' )
 | 
			
		||||
#define TTAG_EBLC  FT_MAKE_TAG( 'E', 'B', 'L', 'C' )
 | 
			
		||||
#define TTAG_EBSC  FT_MAKE_TAG( 'E', 'B', 'S', 'C' )
 | 
			
		||||
#define TTAG_feat  FT_MAKE_TAG( 'f', 'e', 'a', 't' )
 | 
			
		||||
#define TTAG_fpgm  FT_MAKE_TAG( 'f', 'p', 'g', 'm' )
 | 
			
		||||
#define TTAG_fvar  FT_MAKE_TAG( 'f', 'v', 'a', 'r' )
 | 
			
		||||
#define TTAG_gasp  FT_MAKE_TAG( 'g', 'a', 's', 'p' )
 | 
			
		||||
#define TTAG_GDEF  FT_MAKE_TAG( 'G', 'D', 'E', 'F' )
 | 
			
		||||
#define TTAG_glyf  FT_MAKE_TAG( 'g', 'l', 'y', 'f' )
 | 
			
		||||
#define TTAG_GPOS  FT_MAKE_TAG( 'G', 'P', 'O', 'S' )
 | 
			
		||||
#define TTAG_GSUB  FT_MAKE_TAG( 'G', 'S', 'U', 'B' )
 | 
			
		||||
#define TTAG_gvar  FT_MAKE_TAG( 'g', 'v', 'a', 'r' )
 | 
			
		||||
#define TTAG_hdmx  FT_MAKE_TAG( 'h', 'd', 'm', 'x' )
 | 
			
		||||
#define TTAG_head  FT_MAKE_TAG( 'h', 'e', 'a', 'd' )
 | 
			
		||||
#define TTAG_hhea  FT_MAKE_TAG( 'h', 'h', 'e', 'a' )
 | 
			
		||||
#define TTAG_hmtx  FT_MAKE_TAG( 'h', 'm', 't', 'x' )
 | 
			
		||||
#define TTAG_JSTF  FT_MAKE_TAG( 'J', 'S', 'T', 'F' )
 | 
			
		||||
#define TTAG_just  FT_MAKE_TAG( 'j', 'u', 's', 't' )
 | 
			
		||||
#define TTAG_kern  FT_MAKE_TAG( 'k', 'e', 'r', 'n' )
 | 
			
		||||
#define TTAG_lcar  FT_MAKE_TAG( 'l', 'c', 'a', 'r' )
 | 
			
		||||
#define TTAG_loca  FT_MAKE_TAG( 'l', 'o', 'c', 'a' )
 | 
			
		||||
#define TTAG_LTSH  FT_MAKE_TAG( 'L', 'T', 'S', 'H' )
 | 
			
		||||
#define TTAG_MATH  FT_MAKE_TAG( 'M', 'A', 'T', 'H' )
 | 
			
		||||
#define TTAG_maxp  FT_MAKE_TAG( 'm', 'a', 'x', 'p' )
 | 
			
		||||
#define TTAG_META  FT_MAKE_TAG( 'M', 'E', 'T', 'A' )
 | 
			
		||||
#define TTAG_MMFX  FT_MAKE_TAG( 'M', 'M', 'F', 'X' )
 | 
			
		||||
#define TTAG_MMSD  FT_MAKE_TAG( 'M', 'M', 'S', 'D' )
 | 
			
		||||
#define TTAG_mort  FT_MAKE_TAG( 'm', 'o', 'r', 't' )
 | 
			
		||||
#define TTAG_morx  FT_MAKE_TAG( 'm', 'o', 'r', 'x' )
 | 
			
		||||
#define TTAG_name  FT_MAKE_TAG( 'n', 'a', 'm', 'e' )
 | 
			
		||||
#define TTAG_opbd  FT_MAKE_TAG( 'o', 'p', 'b', 'd' )
 | 
			
		||||
#define TTAG_OS2   FT_MAKE_TAG( 'O', 'S', '/', '2' )
 | 
			
		||||
#define TTAG_OTTO  FT_MAKE_TAG( 'O', 'T', 'T', 'O' )
 | 
			
		||||
#define TTAG_PCLT  FT_MAKE_TAG( 'P', 'C', 'L', 'T' )
 | 
			
		||||
#define TTAG_post  FT_MAKE_TAG( 'p', 'o', 's', 't' )
 | 
			
		||||
#define TTAG_prep  FT_MAKE_TAG( 'p', 'r', 'e', 'p' )
 | 
			
		||||
#define TTAG_prop  FT_MAKE_TAG( 'p', 'r', 'o', 'p' )
 | 
			
		||||
#define TTAG_SING  FT_MAKE_TAG( 'S', 'I', 'N', 'G' )
 | 
			
		||||
#define TTAG_trak  FT_MAKE_TAG( 't', 'r', 'a', 'k' )
 | 
			
		||||
#define TTAG_true  FT_MAKE_TAG( 't', 'r', 'u', 'e' )
 | 
			
		||||
#define TTAG_ttc   FT_MAKE_TAG( 't', 't', 'c', ' ' )
 | 
			
		||||
#define TTAG_ttcf  FT_MAKE_TAG( 't', 't', 'c', 'f' )
 | 
			
		||||
#define TTAG_VDMX  FT_MAKE_TAG( 'V', 'D', 'M', 'X' )
 | 
			
		||||
#define TTAG_vhea  FT_MAKE_TAG( 'v', 'h', 'e', 'a' )
 | 
			
		||||
#define TTAG_vmtx  FT_MAKE_TAG( 'v', 'm', 't', 'x' )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __TTAGS_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										59
									
								
								include/freetype/ttunpat.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								include/freetype/ttunpat.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ttunpat.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Definitions for the unpatented TrueType hinting system               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2006 by                                                */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Written by Graham Asher <graham.asher@btinternet.com>                  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  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 __TTUNPAT_H__
 | 
			
		||||
#define __TTUNPAT_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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /***************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @constant:
 | 
			
		||||
  *   FT_PARAM_TAG_UNPATENTED_HINTING
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   A constant used as the tag of an @FT_Parameter structure to indicate
 | 
			
		||||
  *   that unpatented methods only should be used by the TrueType bytecode
 | 
			
		||||
  *   interpreter for a typeface opened by @FT_Open_Face.
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
#define FT_PARAM_TAG_UNPATENTED_HINTING  FT_MAKE_TAG( 'u', 'n', 'p', 'a' )
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __TTUNPAT_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										39
									
								
								include/ft2build.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								include/ft2build.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ft2build.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType 2 build and setup macros.                                   */
 | 
			
		||||
/*    (Generic version)                                                    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2001, 2006 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 file corresponds to the default `ft2build.h' file for            */
 | 
			
		||||
  /* FreeType 2.  It uses the `freetype' include root.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Note that specific platforms might use a different configuration.     */
 | 
			
		||||
  /* See builds/unix/ft2unix.h for an example.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FT2_BUILD_GENERIC_H__
 | 
			
		||||
#define __FT2_BUILD_GENERIC_H__
 | 
			
		||||
 | 
			
		||||
#include <freetype/config/ftheader.h>
 | 
			
		||||
 | 
			
		||||
#endif /* __FT2_BUILD_GENERIC_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										292
									
								
								src/autofit/afangles.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								src/autofit/afangles.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,292 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afangles.c                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Routines used to compute vector angles with limited accuracy         */
 | 
			
		||||
/*    and very high speed.  It also contains sorting routines (body).      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004, 2005, 2006 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 "aftypes.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL_DEF( FT_Int )
 | 
			
		||||
  af_corner_is_flat( FT_Pos  x_in,
 | 
			
		||||
                     FT_Pos  y_in,
 | 
			
		||||
                     FT_Pos  x_out,
 | 
			
		||||
                     FT_Pos  y_out )
 | 
			
		||||
  {
 | 
			
		||||
    FT_Pos  ax = x_in;
 | 
			
		||||
    FT_Pos  ay = y_in;
 | 
			
		||||
 | 
			
		||||
    FT_Pos  d_in, d_out, d_corner;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if ( ax < 0 )
 | 
			
		||||
      ax = -ax;
 | 
			
		||||
    if ( ay < 0 )
 | 
			
		||||
      ay = -ay;
 | 
			
		||||
    d_in = ax + ay;
 | 
			
		||||
 | 
			
		||||
    ax = x_out;
 | 
			
		||||
    if ( ax < 0 )
 | 
			
		||||
      ax = -ax;
 | 
			
		||||
    ay = y_out;
 | 
			
		||||
    if ( ay < 0 )
 | 
			
		||||
      ay = -ay;
 | 
			
		||||
    d_out = ax + ay;
 | 
			
		||||
 | 
			
		||||
    ax = x_out + x_in;
 | 
			
		||||
    if ( ax < 0 )
 | 
			
		||||
      ax = -ax;
 | 
			
		||||
    ay = y_out + y_in;
 | 
			
		||||
    if ( ay < 0 )
 | 
			
		||||
      ay = -ay;
 | 
			
		||||
    d_corner = ax + ay;
 | 
			
		||||
 | 
			
		||||
    return ( d_in + d_out - d_corner ) < ( d_corner >> 4 );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL_DEF( FT_Int )
 | 
			
		||||
  af_corner_orientation( FT_Pos  x_in,
 | 
			
		||||
                         FT_Pos  y_in,
 | 
			
		||||
                         FT_Pos  x_out,
 | 
			
		||||
                         FT_Pos  y_out )
 | 
			
		||||
  {
 | 
			
		||||
    FT_Pos  delta;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    delta = x_in * y_out - y_in * x_out;
 | 
			
		||||
 | 
			
		||||
    if ( delta == 0 )
 | 
			
		||||
      return 0;
 | 
			
		||||
    else
 | 
			
		||||
      return 1 - 2 * ( delta < 0 );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  We are not using `af_angle_atan' anymore, but we keep the source
 | 
			
		||||
   *  code below just in case...
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  The trick here is to realize that we don't need a very accurate angle
 | 
			
		||||
   *  approximation.  We are going to use the result of `af_angle_atan' to
 | 
			
		||||
   *  only compare the sign of angle differences, or check whether its
 | 
			
		||||
   *  magnitude is very small.
 | 
			
		||||
   *
 | 
			
		||||
   *  The approximation
 | 
			
		||||
   *
 | 
			
		||||
   *    dy * PI / (|dx|+|dy|)
 | 
			
		||||
   *
 | 
			
		||||
   *  should be enough, and much faster to compute.
 | 
			
		||||
   */
 | 
			
		||||
  FT_LOCAL_DEF( AF_Angle )
 | 
			
		||||
  af_angle_atan( FT_Fixed  dx,
 | 
			
		||||
                 FT_Fixed  dy )
 | 
			
		||||
  {
 | 
			
		||||
    AF_Angle  angle;
 | 
			
		||||
    FT_Fixed  ax = dx;
 | 
			
		||||
    FT_Fixed  ay = dy;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if ( ax < 0 )
 | 
			
		||||
      ax = -ax;
 | 
			
		||||
    if ( ay < 0 )
 | 
			
		||||
      ay = -ay;
 | 
			
		||||
 | 
			
		||||
    ax += ay;
 | 
			
		||||
 | 
			
		||||
    if ( ax == 0 )
 | 
			
		||||
      angle = 0;
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      angle = ( AF_ANGLE_PI2 * dy ) / ( ax + ay );
 | 
			
		||||
      if ( dx < 0 )
 | 
			
		||||
      {
 | 
			
		||||
        if ( angle >= 0 )
 | 
			
		||||
          angle = AF_ANGLE_PI - angle;
 | 
			
		||||
        else
 | 
			
		||||
          angle = -AF_ANGLE_PI - angle;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return angle;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#elif 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* the following table has been automatically generated with */
 | 
			
		||||
  /* the `mather.py' Python script                             */
 | 
			
		||||
 | 
			
		||||
#define AF_ATAN_BITS  8
 | 
			
		||||
 | 
			
		||||
  static const FT_Byte  af_arctan[1L << AF_ATAN_BITS] =
 | 
			
		||||
  {
 | 
			
		||||
     0,  0,  1,  1,  1,  2,  2,  2,
 | 
			
		||||
     3,  3,  3,  3,  4,  4,  4,  5,
 | 
			
		||||
     5,  5,  6,  6,  6,  7,  7,  7,
 | 
			
		||||
     8,  8,  8,  9,  9,  9, 10, 10,
 | 
			
		||||
    10, 10, 11, 11, 11, 12, 12, 12,
 | 
			
		||||
    13, 13, 13, 14, 14, 14, 14, 15,
 | 
			
		||||
    15, 15, 16, 16, 16, 17, 17, 17,
 | 
			
		||||
    18, 18, 18, 18, 19, 19, 19, 20,
 | 
			
		||||
    20, 20, 21, 21, 21, 21, 22, 22,
 | 
			
		||||
    22, 23, 23, 23, 24, 24, 24, 24,
 | 
			
		||||
    25, 25, 25, 26, 26, 26, 26, 27,
 | 
			
		||||
    27, 27, 28, 28, 28, 28, 29, 29,
 | 
			
		||||
    29, 30, 30, 30, 30, 31, 31, 31,
 | 
			
		||||
    31, 32, 32, 32, 33, 33, 33, 33,
 | 
			
		||||
    34, 34, 34, 34, 35, 35, 35, 35,
 | 
			
		||||
    36, 36, 36, 36, 37, 37, 37, 38,
 | 
			
		||||
    38, 38, 38, 39, 39, 39, 39, 40,
 | 
			
		||||
    40, 40, 40, 41, 41, 41, 41, 42,
 | 
			
		||||
    42, 42, 42, 42, 43, 43, 43, 43,
 | 
			
		||||
    44, 44, 44, 44, 45, 45, 45, 45,
 | 
			
		||||
    46, 46, 46, 46, 46, 47, 47, 47,
 | 
			
		||||
    47, 48, 48, 48, 48, 48, 49, 49,
 | 
			
		||||
    49, 49, 50, 50, 50, 50, 50, 51,
 | 
			
		||||
    51, 51, 51, 51, 52, 52, 52, 52,
 | 
			
		||||
    52, 53, 53, 53, 53, 53, 54, 54,
 | 
			
		||||
    54, 54, 54, 55, 55, 55, 55, 55,
 | 
			
		||||
    56, 56, 56, 56, 56, 57, 57, 57,
 | 
			
		||||
    57, 57, 57, 58, 58, 58, 58, 58,
 | 
			
		||||
    59, 59, 59, 59, 59, 59, 60, 60,
 | 
			
		||||
    60, 60, 60, 61, 61, 61, 61, 61,
 | 
			
		||||
    61, 62, 62, 62, 62, 62, 62, 63,
 | 
			
		||||
    63, 63, 63, 63, 63, 64, 64, 64
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL_DEF( AF_Angle )
 | 
			
		||||
  af_angle_atan( FT_Fixed  dx,
 | 
			
		||||
                 FT_Fixed  dy )
 | 
			
		||||
  {
 | 
			
		||||
    AF_Angle  angle;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /* check trivial cases */
 | 
			
		||||
    if ( dy == 0 )
 | 
			
		||||
    {
 | 
			
		||||
      angle = 0;
 | 
			
		||||
      if ( dx < 0 )
 | 
			
		||||
        angle = AF_ANGLE_PI;
 | 
			
		||||
      return angle;
 | 
			
		||||
    }
 | 
			
		||||
    else if ( dx == 0 )
 | 
			
		||||
    {
 | 
			
		||||
      angle = AF_ANGLE_PI2;
 | 
			
		||||
      if ( dy < 0 )
 | 
			
		||||
        angle = -AF_ANGLE_PI2;
 | 
			
		||||
      return angle;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    angle = 0;
 | 
			
		||||
    if ( dx < 0 )
 | 
			
		||||
    {
 | 
			
		||||
      dx = -dx;
 | 
			
		||||
      dy = -dy;
 | 
			
		||||
      angle = AF_ANGLE_PI;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ( dy < 0 )
 | 
			
		||||
    {
 | 
			
		||||
      FT_Pos  tmp;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      tmp = dx;
 | 
			
		||||
      dx  = -dy;
 | 
			
		||||
      dy  = tmp;
 | 
			
		||||
      angle -= AF_ANGLE_PI2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ( dx == 0 && dy == 0 )
 | 
			
		||||
      return 0;
 | 
			
		||||
 | 
			
		||||
    if ( dx == dy )
 | 
			
		||||
      angle += AF_ANGLE_PI4;
 | 
			
		||||
    else if ( dx > dy )
 | 
			
		||||
      angle += af_arctan[FT_DivFix( dy, dx ) >> ( 16 - AF_ATAN_BITS )];
 | 
			
		||||
    else
 | 
			
		||||
      angle += AF_ANGLE_PI2 -
 | 
			
		||||
               af_arctan[FT_DivFix( dx, dy ) >> ( 16 - AF_ATAN_BITS )];
 | 
			
		||||
 | 
			
		||||
    if ( angle > AF_ANGLE_PI )
 | 
			
		||||
      angle -= AF_ANGLE_2PI;
 | 
			
		||||
 | 
			
		||||
    return angle;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* 0 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL_DEF( void )
 | 
			
		||||
  af_sort_pos( FT_UInt  count,
 | 
			
		||||
               FT_Pos*  table )
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt  i, j;
 | 
			
		||||
    FT_Pos   swap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    for ( i = 1; i < count; i++ )
 | 
			
		||||
    {
 | 
			
		||||
      for ( j = i; j > 0; j-- )
 | 
			
		||||
      {
 | 
			
		||||
        if ( table[j] > table[j - 1] )
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        swap         = table[j];
 | 
			
		||||
        table[j]     = table[j - 1];
 | 
			
		||||
        table[j - 1] = swap;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL_DEF( void )
 | 
			
		||||
  af_sort_widths( FT_UInt   count,
 | 
			
		||||
                  AF_Width  table )
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt      i, j;
 | 
			
		||||
    AF_WidthRec  swap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    for ( i = 1; i < count; i++ )
 | 
			
		||||
    {
 | 
			
		||||
      for ( j = i; j > 0; j-- )
 | 
			
		||||
      {
 | 
			
		||||
        if ( table[j].org > table[j - 1].org )
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        swap         = table[j];
 | 
			
		||||
        table[j]     = table[j - 1];
 | 
			
		||||
        table[j - 1] = swap;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										7
									
								
								src/autofit/afangles.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/autofit/afangles.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
/*
 | 
			
		||||
 *  afangles.h
 | 
			
		||||
 *
 | 
			
		||||
 *  This is a dummy file, used to please the build system.  It is never
 | 
			
		||||
 *  included by the auto-fitter sources.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
							
								
								
									
										1508
									
								
								src/autofit/afcjk.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1508
									
								
								src/autofit/afcjk.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										58
									
								
								src/autofit/afcjk.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/autofit/afcjk.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afcjk.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auto-fitter hinting routines for CJK script (specification).         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2006, 2007 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 __AFCJK_H__
 | 
			
		||||
#define __AFCJK_H__
 | 
			
		||||
 | 
			
		||||
#include "afhints.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* the CJK-specific script class */
 | 
			
		||||
 | 
			
		||||
  FT_CALLBACK_TABLE const AF_ScriptClassRec
 | 
			
		||||
  af_cjk_script_class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( FT_Error )
 | 
			
		||||
  af_cjk_metrics_init( AF_LatinMetrics  metrics,
 | 
			
		||||
                       FT_Face          face );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_cjk_metrics_scale( AF_LatinMetrics  metrics,
 | 
			
		||||
                        AF_Scaler        scaler );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( FT_Error )
 | 
			
		||||
  af_cjk_hints_init( AF_GlyphHints    hints,
 | 
			
		||||
                     AF_LatinMetrics  metrics );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( FT_Error )
 | 
			
		||||
  af_cjk_hints_apply( AF_GlyphHints    hints,
 | 
			
		||||
                      FT_Outline*      outline,
 | 
			
		||||
                      AF_LatinMetrics  metrics );
 | 
			
		||||
 | 
			
		||||
/* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __AFCJK_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										62
									
								
								src/autofit/afdummy.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								src/autofit/afdummy.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afdummy.c                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auto-fitter dummy routines to be used if no hinting should be        */
 | 
			
		||||
/*    performed (body).                                                    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004, 2005 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 "afdummy.h"
 | 
			
		||||
#include "afhints.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  static FT_Error
 | 
			
		||||
  af_dummy_hints_init( AF_GlyphHints     hints,
 | 
			
		||||
                       AF_ScriptMetrics  metrics )
 | 
			
		||||
  {
 | 
			
		||||
    af_glyph_hints_rescale( hints,
 | 
			
		||||
                            metrics );
 | 
			
		||||
    return 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  static FT_Error
 | 
			
		||||
  af_dummy_hints_apply( AF_GlyphHints  hints,
 | 
			
		||||
                        FT_Outline*    outline )
 | 
			
		||||
  {
 | 
			
		||||
    FT_UNUSED( hints );
 | 
			
		||||
    FT_UNUSED( outline );
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
 | 
			
		||||
  af_dummy_script_class =
 | 
			
		||||
  {
 | 
			
		||||
    AF_SCRIPT_NONE,
 | 
			
		||||
    NULL,
 | 
			
		||||
 | 
			
		||||
    sizeof( AF_ScriptMetricsRec ),
 | 
			
		||||
 | 
			
		||||
    (AF_Script_InitMetricsFunc) NULL,
 | 
			
		||||
    (AF_Script_ScaleMetricsFunc)NULL,
 | 
			
		||||
    (AF_Script_DoneMetricsFunc) NULL,
 | 
			
		||||
 | 
			
		||||
    (AF_Script_InitHintsFunc)   af_dummy_hints_init,
 | 
			
		||||
    (AF_Script_ApplyHintsFunc)  af_dummy_hints_apply
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										43
									
								
								src/autofit/afdummy.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/autofit/afdummy.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afdummy.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auto-fitter dummy routines to be used if no hinting should be        */
 | 
			
		||||
/*    performed (specification).                                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004, 2005 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 __AFDUMMY_H__
 | 
			
		||||
#define __AFDUMMY_H__
 | 
			
		||||
 | 
			
		||||
#include "aftypes.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 /*  A dummy script metrics class used when no hinting should
 | 
			
		||||
  *  be performed.  This is the default for non-latin glyphs!
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
  FT_CALLBACK_TABLE const AF_ScriptClassRec
 | 
			
		||||
  af_dummy_script_class;
 | 
			
		||||
 | 
			
		||||
/* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __AFDUMMY_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										40
									
								
								src/autofit/aferrors.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/autofit/aferrors.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  aferrors.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Autofitter error codes (specification only).                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2005 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 file is used to define the Autofitter error enumeration          */
 | 
			
		||||
  /* constants.                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifndef __AFERRORS_H__
 | 
			
		||||
#define __AFERRORS_H__
 | 
			
		||||
 | 
			
		||||
#include FT_MODULE_ERRORS_H
 | 
			
		||||
 | 
			
		||||
#undef __FTERRORS_H__
 | 
			
		||||
 | 
			
		||||
#define FT_ERR_PREFIX  AF_Err_
 | 
			
		||||
#define FT_ERR_BASE    FT_Mod_Err_Autofit
 | 
			
		||||
 | 
			
		||||
#include FT_ERRORS_H
 | 
			
		||||
 | 
			
		||||
#endif /* __AFERRORS_H__ */
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										289
									
								
								src/autofit/afglobal.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										289
									
								
								src/autofit/afglobal.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,289 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afglobal.c                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auto-fitter routines to compute global hinting values (body).        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004, 2005, 2006, 2007, 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 "afglobal.h"
 | 
			
		||||
#include "afdummy.h"
 | 
			
		||||
#include "aflatin.h"
 | 
			
		||||
#include "afcjk.h"
 | 
			
		||||
#include "afindic.h"
 | 
			
		||||
 | 
			
		||||
#include "aferrors.h"
 | 
			
		||||
 | 
			
		||||
#ifdef FT_OPTION_AUTOFIT2
 | 
			
		||||
#include "aflatin2.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  /* populate this list when you add new scripts */
 | 
			
		||||
  static AF_ScriptClass const  af_script_classes[] =
 | 
			
		||||
  {
 | 
			
		||||
    &af_dummy_script_class,
 | 
			
		||||
#ifdef FT_OPTION_AUTOFIT2
 | 
			
		||||
    &af_latin2_script_class,
 | 
			
		||||
#endif
 | 
			
		||||
    &af_latin_script_class,
 | 
			
		||||
    &af_cjk_script_class,
 | 
			
		||||
    &af_indic_script_class, 
 | 
			
		||||
    NULL  /* do not remove */
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  /* index of default script in `af_script_classes' */
 | 
			
		||||
#define AF_SCRIPT_LIST_DEFAULT  2
 | 
			
		||||
  /* indicates an uncovered glyph                   */
 | 
			
		||||
#define AF_SCRIPT_LIST_NONE   255
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  Note that glyph_scripts[] is used to map each glyph into
 | 
			
		||||
   *  an index into the `af_script_classes' array.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  AF_FaceGlobalsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Face           face;
 | 
			
		||||
    FT_UInt           glyph_count;    /* same as face->num_glyphs */
 | 
			
		||||
    FT_Byte*          glyph_scripts;
 | 
			
		||||
 | 
			
		||||
    AF_ScriptMetrics  metrics[AF_SCRIPT_MAX];
 | 
			
		||||
 | 
			
		||||
  } AF_FaceGlobalsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Compute the script index of each glyph within a given face. */
 | 
			
		||||
 | 
			
		||||
  static FT_Error
 | 
			
		||||
  af_face_globals_compute_script_coverage( AF_FaceGlobals  globals )
 | 
			
		||||
  {
 | 
			
		||||
    FT_Error    error       = AF_Err_Ok;
 | 
			
		||||
    FT_Face     face        = globals->face;
 | 
			
		||||
    FT_CharMap  old_charmap = face->charmap;
 | 
			
		||||
    FT_Byte*    gscripts    = globals->glyph_scripts;
 | 
			
		||||
    FT_UInt     ss;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /* the value 255 means `uncovered glyph' */
 | 
			
		||||
    FT_MEM_SET( globals->glyph_scripts,
 | 
			
		||||
                AF_SCRIPT_LIST_NONE,
 | 
			
		||||
                globals->glyph_count );
 | 
			
		||||
 | 
			
		||||
    error = FT_Select_Charmap( face, FT_ENCODING_UNICODE );
 | 
			
		||||
    if ( error )
 | 
			
		||||
    {
 | 
			
		||||
     /*
 | 
			
		||||
      *  Ignore this error; we simply use the default script.
 | 
			
		||||
      *  XXX: Shouldn't we rather disable hinting?
 | 
			
		||||
      */
 | 
			
		||||
      error = AF_Err_Ok;
 | 
			
		||||
      goto Exit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* scan each script in a Unicode charmap */
 | 
			
		||||
    for ( ss = 0; af_script_classes[ss]; ss++ )
 | 
			
		||||
    {
 | 
			
		||||
      AF_ScriptClass      clazz = af_script_classes[ss];
 | 
			
		||||
      AF_Script_UniRange  range;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      if ( clazz->script_uni_ranges == NULL )
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      /*
 | 
			
		||||
       *  Scan all unicode points in the range and set the corresponding
 | 
			
		||||
       *  glyph script index.
 | 
			
		||||
       */
 | 
			
		||||
      for ( range = clazz->script_uni_ranges; range->first != 0; range++ )
 | 
			
		||||
      {
 | 
			
		||||
        FT_ULong  charcode = range->first;
 | 
			
		||||
        FT_UInt   gindex;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        gindex = FT_Get_Char_Index( face, charcode );
 | 
			
		||||
 | 
			
		||||
        if ( gindex != 0                             &&
 | 
			
		||||
             gindex < globals->glyph_count           &&
 | 
			
		||||
             gscripts[gindex] == AF_SCRIPT_LIST_NONE )
 | 
			
		||||
        {
 | 
			
		||||
          gscripts[gindex] = (FT_Byte)ss;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (;;)
 | 
			
		||||
        {
 | 
			
		||||
          charcode = FT_Get_Next_Char( face, charcode, &gindex );
 | 
			
		||||
 | 
			
		||||
          if ( gindex == 0 || charcode > range->last )
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
          if ( gindex < globals->glyph_count           &&
 | 
			
		||||
               gscripts[gindex] == AF_SCRIPT_LIST_NONE )
 | 
			
		||||
          {
 | 
			
		||||
            gscripts[gindex] = (FT_Byte)ss;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  Exit:
 | 
			
		||||
    /*
 | 
			
		||||
     *  By default, all uncovered glyphs are set to the latin script.
 | 
			
		||||
     *  XXX: Shouldn't we disable hinting or do something similar?
 | 
			
		||||
     */
 | 
			
		||||
    {
 | 
			
		||||
      FT_UInt  nn;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      for ( nn = 0; nn < globals->glyph_count; nn++ )
 | 
			
		||||
      {
 | 
			
		||||
        if ( gscripts[nn] == AF_SCRIPT_LIST_NONE )
 | 
			
		||||
          gscripts[nn] = AF_SCRIPT_LIST_DEFAULT;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FT_Set_Charmap( face, old_charmap );
 | 
			
		||||
    return error;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL_DEF( FT_Error )
 | 
			
		||||
  af_face_globals_new( FT_Face          face,
 | 
			
		||||
                       AF_FaceGlobals  *aglobals )
 | 
			
		||||
  {
 | 
			
		||||
    FT_Error        error;
 | 
			
		||||
    FT_Memory       memory;
 | 
			
		||||
    AF_FaceGlobals  globals;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    memory = face->memory;
 | 
			
		||||
 | 
			
		||||
    if ( !FT_ALLOC( globals, sizeof ( *globals ) +
 | 
			
		||||
                             face->num_glyphs * sizeof ( FT_Byte ) ) )
 | 
			
		||||
    {
 | 
			
		||||
      globals->face          = face;
 | 
			
		||||
      globals->glyph_count   = face->num_glyphs;
 | 
			
		||||
      globals->glyph_scripts = (FT_Byte*)( globals + 1 );
 | 
			
		||||
 | 
			
		||||
      error = af_face_globals_compute_script_coverage( globals );
 | 
			
		||||
      if ( error )
 | 
			
		||||
      {
 | 
			
		||||
        af_face_globals_free( globals );
 | 
			
		||||
        globals = NULL;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    *aglobals = globals;
 | 
			
		||||
    return error;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL_DEF( void )
 | 
			
		||||
  af_face_globals_free( AF_FaceGlobals  globals )
 | 
			
		||||
  {
 | 
			
		||||
    if ( globals )
 | 
			
		||||
    {
 | 
			
		||||
      FT_Memory  memory = globals->face->memory;
 | 
			
		||||
      FT_UInt    nn;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      for ( nn = 0; nn < AF_SCRIPT_MAX; nn++ )
 | 
			
		||||
      {
 | 
			
		||||
        if ( globals->metrics[nn] )
 | 
			
		||||
        {
 | 
			
		||||
          AF_ScriptClass  clazz = af_script_classes[nn];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          FT_ASSERT( globals->metrics[nn]->clazz == clazz );
 | 
			
		||||
 | 
			
		||||
          if ( clazz->script_metrics_done )
 | 
			
		||||
            clazz->script_metrics_done( globals->metrics[nn] );
 | 
			
		||||
 | 
			
		||||
          FT_FREE( globals->metrics[nn] );
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      globals->glyph_count   = 0;
 | 
			
		||||
      globals->glyph_scripts = NULL;  /* no need to free this one! */
 | 
			
		||||
      globals->face          = NULL;
 | 
			
		||||
 | 
			
		||||
      FT_FREE( globals );
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL_DEF( FT_Error )
 | 
			
		||||
  af_face_globals_get_metrics( AF_FaceGlobals     globals,
 | 
			
		||||
                               FT_UInt            gindex,
 | 
			
		||||
                               FT_UInt            options,
 | 
			
		||||
                               AF_ScriptMetrics  *ametrics )
 | 
			
		||||
  {
 | 
			
		||||
    AF_ScriptMetrics  metrics = NULL;
 | 
			
		||||
    FT_UInt           gidx;
 | 
			
		||||
    AF_ScriptClass    clazz;
 | 
			
		||||
    FT_UInt           script     = options & 15;
 | 
			
		||||
    const FT_UInt     script_max = sizeof ( af_script_classes ) /
 | 
			
		||||
                                     sizeof ( af_script_classes[0] );
 | 
			
		||||
    FT_Error          error      = AF_Err_Ok;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if ( gindex >= globals->glyph_count )
 | 
			
		||||
    {
 | 
			
		||||
      error = AF_Err_Invalid_Argument;
 | 
			
		||||
      goto Exit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gidx = script;
 | 
			
		||||
    if ( gidx == 0 || gidx + 1 >= script_max )
 | 
			
		||||
      gidx = globals->glyph_scripts[gindex];
 | 
			
		||||
 | 
			
		||||
    clazz = af_script_classes[gidx];
 | 
			
		||||
    if ( script == 0 )
 | 
			
		||||
      script = clazz->script;
 | 
			
		||||
 | 
			
		||||
    metrics = globals->metrics[clazz->script];
 | 
			
		||||
    if ( metrics == NULL )
 | 
			
		||||
    {
 | 
			
		||||
      /* create the global metrics object when needed */
 | 
			
		||||
      FT_Memory  memory = globals->face->memory;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      if ( FT_ALLOC( metrics, clazz->script_metrics_size ) )
 | 
			
		||||
        goto Exit;
 | 
			
		||||
 | 
			
		||||
      metrics->clazz = clazz;
 | 
			
		||||
 | 
			
		||||
      if ( clazz->script_metrics_init )
 | 
			
		||||
      {
 | 
			
		||||
        error = clazz->script_metrics_init( metrics, globals->face );
 | 
			
		||||
        if ( error )
 | 
			
		||||
        {
 | 
			
		||||
          if ( clazz->script_metrics_done )
 | 
			
		||||
            clazz->script_metrics_done( metrics );
 | 
			
		||||
 | 
			
		||||
          FT_FREE( metrics );
 | 
			
		||||
          goto Exit;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      globals->metrics[clazz->script] = metrics;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  Exit:
 | 
			
		||||
    *ametrics = metrics;
 | 
			
		||||
 | 
			
		||||
    return error;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										67
									
								
								src/autofit/afglobal.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/autofit/afglobal.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afglobal.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auto-fitter routines to compute global hinting values                */
 | 
			
		||||
/*    (specification).                                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004, 2005, 2007 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 __AF_GLOBAL_H__
 | 
			
		||||
#define __AF_GLOBAL_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "aftypes.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /************************************************************************/
 | 
			
		||||
  /************************************************************************/
 | 
			
		||||
  /*****                                                              *****/
 | 
			
		||||
  /*****                  F A C E   G L O B A L S                     *****/
 | 
			
		||||
  /*****                                                              *****/
 | 
			
		||||
  /************************************************************************/
 | 
			
		||||
  /************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  model the global hints data for a given face, decomposed into
 | 
			
		||||
   *  script-specific items
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct AF_FaceGlobalsRec_*   AF_FaceGlobals;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( FT_Error )
 | 
			
		||||
  af_face_globals_new( FT_Face          face,
 | 
			
		||||
                       AF_FaceGlobals  *aglobals );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( FT_Error )
 | 
			
		||||
  af_face_globals_get_metrics( AF_FaceGlobals     globals,
 | 
			
		||||
                               FT_UInt            gindex,
 | 
			
		||||
                               FT_UInt            options,
 | 
			
		||||
                               AF_ScriptMetrics  *ametrics );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_face_globals_free( AF_FaceGlobals  globals );
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __AF_GLOBALS_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										1264
									
								
								src/autofit/afhints.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1264
									
								
								src/autofit/afhints.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										333
									
								
								src/autofit/afhints.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										333
									
								
								src/autofit/afhints.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,333 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afhints.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auto-fitter hinting routines (specification).                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003, 2004, 2005, 2006, 2007, 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 __AFHINTS_H__
 | 
			
		||||
#define __AFHINTS_H__
 | 
			
		||||
 | 
			
		||||
#include "aftypes.h"
 | 
			
		||||
 | 
			
		||||
#define xxAF_SORT_SEGMENTS
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 /*
 | 
			
		||||
  *  The definition of outline glyph hints.  These are shared by all
 | 
			
		||||
  *  script analysis routines (until now).
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
  typedef enum  AF_Dimension_
 | 
			
		||||
  {
 | 
			
		||||
    AF_DIMENSION_HORZ = 0,  /* x coordinates,                    */
 | 
			
		||||
                            /* i.e., vertical segments & edges   */
 | 
			
		||||
    AF_DIMENSION_VERT = 1,  /* y coordinates,                    */
 | 
			
		||||
                            /* i.e., horizontal segments & edges */
 | 
			
		||||
 | 
			
		||||
    AF_DIMENSION_MAX  /* do not remove */
 | 
			
		||||
 | 
			
		||||
  } AF_Dimension;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* hint directions -- the values are computed so that two vectors are */
 | 
			
		||||
  /* in opposite directions iff `dir1 + dir2 == 0'                      */
 | 
			
		||||
  typedef enum  AF_Direction_
 | 
			
		||||
  {
 | 
			
		||||
    AF_DIR_NONE  =  4,
 | 
			
		||||
    AF_DIR_RIGHT =  1,
 | 
			
		||||
    AF_DIR_LEFT  = -1,
 | 
			
		||||
    AF_DIR_UP    =  2,
 | 
			
		||||
    AF_DIR_DOWN  = -2
 | 
			
		||||
 | 
			
		||||
  } AF_Direction;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* point hint flags */
 | 
			
		||||
  typedef enum  AF_Flags_
 | 
			
		||||
  {
 | 
			
		||||
    AF_FLAG_NONE = 0,
 | 
			
		||||
 | 
			
		||||
    /* point type flags */
 | 
			
		||||
    AF_FLAG_CONIC   = 1 << 0,
 | 
			
		||||
    AF_FLAG_CUBIC   = 1 << 1,
 | 
			
		||||
    AF_FLAG_CONTROL = AF_FLAG_CONIC | AF_FLAG_CUBIC,
 | 
			
		||||
 | 
			
		||||
    /* point extremum flags */
 | 
			
		||||
    AF_FLAG_EXTREMA_X = 1 << 2,
 | 
			
		||||
    AF_FLAG_EXTREMA_Y = 1 << 3,
 | 
			
		||||
 | 
			
		||||
    /* point roundness flags */
 | 
			
		||||
    AF_FLAG_ROUND_X = 1 << 4,
 | 
			
		||||
    AF_FLAG_ROUND_Y = 1 << 5,
 | 
			
		||||
 | 
			
		||||
    /* point touch flags */
 | 
			
		||||
    AF_FLAG_TOUCH_X = 1 << 6,
 | 
			
		||||
    AF_FLAG_TOUCH_Y = 1 << 7,
 | 
			
		||||
 | 
			
		||||
    /* candidates for weak interpolation have this flag set */
 | 
			
		||||
    AF_FLAG_WEAK_INTERPOLATION = 1 << 8,
 | 
			
		||||
 | 
			
		||||
    /* all inflection points in the outline have this flag set */
 | 
			
		||||
    AF_FLAG_INFLECTION = 1 << 9
 | 
			
		||||
 | 
			
		||||
  } AF_Flags;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* edge hint flags */
 | 
			
		||||
  typedef enum  AF_Edge_Flags_
 | 
			
		||||
  {
 | 
			
		||||
    AF_EDGE_NORMAL = 0,
 | 
			
		||||
    AF_EDGE_ROUND  = 1 << 0,
 | 
			
		||||
    AF_EDGE_SERIF  = 1 << 1,
 | 
			
		||||
    AF_EDGE_DONE   = 1 << 2
 | 
			
		||||
 | 
			
		||||
  } AF_Edge_Flags;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct AF_PointRec_*    AF_Point;
 | 
			
		||||
  typedef struct AF_SegmentRec_*  AF_Segment;
 | 
			
		||||
  typedef struct AF_EdgeRec_*     AF_Edge;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  AF_PointRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UShort  flags;    /* point flags used by hinter   */
 | 
			
		||||
    FT_Char    in_dir;   /* direction of inwards vector  */
 | 
			
		||||
    FT_Char    out_dir;  /* direction of outwards vector */
 | 
			
		||||
 | 
			
		||||
    FT_Pos     ox, oy;   /* original, scaled position                   */
 | 
			
		||||
    FT_Short   fx, fy;   /* original, unscaled position (font units)    */
 | 
			
		||||
    FT_Pos     x, y;     /* current position                            */
 | 
			
		||||
    FT_Pos     u, v;     /* current (x,y) or (y,x) depending on context */
 | 
			
		||||
 | 
			
		||||
    AF_Point   next;     /* next point in contour     */
 | 
			
		||||
    AF_Point   prev;     /* previous point in contour */
 | 
			
		||||
 | 
			
		||||
  } AF_PointRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  AF_SegmentRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Byte     flags;       /* edge/segment flags for this segment */
 | 
			
		||||
    FT_Char     dir;         /* segment direction                   */
 | 
			
		||||
    FT_Short    pos;         /* position of segment                 */
 | 
			
		||||
    FT_Short    min_coord;   /* minimum coordinate of segment       */
 | 
			
		||||
    FT_Short    max_coord;   /* maximum coordinate of segment       */
 | 
			
		||||
    FT_Short    height;      /* the hinted segment height           */
 | 
			
		||||
 | 
			
		||||
    AF_Edge     edge;        /* the segment's parent edge           */
 | 
			
		||||
    AF_Segment  edge_next;   /* link to next segment in parent edge */
 | 
			
		||||
 | 
			
		||||
    AF_Segment  link;        /* (stem) link segment        */
 | 
			
		||||
    AF_Segment  serif;       /* primary segment for serifs */
 | 
			
		||||
    FT_Pos      num_linked;  /* number of linked segments  */
 | 
			
		||||
    FT_Pos      score;       /* used during stem matching  */
 | 
			
		||||
    FT_Pos      len;         /* used during stem matching  */
 | 
			
		||||
 | 
			
		||||
    AF_Point    first;       /* first point in edge segment             */
 | 
			
		||||
    AF_Point    last;        /* last point in edge segment              */
 | 
			
		||||
    AF_Point*   contour;     /* ptr to first point of segment's contour */
 | 
			
		||||
 | 
			
		||||
  } AF_SegmentRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  AF_EdgeRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Short    fpos;       /* original, unscaled position (font units) */
 | 
			
		||||
    FT_Pos      opos;       /* original, scaled position                */
 | 
			
		||||
    FT_Pos      pos;        /* current position                         */
 | 
			
		||||
 | 
			
		||||
    FT_Byte     flags;      /* edge flags                                   */
 | 
			
		||||
    FT_Char     dir;        /* edge direction                               */
 | 
			
		||||
    FT_Fixed    scale;      /* used to speed up interpolation between edges */
 | 
			
		||||
    AF_Width    blue_edge;  /* non-NULL if this is a blue edge              */
 | 
			
		||||
 | 
			
		||||
    AF_Edge     link;
 | 
			
		||||
    AF_Edge     serif;
 | 
			
		||||
    FT_Short    num_linked;
 | 
			
		||||
 | 
			
		||||
    FT_Int      score;
 | 
			
		||||
 | 
			
		||||
    AF_Segment  first;
 | 
			
		||||
    AF_Segment  last;
 | 
			
		||||
 | 
			
		||||
  } AF_EdgeRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  AF_AxisHintsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Int        num_segments;
 | 
			
		||||
    FT_Int        max_segments;
 | 
			
		||||
    AF_Segment    segments;
 | 
			
		||||
#ifdef AF_SORT_SEGMENTS
 | 
			
		||||
    FT_Int        mid_segments;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    FT_Int        num_edges;
 | 
			
		||||
    FT_Int        max_edges;
 | 
			
		||||
    AF_Edge       edges;
 | 
			
		||||
 | 
			
		||||
    AF_Direction  major_dir;
 | 
			
		||||
 | 
			
		||||
  } AF_AxisHintsRec, *AF_AxisHints;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  AF_GlyphHintsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Memory         memory;
 | 
			
		||||
 | 
			
		||||
    FT_Fixed          x_scale;
 | 
			
		||||
    FT_Pos            x_delta;
 | 
			
		||||
 | 
			
		||||
    FT_Fixed          y_scale;
 | 
			
		||||
    FT_Pos            y_delta;
 | 
			
		||||
 | 
			
		||||
    FT_Pos            edge_distance_threshold;
 | 
			
		||||
 | 
			
		||||
    FT_Int            max_points;
 | 
			
		||||
    FT_Int            num_points;
 | 
			
		||||
    AF_Point          points;
 | 
			
		||||
 | 
			
		||||
    FT_Int            max_contours;
 | 
			
		||||
    FT_Int            num_contours;
 | 
			
		||||
    AF_Point*         contours;
 | 
			
		||||
 | 
			
		||||
    AF_AxisHintsRec   axis[AF_DIMENSION_MAX];
 | 
			
		||||
 | 
			
		||||
    FT_UInt32         scaler_flags;  /* copy of scaler flags     */
 | 
			
		||||
    FT_UInt32         other_flags;   /* free for script-specific */
 | 
			
		||||
                                     /* implementations          */
 | 
			
		||||
    AF_ScriptMetrics  metrics;
 | 
			
		||||
 | 
			
		||||
    FT_Pos            xmin_delta;    /* used for warping */
 | 
			
		||||
    FT_Pos            xmax_delta;
 | 
			
		||||
    
 | 
			
		||||
  } AF_GlyphHintsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_TEST_SCALER( h, f )  ( (h)->scaler_flags & (f) )
 | 
			
		||||
#define AF_HINTS_TEST_OTHER( h, f )   ( (h)->other_flags  & (f) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef AF_DEBUG
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_DO_HORIZONTAL( h )                                     \
 | 
			
		||||
          ( !_af_debug_disable_horz_hints                            && \
 | 
			
		||||
            !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_HORIZONTAL ) )
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_DO_VERTICAL( h )                                     \
 | 
			
		||||
          ( !_af_debug_disable_vert_hints                          && \
 | 
			
		||||
            !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_VERTICAL ) )
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_DO_ADVANCE( h )                                \
 | 
			
		||||
          !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_ADVANCE )
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_DO_BLUES( h )  ( !_af_debug_disable_blue_hints )
 | 
			
		||||
 | 
			
		||||
#else /* !AF_DEBUG */
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_DO_HORIZONTAL( h )                                \
 | 
			
		||||
          !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_HORIZONTAL )
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_DO_VERTICAL( h )                                \
 | 
			
		||||
          !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_VERTICAL )
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_DO_ADVANCE( h )                                \
 | 
			
		||||
          !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_ADVANCE )
 | 
			
		||||
 | 
			
		||||
#define AF_HINTS_DO_BLUES( h )  1
 | 
			
		||||
 | 
			
		||||
#endif /* !AF_DEBUG */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( AF_Direction )
 | 
			
		||||
  af_direction_compute( FT_Pos  dx,
 | 
			
		||||
                        FT_Pos  dy );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( FT_Error )
 | 
			
		||||
  af_axis_hints_new_segment( AF_AxisHints  axis,
 | 
			
		||||
                             FT_Memory     memory,
 | 
			
		||||
                             AF_Segment   *asegment );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( FT_Error)
 | 
			
		||||
  af_axis_hints_new_edge( AF_AxisHints  axis,
 | 
			
		||||
                          FT_Int        fpos,
 | 
			
		||||
                          AF_Direction  dir,
 | 
			
		||||
                          FT_Memory     memory,
 | 
			
		||||
                          AF_Edge      *edge );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_glyph_hints_init( AF_GlyphHints  hints,
 | 
			
		||||
                       FT_Memory      memory );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   *  recompute all AF_Point in a AF_GlyphHints from the definitions
 | 
			
		||||
   *  in a source outline
 | 
			
		||||
   */
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_glyph_hints_rescale( AF_GlyphHints     hints,
 | 
			
		||||
                          AF_ScriptMetrics  metrics );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( FT_Error )
 | 
			
		||||
  af_glyph_hints_reload( AF_GlyphHints  hints,
 | 
			
		||||
                         FT_Outline*    outline,
 | 
			
		||||
                         FT_Bool        get_inflections );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_glyph_hints_save( AF_GlyphHints  hints,
 | 
			
		||||
                       FT_Outline*    outline );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_glyph_hints_align_edge_points( AF_GlyphHints  hints,
 | 
			
		||||
                                    AF_Dimension   dim );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_glyph_hints_align_strong_points( AF_GlyphHints  hints,
 | 
			
		||||
                                      AF_Dimension   dim );
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_glyph_hints_align_weak_points( AF_GlyphHints  hints,
 | 
			
		||||
                                    AF_Dimension   dim );
 | 
			
		||||
 | 
			
		||||
#ifdef AF_USE_WARPER
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_glyph_hints_scale_dim( AF_GlyphHints  hints,
 | 
			
		||||
                            AF_Dimension   dim,
 | 
			
		||||
                            FT_Fixed       scale,
 | 
			
		||||
                            FT_Pos         delta );
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  FT_LOCAL( void )
 | 
			
		||||
  af_glyph_hints_done( AF_GlyphHints  hints );
 | 
			
		||||
 | 
			
		||||
/* */
 | 
			
		||||
 | 
			
		||||
#define AF_SEGMENT_LEN( seg )          ( (seg)->max_coord - (seg)->min_coord )
 | 
			
		||||
 | 
			
		||||
#define AF_SEGMENT_DIST( seg1, seg2 )  ( ( (seg1)->pos > (seg2)->pos )   \
 | 
			
		||||
                                           ? (seg1)->pos - (seg2)->pos   \
 | 
			
		||||
                                           : (seg2)->pos - (seg1)->pos )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __AFHINTS_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										134
									
								
								src/autofit/afindic.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								src/autofit/afindic.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,134 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afindic.c                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auto-fitter hinting routines for Indic scripts (body).               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2007 by                                                      */
 | 
			
		||||
/*  Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  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 "aftypes.h"
 | 
			
		||||
#include "aflatin.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef AF_CONFIG_OPTION_INDIC
 | 
			
		||||
 | 
			
		||||
#include "afindic.h"
 | 
			
		||||
#include "aferrors.h"
 | 
			
		||||
#include "afcjk.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef AF_USE_WARPER
 | 
			
		||||
#include "afwarp.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  static FT_Error
 | 
			
		||||
  af_indic_metrics_init( AF_LatinMetrics  metrics,
 | 
			
		||||
                         FT_Face          face )
 | 
			
		||||
  {
 | 
			
		||||
    /* use CJK routines */
 | 
			
		||||
    return af_cjk_metrics_init( metrics, face );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  static void
 | 
			
		||||
  af_indic_metrics_scale( AF_LatinMetrics  metrics,
 | 
			
		||||
                          AF_Scaler        scaler )
 | 
			
		||||
  {
 | 
			
		||||
    /* use CJK routines */
 | 
			
		||||
    af_cjk_metrics_scale( metrics, scaler );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  static FT_Error
 | 
			
		||||
  af_indic_hints_init( AF_GlyphHints    hints,
 | 
			
		||||
                       AF_LatinMetrics  metrics )
 | 
			
		||||
  {
 | 
			
		||||
    /* use CJK routines */
 | 
			
		||||
    return af_cjk_hints_init( hints, metrics );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  static FT_Error
 | 
			
		||||
  af_indic_hints_apply( AF_GlyphHints    hints,
 | 
			
		||||
                        FT_Outline*      outline,
 | 
			
		||||
                        AF_LatinMetrics  metrics)
 | 
			
		||||
  {
 | 
			
		||||
    /* use CJK routines */
 | 
			
		||||
    return af_cjk_hints_apply( hints, outline, metrics );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*****                I N D I C   S C R I P T   C L A S S            *****/
 | 
			
		||||
  /*****                                                               *****/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  static const AF_Script_UniRangeRec  af_indic_uniranges[] =
 | 
			
		||||
  {
 | 
			
		||||
#if 0
 | 
			
		||||
    { 0x0100,  0xFFFF },  /* why this? */
 | 
			
		||||
#endif
 | 
			
		||||
    { 0x0900, 0x0DFF},    /* Indic Range */
 | 
			
		||||
    { 0,       0 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
 | 
			
		||||
  af_indic_script_class =
 | 
			
		||||
  {
 | 
			
		||||
    AF_SCRIPT_INDIC,
 | 
			
		||||
    af_indic_uniranges,
 | 
			
		||||
 | 
			
		||||
    sizeof( AF_LatinMetricsRec ),
 | 
			
		||||
 | 
			
		||||
    (AF_Script_InitMetricsFunc) af_indic_metrics_init,
 | 
			
		||||
    (AF_Script_ScaleMetricsFunc)af_indic_metrics_scale,
 | 
			
		||||
    (AF_Script_DoneMetricsFunc) NULL,
 | 
			
		||||
 | 
			
		||||
    (AF_Script_InitHintsFunc)   af_indic_hints_init,
 | 
			
		||||
    (AF_Script_ApplyHintsFunc)  af_indic_hints_apply
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
#else /* !AF_CONFIG_OPTION_INDIC */
 | 
			
		||||
 | 
			
		||||
  static const AF_Script_UniRangeRec  af_indic_uniranges[] =
 | 
			
		||||
  {
 | 
			
		||||
    { 0, 0 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
 | 
			
		||||
  af_indic_script_class =
 | 
			
		||||
  {
 | 
			
		||||
    AF_SCRIPT_INDIC,
 | 
			
		||||
    af_indic_uniranges,
 | 
			
		||||
 | 
			
		||||
    sizeof( AF_LatinMetricsRec ),
 | 
			
		||||
 | 
			
		||||
    (AF_Script_InitMetricsFunc) NULL,
 | 
			
		||||
    (AF_Script_ScaleMetricsFunc)NULL,
 | 
			
		||||
    (AF_Script_DoneMetricsFunc) NULL,
 | 
			
		||||
 | 
			
		||||
    (AF_Script_InitHintsFunc)   NULL,
 | 
			
		||||
    (AF_Script_ApplyHintsFunc)  NULL
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
#endif /* !AF_CONFIG_OPTION_INDIC */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
							
								
								
									
										41
									
								
								src/autofit/afindic.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/autofit/afindic.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  afindic.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Auto-fitter hinting routines for Indic scripts (specification).      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2007 by                                                      */
 | 
			
		||||
/*  Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  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 __AFINDIC_H__
 | 
			
		||||
#define __AFINDIC_H__
 | 
			
		||||
 | 
			
		||||
#include "afhints.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* the Indic-specific script class */
 | 
			
		||||
 | 
			
		||||
  FT_CALLBACK_TABLE const AF_ScriptClassRec
 | 
			
		||||
  af_indic_script_class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __AFINDIC_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user