diff options
47 files changed, 1034 insertions, 1156 deletions
@@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -91,7 +91,7 @@ else # A configuration sub-Makefile is present -- simply run it. # - all: build_freetype + all: single modules: make_module_list diff --git a/config/ansi/ansi.mk b/config/ansi/ansi.mk index 8e7bf38d..c0cfcaf4 100644 --- a/config/ansi/ansi.mk +++ b/config/ansi/ansi.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -36,7 +36,7 @@ PLATFORM := ansi OBJ_DIR := obj -# The directory where all library files are placed +# The directory where all library files are placed. # # By default, this is the same as $(OBJ_DIR), however, this can be changed # to suit particular needs. @@ -121,7 +121,7 @@ ifdef BUILD_FREETYPE # It is part of the system-specific sub-Makefile because not all # librarians accept a simple syntax like: # - # librarian library_file {list of object files} + # librarian library_file {list of object files} # $(FT_LIBRARY): $(OBJECTS_LIST) -$(DELETE) $@ diff --git a/config/detect.mk b/config/detect.mk index 74914e4e..355fcb30 100644 --- a/config/detect.mk +++ b/config/detect.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -40,17 +40,17 @@ # If TOP is not defined, default it to `.' # ifndef TOP -TOP := . + TOP := . endif -# Set auto-detection default to `ansi'. +# Set auto-detection default to `ansi' resp. UNIX-like operating systems. # Note that we delay the evaluation of $(BUILD_CONFIG_), $(BUILD), and # $(CONFIG_RULES). # -PLATFORM := ansi -DELETE := $(RM) -COPY := cp -SEP := / +PLATFORM := ansi +DELETE := $(RM) +COPY := cp +SEP := / BUILD_CONFIG_ = $(TOP)$(SEP)config$(SEP) BUILD = $(BUILD_CONFIG_)$(PLATFORM) @@ -84,7 +84,7 @@ ifndef CONFIG_FILE endif # The following targets are equivalent, with the exception that they use -# slightly different syntaxes for the `echo' command. +# a slightly different syntax for the `echo' command. # # std_setup: defined for most (i.e. Unix-like) platforms # dos_setup: defined for Dos-ish platforms like Dos, Windows & OS/2 diff --git a/config/dos/detect.mk b/config/dos/detect.mk index e491e9e6..f8c17069 100644 --- a/config/dos/detect.mk +++ b/config/dos/detect.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -25,8 +25,7 @@ ifeq ($(PLATFORM),ansi) is_dos := $(findstring Dos,$(shell ver)) # We try to recognize a Dos session under OS/2. The `ver' command - # returns `Operating System/2 ...' there, so `is_dos' should be empty - # there. + # returns `Operating System/2 ...' there, so `is_dos' should be empty. # # To recognize a Dos session under OS/2, we check COMSPEC for the # substring `MDOS\COMMAND' @@ -49,6 +48,8 @@ ifeq ($(PLATFORM),ansi) CC := gcc endif + # additionally, we provide hooks for various other compilers + # ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C CONFIG_FILE := dos-tcc.mk SEP := $(BACKSLASH) @@ -63,14 +64,14 @@ ifeq ($(PLATFORM),ansi) .PHONY: watcom endif - ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16 bits + ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit CONFIG_FILE := dos-bcc.mk SEP := $(BACKSLASH) CC := bcc .PHONY: borlandc16 endif - ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32 bits + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit CONFIG_FILE := dos-bcc.mk SEP := $(BACKSLASH) CC := bcc32 diff --git a/config/dos/dos-gcc.mk b/config/dos/dos-gcc.mk index c7b4ce13..79bd1823 100644 --- a/config/dos/dos-gcc.mk +++ b/config/dos/dos-gcc.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 diff --git a/config/freetype.mk b/config/freetype.mk index 72d96be9..dc3043a0 100644 --- a/config/freetype.mk +++ b/config/freetype.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -17,27 +17,72 @@ # OTHER MAKEFILES. +# The following variables (set by other Makefile components, in the +# environment, or on the command line) are used: +# +# BUILD The architecture dependent directory, +# e.g. `$(TOP)/config/unix'. +# +# OBJ_DIR The directory in which object files are created. +# +# LIB_DIR The directory in which the library is created. +# +# INCLUDES A list of directories to be included additionally. +# Usually empty. +# +# CFLAGS Compilation flags. This overrides the default settings +# in the platform-specific configuration files. +# +# FTSYS_SRC If set, its value is used as the name of a replacement +# file for `src/base/ftsystem.c'. +# +# FTDEBUG_SRC If set, its value is used as the name of a replacement +# file for `src/base/ftdebug.c'. [For a normal build, this +# file does nothing.] +# +# FT_MODULE_LIST The file which contains the list of modules for the +# current build. Usually, this is automatically created by +# `modules.mk'. +# +# BASE_OBJ_S +# BASE_OBJ_M A list of base objects (for single object and multiple +# object builds, respectively). Set up in +# `src/base/rules.mk'. +# +# BASE_EXT_OBJ A list of base extension objects. Set up in +# `src/base/rules.mk'. +# +# DRV_OBJ_S +# DRV_OBJ_M A list of driver objects (for single object and multiple +# object builds, respectively). Set up cumulatively in +# `src/<driver>/rules.mk'. +# +# TOP, SEP, +# LIBRARY, CC, +# A, I, O, T Check `config.mk' for details. + + # The targets `objects' and `library' are defined at the end of this -# Makefile when all rules have been included. +# Makefile after all other rules have been included. # -.PHONY: build_freetype objects library +.PHONY: single objects library -# default target -- build objects and library +# default target -- build single objects and library # -build_freetype: objects library +single: objects library # `multi' target -- build multiple objects and library # multi: objects library -# The FreeType source directory. +# The FreeType source directory, usually `./src'. # SRC := $(TOP)$(SEP)src -# The directory where the base layer components are placed. By default, -# this is `freetype/src/base'. +# The directory where the base layer components are placed, usually +# `./src/base'. # BASE_DIR := $(SRC)$(SEP)base @@ -45,7 +90,7 @@ BASE_DIR := $(SRC)$(SEP)base # A few short-cuts in order to avoid typing $(SEP) all the time for the # directory separator. # -# For example: SRC_ equals to `./src/' where `.' is $(TOP). +# For example: $(SRC_) equals to `./src/' where `.' is $(TOP). # # SRC_ := $(SRC)$(SEP) @@ -57,7 +102,7 @@ INTERNAL_ := $(PUBLIC_)internal$(SEP) CONFIG_ := $(PUBLIC_)config$(SEP) -# The name of the final library file. +# The final name of the library file. # FT_LIBRARY := $(LIB_)$(LIBRARY).$A @@ -76,7 +121,7 @@ INCLUDE_FLAGS = $(INCLUDES:%=$I%) # C flags used for the compilation of an object file. This must include at -# least the paths for the `base' and `config/<system>' directories, +# least the paths for the `base' and `config/<system>' directories; # debug/optimization/warning flags + ansi compliance if needed. # FT_CFLAGS = $(CFLAGS) $(INCLUDE_FLAGS) @@ -84,72 +129,71 @@ FT_CC = $(CC) $(FT_CFLAGS) FT_COMPILE = $(CC) $(ANSIFLAGS) $(FT_CFLAGS) -# include the `modules' rules file +# Include the `modules' rules file. # include $(TOP)/config/modules.mk -# Free the lists of driver objects. +# Initialize the list of objects. # -COMPONENTS_LIST := -DRIVERS_LIST := -OBJECTS_LIST := +OBJECTS_LIST := + # Define $(PUBLIC_H) as the list of all public header files located in -# `$(TOP)/include'. +# `$(TOP)/include/freetype'. $(BASE_H) and $(CONFIG_H) are defined +# similarly. # -PUBLIC_H := $(wildcard $(PUBLIC_)*.h) -BASE_H := $(wildcard $(INTERNAL_)*.h) - -# System-specific component -- this must be defined in this Makefile for -# easy updates. The default ANSI ftsystem.c is located in -# `freetype/config/ftsystem.c'. However, some system-specific configuration -# might define $(FTSYS_SRC) to fetch it in other places, like -# `freetype/config/<system>/ftsystem.c'. +# This is used to simplify the dependency rules -- if one of these files +# changes, the whole library is recompiled. # -# $(BASE_H) is defined in `src/base/rules.mk' and contains the list of all -# base layer header files. +PUBLIC_H := $(wildcard $(PUBLIC_)*.h) +BASE_H := $(wildcard $(INTERNAL_)*.h) +CONFIG_H := $(wildcard $(CONFIG_)*.h) + +FREETYPE_H := $(PUBLIC_H) $(BASE_H) $(CONFIG_H) + + +# ftsystem component # ifndef FTSYS_SRC FTSYS_SRC = $(BASE_)ftsystem.c endif + FTSYS_OBJ = $(OBJ_)ftsystem.$O OBJECTS_LIST += $(FTSYS_OBJ) -$(FTSYS_OBJ): $(FTSYS_SRC) $(BASE_H) +$(FTSYS_OBJ): $(FTSYS_SRC) $(FREETYPE_H) $(FT_COMPILE) $T$@ $< # ftdebug component # -# FTDebug contains code used to print traces and errors. It is normally -# empty for a release build (see ftoption.h). -# -FTDEBUG_SRC = $(BASE_)ftdebug.c +ifndef FTDEBUG_SRC + FTDEBUG_SRC = $(BASE_)ftdebug.c +endif + FTDEBUG_OBJ = $(OBJ_)ftdebug.$O OBJECTS_LIST += $(FTDEBUG_OBJ) -$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(BASE_H) +$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H) $(FT_COMPILE) $T$@ $< - - # Include all rule files from FreeType components. # include $(wildcard $(SRC)/*/rules.mk) -# FTInit file +# ftinit component # # The C source `ftinit.c' contains the FreeType initialization routines. # It is able to automatically register one or more drivers when the API # function FT_Init_FreeType() is called. # # The set of initial drivers is determined by the driver Makefiles -# includes above. Each driver Makefile updates the FTINIT_xxxx lists +# includes above. Each driver Makefile updates the FTINIT_xxx lists # which contain additional include paths and macros used to compile the # single `ftinit.c' source. # @@ -158,7 +202,7 @@ FTINIT_OBJ := $(OBJ_)ftinit.$O OBJECTS_LIST += $(FTINIT_OBJ) -$(FTINIT_OBJ): $(FTINIT_SRC) $(PUBLIC_H) $(FT_MODULE_LIST) +$(FTINIT_OBJ): $(FTINIT_SRC) $(FREETYPE_H) $(FT_MODULE_LIST) $(FT_COMPILE) $T$@ $< @@ -221,11 +265,10 @@ remove_config_mk: # The `config.mk' file must define `clean_freetype' and # `distclean_freetype'. Implementations may use to relay these to either -# the `std' or `dos' versions, or simply provide their own implementation. +# the `std' or `dos' versions from above, or simply provide their own +# implementation. # clean: clean_freetype distclean: distclean_freetype remove_config_mk # EOF - - diff --git a/config/modules.mk b/config/modules.mk index f6743572..97f691de 100644 --- a/config/modules.mk +++ b/config/modules.mk @@ -5,7 +5,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -17,12 +17,12 @@ # This file is in charge of handling the generation of the modules list -# file, normally located in `config/ftmodule.h'. +# file. .PHONY: make_module_list clean_module_list remake_module_list # MODULE_LIST, as its name suggests, indicates where the modules list -# resides. For now, it is in `config/ftmodule.h'. +# resides. For now, it is in `include/freetype/config/ftmodule.h'. # ifndef FT_MODULE_LIST FT_MODULE_LIST := $(TOP)$(SEP)include$(SEP)freetype$(SEP)config$(SEP)ftmodule.h @@ -30,6 +30,9 @@ endif # To build the modules list, we invoke the `make_module_list' target. # +# This rule is commented out by default since FreeType comes already with +# a ftmodule.h file. +# #$(FT_MODULE_LIST): make_module_list # Before the modules list file can be generated, we must remove the file in diff --git a/config/os2/detect.mk b/config/os2/detect.mk index 24d8ec88..ed0f1249 100644 --- a/config/os2/detect.mk +++ b/config/os2/detect.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -14,6 +14,7 @@ ifeq ($(PLATFORM),ansi) + ifdef OS2_SHELL PLATFORM := os2 @@ -23,6 +24,8 @@ ifeq ($(PLATFORM),ansi) CONFIG_FILE := os2-gcc.mk # gcc-emx by default SEP := / + # additionally, we provide hooks for various other compilers + # ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ CONFIG_FILE := os2-icc.mk SEP := $(BACKSLASH) @@ -37,14 +40,14 @@ ifeq ($(PLATFORM),ansi) .PHONY: watcom endif - ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32 bits + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32-bit CONFIG_FILE := os2-bcc.mk SEP := $(BACKSLASH) CC := bcc32 .PHONY: borlandc endif - ifneq ($(findstring devel,$(MAKECMDGOALS)),) + ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target CONFIG_FILE := os2-dev.mk CC := gcc SEP := / diff --git a/config/os2/os2-dev.mk b/config/os2/os2-dev.mk index 2abb3d76..7cab22b1 100644 --- a/config/os2/os2-dev.mk +++ b/config/os2/os2-dev.mk @@ -1,24 +1,22 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for OS/2 + gcc -#* THIS VERSION TURNS OFF OPTIMIZATIONS FOR DEBUGGING !! -#* -#* Copyright 1996-2000 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. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 configuration rules for OS/2 + gcc +# +# Development version without optimizations. +# + + +# Copyright 1996-2000 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 TOP -TOP := . + TOP := . endif DELETE := del @@ -28,129 +26,110 @@ BUILD := $(TOP)/config/os2 PLATFORM := os2 CC := gcc -# the directory where all object files are placed +# The directory where all object files are placed. # -# Note that this is not $(TOP)/obj !! -# This lets you build the library in your own directory -# with something like : -# -# set TOP=....../path/to/freetype2/top/dir... -# mkdir obj -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile +# Note that this is not $(TOP)/obj! +# This lets you build the library in your own directory with something like # +# set TOP=.../path/to/freetype2/top/dir... +# mkdir obj +# make -f %TOP%/Makefile setup [options] +# make -f %TOP%/Makefile # OBJ_DIR := obj -# the directory where all library files are placed +# The directory where all library files are placed. # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # -L := -l +D := -D -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # -D := -D +L := -l -# Target flag - beware, there is a space after the 'o' !! +# Target flag. # -# -T := -o +T := -o # Don't remove this comment line! We need the space after `-o'. # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c -g -O0 -Wall + CFLAGS := -c -g -O0 -Wall endif -# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant -# nothing (if it already is by default like LCC). +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := -ansi -pedantic ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP)/config/freetype.mk -clean_freetype: clean_freetype_dos -distclean_freetype: distclean_freetype_dos + # The cleanup targets. + # + clean_freetype: clean_freetype_dos + distclean_freetype: distclean_freetype_dos -# Librarian to use to build the static library -# -FT_LIBRARIAN := $(AR) -r - - -# This final rule is used to link all object files into a single -# library. It is part of the system-specific sub-Makefile because not -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $@ - $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) - - -# Cleaning rules -# -DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR)) - -clean_freetype_objects: - -del $(DIR_OBJ)\*.$O - -clean_freetype_lib: - -del $(subst $(SEP),\,$(FT_LIBRARY)) - -clean: clean_freetype_objects + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r + # This final rule is used to link all object files into a single library. + # It is part of the system-specific sub-Makefile because not all + # librarians accept a simple syntax like + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $@ + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) endif - +# EOF diff --git a/config/os2/os2-gcc.mk b/config/os2/os2-gcc.mk index 5ce1ce2e..e94728b1 100644 --- a/config/os2/os2-gcc.mk +++ b/config/os2/os2-gcc.mk @@ -1,23 +1,20 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for OS/2 + gcc -#* -#* Copyright 1996-2000 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. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 configuration rules for OS/2 + gcc +# + + +# Copyright 1996-2000 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 TOP -TOP := . + TOP := . endif DELETE := del @@ -27,129 +24,110 @@ BUILD := $(TOP)/config/os2 PLATFORM := os2 CC := gcc -# the directory where all object files are placed -# -# Note that this is not $(TOP)/obj !! -# This lets you build the library in your own directory -# with something like : +# The directory where all object files are placed. # -# set TOP=....../path/to/freetype2/top/dir... -# mkdir obj -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile +# Note that this is not $(TOP)/obj! +# This lets you build the library in your own directory with something like # +# set TOP=.../path/to/freetype2/top/dir... +# mkdir obj +# make -f %TOP%/Makefile setup [options] +# make -f %TOP%/Makefile # OBJ_DIR := obj -# the directory where all library files are placed +# The directory where all library files are placed. # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # -L := -l +D := -D -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # -D := -D +L := -l -# Target flag - beware, there is a space after the 'o' !! -# +# Target flag. # -T := -o +T := -o # Don't remove this comment line! We need the space after `-o'. # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c -g -O6 -Wall + CFLAGS := -c -g -O6 -Wall endif -# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant -# nothing (if it already is by default like LCC). +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := -ansi -pedantic ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP)/config/freetype.mk -clean_freetype: clean_freetype_dos -distclean_freetype: distclean_freetype_dos - -# Librarian to use to build the static library -# -FT_LIBRARIAN := $(AR) -r - - -# This final rule is used to link all object files into a single -# library. It is part of the system-specific sub-Makefile because not -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $@ - $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) + # The cleanup targets. + # + clean_freetype: clean_freetype_dos + distclean_freetype: distclean_freetype_dos - -# Cleaning rules -# -DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR)) - -clean_freetype_objects: - -del $(DIR_OBJ)\*.$O - -clean_freetype_lib: - -del $(subst $(SEP),\,$(FT_LIBRARY)) - -clean: clean_freetype_objects + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r + # This final rule is used to link all object files into a single library. + # It is part of the system-specific sub-Makefile because not all + # librarians accept a simple syntax like + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) endif - +# EOF diff --git a/config/unix/detect.mk b/config/unix/detect.mk index 28a5f346..df3fc3dc 100644 --- a/config/unix/detect.mk +++ b/config/unix/detect.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -19,10 +19,6 @@ ifeq ($(PLATFORM),ansi) -# Some Unix systems like *BSD do not have a /etc/inittab so we commented -# the line.. (thanks to Yamano-uchi, Hidetoshi for pointing this out).. -# -# has_inittab := $(strip $(wildcard /etc/inittab)) has_init := $(strip $(wildcard /sbin/init)) ifneq ($(has_init),) @@ -30,14 +26,14 @@ ifeq ($(PLATFORM),ansi) COPY := cp DELETE := rm -f - # Test whether we're using gcc. If so, we select the `unix-gcc.mk' + # Test whether we are using gcc. If so, we select the `unix-gcc.mk' # configuration file. Otherwise, the standard `unix.mk' is used which # simply calls `cc -c' with no extra arguments. # # Feel free to add support for other platform specific compilers in this # directory (e.g. solaris.mk + changes here to detect the platform). # - ifeq ($(CC),gcc) + ifeq ($(firstword $(CC)),gcc) is_gcc := 1 else ifneq ($(findstring gcc,$(shell $(CC) -v 2>&1)),) diff --git a/config/unix/unix-dev.mk b/config/unix/unix-dev.mk index ec91e126..591ad267 100644 --- a/config/unix/unix-dev.mk +++ b/config/unix/unix-dev.mk @@ -1,24 +1,22 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for a standard Unix + GCC -#* NOTE: THIS VERSION TURNS OFF ALL OPTIMIZATIONS FOR DEBUGGING !! -#* -#* Copyright 1996-2000 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. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 configuration rules for the gcc compiler under UNIX +# +# Development version without optimizations. +# + + +# Copyright 1996-2000 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 TOP -TOP := . + TOP := . endif DELETE := rm -f @@ -27,105 +25,110 @@ HOSTSEP := $(SEP) BUILD := $(TOP)/config/unix PLATFORM := unix -# the directory where all object files are placed -# -# Note that this is not $(TOP)/obj !! -# This lets you build the library in your own directory -# with something like : +# The directory where all object files are placed. # -# set TOP=....../path/to/freetype2/top/dir... -# mkdir obj -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile +# Note that this is not $(TOP)/obj! +# This lets you build the library in your own directory with something like # +# set TOP=.../path/to/freetype2/top/dir... +# mkdir obj +# make -f $TOP/Makefile setup [options] +# make -f $TOP/Makefile # OBJ_DIR := obj -# the directory where all library files are placed +# The directory where all library files are placed. # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # -L := -l +D := -D -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # -D := -D +L := -l -# Target flag - beware, there is a space after the 'o' !! -# +# Target flag. # -T := -o +T := -o # Don't remove this comment line! We need the space after `-o'. + # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c -g -O0 -Wall + CFLAGS := -c -g -O0 -Wall endif -# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant -# nothing (if it already is by default like LCC). +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := -ansi -pedantic + ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP)/config/freetype.mk -clean_freetype: clean_freetype_std -distclean_freetype: distclean_freetype_std + # The cleanup targets. + # + clean_freetype: clean_freetype_std + distclean_freetype: distclean_freetype_std + + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r -# This final rule is used to link all object files into a single -# library. It is part of the system-specific sub-Makefile because not -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $@ - $(AR) -r $@ $(OBJECTS_LIST) + + # This final rule is used to link all object files into a single library. + # It is part of the system-specific sub-Makefile because not all + # librarians accept a simple syntax like: + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $@ + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) endif + +# EOF diff --git a/config/unix/unix-gcc.mk b/config/unix/unix-gcc.mk index eee2eb1c..f14b6979 100644 --- a/config/unix/unix-gcc.mk +++ b/config/unix/unix-gcc.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -36,7 +36,7 @@ PLATFORM := unix OBJ_DIR := obj -# The directory where all library files are placed +# The directory where all library files are placed. # # By default, this is the same as $(OBJ_DIR), however, this can be changed # to suit particular needs. @@ -117,11 +117,11 @@ ifdef BUILD_FREETYPE FT_LIBRARIAN := $(AR) -r - # This final rule is used to link all object files into a single library. + # This final rule is used to link all object files into a single library. # It is part of the system-specific sub-Makefile because not all # librarians accept a simple syntax like: # - # librarian library_file {list of object files} + # librarian library_file {list of object files} # $(FT_LIBRARY): $(OBJECTS_LIST) -$(DELETE) $@ diff --git a/config/unix/unix.mk b/config/unix/unix.mk index 1d80e06e..c85653dc 100644 --- a/config/unix/unix.mk +++ b/config/unix/unix.mk @@ -1,23 +1,20 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for a standard Unix compiler -#* -#* Copyright 1996-2000 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. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 configuration rules for a standard Unix compiler +# + + +# Copyright 1996-2000 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 TOP -TOP := . + TOP := . endif DELETE := rm -f @@ -26,105 +23,110 @@ HOSTSEP := $(SEP) BUILD := $(TOP)/config/unix PLATFORM := unix -# the directory where all object files are placed -# -# Note that this is not $(TOP)/obj !! -# This lets you build the library in your own directory -# with something like : +# The directory where all object files are placed. # -# set TOP=....../path/to/freetype2/top/dir... -# mkdir obj -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile +# Note that this is not $(TOP)/obj! +# This lets you build the library in your own directory with something like # +# set TOP=.../path/to/freetype2/top/dir... +# mkdir obj +# make -f $TOP/Makefile setup [options] +# make -f $TOP/Makefile # OBJ_DIR := obj -# the directory where all library files are placed +# The directory where all library files are placed. # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # -L := -l +D := -D -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # -D := -D +L := -l -# Target flag - beware, there is a space after the 'o' !! -# +# Target flag. # -T := -o +T := -o # Don't remove this comment line! We need the space after `-o'. + # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c + CFLAGS := -c endif -# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant -# nothing (if it already is by default like LCC). +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := + ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP)/config/freetype.mk -clean_freetype: clean_freetype_std -distclean_freetype: distclean_freetype_std + # The cleanup targets. + # + clean_freetype: clean_freetype_std + distclean_freetype: distclean_freetype_std + + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r -# This final rule is used to link all object files into a single -# library. It is part of the system-specific sub-Makefile because not -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $@ - $(AR) -r $@ $(OBJECTS_LIST) + + # This final rule is used to link all object files into a single library. + # It is part of the system-specific sub-Makefile because not all + # librarians accept a simple syntax like: + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $@ + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) endif + +# EOF diff --git a/config/win32/detect.mk b/config/win32/detect.mk index cd777fbd..c2bf8cce 100644 --- a/config/win32/detect.mk +++ b/config/win32/detect.mk @@ -6,7 +6,7 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 @@ -25,13 +25,13 @@ ifeq ($(PLATFORM),ansi) # We test for the COMSPEC environment variable, then run the `ver' # command-line program to see if its output contains the word `Windows'. # - # If this is true, we're running a win32 platform (or an emulation). + # If this is true, we are running a win32 platform (or an emulation). # else ifdef COMSPEC is_windows := $(findstring Windows,$(strip $(shell ver))) endif - endif #test NT + endif # test NT ifdef is_windows @@ -41,10 +41,12 @@ ifeq ($(PLATFORM),ansi) CONFIG_FILE := w32-gcc.mk # gcc Makefile by default SEP := / - ifeq ($(CC),cc) + ifeq ($(firstword $(CC)),cc) CC := gcc endif + # additionally, we provide hooks for various other compilers + # ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++ CONFIG_FILE := w32-vcc.mk SEP := $(BACKSLASH) @@ -73,7 +75,7 @@ ifeq ($(PLATFORM),ansi) lcc: setup endif - ifneq ($(findstring devel,$(MAKECMDGOALS)),) + ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target CONFIG_FILE := w32-dev.mk CC := gcc SEP := / diff --git a/config/win32/w32-dev.mk b/config/win32/w32-dev.mk index eaabc3ed..daa6a8af 100644 --- a/config/win32/w32-dev.mk +++ b/config/win32/w32-dev.mk @@ -1,28 +1,25 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for Win32 + GCC -#* THIS VERSION DISABLES OPTIMIZATIONS FOR DEBUGGING !! -#* -#* Copyright 1996-2000 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. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#* -#* NOTE : This version requires that GNU Make be invoked from the -#* Windows Shell (_not_ Cygwin BASH !!) -#* -#******************************************************************* +# +# FreeType 2 Configuration rules for Win32 + GCC +# +# Development version without optimizations. +# + + +# Copyright 1996-2000 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. +# +# NOTE: This version requires that GNU Make be invoked from the Windows +# Shell (_not_ Cygwin BASH)! +# ifndef TOP -TOP := . + TOP := . endif DELETE := del @@ -32,111 +29,110 @@ BUILD := $(TOP)/config/win32 PLATFORM := win32 CC := gcc -# the directory where all object files are placed +# The directory where all object files are placed. # -# Note that this is not $(TOP)/obj !! -# This lets you build the library in your own directory -# with something like : -# -# set TOP=....../path/to/freetype2/top/dir... -# mkdir obj -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile +# Note that this is not $(TOP)/obj! +# This lets you build the library in your own directory with something like # +# set TOP=.../path/to/freetype2/top/dir... +# mkdir obj +# make -f %TOP%/Makefile setup [options] +# make -f %TOP%/Makefile # OBJ_DIR := obj -# the directory where all library files are placed +# The directory where all library files are placed. # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # -L := -l +D := -D -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # -D := -D +L := -l -# Target flag - beware, there is a space after the 'o' !! -# +# Target flag. # -T := -o +T := -o # Don't remove this comment line! We need the space after `-o'. + # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c -g -O0 -Wall + CFLAGS := -c -g -O0 -Wall endif -# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant -# nothing (if it already is by default like LCC). +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := -ansi -pedantic + ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP)/config/freetype.mk -clean_freetype: clean_freetype_dos -distclean_freetype: distclean_freetype_dos + # The cleanup targets. + # + clean_freetype: clean_freetype_dos + distclean_freetype: distclean_freetype_dos -# Librarian to use to build the static library -# -FT_LIBRARIAN := $(AR) -r + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r -# This final rule is used to link all object files into a single -# library. It is part of the system-specific sub-Makefile because not -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul - $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) + # This final rule is used to link all object files into a single library. + # It is part of the system-specific sub-Makefile because not all + # librarians accept a simple syntax like + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) endif +# EOF diff --git a/config/win32/w32-gcc.mk b/config/win32/w32-gcc.mk index 62581c7f..c83c356a 100644 --- a/config/win32/w32-gcc.mk +++ b/config/win32/w32-gcc.mk @@ -1,27 +1,23 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for Win32 + GCC -#* -#* Copyright 1996-2000 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. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#* -#* NOTE : This version requires that GNU Make be invoked from the -#* Windows Shell (_not_ Cygwin BASH !!) -#* -#******************************************************************* +# +# FreeType 2 Configuration rules for Win32 + GCC +# + + +# Copyright 1996-2000 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. +# +# NOTE: This version requires that GNU Make be invoked from the Windows +# Shell (_not_ Cygwin BASH)! +# ifndef TOP -TOP := . + TOP := . endif DELETE := del @@ -31,111 +27,110 @@ BUILD := $(TOP)/config/win32 PLATFORM := win32 CC := gcc -# the directory where all object files are placed -# -# Note that this is not $(TOP)/obj !! -# This lets you build the library in your own directory -# with something like : +# The directory where all object files are placed. # -# set TOP=....../path/to/freetype2/top/dir... -# mkdir obj -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile +# Note that this is not $(TOP)/obj! +# This lets you build the library in your own directory with something like # +# set TOP=.../path/to/freetype2/top/dir... +# mkdir obj +# make -f %TOP%/Makefile setup [options] +# make -f %TOP%/Makefile # OBJ_DIR := obj -# the directory where all library files are placed +# The directory where all library files are placed. # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # -L := -l +D := -D -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # -D := -D +L := -l -# Target flag - beware, there is a space after the 'o' !! +# Target flag. # -# -T := -o +T := -o # Don't remove this comment line! We need the space after `-o'. + # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c -g -O6 -Wall + CFLAGS := -c -g -O6 -Wall endif -# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant -# nothing (if it already is by default like LCC). +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := -ansi -pedantic + ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP)/config/freetype.mk -clean_freetype: clean_freetype_dos -distclean_freetype: distclean_freetype_dos + # The cleanup targets. + # + clean_freetype: clean_freetype_dos + distclean_freetype: distclean_freetype_dos -# Librarian to use to build the static library -# -FT_LIBRARIAN := $(AR) -r + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r -# This final rule is used to link all object files into a single -# library. It is part of the system-specific sub-Makefile because not -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul - $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) + # This final rule is used to link all object files into a single library. + # It is part of the system-specific sub-Makefile because not all + # librarians accept a simple syntax like + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) endif +# EOF diff --git a/config/win32/w32-lcc.mk b/config/win32/w32-lcc.mk index 828d457c..c5ae106a 100644 --- a/config/win32/w32-lcc.mk +++ b/config/win32/w32-lcc.mk @@ -1,135 +1,127 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for Win32 + LCC -#* -#* Copyright 1996-2000 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. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 Configuration rules for Win32 + LCC +# + + +# Copyright 1996-2000 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 TOP -TOP := . + TOP := . endif DELETE := del SEP := / -HOSTSEP := \\ -BUILD := $(TOP)$(SEP)config$(SEP)win32 +HOSTSEP := $(strip \ ) +BUILD := $(TOP)/config/win32 PLATFORM := win32 CC := lcc -# the directory where all object files are placed -# -# Note that this is not $(TOP)/obj !! -# This lets you build the library in your own directory -# with something like : +# The directory where all object files are placed. # -# set TOP=....../path/to/freetype2/top/dir... -# mkdir obj -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile +# Note that this is not $(TOP)/obj! +# This lets you build the library in your own directory with something like # +# set TOP=.../path/to/freetype2/top/dir... +# mkdir obj +# make -f %TOP%/Makefile setup [options] +# make -f %TOP%/Makefile # OBJ_DIR := obj -# the directory where all library files are placed +# The directory where all library files are placed. # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := obj -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := lib -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := freetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # D := -D -# Target flag - LCC uses "-Fo" instead of "-o ", what a broken compiler -# -# -T := -Fo - -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # L := -Fl +# Target flag. +# +T := -Fo + # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c -g2 -O + CFLAGS := -c -g2 -O endif -# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant -# nothing (if it already is by default like LCC). +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := -ifdef BUILD_FREETYPE - -include $(TOP)/config/freetype.mk -clean_freetype: clean_freetype_dos -distclean_freetype: distclean_freetype_dos - -# This final rule is used to link all object files into a single -# library. It is part of the system-specific sub-Makefile because not -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -DIR_OBJ := $(subst /,\\,$(OBJ_DIR)) +ifdef BUILD_FREETYPE -$(FT_LIBRARY): $(OBJECTS_LIST) - lcclnk -o $(subst /,\\,$@) $(subst /,\\,$(OBJECTS_LIST)) + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP)/config/freetype.mk + + # The cleanup targets. + # + clean_freetype: clean_freetype_dos + distclean_freetype: distclean_freetype_dos + + # This final rule is used to link all object files into a single library. + # It is part of the system-specific sub-Makefile because not all + # librarians accept a simple syntax like + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + lcclnk -o $(subst $(SEP),$(HOSTSEP),$@) \ + $(subst $(SEP),$(HOSTSEP),$(OBJECTS_LIST)) endif - +# EOF diff --git a/config/win32/w32-vcc.mk b/config/win32/w32-vcc.mk index 27a7aca5..da1ef487 100644 --- a/config/win32/w32-vcc.mk +++ b/config/win32/w32-vcc.mk @@ -1,127 +1,126 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for Win32 + Visual C++ -#* -#* Copyright 1996-2000 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. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 Configuration rules for Win32 + LCC +# + + +# Copyright 1996-2000 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 TOP + TOP := . +endif DELETE := del SEP := / HOSTSEP := $(strip \ ) -BUILD := $(TOP)$(SEP)config$(SEP)win32 +BUILD := $(TOP)/config/win32 PLATFORM := win32 CC := cl -# the directory where all object files are placed -# -# Note that this is not $(TOP)/obj !! -# This lets you build the library in your own directory -# with something like : +# The directory where all object files are placed. # -# set TOP=....../path/to/freetype2/top/dir... -# mkdir obj -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile +# Note that this is not $(TOP)/obj! +# This lets you build the library in your own directory with something like # +# set TOP=.../path/to/freetype2/top/dir... +# mkdir obj +# make -f %TOP%/Makefile setup [options] +# make -f %TOP%/Makefile # OBJ_DIR := obj -# the directory where all library files are placed +# The directory where all library files are placed. # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := obj -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := lib -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := freetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := /I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # -L := /Fl +D := /D -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # -D := /D +L := /Fl -# Target flag - LCC uses "-Fo" instead of "-o ", what a broken compiler -# + +# Target flag. # T := /Fo + # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := /nologo /c /Ox /G5 /W3 /WX + CFLAGS := /nologo /c /Ox /G5 /W3 /WX endif -# ANSI_FLAGS : put there the flags used to make your compiler ANSI-compliant -# nothing (if it already is by default like LCC). +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. # -ANSI_FLAGS := /Za +ANSIFLAGS := /Za -ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk +ifdef BUILD_FREETYPE -clean_freetype: clean_freetype_dos -distclean_freetype: distclean_freetype_dos - -# This final rule is used to link all object files into a single -# library. It is part of the system-specific sub-Makefile because not -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - lib /nologo /out:$@ $(OBJECTS_LIST) + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP)/config/freetype.mk + + # The cleanup targets. + # + clean_freetype: clean_freetype_dos + distclean_freetype: distclean_freetype_dos + + # This final rule is used to link all object files into a single library. + # It is part of the system-specific sub-Makefile because not all + # librarians accept a simple syntax like + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + lib /nologo /out:$@ $(OBJECTS_LIST) endif - +# EOF diff --git a/docs/design/io-frames.html b/docs/design/io-frames.html index 2b249b69..a5c6de7c 100644 --- a/docs/design/io-frames.html +++ b/docs/design/io-frames.html @@ -49,8 +49,8 @@ </h2> <p>Simply speaking, a frame is an array of bytes in a font file that is - "preloaded" into memory in order to be rapidly parsed. Frames are useful - to ensure that every "load" is checked against end-of-file overruns, and + `preloaded' into memory in order to be rapidly parsed. Frames are useful + to ensure that every `load' is checked against end-of-file overruns, and provides nice functions to extract data in a variety of distinct formats.</p> @@ -83,7 +83,7 @@ FT_Forget_Frame( stream );</pre> </font> - <p>Here, the call to <tt>FT_Access_Frame()</tt> will</p> + <p>Here, the call to <code>FT_Access_Frame()</code> will</p> <ul> <li> @@ -91,20 +91,20 @@ stream.</p> </li> <li> - <p>"Preload" (for disk-based streams) 10 bytes from the current + <p>`Preload' (for disk-based streams) 10 bytes from the current stream position.</p> </li> <li> - <p>Set the frame "cursor" to the first byte in the frame.</p> + <p>Set the frame `cursor' to the first byte in the frame.</p> </li> </ul> - <p>Each <tt>FT_Get_Short()</tt> or <tt>FT_Get_ULong()</tt> call will read - a big-endian integer from the stream (2 bytes for - <tt>FT_Get_Short()</tt>, 4 bytes for <tt>FT_Get_ULong</tt>) and - advance the frame cursor accordingly.</p> + <p>Each <code>FT_Get_Short()</code> or <code>FT_Get_ULong()</code> call + will read a big-endian integer from the stream (2 bytes for + <code>FT_Get_Short()</code>, 4 bytes for <code>FT_Get_ULong</code>) + and advance the frame cursor accordingly.</p> - <p><tt>FT_Forget_Frame()</tt> "releases" the frame from memory.</p> + <p><code>FT_Forget_Frame()</code> `releases' the frame from memory.</p> <p>There are several advantages to using frames:</p> @@ -126,54 +126,55 @@ </h2> <p>By convention in the FreeType source code, macros are able to use two - implicit variables named <tt>error</tt> and <tt>stream</tt>. This is + implicit variables named <var>error</var> and <var>stream</var>. This is useful because these two variables are extremely often used in the library, and doing this only reduces our typing requirements and make the source code much clearer.</p> - <p>Note that <tt>error</tt> must be a local variable of type - <tt>FT_Error</tt>, while <tt>stream</tt> must be a local variable or - argument of type <tt>FT_Stream</tt>.</p> + <p>Note that <var>error</var> must be a local variable of type + <code>FT_Error</code>, while <var>stream</var> must be a local variable or + argument of type <code>FT_Stream</code>.</p> <p>The macro used to access a frame is <font - color="purple"><tt><b>ACCESS_Frame(_size_)</b></tt></font>, it will + color="purple"><code><b>ACCESS_Frame(_size_)</b></code></font>, it will translate to</p> <font color="blue"> <pre> ( error = FT_Access_Frame( stream, _size_ ) ) - != FT_Err_Ok</tt></pre> + != FT_Err_Ok</pre> </font> <p>Similarly, the macro <font - color="purple"><b><tt>FORGET_Frame()</tt></b></font> translates to</p> + color="purple"><b><code>FORGET_Frame()</code></b></font> translates to</p> <font color="blue"> <pre> - <tt>FT_Forget_Frame( stream )</tt></pre> + FT_Forget_Frame( stream )</pre> </font> - <p>Extracting integers can be performed with the <tt>GET_xxx()</tt> + <p>Extracting integers can be performed with the <code>GET_xxx()</code> macros, like</p> - <table align=center> + <table align=center + cellpadding=5> <tr valign="top"> - <td> - <b>Macro name</b> - </td> - <td> + <th> + Macro name + </th> + <th> Translation - </td> - <td> + </th> + <th> Description - </td> + </th> </tr> <tr valign="top"> <td> - <font color="purple"><tt><b>GET_Byte()</b></tt></font> + <font color="purple"><code><b>GET_Byte()</b></code></font> </td> <td> - <font color="blue"><tt>FT_Get_Byte(stream)</tt></font> + <font color="blue"><code>FT_Get_Byte(stream)</code></font> </td> <td> <p>Reads an 8-bit unsigned byte.</p> @@ -181,11 +182,11 @@ </tr> <tr valign="top"> <td> - <font color="purple"><tt><b>GET_Char()</b></tt></font> + <font color="purple"><code><b>GET_Char()</b></code></font> </td> <td> - <font color="blue"><tt>(FT_Char)<br> - FT_Get_Byte(stream)</tt></font> + <font color="blue"><code>(FT_Char)<br> + FT_Get_Byte(stream)</code></font> </td> <td> <p>Reads an 8-bit <em>signed</em> byte.</p> @@ -193,10 +194,10 @@ </tr> <tr valign="top"> <td> - <font color="purple"><tt><b>GET_Short()</b></tt></font> + <font color="purple"><code><b>GET_Short()</b></code></font> </td> <td> - <font color="blue"><tt>FT_Get_Short(stream)</tt></font> + <font color="blue"><code>FT_Get_Short(stream)</code></font> </td> <td> Reads a 16-bit signed big-endian integer. @@ -204,11 +205,11 @@ </tr> <tr valign="top"> <td> - <font color="purple"><tt><b>GET_UShort()</b></tt></font> + <font color="purple"><code><b>GET_UShort()</b></code></font> </td> <td> - <font color="blue"><tt>(FT_UShort)<br> - FT_Get_Short(stream)</tt></font> + <font color="blue"><code>(FT_UShort)<br> + FT_Get_Short(stream)</code></font> </td> <td> Reads a 16-bit unsigned big-endian integer. @@ -216,10 +217,10 @@ </tr> <tr valign="top"> <td> - <font color="purple"><tt><b>GET_Offset()</b></tt></font> + <font color="purple"><code><b>GET_Offset()</b></code></font> </td> <td> - <font color="blue"><tt>FT_Get_Offset(stream)</tt></font> + <font color="blue"><code>FT_Get_Offset(stream)</code></font> </td> <td> Reads a 24-bit signed big-endian integer. @@ -227,11 +228,11 @@ </tr> <tr valign="top"> <td> - <font color="purple"><tt><b>GET_UOffset()</b></tt></font> + <font color="purple"><code><b>GET_UOffset()</b></code></font> </td> <td> - <font color="blue"><tt>(FT_UOffset)<br> - FT_Get_Offset(stream)</tt></font> + <font color="blue"><code>(FT_UOffset)<br> + FT_Get_Offset(stream)</code></font> </td> <td> Reads a 24-bit unsigned big-endian integer. @@ -239,10 +240,10 @@ </tr> <tr valign="top"> <td> - <font color="purple"><tt><b>GET_Long()</b></tt></font> + <font color="purple"><code><b>GET_Long()</b></code></font> </td> <td> - <font color="blue"><tt>FT_Get_Long(stream)</tt></font> + <font color="blue"><code>FT_Get_Long(stream)</code></font> </td> <td> Reads a 32-bit signed big-endian integer. @@ -250,11 +251,11 @@ </tr> <tr valign="top"> <td> - <font color="purple"><tt><b>GET_ULong()</b></tt></font> + <font color="purple"><code><b>GET_ULong()</b></code></font> </td> <td> - <font color="blue"><tt>(FT_ULong)<br> - FT_Get_Long(stream)</tt></font> + <font color="blue"><code>(FT_ULong)<br> + FT_Get_Long(stream)</code></font> </td> <td> Reads a 32-bit unsigned big-endian integer. @@ -292,7 +293,7 @@ FORGET_Frame();</pre> </font> - <p>Which is clearer. Notice that <tt>error</tt> and <tt>stream</tt> + <p>Which is clearer. Notice that <var>error</var> and <var>stream</var> must be defined locally though for this code to work!</p> <hr> @@ -304,18 +305,18 @@ <p>It is sometimes useful to read small integers from a font file without using a frame. Some functions have been introduced in FreeType 2 to do just that, and they are of the form <font - color="blue"><tt>FT_Read_xxxx</tt></font>.</p> + color="blue"><code>FT_Read_xxxx</code></font>.</p> - <p>For example, <font color="blue"><tt>FT_Read_Short(stream, - &error)</tt></font> reads and returns a 2-byte big-endian integer from a - <tt>stream</tt>, and places an error code in the <tt>error</tt> + <p>For example, <font color="blue"><code>FT_Read_Short(stream, + &error)</code></font> reads and returns a 2-byte big-endian integer from a + <var>stream</var>, and places an error code in the <var>error</var> variable.</p> <p>Thus, reading a single big-endian integer is shorter than using a frame for it.</p> <p>Note that there are also macros <font - color="purple"><tt>READ_xxx()</tt></font> which translate to</p> + color="purple"><code>READ_xxx()</code></font> which translate to</p> <font color="blue"> <pre> @@ -331,7 +332,8 @@ goto Fail;</pre> </font> - <p>if <tt>error</tt> and <tt>stream</tt> are already defined locally.</p> + <p>if <var>error</var> and <var>stream</var> are already defined + locally.</p> </td></tr> </table> diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h index c7ff4c0a..570a598f 100644 --- a/include/freetype/config/ftoption.h +++ b/include/freetype/config/ftoption.h @@ -206,8 +206,8 @@ /* */ /* Don't define any of these macros to compile in `release' mode. */ /* */ -#undef FT_DEBUG_LEVEL_ERROR -#undef FT_DEBUG_LEVEL_TRACE +#define FT_DEBUG_LEVEL_ERROR +#define FT_DEBUG_LEVEL_TRACE /*************************************************************************/ diff --git a/include/freetype/internal/sfnt.h b/include/freetype/internal/sfnt.h index 656be046..4db1bb91 100644 --- a/include/freetype/internal/sfnt.h +++ b/include/freetype/internal/sfnt.h @@ -20,6 +20,7 @@ #define SFNT_H #include <freetype/freetype.h> +#include <freetype/internal/ftdriver.h> #include <freetype/internal/tttypes.h> diff --git a/src/base/ftextend.c b/src/base/ftextend.c index 252934db..f7ca3987 100644 --- a/src/base/ftextend.c +++ b/src/base/ftextend.c @@ -26,6 +26,7 @@ #include <freetype/internal/ftextend.h> +#include <freetype/internal/ftdebug.h> /*************************************************************************/ diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 95981465..ad540fe8 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -192,9 +192,7 @@ FT_TRACE7(( " Freeing block 0x%08p, ref 0x%08p\n", P, P ? *P : (void*)0 )); - FT_Assert( P != 0 ); - - if ( *P ) + if ( P && *P ) { memory->free( memory, *P ); *P = 0; diff --git a/src/base/rules.mk b/src/base/rules.mk index 404f4d13..a8846a9e 100644 --- a/src/base/rules.mk +++ b/src/base/rules.mk @@ -13,39 +13,31 @@ # fully. -# It sets the following variables, which are used by the master Makefile +# It sets the following variables which are used by the master Makefile # after the call: # -# BASE_H: The list of base layer header files on which the rest -# of the library (i.e. drivers) rely. +# BASE_OBJ_S: The single-object base layer. +# BASE_OBJ_M: A list of all objects for a multiple-objects build. +# BASE_EXT_OBJ: A list of base layer extensions, i.e., components found +# in `freetype/src/base' which are not compiled within the +# base layer proper. # -# BASE_OBJ_S: The single-object base layer. -# BASE_OBJ_M: A list of all objects for a multiple-objects build. -# BASE_EXT_OBJ: A list of base layer extensions, i.e., components found -# in `freetype/lib/base' which are not compiled within the -# base layer proper. +# BASE_H is defined in freetype.mk to simplify the dependency rules. + BASE_COMPILE := $(FT_COMPILE) $I$(SRC_)base + # Base layer sources # -BASE_SRC := $(BASE_)ftcalc.c \ - $(BASE_)ftextend.c \ - $(BASE_)ftlist.c \ - $(BASE_)ftobjs.c \ - $(BASE_)ftstream.c \ - $(BASE_)ftoutln.c - -# Base layer headers +# ftsystem, ftinit, and ftdebug are handled by freetype.mk # -BASE_H := $(INTERNAL_)ftcalc.h \ - $(INTERNAL_)ftdebug.h \ - $(INTERNAL_)ftdriver.h \ - $(INTERNAL_)ftextend.h \ - $(INTERNAL_)ftlist.h \ - $(INTERNAL_)ftobjs.h \ - $(INTERNAL_)ftstream.h - +BASE_SRC := $(BASE_)ftcalc.c \ + $(BASE_)ftextend.c \ + $(BASE_)ftlist.c \ + $(BASE_)ftobjs.c \ + $(BASE_)ftstream.c \ + $(BASE_)ftoutln.c # Base layer `extensions' sources # @@ -58,10 +50,6 @@ BASE_EXT_SRC := $(BASE_)ftraster.c \ $(BASE_)ftmm.c \ $(BASE_)ftgrays.c -# Base layer extensions headers -# -BASE_EXT_H := $(BASE_EXT_SRC:%c=%h) - # Default extensions objects # BASE_EXT_OBJ := $(BASE_EXT_SRC:$(BASE_)%.c=$(OBJ_)%.$O) @@ -78,21 +66,20 @@ BASE_EXT_OBJ := $(BASE_EXT_SRC:$(BASE_)%.c=$(OBJ_)%.$O) BASE_OBJ_M := $(BASE_SRC:$(BASE_)%.c=$(OBJ_)%.$O) BASE_OBJ_S := $(OBJ_)ftbase.$O -# Base layer root source file(s) +# Base layer root source file for single build # -BASE_SRC_M := $(BASE_SRC) BASE_SRC_S := $(BASE_)ftbase.c -# Multiple objects build + extensions +# Base layer - single object build # -$(OBJ_)ft%.$O: $(BASE_)ft%.c $(PUBLIC_H) $(BASE_H) - $(BASE_COMPILE) $T$@ $< +$(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H) + $(BASE_COMPILE) $T$@ $(BASE_SRC_S) -# Base layer - single object build +# Multiple objects build + extensions # -$(BASE_OBJ_S): $(PUBLIC_H) $(BASE_H) $(BASE_SRC_S) $(BASE_SRC) - $(BASE_COMPILE) $T$@ $(BASE_SRC_S) +$(OBJ_)%.$O: $(BASE_)%.c $(FREETYPE_H) + $(BASE_COMPILE) $T$@ $< # EOF diff --git a/src/cff/rules.mk b/src/cff/rules.mk index 39e658da..d7cc66ae 100644 --- a/src/cff/rules.mk +++ b/src/cff/rules.mk @@ -6,34 +6,22 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 the rules defined for the SFNT driver, which is heavily used -# by the TrueType one. -# -include $(SRC_)sfnt/rules.mk - - # OpenType driver directory # T2_DIR := $(SRC_)cff T2_DIR_ := $(T2_DIR)$(SEP) -# location of all extensions to the driver, if any -# -T2_EXT_DIR := $(T2_DIR_)extend -T2_EXT_DIR_ := $(T2_EXT_DIR)$(SEP) - # additional include flags used when compiling the driver # -T2_INCLUDE := $(SFNT_INCLUDE) $(T2_DIR) $(T2_EXT_DIR) - +T2_INCLUDE := $(T2_DIR) # compilation flags for the driver # @@ -41,7 +29,7 @@ T2_CFLAGS := $(T2_INCLUDE:%=$I%) T2_COMPILE := $(FT_COMPILE) $(T2_CFLAGS) -# driver sources (i.e., C files) +# T2 driver sources (i.e., C files) # T2_DRV_SRC := $(T2_DIR_)t2objs.c \ $(T2_DIR_)t2load.c \ @@ -49,58 +37,34 @@ T2_DRV_SRC := $(T2_DIR_)t2objs.c \ $(T2_DIR_)t2parse.c \ $(T2_DIR_)t2driver.c -# driver headers +# T2 driver headers # -T2_DRV_H := $(SFNT_H) \ - $(T2_DRV_SRC:%.c=%.h) +T2_DRV_H := $(T2_DRV_SRC:%.c=%.h) \ + $(T2_DIR_)t2tokens.h -# default extensions headers +# T2 driver object(s) # -T2_EXT_H := $(T2_EXT_SRC:.c=.h) - - -# driver object(s) -# -# T2_DRV_OBJ_M is used during `debug' builds -# T2_DRV_OBJ_S is used during `release' builds +# T2_DRV_OBJ_M is used during `multi' builds +# T2_DRV_OBJ_S is used during `single' builds # T2_DRV_OBJ_M := $(T2_DRV_SRC:$(T2_DIR_)%.c=$(OBJ_)%.$O) T2_DRV_OBJ_S := $(OBJ_)cff.$O - -# default extensions objects +# T2 driver source file for single build # -T2_EXT_OBJ := $(T2_EXT_SRC:$(T2_EXT_DIR_)%.c=$(OBJ_)%.$O) - - -# driver source file(s) -# -T2_DRV_SRC_M := $(T2_DRV_SRC) $(SFNT_SRC) T2_DRV_SRC_S := $(T2_DIR_)cff.c -# driver - single object +# T2 driver - single object # -# the driver is recompiled if any of the header or source files is changed -# as well as any of the shared source files found in `shared/sfnt' -# -$(T2_DRV_OBJ_S): $(BASE_H) $(T2_DRV_H) $(T2_DRV_SRC) $(T2_DRV_SRC_S) +$(T2_DRV_OBJ_S): $(T2_DRV_SRC_S) $(T2_DRV_SRC) $(FREETYPE_H) $(T2_DRV_H) $(T2_COMPILE) $T$@ $(T2_DRV_SRC_S) - -# driver - multiple objects +# T2 driver - multiple objects # -# All objects are recompiled if any of the header files is changed -# -$(OBJ_)t2%.$O: $(T2_DIR_)t2%.c $(BASE_H) $(T2_DRV_H) - $(T2_COMPILE) $T$@ $< - -$(OBJ_)t2x%.$O: $(T2_EXT_DIR_)t2x%.c $(BASE_H) $(SFNT_H) $(T2_EXT_H) - $(T2_COMPILE) $T$@ $< - -$(OBJ_)t2%.$O: $(SFNT_DIR_)t2%.c $(BASE_H) $(SFNT_H) +$(OBJ_)%.$O: $(T2_DIR_)%.c $(FREETYPE_H) $(T2_DRV_H) $(T2_COMPILE) $T$@ $< diff --git a/src/cff/t2gload.c b/src/cff/t2gload.c index d4d84130..b502d970 100644 --- a/src/cff/t2gload.c +++ b/src/cff/t2gload.c @@ -25,6 +25,7 @@ #undef FT_COMPONENT #define FT_COMPONENT trace_t1gload +#include <t2load.h> #include <t2gload.h> typedef enum T2_Operator_ diff --git a/src/cff/t2load.c b/src/cff/t2load.c index f3a0748c..b70bff5a 100644 --- a/src/cff/t2load.c +++ b/src/cff/t2load.c @@ -1,6 +1,6 @@ /***************************************************************************/ /* */ -/* t2load.h */ +/* t2load.c */ /* */ /* TrueType glyph data/program tables loader (body). */ /* */ diff --git a/src/cff/t2load.h b/src/cff/t2load.h index 7a7d3b27..d8a3adcd 100644 --- a/src/cff/t2load.h +++ b/src/cff/t2load.h @@ -46,6 +46,14 @@ void T2_Forget_Element( CFF_Index* index, FT_Byte* *pbytes ); + LOCAL_FUNC + FT_Error T2_Load_CFF_Font( FT_Stream stream, + FT_Int face_index, + CFF_Font* font ); + + LOCAL_FUNC + void T2_Done_CFF_Font( CFF_Font* font ); + #ifdef __cplusplus } diff --git a/src/cid/cidgload.c b/src/cid/cidgload.c index 03a61d25..8911c146 100644 --- a/src/cid/cidgload.c +++ b/src/cid/cidgload.c @@ -15,6 +15,8 @@ * ******************************************************************/ + +#include <cidload.h> #include <cidgload.h> #include <freetype/internal/ftdebug.h> #include <freetype/internal/ftstream.h> diff --git a/src/cid/cidload.c b/src/cid/cidload.c index df23e5db..40df4631 100644 --- a/src/cid/cidload.c +++ b/src/cid/cidload.c @@ -477,7 +477,7 @@ } LOCAL_FUNC - FT_Error T1_Open_Face( CID_Face face ) + FT_Error CID_Open_Face( CID_Face face ) { CID_Loader loader; CID_Parser* parser; diff --git a/src/cid/cidload.h b/src/cid/cidload.h index b96b7ce1..53ae5035 100644 --- a/src/cid/cidload.h +++ b/src/cid/cidload.h @@ -42,7 +42,7 @@ FT_UShort seed ); LOCAL_DEF - FT_Error T1_Open_Face( CID_Face face ); + FT_Error CID_Open_Face( CID_Face face ); #ifdef __cplusplus } diff --git a/src/cid/cidobjs.c b/src/cid/cidobjs.c index 3d7e24d5..d22d7fc7 100644 --- a/src/cid/cidobjs.c +++ b/src/cid/cidobjs.c @@ -228,7 +228,7 @@ if ( FILE_Seek(0) ) goto Exit; - error = T1_Open_Face( face ); + error = CID_Open_Face( face ); if (error) goto Exit; /* if we just wanted to check the format, leave successfully now */ diff --git a/src/cid/rules.mk b/src/cid/rules.mk index cdfa653b..5999a739 100644 --- a/src/cid/rules.mk +++ b/src/cid/rules.mk @@ -1,32 +1,19 @@ # -# FreeType 2 driver configuration rules +# FreeType 2 CID driver configuration rules # # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 "Type1z" driver is an experimental replacement for the current * -#* Type 1 driver. It features a very different loading mechanism that * -#* is much faster than the one used by the `normal' driver, and also * -#* deals nicely with nearly broken Type 1 font files. It is also * -#* much smaller... * -#* * -#* Note that it may become a permanent replacement of the current * -#* "src/type1" driver in the future.. * -#* * -#**************************************************************************** - -# Type1z driver directory +# CID driver directory # CID_DIR := $(SRC_)cid CID_DIR_ := $(CID_DIR)$(SEP) @@ -34,57 +21,51 @@ CID_DIR_ := $(CID_DIR)$(SEP) # additional include flags used when compiling the driver # -CID_INCLUDE := $(SHARED) $(CID_DIR) -CID_COMPILE := $(FT_COMPILE) $(CID_INCLUDE:%=$I%) +CID_INCLUDE := $(CID_DIR) + +# compilation flags for the driver +# +CID_CFLAGS := $(CID_INCLUDE:%=$I%) +CID_COMPILE := $(FT_COMPILE) $(CID_CFLAGS) -# Type1 driver sources (i.e., C files) +# CID driver sources (i.e., C files) # CID_DRV_SRC := $(CID_DIR_)cidparse.c \ $(CID_DIR_)cidload.c \ $(CID_DIR_)cidriver.c \ $(CID_DIR_)cidgload.c \ - $(CID_DIR_)cidafm.c + $(CID_DIR_)cidafm.c \ + $(CID_DIR_)cidobjs.c -# Type1 driver headers +# CID driver headers # -CID_DRV_H := $(CID_DIR_)cidtokens.h \ - $(T1SHARED_H) \ - $(CID_DRV_SRC:%.c=%.h) +CID_DRV_H := $(CID_DRV_SRC:%.c=%.h) \ + $(CID_DIR_)cidtokens.h -# driver object(s) +# CID driver object(s) # -# CID_DRV_OBJ_M is used during `debug' builds -# CID_DRV_OBJ_S is used during `release' builds +# CID_DRV_OBJ_M is used during `multi' builds +# CID_DRV_OBJ_S is used during `single' builds # -CID_DRV_OBJ_M := $(CID_DRV_SRC:$(CID_DIR_)%.c=$(OBJ_)%.$O) \ - $(T1SHARED:$(T1SHARED_DIR_)%.c=$(OBJ_)%.$O) +CID_DRV_OBJ_M := $(CID_DRV_SRC:$(CID_DIR_)%.c=$(OBJ_)%.$O) CID_DRV_OBJ_S := $(OBJ_)type1cid.$O - -# driver source file(s) +# CID driver source file for single build # -CID_DRV_SRC_M := $(CID_DRV_SRC) $(T1SHARED_SRC) CID_DRV_SRC_S := $(CID_DIR_)type1cid.c -# driver - single object -# -# the driver is recompiled if any of the header or source files is changed +# CID driver - single object # -$(CID_DRV_OBJ_S): $(BASE_H) $(CID_DRV_H) $(CID_DRV_SRC) $(CID_DRV_SRC_S) +$(CID_DRV_OBJ_S): $(CID_DRV_SRC_S) $(CID_DRV_SRC) $(FREETYPE_H) $(CID_DRV_H) $(CID_COMPILE) $T$@ $(CID_DRV_SRC_S) -# driver - multiple objects +# CID driver - multiple objects # -# All objects are recompiled if any of the header files is changed -# -$(OBJ_)t1%.$O: $(CID_DIR_)t1%.c $(BASE_H) $(CID_DRV_H) - $(CID_COMPILE) $T$@ $< - -$(OBJ_)t1%.$O: $(T1SHARED_DIR_)t1%.c $(BASE_H) $(T1SHARED_H) +$(OBJ_)%.$O: $(CID_DIR_)%.c $(FREETYPE_H) $(CID_DRV_H) $(CID_COMPILE) $T$@ $< diff --git a/src/psnames/rules.mk b/src/psnames/rules.mk index 56654b83..47580e79 100644 --- a/src/psnames/rules.mk +++ b/src/psnames/rules.mk @@ -6,81 +6,70 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 PSNAMES_INCLUDE - # PSNAMES driver directory - # - PSNAMES_DIR := $(SRC_)psnames - PSNAMES_DIR_ := $(PSNAMES_DIR)$(SEP) - - # additional include flags used when compiling the driver - # - PSNAMES_INCLUDE := $(SHARED) $(PSNAMES_DIR) +# PSNames driver directory +# +PSNAMES_DIR := $(SRC_)psnames +PSNAMES_DIR_ := $(PSNAMES_DIR)$(SEP) +# additional include flags used when compiling the driver +# +PSNAMES_INCLUDE := $(PSNAMES_DIR) - # compilation flags for the driver - # - PSNAMES_CFLAGS := $(PSNAMES_INCLUDE:%=$I%) - PSNAMES_COMPILE := $(FT_COMPILE) $(PSNAMES_CFLAGS) +# compilation flags for the driver +# +PSNAMES_CFLAGS := $(PSNAMES_INCLUDE:%=$I%) +PSNAMES_COMPILE := $(FT_COMPILE) $(PSNAMES_CFLAGS) - # driver sources (i.e., C files) - # - PSNAMES_DRV_SRC := $(PSNAMES_DIR_)psdriver.c +# PSNames driver sources (i.e., C files) +# +PSNAMES_DRV_SRC := $(PSNAMES_DIR_)psdriver.c - # driver headers - # - PSNAMES_DRV_H := $(BASE_H) \ - $(PSNAMES_DIR_)psdriver.h \ - $(PSNAMES_DIR_)pstables.h +# PSNames driver headers +# +PSNAMES_DRV_H := $(PSNAMES_DRV_SRC:%.c=%.h) \ + $(PSNAMES_DIR_)pstables.h - # driver object(s) - # - # PSNAMES_DRV_OBJ_M is used during `debug' builds - # PSNAMES_DRV_OBJ_S is used during `release' builds - # - PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR_)%.c=$(OBJ_)%.$O) - PSNAMES_DRV_OBJ_S := $(OBJ_)psnames.$O +# PSNames driver object(s) +# +# PSNAMES_DRV_OBJ_M is used during `multi' builds +# PSNAMES_DRV_OBJ_S is used during `single' builds +# +PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR_)%.c=$(OBJ_)%.$O) +PSNAMES_DRV_OBJ_S := $(OBJ_)psnames.$O - # driver source file(s) - # - PSNAMES_DRV_SRC_M := $(PSNAMES_DRV_SRC) - PSNAMES_DRV_SRC_S := $(PSNAMES_DIR_)psdriver.c +# PSNames driver source file for single build +# +PSNAMES_DRV_SRC_S := $(PSNAMES_DIR_)psdriver.c - # driver - single object - # - # the driver is recompiled if any of the header or source files is - # changed as well as any of the shared source files found in - # `shared' - # - $(PSNAMES_DRV_OBJ_S): $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H) \ - $(PSNAMES_DRV_SRC) $(PSNAMES_DRV_SRC_S) - $(PSNAMES_COMPILE) $T$@ $(PSNAMES_DRV_SRC_S) +# PSNames driver - single object +# +$(PSNAMES_DRV_OBJ_S): $(PSNAMES_DRV_SRC_S) $(PSNAMES_DRV_SRC) \ + $(FREETYPE_H) $(PSNAMES_DRV_H) + $(PSNAMES_COMPILE) $T$@ $(PSNAMES_DRV_SRC_S) - # driver - multiple objects - # - # All objects are recompiled if any of the header files is changed. - # - $(OBJ_)ps%.$O: $(PSNAMES_DIR_)ps%.c $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H) - $(PSNAMES_COMPILE) $T$@ $< +# PSNames driver - multiple objects +# +$(OBJ_)%.$O: $(PSNAMES_DIR_)%.c $(FREETYPE_H) $(PSNAMES_DRV_H) + $(PSNAMES_COMPILE) $T$@ $< - # update main driver object lists - # - DRV_OBJS_S += $(PSNAMES_DRV_OBJ_S) - DRV_OBJS_M += $(PSNAMES_DRV_OBJ_M) +# update main driver object lists +# +DRV_OBJS_S += $(PSNAMES_DRV_OBJ_S) +DRV_OBJS_M += $(PSNAMES_DRV_OBJ_M) -endif # EOF diff --git a/src/sfnt/rules.mk b/src/sfnt/rules.mk index a059b9c1..e3b0bbdd 100644 --- a/src/sfnt/rules.mk +++ b/src/sfnt/rules.mk @@ -13,84 +13,66 @@ # fully. -ifndef SFNT_INCLUDE - # SFNT driver directory - # - SFNT_DIR := $(SRC_)sfnt - SFNT_DIR_ := $(SFNT_DIR)$(SEP) - - - # additional include flags used when compiling the driver - # - SFNT_INCLUDE := $(SHARED) $(SFNT_DIR) - - # compilation flags for the driver - # - SFNT_CFLAGS := $(SFNT_INCLUDE:%=$I%) - SFNT_COMPILE := $(FT_COMPILE) $(SFNT_CFLAGS) - - - # driver sources (i.e., C files) - # - SFNT_DRV_SRC := $(SFNT_DIR_)ttload.c \ - $(SFNT_DIR_)ttcmap.c \ - $(SFNT_DIR_)ttsbit.c \ - $(SFNT_DIR_)ttpost.c \ - $(SFNT_DIR_)sfobjs.c \ - $(SFNT_DIR_)sfdriver.c - - # driver headers - # - SFNT_DRV_H := $(BASE_H) \ - $(SFNT_DIR_)sfobjs.h \ - $(SFNT_DIR_)ttload.h \ - $(SFNT_DIR_)ttsbit.h \ - $(SFNT_DIR_)ttcmap.h \ - $(SFNT_DIR_)ttpost.h - - - # driver object(s) - # - # SFNT_DRV_OBJ_M is used during `debug' builds - # SFNT_DRV_OBJ_S is used during `release' builds - # - SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR_)%.c=$(OBJ_)%.$O) - SFNT_DRV_OBJ_S := $(OBJ_)sfnt.$O - - - # driver source file(s) - # - SFNT_DRV_SRC_M := $(SFNT_DRV_SRC) - SFNT_DRV_SRC_S := $(SFNT_DIR_)sfnt.c - - - # driver - single object - # - # the driver is recompiled if any of the header or source files is - # changed as well as any of the shared source files found in - # `shared' - # - $(SFNT_DRV_OBJ_S): $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) \ - $(SFNT_DRV_SRC) $(SFNT_DRV_SRC_S) - $(SFNT_COMPILE) $T$@ $(SFNT_DRV_SRC_S) - - - # driver - multiple objects - # - # All objects are recompiled if any of the header files is changed - # - $(OBJ_)tt%.$O: $(SFNT_DIR_)tt%.c $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) - $(SFNT_COMPILE) $T$@ $< - - $(OBJ_)sf%.$O: $(SFNT_DIR_)sf%.c $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) - $(SFNT_COMPILE) $T$@ $< - - - # update main driver object lists - # - DRV_OBJS_S += $(SFNT_DRV_OBJ_S) - DRV_OBJS_M += $(SFNT_DRV_OBJ_M) - -endif +# SFNT driver directory +# +SFNT_DIR := $(SRC_)sfnt +SFNT_DIR_ := $(SFNT_DIR)$(SEP) + + +# additional include flags used when compiling the driver +# +SFNT_INCLUDE := $(SFNT_DIR) + +# compilation flags for the driver +# +SFNT_CFLAGS := $(SFNT_INCLUDE:%=$I%) +SFNT_COMPILE := $(FT_COMPILE) $(SFNT_CFLAGS) + + +# SFNT driver sources (i.e., C files) +# +SFNT_DRV_SRC := $(SFNT_DIR_)ttload.c \ + $(SFNT_DIR_)ttcmap.c \ + $(SFNT_DIR_)ttsbit.c \ + $(SFNT_DIR_)ttpost.c \ + $(SFNT_DIR_)sfobjs.c \ + $(SFNT_DIR_)sfdriver.c + +# SFNT driver headers +# +SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) + + +# SFNT driver object(s) +# +# SFNT_DRV_OBJ_M is used during `multi' builds. +# SFNT_DRV_OBJ_S is used during `single' builds. +# +SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR_)%.c=$(OBJ_)%.$O) +SFNT_DRV_OBJ_S := $(OBJ_)sfnt.$O + +# SFNT driver source file for single build +# +SFNT_DRV_SRC_S := $(SFNT_DIR_)sfnt.c + + +# SFNT driver - single object +# +$(SFNT_DRV_OBJ_S): $(SFNT_DRV_SRC_S) $(SFNT_DRV_SRC) \ + $(FREETYPE_H) $(SFNT_DRV_H) + $(SFNT_COMPILE) $T$@ $(SFNT_DRV_SRC_S) + + +# SFNT driver - multiple objects +# +$(OBJ_)%.$O: $(SFNT_DIR_)%.c $(FREETYPE_H) $(SFNT_DRV_H) + $(SFNT_COMPILE) $T$@ $< + + +# update main driver object lists +# +DRV_OBJS_S += $(SFNT_DRV_OBJ_S) +DRV_OBJS_M += $(SFNT_DRV_OBJ_M) + # EOF diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c index 958a49f2..79d60f96 100644 --- a/src/sfnt/sfobjs.c +++ b/src/sfnt/sfobjs.c @@ -16,6 +16,7 @@ /***************************************************************************/ +#include <freetype/internal/ftobjs.h> #include <freetype/internal/sfnt.h> #include <freetype/internal/psnames.h> #include <freetype/ttnameid.h> diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c index 5d4cfacc..e91fa254 100644 --- a/src/sfnt/ttcmap.c +++ b/src/sfnt/ttcmap.c @@ -453,16 +453,14 @@ /* check against the last segment */ seg4 = cmap4->last_segment; - /* the following is equivalent to performing two tests, as in : */ - /* */ - /* if ( charCode >= seg4->startCount && charCode <= seg4->endCount */ - /* */ - /* Yes, that's a bit strange, but it's faster, and the idea behind */ - /* the cache is to significantly speed up charcode to glyph index */ - /* conversion.. */ - /* */ - /* Sorry if it isn't clear to your eyes.. */ - /* */ + /* the following is equivalent to performing two tests, as in */ + /* */ + /* if ( charCode >= seg4->startCount && charCode <= seg4->endCount ) */ + /* */ + /* Yes, that's a bit strange, but it's faster, and the idea behind */ + /* the cache is to significantly speed up charcode to glyph index */ + /* conversion. */ + if ( (TT_ULong)(charCode - seg4->startCount) < (TT_ULong)(seg4->endCount - seg4->startCount) ) goto Found; @@ -471,6 +469,7 @@ { /* the ranges are sorted in increasing order. If we are out of */ /* the range here, the char code isn't in the charmap, so exit. */ + if ( charCode > seg4->endCount ) continue; diff --git a/src/truetype/rules.mk b/src/truetype/rules.mk index a12ef039..51c8556a 100644 --- a/src/truetype/rules.mk +++ b/src/truetype/rules.mk @@ -6,34 +6,22 @@ # Copyright 1996-2000 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# This file is part of the FreeType project, and may only be used modified +# This file is part of the FreeType project, and may only be used, modified, # 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 the rules defined for the SFNT driver, which are heavily used -# by the TrueType one. -# -include $(SRC_)sfnt/rules.mk - - # TrueType driver directory # TT_DIR := $(SRC_)truetype TT_DIR_ := $(TT_DIR)$(SEP) -# location of all extensions to the driver, if any -# -TT_EXT_DIR := $(TT_DIR_)extend -TT_EXT_DIR_ := $(TT_EXT_DIR)$(SEP) - # additional include flags used when compiling the driver # -TT_INCLUDE := $(SFNT_INCLUDE) $(TT_DIR) $(TT_EXT_DIR) - +TT_INCLUDE := $(TT_DIR) # compilation flags for the driver # @@ -41,7 +29,7 @@ TT_CFLAGS := $(TT_INCLUDE:%=$I%) TT_COMPILE := $(FT_COMPILE) $(TT_CFLAGS) -# driver sources (i.e., C files) +# TrueType driver sources (i.e., C files) # TT_DRV_SRC := $(TT_DIR_)ttobjs.c \ $(TT_DIR_)ttpload.c \ @@ -49,65 +37,33 @@ TT_DRV_SRC := $(TT_DIR_)ttobjs.c \ $(TT_DIR_)ttinterp.c \ $(TT_DIR_)ttdriver.c -# driver headers -# -TT_DRV_H := $(SFNT_H) \ - $(TT_DRV_SRC:%.c=%.h) - - -# default extensions sources -# -TT_EXT_SRC := $(TT_EXT_DIR_)ttxkern.c \ - $(TT_EXT_DIR_)ttxgasp.c \ - $(TT_EXT_DIR_)ttxpost.c \ - $(TT_EXT_DIR_)ttxcmap.c \ - $(TT_EXT_DIR_)ttxwidth.c - -# default extensions headers +# TrueType driver headers # -TT_EXT_H := $(TT_EXT_SRC:.c=.h) +TT_DRV_H := $(TT_DRV_SRC:%.c=%.h) -# driver object(s) +# TrueType driver object(s) # -# TT_DRV_OBJ_M is used during `debug' builds -# TT_DRV_OBJ_S is used during `release' builds +# TT_DRV_OBJ_M is used during `multi' builds +# TT_DRV_OBJ_S is used during `single' builds # TT_DRV_OBJ_M := $(TT_DRV_SRC:$(TT_DIR_)%.c=$(OBJ_)%.$O) TT_DRV_OBJ_S := $(OBJ_)truetype.$O - -# default extensions objects +# TrueType driver source file for single build # -TT_EXT_OBJ := $(TT_EXT_SRC:$(TT_EXT_DIR_)%.c=$(OBJ_)%.$O) - - -# driver source file(s) -# -TT_DRV_SRC_M := $(TT_DRV_SRC) $(SFNT_SRC) TT_DRV_SRC_S := $(TT_DIR_)truetype.c -# driver - single object -# -# the driver is recompiled if any of the header or source files is changed -# as well as any of the shared source files found in `shared/sfnt' +# TrueType driver - single object # -$(TT_DRV_OBJ_S): $(BASE_H) $(TT_DRV_H) $(TT_DRV_SRC) $(TT_DRV_SRC_S) +$(TT_DRV_OBJ_S): $(TT_DRV_SRC_S) $(TT_DRV_SRC) $(FREETYPE_H) $(TT_DRV_H) $(TT_COMPILE) $T$@ $(TT_DRV_SRC_S) # driver - multiple objects # -# All objects are recompiled if any of the header files is changed -# -$(OBJ_)tt%.$O: $(TT_DIR_)tt%.c $(BASE_H) $(TT_DRV_H) - $(TT_COMPILE) $T$@ $< - -$(OBJ_)ttx%.$O: $(TT_EXT_DIR_)ttx%.c $(BASE_H) $(SFNT_H) $(TT_EXT_H) - $(TT_COMPILE) $T$@ $< - -$(OBJ_)tt%.$O: $(SFNT_DIR_)tt%.c $(BASE_H) $(SFNT_H) +$(OBJ_)%.$O: $(TT_DIR_)%.c $(FREETYPE_H) $(TT_DRV_H) $(TT_COMPILE) $T$@ $< diff --git a/src/type1z/t1afm.c b/src/type1z/t1afm.c index 56eb84a0..68bb6daf 100644 --- a/src/type1z/t1afm.c +++ b/src/type1z/t1afm.c @@ -115,10 +115,10 @@ /* parse an AFM file - for now, only read the kerning pairs */ LOCAL_FUNC - FT_Error T1_Read_AFM( FT_Face t1_face, + T1_Error T1_Read_AFM( FT_Face t1_face, FT_Stream stream ) { - FT_Error error; + T1_Error error; FT_Memory memory = stream->memory; FT_Byte* start; FT_Byte* limit; diff --git a/src/type1z/t1afm.h b/src/type1z/t1afm.h index 984ae945..4adf4fb7 100644 --- a/src/type1z/t1afm.h +++ b/src/type1z/t1afm.h @@ -8,40 +8,43 @@ #ifndef T1AFM_H #define T1AFM_H +#include <freetype/internal/ftstream.h> #include <freetype/internal/ftobjs.h> +#include <freetype/internal/t1types.h> +#include <freetype/internal/t1errors.h> /* In this version, we only read the kerning table from the */ /* AFM file. We may add support for ligatures a bit later.. */ typedef struct T1_Kern_Pair_ { - FT_UInt glyph1; - FT_UInt glyph2; - FT_Vector kerning; + T1_UInt glyph1; + T1_UInt glyph2; + T1_Vector kerning; } T1_Kern_Pair; typedef struct T1_AFM_ { - FT_Int num_pairs; + T1_Int num_pairs; T1_Kern_Pair* kern_pairs; } T1_AFM; LOCAL_DEF -FT_Error T1_Read_AFM( FT_Face face, - FT_Stream stream ); +T1_Error T1_Read_AFM( FT_Face face, + FT_Stream stream ); LOCAL_DEF -void T1_Done_AFM( FT_Memory memory, - T1_AFM* afm ); +void T1_Done_AFM( FT_Memory memory, + T1_AFM* afm ); LOCAL_DEF void T1_Get_Kerning( T1_AFM* afm, - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ); + T1_UInt glyph1, + T1_UInt glyph2, + T1_Vector* kerning ); #endif /* T1AFM_H */ diff --git a/src/type1z/t1driver.c b/src/type1z/t1driver.c index b086d53b..e9052322 100644 --- a/src/type1z/t1driver.c +++ b/src/type1z/t1driver.c @@ -17,6 +17,7 @@ #include <t1driver.h> #include <t1gload.h> +#include <t1load.h> #include <t1afm.h> #include <freetype/internal/ftdebug.h> @@ -435,7 +436,7 @@ EXPORT_FUNC(FT_DriverInterface*) getDriverInterface( void ) { - return &t1_driver_interface; + return &t1z_driver_interface; } #endif /* FT_CONFIG_OPTION_DYNAMIC_DRIVERS */ diff --git a/src/type1z/t1load.c b/src/type1z/t1load.c index 3adbc312..92e1ce62 100644 --- a/src/type1z/t1load.c +++ b/src/type1z/t1load.c @@ -148,14 +148,14 @@ goto Exit; } - LOCAL_FUNC FT_Error T1_Get_Multi_Master( T1_Face face, + LOCAL_FUNC T1_Error T1_Get_Multi_Master( T1_Face face, FT_Multi_Master* master ) { T1_Blend* blend = face->blend; T1_UInt n; - FT_Error error; + T1_Error error; - error = FT_Err_Invalid_Argument; + error = T1_Err_Invalid_Argument; if (blend) { master->num_axis = blend->num_axis; @@ -175,15 +175,15 @@ } - LOCAL_FUNC FT_Error T1_Set_MM_Blend( T1_Face face, + LOCAL_FUNC T1_Error T1_Set_MM_Blend( T1_Face face, T1_UInt num_coords, T1_Fixed* coords ) { T1_Blend* blend = face->blend; - FT_Error error; + T1_Error error; T1_UInt n, m; - error = FT_Err_Invalid_Argument; + error = T1_Err_Invalid_Argument; if (blend && blend->num_axis == num_coords) { /* recompute the weight vector from the blend coordinates */ @@ -213,15 +213,15 @@ } - LOCAL_FUNC FT_Error T1_Set_MM_Design( T1_Face face, + LOCAL_FUNC T1_Error T1_Set_MM_Design( T1_Face face, T1_UInt num_coords, T1_Long* coords ) { T1_Blend* blend = face->blend; - FT_Error error; + T1_Error error; T1_UInt n, p; - error = FT_Err_Invalid_Argument; + error = T1_Err_Invalid_Argument; if (blend && blend->num_axis == num_coords) { /* compute the blend coordinates through the blend design map */ @@ -328,7 +328,7 @@ { T1_Token_Rec axis_tokens[ T1_MAX_MM_AXIS ]; T1_Int n, num_axis; - FT_Error error = 0; + T1_Error error = 0; T1_Blend* blend; FT_Memory memory; @@ -338,7 +338,7 @@ { FT_ERROR(( "T1.parse_blend_axis_types: incorrect number of axis: %d\n", num_axis )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } @@ -363,7 +363,7 @@ len = token->limit - token->start; if (len <= 0) { - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } @@ -387,7 +387,7 @@ T1_Int num_axis; T1_Parser* parser = &loader->parser; - FT_Error error = 0; + T1_Error error = 0; T1_Blend* blend; /* get the array of design tokens - compute number of designs */ @@ -396,7 +396,7 @@ { FT_ERROR(( "T1.design positions: incorrect number of designs: %d\n", num_designs )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } @@ -428,7 +428,7 @@ else if (n_axis != num_axis) { FT_ERROR(( "T1.design_positions: incorrect table\n" )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } @@ -452,7 +452,7 @@ static void parse_blend_design_map( T1_Face face, T1_Loader* loader ) { - FT_Error error = 0; + T1_Error error = 0; T1_Parser* parser = &loader->parser; T1_Blend* blend; T1_Token_Rec axis_tokens[ T1_MAX_MM_AXIS ]; @@ -466,7 +466,7 @@ { FT_ERROR(( "T1.design map: incorrect number of axis: %d\n", num_axis )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } old_cursor = parser->cursor; @@ -500,7 +500,7 @@ if (num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS) { FT_ERROR(( "T1.design map: incorrect table\n" )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } @@ -525,7 +525,7 @@ static void parse_weight_vector( T1_Face face, T1_Loader* loader ) { - FT_Error error = 0; + T1_Error error = 0; T1_Parser* parser = &loader->parser; T1_Blend* blend = face->blend; T1_Token_Rec master; @@ -536,7 +536,7 @@ if (!blend || blend->num_designs == 0) { FT_ERROR(( "t1.weight_vector: too early !!\n" )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } @@ -544,7 +544,7 @@ if (master.type != t1_token_array) { FT_ERROR(( "t1.weight_vector: incorrect format !!\n" )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } @@ -839,7 +839,7 @@ } FT_ERROR(( "type1.read_binary_data: invalid size field\n" )); - parser->error = FT_Err_Invalid_File_Format; + parser->error = T1_Err_Invalid_File_Format; return 0; } @@ -852,7 +852,7 @@ void parse_font_name( T1_Face face, T1_Loader* loader ) { T1_Parser* parser = &loader->parser; - FT_Error error; + T1_Error error; FT_Memory memory = parser->memory; T1_Int len; T1_Byte* cur; @@ -926,7 +926,7 @@ if (cur >= limit) { FT_ERROR(( "type1.parse_encoding: out of bounds !!\n" )); - parser->error = FT_Err_Invalid_File_Format; + parser->error = T1_Err_Invalid_File_Format; return; } } @@ -939,7 +939,7 @@ T1_Int count, n; T1_Table* char_table = &loader->encoding_table; FT_Memory memory = parser->memory; - FT_Error error; + T1_Error error; /* read the number of entries in the encoding, should be 256 */ count = T1_ToInt( parser ); @@ -1042,7 +1042,7 @@ else { FT_ERROR(( "type1.parse_encoding: invalid token !!\n" )); - parser->error = FT_Err_Invalid_File_Format; + parser->error = T1_Err_Invalid_File_Format; } } } @@ -1054,7 +1054,7 @@ T1_Parser* parser = &loader->parser; T1_Table* table = &loader->subrs; FT_Memory memory = parser->memory; - FT_Error error; + T1_Error error; T1_Int n; loader->num_subrs = T1_ToInt( parser ); @@ -1100,7 +1100,7 @@ T1_Table* code_table = &loader->charstrings; T1_Table* name_table = &loader->glyph_names; FT_Memory memory = parser->memory; - FT_Error error; + T1_Error error; T1_Byte* cur; T1_Byte* limit = parser->limit; @@ -1352,7 +1352,7 @@ T1_Loader loader; T1_Parser* parser; T1_Font* type1 = &face->type1; - FT_Error error; + T1_Error error; t1_init_loader( &loader, face ); @@ -1379,13 +1379,13 @@ if ( !loader.subrs.init ) { FT_ERROR(( "T1.Open_Face: no subrs array in face !!\n" )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; } if ( !loader.charstrings.init ) { FT_ERROR(( "T1.Open_Face: no charstrings array in face !!\n" )); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; } loader.subrs.init = 0; diff --git a/src/type1z/t1load.h b/src/type1z/t1load.h index 85355973..98a1359a 100644 --- a/src/type1z/t1load.h +++ b/src/type1z/t1load.h @@ -19,6 +19,8 @@ #define T1LOAD_H #include <freetype/internal/ftstream.h> +#include <freetype/internal/t1types.h> +#include <freetype/ftmm.h> #include <t1parse.h> #ifdef __cplusplus @@ -48,19 +50,21 @@ #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT LOCAL_DEF - FT_Error T1_Get_Multi_Master( T1_Face face, - FT_Multi_Master* master ); + T1_Error T1_Get_Multi_Master( T1_Face face, + FT_Multi_Master* master ); - LOCAL_DEF FT_Error T1_Set_MM_Blend( T1_Face face, - T1_UInt num_coords, - T1_Fixed* coords ); + LOCAL_DEF + T1_Error T1_Set_MM_Blend( T1_Face face, + T1_UInt num_coords, + T1_Fixed* coords ); - LOCAL_DEF FT_Error T1_Set_MM_Design( T1_Face face, - T1_UInt num_coords, - T1_Long* coords ); + LOCAL_DEF + T1_Error T1_Set_MM_Design( T1_Face face, + T1_UInt num_coords, + T1_Long* coords ); LOCAL_DEF - void T1_Done_Blend( T1_Face face ); + void T1_Done_Blend( T1_Face face ); #endif #ifdef __cplusplus diff --git a/src/type1z/t1objs.c b/src/type1z/t1objs.c index 84dd55b7..a711d2fd 100644 --- a/src/type1z/t1objs.c +++ b/src/type1z/t1objs.c @@ -106,7 +106,7 @@ FT_Size_Metrics* metrics = &size->root.metrics; if ( metrics->x_ppem < 1 || metrics->y_ppem < 1 ) - return FT_Err_Invalid_Argument; + return T1_Err_Invalid_Argument; /* Compute root ascender, descender, test height, and max_advance */ metrics->ascender = ( FT_MulFix( face->root.ascender, diff --git a/src/type1z/t1parse.c b/src/type1z/t1parse.c index c2fc52c0..7b05a935 100644 --- a/src/type1z/t1parse.c +++ b/src/type1z/t1parse.c @@ -629,7 +629,7 @@ T1_Int len = 0; T1_Int count; T1_String* result; - FT_Error error; + T1_Error error; /* XXX : some stupid fonts have a "Notice" or "Copyright" string */ /* that simply doesn't begin with an opening parenthesis, even */ @@ -913,9 +913,9 @@ static - FT_Error read_pfb_tag( FT_Stream stream, T1_UShort *tag, T1_Long* size ) + T1_Error read_pfb_tag( FT_Stream stream, T1_UShort *tag, T1_Long* size ) { - FT_Error error; + T1_Error error; if (READ_UShort(*tag)) goto Exit; if (*tag == 0x8001 || *tag == 0x8002) @@ -942,7 +942,7 @@ FT_Stream stream, FT_Memory memory ) { - FT_Error error; + T1_Error error; T1_UShort tag; T1_Long size; @@ -1095,7 +1095,7 @@ { FT_Stream stream = parser->stream; FT_Memory memory = parser->memory; - FT_Error error = 0; + T1_Error error = 0; T1_Long size; if (parser->in_pfb) @@ -1182,7 +1182,7 @@ if (cur >= limit) { FT_ERROR(("T1.Open_Private: could not find 'eexec' keyword\n")); - error = FT_Err_Invalid_File_Format; + error = T1_Err_Invalid_File_Format; goto Exit; } } diff --git a/src/type1z/t1parse.h b/src/type1z/t1parse.h index da80211a..9ef51fc5 100644 --- a/src/type1z/t1parse.h +++ b/src/type1z/t1parse.h @@ -300,6 +300,12 @@ void T1_ToToken( T1_Parser* parser, T1_Token_Rec* token ); + LOCAL_FUNC + void T1_ToTokenArray( T1_Parser* parser, + T1_Token_Rec* tokens, + T1_UInt max_tokens, + T1_Int* pnum_tokens ); + LOCAL_DEF T1_Error T1_Load_Field( T1_Parser* parser, const T1_Field_Rec* field, |