Removing trailing whitespace.

This commit is contained in:
Werner Lemberg 2000-10-31 20:42:18 +00:00
parent dd33561ecb
commit e4b32a5dc5
84 changed files with 494 additions and 495 deletions

90
CHANGES
View File

@ -28,7 +28,7 @@ LATEST CHANGES
- fixed two memory leaks:
- the memory manager (16 bytes) isn't released in FT_Done_FreeType !!
- using custom input streams, the copy of the original stream
was never released
@ -42,14 +42,14 @@ LATEST CHANGES
BETA-8 (RELEASE CANDIDATE) CHANGES
- deactivated the trueType bytecode interpreter by default
- deactivated the "src/type1" font driver. Now "src/type1z" is
used by default..
- updates to the build system. We now compile the library correctly
under Unix system through "configure" which is automatically called
on the first "make" invocation.
- added the auto-hinting module !!. Fixing some bugs here and there..
- found some bugs in the composite loader (seac) of the Type1-based
@ -59,7 +59,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
updated all relevant files..
- found a memory leak in the "type1" driver
- incorporated Tom's patches to support flex operators correctly
in OpenType/CFF fonts.. Now all I need is to support pure CFF
and CEF fonts to be done with this driver.. :-)
@ -67,24 +67,24 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
- added the Windows FNT/FON driver in "src/winfonts". For now,
it always "simulates" a Unicode charmap, so it shouldn't be
considered completed right now..
It's there to be more a proof of concept than anything else
anyway. The driver is a single C source file, that compiles
to 3 Kb of code..
I'm still working on the PCF/BDF drivers.. but I'm too lazy
to finish them now..
- CHANGES TO THE HIGH-LEVEL API
o FT_Get_Kerning has a new parameter that allows you to select
the coordinates of the kerning vector ( font units, scaled,
scaled + grid-fitted ).
o the outline functions are now in <freetype/ftoutln.h> and not
part of <freetype/freetype.h> anymore
o <freetype/ftmodule.h> now contains declarations for
FT_New_Library, FT_Done_Library, FT_Add_Default_Modules
@ -96,9 +96,9 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
(i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
To generate a monochrome bitmap, use ft_render_mode_mono, or the
FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
o <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
solving a few headaches :-)
@ -107,7 +107,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
- CHANGES TO THE "ftglyph.h" API
This API has been severely modified in order to make it simpler,
clearer, and more efficient. It certainly now looks like a real
"glyph factory" object, and allows client applications to manage
@ -121,59 +121,59 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
- cleaned up source code in order to avoid two functions with the
same name. Also changed the names of the files in "type1z" from
"t1XXXX" to "z1XXXX" in order to avoid any conflicts.
"make multi" now works well :-)
Also removed the use of "cidafm" for now, even if the source files
are still there. This functionality will certainly go into a specific
module..
- ADDED SUPPORT FOR THE AUTO-HINTER
- ADDED SUPPORT FOR THE AUTO-HINTER
It works :-) I have a demo program which simply is a copy of "ftview"
that does a FT_Add_Module( library, &autohinter_module_class ) after
library initialisation, and Type 1 & OpenType/CFF fonts are now hinted.
CID fonts are not hinted, as they include no charmap and the auto-hinter
doesn't include "generic" global metrics computations yet..
Now, I need to release this thing to the FreeType 2 source..
- CHANGES TO THE RENDERER MODULES
the monochrome and smooth renderers are now in two distinct directories,
namely "src/raster1" and "src/smooth". Note that the old "src/renderer"
is now gone..
I ditched the 5-gray-levels renderers. Basically, it involved a simple
#define toggle in 'src/raster1/ftraster.c'
FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now select
the best renderer available, depending on render mode. If the current
renderer for a given glyph image format isn't capable of supporting
the render mode, another one will be found in the library's list.
This means that client applications do not need to switch or set the
renderers themselves (as in the latest change), they'll get what they
want automatically... At last..
Changed the demo programs accordingly..
- MAJOR INTERNAL REDESIGN:
A lot of internal modifications have been performed lately on the
source in order to provide the following enhancements:
- more generic module support:
The FT_Module type is now defined to represent a handle to a given
module. The file <freetype/ftmodule.h> contains the FT_Module_Class
definition, as well as the module-loading public API
@ -187,10 +187,10 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
The FT_Renderer type is a pointer to a module used to perform various
operations on glyph image.
Each renderer is capable of handling images in a single format
(e.g. ft_glyph_format_outline). Its functions are used to:
- transform an glyph image
- render a glyph image into a bitmap
- return the control box (dimensions) of a given glyph image
@ -199,16 +199,16 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
The scan converters "ftraster.c" and "ftgrays.c" have been moved
to the new directory "src/renderer", and are used to provide two
default renderer modules.
One corresponds to the "standard" scan-converter, the other to the
"smooth" one.
The current renderer can be set through the new function
FT_Set_Renderer.
The old raster-related function FT_Set_Raster, FT_Get_Raster and
FT_Set_Raster_Mode have now disappeared, in favor of the new:
FT_Get_Renderer
FT_Set_Renderer
@ -223,7 +223,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
A new internal object, called a 'glyph loader' has been introduced
in the base layer. It is used by all scalable format font drivers
to load glyphs and composites.
This object has been created to reduce the code size of each driver,
as each one of them basically re-implemented its functionality.
@ -236,20 +236,20 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
In order to support extended features (see below), the FT_GlyphSlot
structure has a few new fields:
linearHoriAdvance: this field gives the linearly scaled (i.e.
scaled but unhinted) advance width for the glyph,
expressed as a 16.16 fixed pixel value. This
is useful to perform WYSIWYG text.
linearVertAdvance: this field gives the linearly scaled advance
height for the glyph (relevant in vertical glyph
layouts only). This is useful to perform
WYSIWYG text.
WYSIWYG text.
Note that the two above field replace the removed "metrics2" field
in the glyph slot.
advance: this field is a vector that gives the transformed
advance for the glyph. By default, it corresponds
to the advance width, unless FT_LOAD_VERTICAL_LAYOUT
@ -261,7 +261,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
when the "format" field is set to
"ft_glyph_format_bitmap", for example, after calling
the new function FT_Render_Glyph.
bitmap_top: this field gives the distance in integer pixels from
the current pen position (located on the baseline) to
the top-most pixel of the glyph image WHEN IT IS A
@ -275,7 +275,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
Most of the functionality found in <freetype/ftglyph.h> has been
moved to the core library. Hence, the following:
- a transform can be specified for a face through FT_Set_Transform.
this transform is applied by FT_Load_Glyph to scalable glyph images
(i.e. NOT TO BITMAPS) before the function returns, unless the
@ -307,7 +307,7 @@ OLD CHANGES FOR BETA 7
- bug-fixed the OpenType/CFF parser. It now loads and displays my two
fonts nicely, but I'm pretty certain that more testing is needed :-)
- fixed the crummy Type 1 hinter, it now handles accented characters
correctly (well, the accent is not always well placed, but that's
another problem..)
@ -338,7 +338,7 @@ OLD CHANGES FOR BETA 7
- added support for Multiple Master fonts in "type1z". There is also
a new file named <freetype/ftmm.h> which defines functions to
manage them from client applications.
The new file "src/base/ftmm.c" is also optional to the engine..
- various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +

17
INSTALL
View File

@ -11,7 +11,7 @@ directory. Quick starter: go to "freetype2-beta8", then:
Unix (+GNU Make):
- make (don't worry, this will invoke a configure script)
- make
@ -22,21 +22,20 @@ directory. Quick starter: go to "freetype2-beta8", then:
- make
Windows + gcc + GNU Make:
Windows + gcc + GNU Make:
- make
- make
Windows + Visual C++ + GNU Make:
- make setup visualc
- make
- make
Windows + Win32-LCC + GNU Make:
- make setup lcc
- make
etc...
etc...

View File

@ -70,7 +70,7 @@ endif
#
# LCC is pure ANSI anyway!
#
# the "-A" flag simply increments verbosity about non ANSI code
# the "-A" flag simply increments verbosity about non ANSI code
#
ANSIFLAGS := -A
@ -82,5 +82,5 @@ ifndef CLEAN_LIBRARY
$(NO_OUTPUT)
endif
LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST)
# EOF

View File

@ -75,7 +75,7 @@ ANSIFLAGS :=
# library linking
#
#CLEAN_LIBRARY :=
#CLEAN_LIBRARY :=
LINK_LIBRARY = lcclib /out:$(subst $(SEP),\\,$@) $(subst $(SEP),\\,$(OBJECTS_LIST))
# EOF

View File

@ -79,7 +79,7 @@ AC_CHECK_FUNCS(memcpy memmove)
AM_PROG_LIBTOOL
dnl create the CygWin-specific sub-Makefile `builds/cygwin/cygwin-def.mk'
dnl create the CygWin-specific sub-Makefile `builds/cygwin/cygwin-def.mk'
dnl and 'builds/cygwin/cygwin-cc.mk' that will be used by the build system
dnl
AC_OUTPUT(cygwin-cc.mk:cygwin-cc.in cygwin-def.mk:cygwin-def.in)

View File

@ -30,13 +30,13 @@ ifdef BUILD_PROJECT
distclean_project: distclean_project_cygwin
# 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.
# this is compiler-specific
#
$(PROJECT_LIBRARY): $(OBJECTS_LIST)
ifdef CLEAN_LIBRARY
ifdef CLEAN_LIBRARY
-$(CLEAN_LIBRARY) $(NO_OUTPUT)
endif
endif
$(LINK_LIBRARY)
endif

View File

@ -20,7 +20,7 @@ ifeq ($(PLATFORM),ansi)
# work...
#
ifeq ($(OS),Windows_NT)
# Check if we are running on a CygWin system by checking the OSTYPE
# variable.
ifeq ($(OSTYPE),cygwin)

View File

@ -194,7 +194,7 @@
void ft_close_stream( FT_Stream stream )
{
munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size );
stream->descriptor.pointer = NULL;
stream->size = 0;
stream->base = 0;
@ -243,7 +243,7 @@
FT_ERROR(( " could not `fstat' file `%s'\n", filepathname ));
goto Fail_Map;
}
stream->size = stat_buf.st_size;
stream->pos = 0;
stream->base = (unsigned char *)mmap( NULL,
@ -264,23 +264,23 @@
stream->descriptor.pointer = stream->base;
stream->pathname.pointer = (char*)filepathname;
stream->close = ft_close_stream;
stream->read = 0;
FT_TRACE1(( "FT_New_Stream:" ));
FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
filepathname, stream->size ));
return FT_Err_Ok;
Fail_Map:
close( file );
stream->base = NULL;
stream->size = 0;
stream->pos = 0;
return FT_Err_Cannot_Open_Stream;
}
@ -299,7 +299,7 @@
FT_EXPORT_FUNC( FT_Memory ) FT_New_Memory( void )
{
FT_Memory memory;
memory = (FT_Memory)malloc( sizeof ( *memory ) );
if ( memory )

View File

@ -27,7 +27,7 @@ ifeq ($(PLATFORM),ansi)
#
ifneq ($(OSTYPE),cygwin)
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.
#

View File

@ -52,7 +52,7 @@ LIBRARY := $(PROJECT)
# The NO_OUTPUT macro is used to ignore the output of commands.
#
#
NO_OUTPUT = &> nul
@ -68,11 +68,11 @@ ifdef BUILD_PROJECT
clean_project: clean_project_dos
distclean_project: distclean_project_dos
# 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}
#
$(PROJECT_LIBRARY): $(OBJECTS_LIST)
-$(CLEAN_LIBRARY) $(NO_OUTPUT)

View File

@ -25,13 +25,13 @@ ifdef BUILD_PROJECT
clean_project: clean_project_dos
distclean_project: distclean_project_dos
# 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.
# this is compiler-specific
#
$(PROJECT_LIBRARY): $(OBJECTS_LIST)
ifdef CLEAN_LIBRARY
ifdef CLEAN_LIBRARY
-$(CLEAN_LIBRARY) $(NO_OUTPUT)
endif
endif
$(LINK_LIBRARY)
endif

View File

@ -25,13 +25,13 @@ ifdef BUILD_PROJECT
clean_project: clean_project_std
distclean_project: distclean_project_std
# 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.
# this is compiler-specific
#
$(PROJECT_LIBRARY): $(OBJECTS_LIST)
ifdef CLEAN_LIBRARY
ifdef CLEAN_LIBRARY
-$(CLEAN_LIBRARY) $(NO_OUTPUT)
endif
endif
$(LINK_LIBRARY)
endif

View File

@ -52,7 +52,7 @@ LIBRARY := $(PROJECT)
# The NO_OUTPUT macro is used to ignore the output of commands.
#
#
NO_OUTPUT = 2> nul
@ -68,11 +68,11 @@ ifdef BUILD_LIBRARY
clean_project: clean_project_dos
distclean_project: distclean_project_dos
# 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}
#
$(PROJECT_LIBRARY): $(OBJECTS_LIST)
-$(CLEAN_LIBRARY) $(NO_OUTPUT)

View File

@ -124,11 +124,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) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul

View File

@ -123,11 +123,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) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul

View File

@ -66,7 +66,7 @@ ifdef check_platform
all: setup
ifdef USE_MODULES
ifdef USE_MODULES
# If the module list $(MODULE_LIST) file is not present, generate it.
#
#modules: make_module_list setup
@ -74,7 +74,7 @@ ifdef check_platform
include $(TOP)/builds/detect.mk
ifdef USE_MODULES
ifdef USE_MODULES
include $(TOP)/builds/modules.mk
ifeq ($(wildcard $(MODULE_LIST)),)

View File

@ -79,7 +79,7 @@ AC_CHECK_FUNCS(memcpy memmove)
AM_PROG_LIBTOOL
dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk'
dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk'
dnl and 'builds/unix/unix-cc.mk' that will be used by the build system
dnl
AC_OUTPUT(unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in)

View File

@ -194,7 +194,7 @@
void ft_close_stream( FT_Stream stream )
{
munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size );
stream->descriptor.pointer = NULL;
stream->size = 0;
stream->base = 0;
@ -243,7 +243,7 @@
FT_ERROR(( " could not `fstat' file `%s'\n", filepathname ));
goto Fail_Map;
}
stream->size = stat_buf.st_size;
stream->pos = 0;
stream->base = (unsigned char *)mmap( NULL,
@ -264,23 +264,23 @@
stream->descriptor.pointer = stream->base;
stream->pathname.pointer = (char*)filepathname;
stream->close = ft_close_stream;
stream->read = 0;
FT_TRACE1(( "FT_New_Stream:" ));
FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
filepathname, stream->size ));
return FT_Err_Ok;
Fail_Map:
close( file );
stream->base = NULL;
stream->size = 0;
stream->pos = 0;
return FT_Err_Cannot_Open_Stream;
}
@ -299,7 +299,7 @@
FT_EXPORT_FUNC( FT_Memory ) FT_New_Memory( void )
{
FT_Memory memory;
memory = (FT_Memory)malloc( sizeof ( *memory ) );
if ( memory )

View File

@ -30,16 +30,16 @@ ifdef BUILD_PROJECT
distclean_project: distclean_project_unix
# 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}
#
$(PROJECT_LIBRARY): $(OBJECTS_LIST)
ifdef CLEAN_LIBRARY
ifdef CLEAN_LIBRARY
-$(CLEAN_LIBRARY) $(NO_OUTPUT)
endif
endif
$(LINK_LIBRARY)
endif

View File

@ -20,7 +20,7 @@ ifeq ($(PLATFORM),ansi)
# work...
#
ifeq ($(OS),Windows_NT)
# Check if we are running on a CygWin system by checking the OSTYPE
# variable.
ifneq ($(OSTYPE),cygwin)

View File

@ -55,7 +55,7 @@ LIBRARY := $(PROJECT)
# The NO_OUTPUT macro is used to ignore the output of commands.
#
#
NO_OUTPUT = 2> nul
# EOF

View File

@ -32,7 +32,7 @@ I. QUICK COMMAND-LINE GUIDE
Note that on Unix, the first `make' invocation will run a configure
script (which is located in `freetype2/builds/unix/'. You can also
pass parameters to this script with the CFG variable, as in:
make CFG="--prefix=/usr/local"
make
@ -61,11 +61,11 @@ II. COMMAND-LINE COMPILATION
Make sure that you are invoking GNU Make from the command line, by
typing something like:
make -v
to display its version number.
b. Invoke `make'
Go to the root directory of FreeType 2, then simply invoke GNU
@ -248,16 +248,16 @@ IV. Support for flat-directory compilation
Note that you still need to only compile the `wrapper' sources
described above. Define the `FT_FLAT_COMPILE' macro when
compiling. Here an example:
1. Copy all files in current directory:
cp freetype2/src/base/*.[hc] .
cp freetype2/src/raster1/*.[hc] .
cp freetype2/src/smooth/*.[hc] .
etc.
2. Compile sources:
cc -c -DFT_FLAT_COMPILE -Ifreetype2/include ftsystem.c
cc -c -DFT_FLAT_COMPILE -Ifreetype2/include ftinit.c
cc -c -DFT_FLAT_COMPILE -Ifreetype2/include ftdebug.c

View File

@ -102,7 +102,7 @@ points:
`numberOfPoints' or `number_Of_Points'
`IncredibleFunction' or `Incredible_Function'
And finally, always put a capital letter after an underscore,
except in variable labels that are all lowercase:
@ -191,7 +191,7 @@ points:
PProfile next; /* next profile in same contour, used */
/* during drop-out control */
};
instead of
struct TProfile_
@ -207,7 +207,7 @@ points:
PProfile next; /* next profile in same contour, used */
/* during drop-out control */
};
This comes from the fact that you are more interested in the field
and its function than in its type.
@ -272,7 +272,7 @@ points:
same column. It makes it easier to separate a block from the rest
of the source, and it helps your _brain_ associate the accolades
easily (ask any Lisp programmer on the topic!).
Use two spaces for the next indentation level.
Never use tabs in FreeType 2 code; their widths may vary with
@ -427,11 +427,11 @@ II. Design Conventions
have thus decided to stick to the following restrictions:
- The C version is written entirely in ANSI C.
- The library, if compiled with gcc, doesn't produce any warning
with the `-ansi -pedantic' flags. Other compilers with better
checks may produce ANSI warnings -- please report.
(NOTE: It can of course be compiled by an `average' C compiler,
and even by a C++ one.)
@ -510,7 +510,7 @@ III. Usage conventions
goto Fail;
with
#define PERFORM_Action_1( parms_1 ) \
( error = Perform_Action_1( parms_1 ) )
#define PERFORM_Action_2( parms_1 ) \
@ -525,7 +525,7 @@ III. Usage conventions
actual error handling performed. Another advantage is that the
structure of source files remain very similar, even though the
error handling may be different.
This convention is very close to the use of exceptions in
languages like C++, Pascal, Java, etc. where the developer
focuses on the actions to perform, and not on every little error
@ -546,7 +546,7 @@ III. Usage conventions
and independence of a complete C library, it is possible to
re-implement the component for a specific system or OS, letting
it use system calls.
b. Frames
TrueType is tied to the big-endian format, which implies that
@ -686,4 +686,4 @@ III. Usage conventions
access to it yourself with a simple mutex.
--- end of convntns.txt ---
--- end of convntns.txt ---

View File

@ -76,7 +76,7 @@
</li>
<li>
<p><em>Customization</b>. It should be easy to build a version of the
library that only contains the features needed by a specific project.
library that only contains the features needed by a specific project.
This really is important when you need to integrate it in a font
server for embedded graphics libraries.</p>
</li>

View File

@ -71,7 +71,7 @@
<ul>
<li>
<p>Some parts of the base layer can be replaced for specific builds of
the library, and can thus be considered as components themselves.
the library, and can thus be considered as components themselves.
This is the case for the <tt>ftsystem</tt> component, which is in
charge of implementing memory management & input stream access, as
well as <tt>ftinit</tt>, which is in charge of library initialization
@ -119,7 +119,7 @@
<p>A replacable component can provide a function of the high-level
API. For example, <tt>ftinit</tt> provides
<tt>FT_Init_FreeType()</tt> to client applications.</p>
</li>
</li>
</ul>
</td></tr>

View File

@ -37,7 +37,7 @@
</h2>
<p>Though written in ANSI&nbsp;C, the library employs a few techniques,
inherited from object-oriented programming, to make it easy to extend.
inherited from object-oriented programming, to make it easy to extend.
Hence, the following conventions apply in the FreeType&nbsp;2 source
code:</p>
@ -152,7 +152,7 @@
specific typeface with a specific style. For example, "Arial" and
"Arial Italic" correspond to two distinct faces.</p>
<p>A face object is normally created through <tt>FT_New_Face()</tt>.
<p>A face object is normally created through <tt>FT_New_Face()</tt>.
This function takes the following parameters: an <tt>FT_Library</tt>
handle, a C file pathname used to indicate which font file to open, an
index used to decide which face to load from the file (a single file may
@ -171,7 +171,7 @@
value.</p>
<p>Note that the face object contains several fields used to describe
global font data that can be accessed directly by client applications.
global font data that can be accessed directly by client applications.
For example, the total number of glyphs in the face, the face's family
name, style name, the EM size for scalable formats, etc. For more
details, look at the <tt>FT_FaceRec</tt> definition in the

View File

@ -92,19 +92,19 @@
<p>The function <tt>FT_New_Face()</tt> will always automatically create
a new stream object from the C&nbsp;pathname given as its second
argument. This is achieved by calling the function
<tt>FT_New_Stream()</tt> provided by the <tt>ftsystem</tt> component.
<tt>FT_New_Stream()</tt> provided by the <tt>ftsystem</tt> component.
As the latter is replaceable, the implementation of streams may vary
greatly between platforms.</p>
<p>As an example, the default implementation of streams is located in
the file <tt>src/base/ftsystem.c</tt> and uses the ANSI
<tt>fopen()</tt>, <tt>fseek()</tt>, and <tt>fread()</tt> calls.
<tt>fopen()</tt>, <tt>fseek()</tt>, and <tt>fread()</tt> calls.
However, the Unix build of FreeType&nbsp;2 provides an alternative
implementation that uses memory-mapped files, when available on the host
platform, resulting in a significant access speed-up.</p>
<p>FreeType distinguishes between memory-based and disk-based streams.
In the first case, all data is directly accessed in memory (e.g.
<p>FreeType distinguishes between memory-based and disk-based streams.
In the first case, all data is directly accessed in memory (e.g.
ROM-based, write-only static data and memory-mapped files), while in the
second, portions of the font files are read in chunks called
<em>frames</em>, and temporarily buffered similarly through typical
@ -222,7 +222,7 @@
</ul>
<p>Note that every <tt>FT_Face</tt> object is <em>owned</em> by the
corresponding font driver, depending on the original font file's format.
corresponding font driver, depending on the original font file's format.
This means that all face objects are destroyed when a module is
removed/unregistered from a library instance (typically by calling the
<tt>FT_Remove_Module()</tt> function).</p>

View File

@ -35,13 +35,13 @@
<ul>
<li>
<p><em>Renderer</em> modules are used to manage scalable glyph images.
<p><em>Renderer</em> modules are used to manage scalable glyph images.
This means <em>transforming</em> them, computing their <em>bounding
box</em>, and <em>converting</em> them to either <em>monochrome</em>
or <em>anti-aliased</em> bitmaps</em>.</p>
<p>Note that FreeType&nbsp;2 is capable of dealing with <em>any</em>
kind of glyph images, as long as a renderer module is provided for it.
kind of glyph images, as long as a renderer module is provided for it.
The library comes by default with two renderers:</p>
<p><table cellpadding=8>

View File

@ -210,7 +210,7 @@ modules:</p>
well as other variants (like TrueType fonts that only
contain embedded bitmaps).
</td></tr><tr valign=top><td>
<b><tt>psnames</tt></b>
</td><td>
used to provide various useful function related to glyph

View File

@ -157,8 +157,8 @@ class DocCode:
def __init__( self, margin = 0 ):
self.lines = []
self.margin = margin
self.margin = margin
def add( self, line ):
# remove margin whitespace
if string.strip( line[: self.margin] ) == "":
@ -176,7 +176,7 @@ class DocCode:
return "UNKNOWN_CODE_IDENTIFIER!!"
def dump_html( self ):
# clean the last empty lines
l = len( self.lines ) - 1
while l > 0 and string.strip( self.lines[l - 1] ) == "":
@ -199,7 +199,7 @@ class DocParagraph:
def __init__( self ):
self.words = []
def add( self, line ):
# get rid of unwanted spaces in the paragraph
#
@ -220,24 +220,24 @@ class DocParagraph:
# should never happen
return "UNKNOWN_PARA_IDENTIFIER!!"
def dump( self ):
max_width = 50
cursor = 0
line = ""
for word in self.words:
if cursor + len( word ) + 1 > max_width:
print line
cursor = 0
line = ""
line = line + word + " "
cursor = cursor + len( word ) + 1
if cursor > 0:
print line
@ -245,7 +245,7 @@ class DocParagraph:
def dump_html( self ):
print para_header
self.dump()
print para_footer
@ -277,7 +277,7 @@ class DocParagraph:
# [ ( None, [ DocParagraph, DocParagraph] ),
# ( "x", [ DocParagraph ] ),
# ( "y", [ DocParagraph, DocCode ] ) ]
#
#
# in self.items
#
# the DocContent object is entirely built at creation time, you must
@ -293,14 +293,14 @@ class DocContent:
text = []
paragraph = None # represents the current DocParagraph
code = None # represents the current DocCode
elements = [] # the list of elements for the current field,
# contains DocParagraph or DocCode objects
field = None # the current field
for aline in lines_list:
if code_mode == 0:
line = string.lstrip( aline )
l = len( line )
@ -309,26 +309,26 @@ class DocContent:
# if the line is empty, this is the end of the current
# paragraph
if l == 0 or line == '{':
if paragraph:
elements.append( paragraph )
paragraph = None
if line == "":
continue
code_mode = 1
code_margin = margin
code = None
continue
words = string.split( line )
# test for a field delimiter on the start of the line, i.e.
# the token `::'
#
if len( words ) >= 2 and words[1] == "::":
# start a new field - complete current paragraph if any
if paragraph:
elements.append( paragraph )
@ -336,47 +336,47 @@ class DocContent:
# append previous "field" to self.items
self.items.append( ( field, elements ) )
# start new field and elements list
field = words[0]
elements = []
words = words[2 :]
# append remaining words to current paragraph
if len( words ) > 0:
line = string.join( words )
if not paragraph:
paragraph = DocParagraph()
paragraph.add( line )
else:
# we're in code mode..
line = aline
# the code block ends with a line that has a single '}' on it
# that is located at the same column that the opening
# accolade..
if line == " " * code_margin + '}':
if code:
elements.append( code )
code = None
code_mode = 0
code_margin = 0
# otherwise, add the line to the current paragraph
else:
if not code:
code = DocCode()
code.add( line )
if paragraph:
elements.append( paragraph )
if code:
elements.append( code )
self.items.append( ( field, elements ) )
@ -388,7 +388,7 @@ class DocContent:
# should never happen
return "UNKNOWN_CONTENT_IDENTIFIER!!"
def dump( self ):
for item in self.items:
@ -398,25 +398,25 @@ class DocContent:
for element in item[1]:
element.dump()
if field:
print "</field> "
def dump_html( self ):
n = len( self.items )
in_table = 0
for i in range( n ):
item = self.items[i]
field = item[0]
if not field:
if in_table:
print "</td></tr></table>"
in_table = 0
for element in item[1]:
element.dump_html()
else:
@ -425,9 +425,9 @@ class DocContent:
in_table = 1
else:
print "</td></tr><tr valign=top><td>"
print "<b>" + field + "</b></td><td>"
for element in item[1]:
element.dump_html()
@ -459,19 +459,19 @@ class DocBlock:
marker = None # current marker
content = [] # current content lines list
alphanum = string.letters + string.digits + "_"
for line in block_line_list:
line2 = string.lstrip( line )
l = len( line2 )
margin = len( line ) - l
if l > 3:
ender = None
if line2[0] == '<':
ender = '>'
elif line2[0] == '@':
ender = ':'
if ender:
i = 1
while i < l and line2[i] in alphanum:
@ -484,12 +484,12 @@ class DocBlock:
line2 = string.lstrip( line2[i + 1 :] )
l = len( line2 )
line = " " * margin + line2
content.append( line )
if marker and content:
self.add( marker, content )
self.source = []
if self.items:
self.source = source_line_list
@ -512,14 +512,14 @@ class DocBlock:
i = i + 1
lines = lines[i : l]
l = len( lines )
# add a new marker only if its marker and its content list aren't empty
if l > 0 and marker:
content = DocContent(lines)
self.items.append( ( string.lower(marker), content ) )
if not self.identifier:
self.identifier = content.get_identifier()
def dump( self ):
@ -529,22 +529,22 @@ class DocBlock:
content.dump()
def dump_html( self ):
types = [ 'type', 'struct', 'functype', 'function', 'constant',
'enum', 'macro' ]
if not self.items:
return
# start of a block
print block_header
print "<h2>" + self.identifier + "</h2>"
# print source code
if not self.source:
return
lines = self.source
l = len( lines ) - 1
while l >= 0 and string.strip( lines[l] ) == "":
@ -556,7 +556,7 @@ class DocBlock:
# dump each (marker,content) element
for element in self.items:
marker = element[0]
content = element[1]
@ -564,13 +564,13 @@ class DocBlock:
print "<ul>"
content.dump_html()
print "</ul>"
elif not (marker in types):
print "<h4>" + marker + "</h4>"
print "<ul>"
content.dump_html()
print "</ul>"
print ""
print block_footer
@ -581,7 +581,7 @@ class DocBlock:
# "type" (i.e. first marker) is in the "types" parameter
#
def filter_blocks( block_list, types ):
new_list = []
for block in block_list:
if block.items:
@ -601,7 +601,7 @@ def block_lexicographical_compare( b1, b2 ):
return -1
if not b2.identifier:
return 1
id1 = string.lower(b1.identifier)
id2 = string.lower(b2.identifier)
if id1 < id2:
@ -610,7 +610,7 @@ def block_lexicographical_compare( b1, b2 ):
return 0
else:
return 1
def block_make_list( source_block_list ):
list = []
@ -627,10 +627,10 @@ def block_make_list( source_block_list ):
def dump_html_1( block_list ):
print html_header
for block in block_list:
block.dump_html()
print html_footer
@ -642,7 +642,7 @@ def make_block_list():
list = []
block = []
format = 0
# we use "format" to store the state of our parser:
#
# 0 - wait for beginning of comment
@ -652,7 +652,7 @@ def make_block_list():
# 4 - wait for beginning of source (or comment ??)
# 5 - process source
#
comment = []
source = []
state = 0
@ -666,7 +666,7 @@ def make_block_list():
# stripped version of the line
line2 = string.strip( line )
l = len( line2 )
# if this line begins with a comment and we are processing some
# source, exit to state 0
#
@ -718,7 +718,7 @@ def make_block_list():
if l == 0 or line2[0] != '*':
block = []
format = 0
# otherwise, we test for an end of block, which is an
# arbitrary number of '*', followed by '/'
else:
@ -765,7 +765,7 @@ def make_block_list():
else:
# otherwise, add the line to the current block
block.append( line2 )
continue
@ -774,18 +774,18 @@ def make_block_list():
if l > 0:
format = 5
if format == 5:
source.append( line )
if format >= 4:
list.append( [block, source] )
return list
# This function is only used for debugging
#
def dump_block_list( list ):
@ -806,11 +806,11 @@ def main( argv ):
sys.stderr.write( "extracting comment blocks from sources...\n" )
list = make_block_list()
list = block_make_list(list)
list2 = filter_blocks( list, ['type','macro','enum','constant', 'functype'] )
#list2 = list
list2.sort( block_lexicographical_compare )
dump_html_1( list2 )
#dump_doc_blocks( list )
#dump_block_lists( list )

View File

@ -17,7 +17,7 @@
alink="#FF0000">
<font size=1>http://www.freetype.org</font><p>
<font size=1>http://www.freetype.org</font><p>
<center>
<a href="freetype.html">
@ -61,7 +61,7 @@ ubiquitous products.</p>
returns and manages outline font data (images & metrics).</p>
</ul>
</p></li>
<li><p>
<b>Support for several font formats through loadable modules:</b><br>
<ul>
@ -71,8 +71,8 @@ ubiquitous products.</p>
the font.</p>
</ul>
</p></li>
<li><p>
<b>High-quality anti-aliasing:</b><br>
<ul>
@ -95,9 +95,9 @@ ubiquitous products.</p>
memory, compressed file, network, etc..).
</p>
</ul>
</ul>
<p>Note that <em>the beta of FreeType 2 is available <b>now</b></em>. For more
info, check our <a href="download.html">Download page</a> or see the source
and its diffs through our <a href="cgi-bin/cvsweb.cgi">CVS Web interface</a>.
@ -144,7 +144,7 @@ ubiquitous products.</p>
Apple. We're currently in contact with Apple to discuss the importance
of such patents and their use in open source projects like FreeType.
</p>
<p>In the meantime, we have developped our own alternative technology that
is capable of automatically hinting scalable glyph images. It is
now part of the FreeType 2 source tree as the "autohint" module,
@ -166,12 +166,12 @@ ubiquitous products.</p>
only compile the features you need. As each module is between
10 and 20 Kb in size, it's possible to build a bare-bones
font engine that supports anti-aliasing in about 30 Kb !!</p>
<p>Configuration is performed by modifications of only two header
files (one to select global features, another one to select modules)
and don't need tweaking of source code. Note that it is however
possible to provide your own implementation of certain components.</p>
<p>For example, when building on Unix, the engine will automatically
use memory-mapped files when available on the target platform,
thus significantly increasing font file i/o.</p>
@ -188,7 +188,7 @@ ubiquitous products.</p>
glyph images from font files. These images can be bitmaps, scalable
bezier outlines or even anything else. (e.g. bi-color or metafont
glyphs, as long as they're supported by a module).</p>
<p>Each scalable glyph image can be transformed, measured and
rendered into a monochrome or anti-aliased bitmaps easily
through a uniform interface.
@ -205,10 +205,10 @@ ubiquitous products.</p>
<p>The FreeType 2 API is useful to retrieve advanced information from
various fonts:</p>
<ul>
<li>vertical metrics are available whenever found in the font file</li>
<li>kerning distances are available when found in the font file. It
is also possible to "attach" a given additional file to a given
font face. This is useful to load kerning distances from an
@ -216,7 +216,7 @@ ubiquitous products.</p>
<li>provides ASCII glyph names whenever available in the font
(TrueType, OpenType, Type1, etc..)</li>
<li>provides access to important tables for SFNT-based font formats
(i.e. TrueType, OpenType, CEF, etc..), like the name table,
font header, maximum profile, etc...</li>
@ -225,15 +225,15 @@ ubiquitous products.</p>
those fonts or formats that do not provide one. This is
extremely useful with Type 1 fonts which are normally
limited to a stupid 256-characters encoding.</li>
</ul>
</ul>
<h3>Simple & clean API</h3>
<p>The FreeType 2 high-level API is simple and straightforward, as it
has been specifically designed to make the most commmon font operations
easy</p>
<p>As a comparison, the number of function calls needed to perform a
the tasks of font face creation/opening and glyph loading/rendering
has been reduced by a factor of 4 !!</p>
@ -242,7 +242,7 @@ ubiquitous products.</p>
it provides standard extensions to access format-specific tables and
information. More extensions can also be easily added through new
modules</p>
<h3>Robust & Portable code</h3>
@ -257,7 +257,7 @@ ubiquitous products.</p>
a disk file, memory, or through a client-provided input stream. This
allows to support compressed font files, remote fonts, fonts embedded
in other streams (e.g. Type42 fonts), etc..</p>
<p>An advanced i/o sub-system is used to optimise file access, as well
as reduce memory usage of the library when the file is memory-based
( ROM, RAM, memory-mapped ).</p>
@ -268,13 +268,13 @@ ubiquitous products.</p>
<p>Finally, FreeType 2 is released under its own BSD-like open source
license, one of the less restricting licenses available, and this
means that:</p>
<ul>
<li><p>
It can be included in all kinds of products, be they proprietary
or not.
</p></li>
<li><p>
As any module can be added or replaced anytime, any third party
vendor has the ability to provide its own set of modules (under
@ -327,7 +327,7 @@ ubiquitous products.</p>
is covered by the Apple patents. However, this piece of code is never
compiled by default in this release (unlike in previous betas) making
a default build of the library <em>entirely patent-free !!</em></p>
<p>Note that in order to compile the interpreter, one needs to define
the configuration macro <tt><b>TT_CONFIG_OPTION_BYTECODE_INTERPRETER</b></tt> configuration
macro in the file "<tt>ftoption.h</tt>". More details are available in

View File

@ -161,7 +161,7 @@
FreeType&nbsp;2</p>
<p>Finally, it would have been hard to distribute such a library without
an alternative technology to replace the patented bytecode interpreter.
an alternative technology to replace the patented bytecode interpreter.
This involved significant research work that could only be performed
correctly full-time, and we had to found a company to fund such a
development and still make it available under a BSD-like license. Huge
@ -199,7 +199,7 @@
connection to the XFree people, but we have been asked so frequently
about it that it deserves a prominent place in this FAQ&nbsp;:-)</p>
<p>FreeType has been capable of anti-aliasing since version&nbsp;1.0.
<p>FreeType has been capable of anti-aliasing since version&nbsp;1.0.
The reason why XFree doesn't support it is directly related to the
limitations of the design and specification of X11. More
specifically:</p>
@ -283,7 +283,7 @@
</h3>
<p>The library can be compiled in various ways, and a detailed
documentation is available in the file <tt>freetype2/docs/BUILD</tt>.
documentation is available in the file <tt>freetype2/docs/BUILD</tt>.
However, we will summarize the process to a few cases:</p>
<h4>
@ -296,7 +296,7 @@
<em>not</em> work with other Make tools).</p>
<p>Basically, you will need to invoke <tt>make</tt> a first time in
the top-level FreeType&nbsp;2 directory in order to set up the build.
the top-level FreeType&nbsp;2 directory in order to set up the build.
This will detect your current platform and choose a configuration
sub-makefile to drive the build. A specific compiler can be selected
on some platforms by providing an additional target. For example, on
@ -358,7 +358,7 @@
</h4>
<p>Well, the process is vastly similar to the one described in b.,
except that you need to set the include paths, source code paths, etc.
except that you need to set the include paths, source code paths, etc.
in dialog boxes before running the compilation.</p>
<a name="builds-config">
@ -403,7 +403,7 @@
is in the file <tt>src/base/ftinit.c</tt>.</p>
<p>The list of default modules used by <tt>ftinit.c</tt> is located in
the configuration file <tt>include/freetype/config/ftmodule.h</tt>.
the configuration file <tt>include/freetype/config/ftmodule.h</tt>.
Normally, it is automatically generated by the build system by invoking
the "<tt><b>make modules</b></tt>" command in the top level
FreeType&nbsp;2 directory (Note: this only works with GNU Make; you can
@ -572,11 +572,11 @@
<p>Well, the engine already reads OpenType/CFF files perfectly. What it
doesn't do is handle "OpenType Layout" tables yet.</p>
<p>FreeType&nbsp;1 comes with a set of extensions that are used to load
and manage OpenType Layout tables. It even has a demonstration program
named "<tt>ftstrtto</tt>" to show its capabilities.</p>
<p>For FreeType&nbsp;2, we have decided that the layout operations
provided through these tables are better placed in a specific
text-layout library, (many people having asked for such a thing). This

View File

@ -86,11 +86,11 @@ mac_standard_names = \
# 120
"ntilde", "oacute", "ograve", "ocircumflex", "odieresis",
"otilde", "uacute", "ugrave", "ucircumflex", "udieresis",
# 130
"dagger", "degree", "cent", "sterling", "section",
"bullet", "paragraph", "germandbls", "registered", "copyright",
# 140
"trademark", "acute", "dieresis", "notequal", "AE",
"Oslash", "infinity", "plusminus", "lessequal", "greaterequal",
@ -1502,7 +1502,7 @@ def count_extra_glyphs( alist, filter ):
filtered_index = filter.index( name )
except:
extras.append( name )
return extras
@ -1521,7 +1521,7 @@ def dump_mac_indices( file ):
except:
write( " " + repr( count ) + ",\n" )
count = count + 1
write( " 0\n" )
write( " };\n" )
write( "\n" )
@ -1555,7 +1555,7 @@ def dump_glyph_list( file, glyph_list, adobe_extra ):
write( " };\n" )
write( "\n" )
write( "\n" )
return name_list
@ -1570,7 +1570,7 @@ def dump_unicode_values( file, base_list, adobe_list ):
write( " static const unsigned short names_to_unicode[" + \
repr( len( base_list ) + len( adobe_list ) + 1 ) + "] =\n" )
write( " {\n" )
for name in base_list:
try:
index = adobe_glyphs.index( name )
@ -1626,13 +1626,13 @@ def main():
write = file.write
count_sid = len( t1_standard_strings )
# build mac index table & supplemental glyph names
mac_list = count_extra_glyphs( mac_standard_names, t1_standard_strings )
count_mac = len( mac_list )
count_mac = len( mac_list )
t1_bias = count_mac
base_list = mac_list + t1_standard_strings
# build adobe unicode index table & supplemental glyph names
adobe_list = the_adobe_glyph_list()
adobe_list = count_extra_glyphs( adobe_list, base_list )
@ -1664,7 +1664,7 @@ def main():
# dump glyph list
name_list = dump_glyph_list( file, base_list, adobe_list )
# dump t1_standard_list
write( " static const char** t1_standard_glyphs = " \
+ "standard_glyph_names + " + repr( t1_bias ) + ";\n" )
@ -1684,17 +1684,17 @@ def main():
write( "\n" )
# dump mac indices table
dump_mac_indices( file )
dump_mac_indices( file )
# discard mac names from base list
base_list = base_list[t1_bias:]
# dump unicode values table
dump_unicode_values( file, base_list, adobe_list )
dump_encoding( file, "t1_standard_encoding", t1_standard_encoding )
dump_encoding( file, "t1_expert_encoding", t1_expert_encoding )
write( "/* END */\n" )

View File

@ -234,7 +234,7 @@
</font>
<p>As you can see, <tt>FT_New_Memory_Face()</tt> takes a pointer to
the font file buffer and its size in bytes instead of a file pathname.
the font file buffer and its size in bytes instead of a file pathname.
Other than that, it has exactly the same semantics as
<tt>FT_New_Face()</tt>.</p>

View File

@ -1431,7 +1431,7 @@
in an abstract grid called the <em>design space</em>, with coordinates
expressed in nominal <em>font units</em>. When a glyph image is loaded,
the font driver usually scales the outline to device space according to
the current character pixel size found in a <tt>FT_Size</tt> object.
the current character pixel size found in a <tt>FT_Size</tt> object.
The driver may also modify the scaled outline in order to significantly
improve its appearance on a pixel-based surface (a process known as
<em>hinting</em> or <em>grid-fitting</em>).</p>

View File

@ -69,7 +69,7 @@
FT_UShort cset_index;
FT_UShort num_elements;
FT_Byte* elements;
} FTC_ChunkNodeRec;
@ -153,7 +153,7 @@
FTC_CacheRec root;
FT_Lru csets_lru; /* static chunk set lru list */
FTC_ChunkSet last_cset; /* small cache :-) */
} FTC_Chunk_CacheRec;

View File

@ -20,7 +20,7 @@
#define FTCSBITS_H
#include <freetype/cache/ftcchunk.h>
#include <freetype/cache/ftcchunk.h>
#ifdef __cplusplus
@ -34,7 +34,7 @@
/* handle to small bitmap cache */
typedef struct FTC_SBit_CacheRec_* FTC_SBit_Cache;
/* a compact structure used to hold a single small bitmap */
/* a compact structure used to hold a single small bitmap */
typedef struct FTC_SBitRec_
{
FT_Byte width;
@ -48,7 +48,7 @@
FT_Char yadvance;
FT_Byte* buffer;
} FTC_SBitRec;

View File

@ -77,7 +77,7 @@
{
FT_ListNodeRec root;
FT_LruKey key;
} FT_LruNodeRec, *FT_LruNode;
@ -90,26 +90,26 @@
typedef struct FT_Lru_Class_
{
FT_UInt lru_size; /* object size in bytes */
/* this method is used to initialize a new list element node */
FT_Error (*init_element)( FT_Lru lru,
FT_LruNode node );
/* this method is used to finalize a given list element node */
void (*done_element)( FT_Lru lru,
FT_LruNode node );
/* If defined, this method is called when the list if full */
/* during the lookup process -- it is used to change the contents */
/* of a list element node, instead of calling `done_element()', */
/* then `init_element'. Set it to 0 for default behaviour. */
/* then `init_element'. Set it to 0 for default behaviour. */
FT_Error (*flush_element)( FT_Lru lru,
FT_LruNode node,
FT_LruKey new_key );
FT_LruKey new_key );
/* If defined, this method is used to compare a list element node */
/* with a given key during a lookup. If set to 0, the `key' */
/* fields will be directly compared instead. */
/* fields will be directly compared instead. */
FT_Bool (*compare_element)( FT_LruNode node,
FT_LruKey key );
@ -133,11 +133,11 @@
FT_ListRec elements;
FT_Memory memory;
FT_Pointer user_data;
/* the following fields are only meaningful for static lru containers */
FT_ListRec free_nodes;
FT_LruNode nodes;
} FT_LruRec;
@ -148,9 +148,9 @@
FT_Bool pre_alloc,
FT_Lru* alru );
FT_EXPORT_DEF( void ) FT_Lru_Reset( FT_Lru lru );
FT_EXPORT_DEF( void ) FT_Lru_Reset( FT_Lru lru );
FT_EXPORT_DEF( void ) FT_Lru_Done ( FT_Lru lru );
FT_EXPORT_DEF( void ) FT_Lru_Done ( FT_Lru lru );
FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup_Node( FT_Lru lru,
@ -163,7 +163,7 @@
FT_EXPORT_DEF( void ) FT_Lru_Remove_Node( FT_Lru lru,
FT_LruNode node );
FT_LruNode node );
FT_EXPORT_DEF( void ) FT_Lru_Remove_Selection( FT_Lru lru,
FT_Lru_Selector selector,

View File

@ -312,7 +312,7 @@
FTC_Font font,
FT_Face* aface,
FT_Size* asize );
/* a cache class is used to describe a unique cache type to the manager */
typedef struct FTC_Cache_Class_ FTC_Cache_Class;

View File

@ -64,7 +64,7 @@
/* I initially thought that it would be a good idea to cache the glyph */
/* hints too. However, my general idea now is that if you really need */
/* to cache these too, you are simply in need of a new font format, */
/* where all this information could be stored within the font file and */
/* where all this information could be stored within the font file and */
/* decoded on the fly. */
/* */
/*************************************************************************/

View File

@ -112,7 +112,7 @@
FT_Library library;
FT_Memory memory;
FT_Generic generic;
} FT_ModuleRec;
@ -186,7 +186,7 @@
#define FT_FACE( x ) ((FT_Face)(x))
#define FT_SIZE( x ) ((FT_Size)(x))
#define FT_SLOT( x ) ((FT_GlyphSlot)(x))
#define FT_FACE_DRIVER( x ) FT_FACE( x )->driver
#define FT_FACE_LIBRARY( x ) FT_FACE_DRIVER( x )->root.library
#define FT_FACE_MEMORY( x ) FT_FACE( x )->memory
@ -258,7 +258,7 @@
FT_UInt num_subglyphs; /* number of subglyphs */
FT_SubGlyph* subglyphs; /* subglyphs */
FT_Vector* extra_points; /* extra points table */
} FT_GlyphLoad;
@ -274,27 +274,27 @@
FT_GlyphLoad current;
void* other; /* for possible future extension? */
};
BASE_DEF( FT_Error ) FT_GlyphLoader_New( FT_Memory memory,
FT_GlyphLoader** aloader );
BASE_DEF( FT_Error ) FT_GlyphLoader_Create_Extra(
FT_GlyphLoader* loader );
FT_GlyphLoader* loader );
BASE_DEF( void ) FT_GlyphLoader_Done( FT_GlyphLoader* loader );
BASE_DEF( void ) FT_GlyphLoader_Reset( FT_GlyphLoader* loader );
BASE_DEF( void ) FT_GlyphLoader_Rewind( FT_GlyphLoader* loader );
BASE_DEF( FT_Error ) FT_GlyphLoader_Check_Points(
FT_GlyphLoader* loader,
FT_UInt n_points,
FT_UInt n_contours );
BASE_DEF( FT_Error ) FT_GlyphLoader_Check_Subglyphs(
FT_GlyphLoader* loader,
FT_UInt n_subs );
@ -336,7 +336,7 @@
FT_Raster raster;
FT_Raster_Render_Func raster_render;
FTRenderer_render render;
} FT_RendererRec;
@ -391,10 +391,10 @@
{
FT_ModuleRec root;
FT_Driver_Class* clazz;
FT_ListRec faces_list;
void* extensions;
FT_GlyphLoader* glyph_loader;
} FT_DriverRec;

View File

@ -72,7 +72,7 @@
ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ),
ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ),
ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ),
ft_frame_bytes = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ),
ft_frame_skip = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 )
@ -133,7 +133,7 @@
FT_FIELD_OFFSET( field ) \
}
#define FT_FRAME_SKIP_BYTES( count ) { ft_frame_skip, count, 0 }
/*************************************************************************/
@ -330,7 +330,7 @@
#define EXTRACT_Frame( size, bytes ) \
FT_SET_ERROR( FT_Extract_Frame( stream, size, \
(FT_Byte**)&(bytes) ) )
#define RELEASE_Frame( bytes ) \
FT_Release_Frame( stream, (FT_Byte**)&(bytes) )

View File

@ -63,16 +63,16 @@
FT_Error (*init) ( PS_Table* table,
FT_Int count,
FT_Memory memory );
void (*done) ( PS_Table* table );
void (*done) ( PS_Table* table );
FT_Error (*add) ( PS_Table* table,
FT_Int index,
void* object,
FT_Int length );
void (*release)( PS_Table* table );
void (*release)( PS_Table* table );
} PS_Table_Funcs;
@ -186,7 +186,7 @@
/* do not remove */
t1_field_location_max
} T1_Field_Location;
@ -297,10 +297,10 @@
FT_Memory memory );
void (*done) ( T1_Parser* parser );
void (*skip_spaces) ( T1_Parser* parser );
void (*skip_alpha) ( T1_Parser* parser );
FT_Long (*to_int) ( T1_Parser* parser );
FT_Fixed (*to_fixed) ( T1_Parser* parser,
FT_Int power_ten );
@ -310,21 +310,21 @@
FT_Int (*to_fixed_array)( T1_Parser* parser,
FT_Int max_values,
FT_Fixed* values,
FT_Int power_ten );
FT_Int power_ten );
void (*to_token) ( T1_Parser* parser,
T1_Token* token );
void (*to_token_array)( T1_Parser* parser,
T1_Token* tokens,
FT_UInt max_tokens,
FT_Int* pnum_tokens );
FT_Error (*load_field) ( T1_Parser* parser,
const T1_Field* field,
void** objects,
FT_UInt max_objects,
FT_ULong* pflags );
FT_Error (*load_field_table)( T1_Parser* parser,
const T1_Field* field,
void** objects,
@ -333,7 +333,7 @@
} T1_Parser_Funcs;
/*************************************************************************/
/* */
/* <Struct> */
@ -362,7 +362,7 @@
FT_Byte* limit;
FT_Error error;
FT_Memory memory;
T1_Parser_Funcs funcs;
};
@ -382,16 +382,16 @@
typedef FT_Error (*T1_Builder_Check_Points_Func) ( T1_Builder* builder,
FT_Int count );
typedef void (*T1_Builder_Add_Point_Func) ( T1_Builder* builder,
FT_Pos x,
FT_Pos y,
FT_Byte flag );
FT_Byte flag );
typedef FT_Error (*T1_Builder_Add_Point1_Func) ( T1_Builder* builder,
FT_Pos x,
FT_Pos y );
typedef FT_Error (*T1_Builder_Add_Contour_Func) ( T1_Builder* builder );
typedef FT_Error (*T1_Builder_Start_Point_Func) ( T1_Builder* builder,
@ -407,16 +407,16 @@
FT_Face face,
FT_Size size,
FT_GlyphSlot slot );
void (*done)( T1_Builder* builder );
T1_Builder_Check_Points_Func check_points;
T1_Builder_Add_Point_Func add_point;
T1_Builder_Add_Point1_Func add_point1;
T1_Builder_Add_Contour_Func add_contour;
T1_Builder_Start_Point_Func start_point;
T1_Builder_Close_Contour_Func close_contour;
} T1_Builder_Funcs;
@ -543,7 +543,7 @@
FT_Byte* cursor;
FT_Byte* base;
FT_Byte* limit;
} T1_Decoder_Zone;
@ -564,9 +564,9 @@
FT_Byte** glyph_names,
T1_Blend* blend,
T1_Decoder_Callback callback );
void (*done) ( T1_Decoder* decoder );
FT_Error (*parse_charstrings)( T1_Decoder* decoder,
FT_Byte* base,
FT_UInt len );
@ -600,7 +600,7 @@
FT_Vector flex_vectors[7];
T1_Blend* blend; /* for multiple master support */
T1_Decoder_Callback parse_callback;
T1_Decoder_Funcs funcs;
};

View File

@ -105,7 +105,7 @@
/* */
/* <Note> */
/* This function will not be compiled if the configuration macro */
/* FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined. */
/* FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined. */
/* */
typedef const char* (*PS_Macintosh_Name_Func)( FT_UInt name_index );

View File

@ -450,7 +450,7 @@
TT_Load_Face_Func load_face;
TT_Done_Face_Func done_face;
SFNT_Get_Interface_Func get_interface;
TT_Load_Any_Func load_any;
TT_Load_SFNT_Header_Func load_sfnt_header;
TT_Load_Directory_Func load_directory;

View File

@ -128,7 +128,7 @@
{
FT_UInt num_subrs;
FT_Byte** code;
} CID_Subrs;
@ -185,7 +185,7 @@
CID_Info cid;
void* afm_data;
CID_Subrs* subrs;
} CID_FaceRec;

View File

@ -89,7 +89,7 @@
FT_ULong private_size;
FT_Long synthetic_base;
FT_UInt embedded_postscript;
FT_UInt base_font_name;
FT_UInt base_font_name;
FT_UInt postscript;
/* these should only be used for the top-level font dictionary */
@ -107,26 +107,26 @@
FT_UInt cid_font_name;
} CFF_Font_Dict;
typedef struct CFF_Private_
{
FT_Byte num_blue_values;
FT_Byte num_other_blues;
FT_Byte num_family_blues;
FT_Byte num_family_other_blues;
FT_Pos blue_values[14];
FT_Pos other_blues[10];
FT_Pos family_blues[14];
FT_Pos family_other_blues[10];
FT_Fixed blue_scale;
FT_Pos blue_shift;
FT_Pos blue_fuzz;
FT_Pos standard_width;
FT_Pos standard_height;
FT_Byte num_snap_widths;
FT_Byte num_snap_heights;
FT_Pos snap_widths[13];
@ -140,7 +140,7 @@
FT_ULong local_subrs_offset;
FT_Pos default_width;
FT_Pos nominal_width;
} CFF_Private;
@ -157,7 +157,7 @@
FT_UInt cache_first;
FT_UInt cache_count;
FT_Byte cache_fd;
} CFF_FD_Select;
@ -167,7 +167,7 @@
{
CFF_Font_Dict font_dict;
CFF_Private private_dict;
CFF_Index local_subrs_index;
FT_UInt num_local_subrs;
FT_Byte** local_subrs;
@ -177,7 +177,7 @@
/* maximum number of sub-fonts in a CID-keyed file */
#define CFF_MAX_CID_FONTS 16
typedef struct CFF_Font_
{
@ -185,20 +185,20 @@
FT_Memory memory;
FT_UInt num_faces;
FT_UInt num_glyphs;
FT_Byte version_major;
FT_Byte version_minor;
FT_Byte header_size;
FT_Byte absolute_offsize;
CFF_Index name_index;
CFF_Index top_dict_index;
CFF_Index string_index;
CFF_Index global_subrs_index;
/* we don't load the Encoding and CharSet tables */
CFF_Index charstrings_index;
CFF_Index font_dict_index;
CFF_Index private_index;

View File

@ -99,7 +99,7 @@
FT_UShort search_range;
FT_UShort entry_selector;
FT_UShort range_shift;
} SFNT_Header;
@ -965,7 +965,7 @@
TT_CMap4Segment* segments;
FT_UShort* glyphIdArray;
FT_UShort numGlyphId; /* control value */
TT_CMap4Segment* last_segment; /* last used segment; this is a small */
/* cache to potentially increase speed */
} TT_CMap4;
@ -1162,7 +1162,7 @@
FT_ULong offset,
FT_UInt byte_count );
/*************************************************************************/
/* */
/* <FuncType> */
@ -1180,7 +1180,7 @@
/* */
typedef
FT_Error (*TT_Load_Glyph_Element_Func)( TT_Loader* loader );
/*************************************************************************/
/* */
@ -1574,7 +1574,7 @@
TT_ExecContext exec;
FT_Byte* instructions;
FT_ULong ins_pos;
/* for possible extensibility in other formats */
void* other;

View File

@ -4,7 +4,7 @@
2000-Jul-04
Copyright (C) 2000 by Catharon Productions, Inc.
Introduction

View File

@ -180,21 +180,21 @@
n = ah_test_extrema( outline, indices.xMin );
if ( n )
goto Exit;
n = ah_test_extrema( outline, indices.yMin );
if ( n )
goto Exit;
n = ah_test_extrema( outline, indices.xMax );
if ( n )
goto Exit;
n = ah_test_extrema( outline, indices.yMax );
if ( !n )
n = 1;
Exit:
return n;
return n;
}
@ -367,7 +367,7 @@
{
outline->vert_major_dir = ah_dir_down;
outline->horz_major_dir = ah_dir_right;
}
}
#else

View File

@ -1115,7 +1115,7 @@
( new_width + new_lsb - old_width - old_lsb );
hinter->pp1.x = ( ( new_lsb - old_lsb ) + 32 ) & -64;
hinter->pp2.x = ( ( edge2->pos +
hinter->pp2.x = ( ( edge2->pos +
( old_advance - edge2->opos ) ) + 32 ) & -64;
}

View File

@ -143,7 +143,7 @@
LOG(( " [%d-%d:%.1f:%1.f:%.1f]",
spring->stem1 - stems, spring->stem2 - stems,
FLOAT( spring->owidth ),
FLOAT( spring->stem2->pos -
FLOAT( spring->stem2->pos -
( spring->stem1->pos + spring->stem1->width ) ),
FLOAT( spring->tension ) ));
}

View File

@ -22,18 +22,18 @@ ag_pi = 256
def print_arctan( atan_bits ):
atan_base = 1 << atan_bits
print " static AH_Angle ag_arctan[1L << AG_ATAN_BITS] ="
print " {"
count = 0
line = " "
for n in range( atan_base ):
comma = ","
if ( n == atan_base - 1 ):
comma = ""
angle = math.atan( n * 1.0 / atan_base ) / math.pi * ag_pi
line = line + " " + repr( int( angle + 0.5 ) ) + comma
count = count + 1;
@ -41,7 +41,7 @@ def print_arctan( atan_bits ):
count = 0
print line
line = " "
if ( count > 0 ):
print line
print " };"
@ -55,7 +55,7 @@ def print_sines():
count = 0
line = " "
for n in range( ag_pi / 2 ):
sinus = math.sin( n * math.pi / ag_pi )
line = line + " " + repr( int( 65536.0 * sinus ) ) + ","
@ -64,7 +64,7 @@ def print_sines():
count = 0
print line
line = " "
if ( count > 0 ):
print line
print " 65536"

View File

@ -1,5 +1,5 @@
#
# FreeType 2 auto-hinter module definition
# FreeType 2 auto-hinter module definition
#

View File

@ -300,7 +300,7 @@
{
FT_Int64 z;
z = (FT_Int64)(x) << 16;
return FT_Sqrt64( z );
}
@ -773,7 +773,7 @@
{
FT_Int64 z;
z.hi = (FT_UInt32)((FT_Int32)(x) >> 16);
z.lo = (FT_UInt32)( x << 16 );
return FT_Sqrt64( &z );

View File

@ -831,7 +831,7 @@
/* copy advance - thanks Karsten ;-) */
bitmap->root.advance = glyph->advance;
*the_glyph = FT_GLYPH( bitmap );
}

View File

@ -174,7 +174,7 @@ const FT_Module_Class* const ft_default_modules[] =
/* Discard the library object */
FT_Done_Library( library );
/* discard memory manager */
FT_Done_Memory( memory );
}

View File

@ -44,8 +44,8 @@
{
return face && ( FT_IS_SFNT( face ) ? ((TT_Face)face)->num_names : 0 );
}
/*************************************************************************/
/* */
/* <Function> */
@ -78,17 +78,17 @@
FT_SfntName* aname )
{
FT_Error error = FT_Err_Invalid_Argument;
if ( aname && face && FT_IS_SFNT( face ) )
{
TT_Face ttface = (TT_Face)face;
if ( index < ttface->num_names )
{
TT_NameRec* name = ttface->name_table.names + index;
aname->platform_id = name->platformID;
aname->encoding_id = name->encodingID;
@ -96,13 +96,13 @@
aname->name_id = name->nameID;
aname->string = (FT_Byte*)name->string;
aname->string_len = name->stringLength;
error = FT_Err_Ok;
}
}
return error;
}
}
#endif /* TT_CONFIG_OPTION_SFNT_NAMES */

View File

@ -37,24 +37,24 @@
FT_Pos* advance )
{
FT_Matrix transform;
FT_UNUSED( original );
/* we don't touch the advance width */
FT_UNUSED( advance );
/* For italic, simply apply a shear transform, with an angle */
/* of about 12 degrees. */
transform.xx = 0x10000L;
transform.yx = 0x00000L;
transform.xy = 0x06000L;
transform.yy = 0x10000L;
FT_Outline_Transform( outline, &transform );
return 0;
}
@ -272,15 +272,15 @@
n = ft_test_extrema( outline, indices.xMin );
if ( n )
goto Exit;
n = ft_test_extrema( outline, indices.yMin );
if ( n )
goto Exit;
n = ft_test_extrema( outline, indices.xMax );
if ( n )
goto Exit;
n = ft_test_extrema( outline, indices.yMax );
if ( !n )
n = 1;

View File

@ -56,7 +56,7 @@
/* allocate elements array */
FT_Memory memory;
memory = cache->root.memory;
error = MEM_Alloc( node->elements, cset->element_size *
cset->element_count );
@ -71,7 +71,7 @@
/* remove from parent set table */
cset->chunks[ node->cset_index ] = 0;
/* destroy the node */
cset->clazz->destroy_node( node );
}
@ -135,7 +135,7 @@
goto Exit;
/* compute maximum number of nodes */
cset->num_chunks = (cset->element_max +
cset->num_chunks = (cset->element_max +
cset->element_count - 1) / cset->element_count;
/* allocate chunk pointers table */
@ -223,7 +223,7 @@
FT_UInt chunk_index = glyph_index/chunk_size;
FTC_ChunkNode* pnode = cset->chunks + chunk_index;
FTC_ChunkNode node = *pnode;
if (!node)
{
/* we didn't found the glyph image, we will now create a new one */

12
src/cache/ftcglyph.c vendored
View File

@ -61,12 +61,12 @@
FT_LruNode gset_lru = cache->gsets_lru->nodes + node->gset_index;
FTC_GlyphSet gset = (FTC_GlyphSet)gset_lru->root.data;
FT_UInt hash = node->glyph_index % gset->hash_size;
/* remove the node from its gset's bucket list */
{
FTC_GlyphNode* pnode = gset->buckets + hash;
FTC_GlyphNode cur;
for (;;)
{
cur = *pnode;
@ -77,7 +77,7 @@
" trying to delete an unlisted node !!!!" ));
return;
}
if (cur == node)
{
*pnode = cur->gset_next;
@ -239,20 +239,20 @@
*anode = 0;
for ( ;; )
{
node = *pnode;
if (!node)
break;
if ( node->glyph_index == glyph_index )
{
/* we found it! -- move glyph to start of the lists */
*pnode = node->gset_next;
node->gset_next = bucket[0];
bucket[0] = node;
FT_List_Up( &manager->global_lru, FTC_GLYPHNODE_TO_LRUNODE( node ) );
*anode = node;
return 0;

View File

@ -36,14 +36,14 @@
{
FTC_GlyphSetRec root;
FTC_Image_Desc description;
} FTC_ImageSetRec, *FTC_ImageSet;
typedef struct FTC_Image_CacheRec_
{
FTC_Glyph_CacheRec root;
} FTC_Image_CacheRec;

View File

@ -411,7 +411,7 @@
/* this should never happen! */
FT_ERROR(( "FTC_Manager_Compress: Cache Manager is corrupted!\n" ));
}
/* check, just in case of general corruption :-) */
if (manager->num_nodes <= 0)
{
@ -464,7 +464,7 @@
cache->manager = manager;
cache->memory = memory;
cache->clazz = clazz;
/* THIS IS VERY IMPORTANT, THIS WILL WRECH THE MANAGER */
/* IF IT IS NOT SET CORRECTLY.. */
cache->cache_index = index;

22
src/cache/ftcsbits.c vendored
View File

@ -15,7 +15,7 @@
typedef struct FTC_SBit_CacheRec_
{
FTC_Chunk_CacheRec root;
} FTC_SBit_CacheRec;
@ -36,7 +36,7 @@
FT_Memory memory = cset->memory;
FT_UInt count = node->num_elements;
FTC_SBit sbit = (FTC_SBit)node->elements;
for ( ; count > 0; sbit++, count-- )
FREE( sbit->buffer );
@ -124,7 +124,7 @@
/* always render glyphs to bitmaps */
load_flags |= FT_LOAD_RENDER;
if ( image_type & ftc_image_flag_unhinted )
load_flags |= FT_LOAD_NO_HINTING;
@ -138,7 +138,7 @@
{
/* by default, indicates a "missing" glyph */
sbit->buffer = 0;
error = FT_Load_Glyph( face, glyph_index, load_flags );
if (!error)
{
@ -150,7 +150,7 @@
/* check that our values fit in 8-bit containers !! */
/* if this is not the case, our bitmap is too large */
/* and we will leave it as "missing" with sbit.buffer = 0 */
#define CHECK_CHAR(d) ( temp = (FT_Char)d, temp == d )
#define CHECK_BYTE(d) ( temp = (FT_Byte)d, temp == d )
@ -159,7 +159,7 @@
/* horizontal advance in pixels */
xadvance = (slot->metrics.horiAdvance+32) >> 6;
yadvance = (slot->metrics.vertAdvance+32) >> 6;
if ( CHECK_BYTE ( bitmap->rows ) &&
CHECK_BYTE ( bitmap->width ) &&
CHECK_CHAR ( bitmap->pitch ) &&
@ -231,7 +231,7 @@
pitch = sbit->pitch;
if (pitch < 0)
pitch = -pitch;
/* add the size of a given glyph image */
size += pitch * sbit->height;
}
@ -256,19 +256,19 @@
{
FT_Error error;
FT_Face face;
cset->element_count = FTC_SBITSET_ELEMENT_COUNT;
cset->element_size = sizeof(FTC_SBitRec);
/* lookup the FT_Face to obtain the number of glyphs */
error = FTC_Manager_Lookup_Face( cset->manager,
desc->font.face_id, &face );
if (!error)
cset->element_max = face->num_glyphs;
return error;
}
LOCAL_FUNC_X

64
src/cache/ftlru.c vendored
View File

@ -28,7 +28,7 @@
{
FT_LruNode node = nodes;
FT_LruNode limit = node + count;
free_list->head = free_list->tail = 0;
for ( ; node < limit; node++ )
@ -45,7 +45,7 @@
{
FT_Error error;
FT_Lru lru;
if ( !alru )
return FT_Err_Invalid_Argument;
@ -61,11 +61,11 @@
FREE( lru );
goto Exit;
}
/* build the `free_nodes' list from the array */
lru_build_free_list( lru->nodes, max_elements, &lru->free_nodes );
}
/* initialize common fields */
lru->clazz = (FT_Lru_Class*)clazz;
lru->max_elements = max_elements;
@ -80,13 +80,13 @@
}
FT_EXPORT_DEF( void ) FT_Lru_Reset( FT_Lru lru )
{
FT_ListNode node;
FT_Lru_Class* clazz;
FT_Memory memory;
if ( !lru )
return;
@ -98,15 +98,15 @@
while ( node )
{
FT_ListNode next = node->next;
clazz->done_element( lru, (FT_LruNode)node );
if ( !lru->nodes )
FREE( node );
node = next;
}
/* rebuild free list if necessary */
if ( lru->nodes )
lru_build_free_list( lru->nodes, lru->max_elements, &lru->free_nodes );
@ -119,7 +119,7 @@
FT_EXPORT_DEF( void ) FT_Lru_Done( FT_Lru lru )
{
FT_Memory memory;
if ( !lru )
return;
@ -138,9 +138,9 @@
FT_Error error = 0;
FT_ListNode node;
FT_Lru_Class* clazz;
FT_LruNode found = 0;
FT_LruNode found = 0;
FT_Memory memory;
if ( !lru || !key || !anode )
return FT_Err_Invalid_Argument;
@ -167,7 +167,7 @@
break;
}
}
if ( !found )
{
/* we haven't found the relevant element. We will now try */
@ -177,12 +177,12 @@
/* this lru list is full; we will now flush */
/* the oldest node */
FT_LruNode lru_node;
node = lru->elements.tail;
lru_node = (FT_LruNode)node;
found = lru_node;
if ( clazz->flush_element )
error = clazz->flush_element( lru, lru_node, key );
else
@ -203,19 +203,19 @@
/* in case of error, the node must be discarded */
FT_List_Remove( &lru->elements, node );
lru->num_elements--;
if ( lru->nodes )
FT_List_Insert( &lru->free_nodes, node );
else
FREE( lru_node );
found = 0;
}
}
else
{
{
FT_LruNode lru_node;
/* create a new lru list node, then the element for it */
if ( lru->nodes )
@ -223,18 +223,18 @@
node = lru->free_nodes.head;
lru_node = (FT_LruNode)node;
lru_node->key = key;
error = clazz->init_element( lru, lru_node );
if ( error )
goto Exit;
FT_List_Remove( &lru->free_nodes, node );
}
else
{
if ( ALLOC( lru_node, sizeof ( *lru_node ) ) )
goto Exit;
lru_node->key = key;
error = clazz->init_element( lru, lru_node );
if ( error )
@ -243,17 +243,17 @@
goto Exit;
}
}
found = lru_node;
found = lru_node;
node = (FT_ListNode)lru_node;
FT_List_Insert( &lru->elements, node );
lru->num_elements++;
}
}
Exit:
Exit:
*anode = found;
return error;
return error;
}
@ -263,7 +263,7 @@
{
FT_Error error;
FT_LruNode node;
/* check for valid `lru' and `key' delayed to FT_Lru_Lookup_Node() */
@ -274,7 +274,7 @@
error = FT_Lru_Lookup_Node( lru, key, &node );
if ( !error )
*aobject = node->root.data;
return error;
}
@ -289,7 +289,7 @@
{
FT_List_Remove( &lru->elements, (FT_ListNode)node );
lru->clazz->done_element( lru, node );
if ( lru->nodes )
FT_List_Insert( &lru->free_nodes, (FT_ListNode)node );
else
@ -317,7 +317,7 @@
FT_ListNode node = lru->elements.head;
FT_ListNode next;
while ( node )
{
next = node->next;

View File

@ -1,5 +1,5 @@
#
# FreeType 2 CFF module definition
# FreeType 2 CFF module definition
#

View File

@ -145,7 +145,7 @@
FT_Error error;
T1_Decoder decoder;
FT_Int glyph_index;
PSAux_Interface* psaux = (PSAux_Interface*)face->psaux;
@ -161,7 +161,7 @@
cid_load_glyph );
if ( error )
return error;
decoder.builder.metrics_only = 1;
decoder.builder.load_points = 0;
@ -259,7 +259,7 @@
{
glyph->root.outline.flags &= ft_outline_owner;
glyph->root.outline.flags |= ft_outline_reverse_fill;
/* for composite glyphs, return only left side bearing and */
/* advance width */
if ( load_flags & FT_LOAD_NO_RECURSE )

View File

@ -154,7 +154,7 @@
}
dummy_object = object;
/* now, load the keyword data in the object's field(s) */
if ( keyword->type == t1_field_integer_array ||
keyword->type == t1_field_fixed_array )
@ -219,7 +219,7 @@
matrix->yx = temp[1];
matrix->xy = temp[2];
matrix->yy = temp[3];
/* note that the font offsets are expressed in integer font units */
offset->x = temp[4] >> 16;
offset->y = temp[5] >> 16;

View File

@ -157,7 +157,7 @@
{
psaux = (PSAux_Interface*)FT_Get_Module_Interface(
FT_FACE_LIBRARY( face ), "psaux" );
face->psaux = psaux;
}

View File

@ -72,7 +72,7 @@
MEM_Set( parser, 0, sizeof ( *parser ) );
psaux->t1_parser_funcs->init( &parser->root, 0, 0, memory );
parser->stream = stream;
base_offset = FILE_Pos();

View File

@ -75,7 +75,7 @@
&t1_parser_funcs,
&t1_builder_funcs,
&t1_decoder_funcs,
T1_Decrypt
};
@ -87,9 +87,9 @@
"psaux",
0x10000L,
0x20000L,
&psaux_interface, /* module-specific interface */
(FT_Module_Constructor)0,
(FT_Module_Destructor) 0,
(FT_Module_Requester) 0

View File

@ -879,7 +879,7 @@
if ( pflags )
*pflags |= 1L << field->flag_bit;
#else
FT_UNUSED( pflags );
FT_UNUSED( pflags );
#endif
error = FT_Err_Ok;
@ -944,7 +944,7 @@
if ( pflags )
*pflags |= 1L << field->flag_bit;
#else
FT_UNUSED( pflags );
FT_UNUSED( pflags );
#endif
parser->cursor = old_cursor;
@ -1025,7 +1025,7 @@
parser->cursor = base;
parser->memory = memory;
parser->funcs = t1_parser_funcs;
}
}
LOCAL_FUNC
@ -1098,7 +1098,7 @@
builder->left_bearing.y = 0;
builder->advance.x = 0;
builder->advance.y = 0;
builder->funcs = t1_builder_funcs;
}

View File

@ -45,12 +45,12 @@
LOCAL_VAR
const T1_Builder_Funcs t1_builder_funcs;
LOCAL_DEF
FT_Error PS_Table_New( PS_Table* table,
FT_Int count,
FT_Memory memory );
LOCAL_DEF
FT_Error PS_Table_Add( PS_Table* table,
FT_Int index,
@ -89,21 +89,21 @@
T1_Token* tokens,
FT_UInt max_tokens,
FT_Int* pnum_tokens );
LOCAL_DEF
FT_Error T1_Load_Field( T1_Parser* parser,
const T1_Field* field,
void** objects,
FT_UInt max_objects,
FT_ULong* pflags );
LOCAL_DEF
FT_Error T1_Load_Field_Table( T1_Parser* parser,
const T1_Field* field,
void** objects,
FT_UInt max_objects,
FT_ULong* pflags );
LOCAL_DEF
FT_Long T1_ToInt( T1_Parser* parser );
@ -151,11 +151,11 @@
LOCAL_DEF
void T1_Builder_Done( T1_Builder* builder );
LOCAL_DEF
FT_Error T1_Builder_Check_Points( T1_Builder* builder,
FT_Int count );
LOCAL_DEF
void T1_Builder_Add_Point( T1_Builder* builder,
FT_Pos x,
@ -166,10 +166,10 @@
FT_Error T1_Builder_Add_Point1( T1_Builder* builder,
FT_Pos x,
FT_Pos y );
LOCAL_DEF
FT_Error T1_Builder_Add_Contour( T1_Builder* builder );
LOCAL_DEF
FT_Error T1_Builder_Start_Point( T1_Builder* builder,

View File

@ -206,7 +206,7 @@
FT_ERROR(( " glyph names table not available in this font!\n" ));
return T1_Err_Syntax_Error;
}
bchar_index = t1_lookup_glyph_by_stdcharcode( decoder, bchar );
achar_index = t1_lookup_glyph_by_stdcharcode( decoder, achar );
@ -919,12 +919,12 @@
zone++;
zone->base = decoder->subrs[index] + decoder->lenIV;
if (decoder->subrs_len)
zone->limit = zone->base + decoder->subrs_len[index];
else
zone->limit = decoder->subrs[index+1];
zone->cursor = zone->base;
if ( !zone->base )
@ -1036,11 +1036,11 @@
T1_Decoder_Callback parse_callback )
{
MEM_Set( decoder, 0, sizeof ( *decoder ) );
/* retrieve PSNames interface from list of current modules */
{
PSNames_Interface* psnames = 0;
psnames = (PSNames_Interface*)FT_Get_Module_Interface(
FT_FACE_LIBRARY(face), "psnames" );
@ -1050,16 +1050,16 @@
FT_ERROR(( "the `psnames' module is not available\n" ));
return FT_Err_Unimplemented_Feature;
}
decoder->psnames = psnames;
}
T1_Builder_Init( &decoder->builder, face, size, slot );
decoder->num_glyphs = face->num_glyphs;
decoder->glyph_names = glyph_names;
decoder->blend = blend;
decoder->parse_callback = parse_callback;
decoder->funcs = t1_decoder_funcs;
return 0;

View File

@ -100,23 +100,23 @@
{
FT_String* gname;
FT_Error error;
error = TT_Get_PS_Name( face, glyph_index, &gname );
if ( !error && buffer_max > 0 )
{
FT_UInt len = strlen( gname );
if ( len >= buffer_max )
len = buffer_max - 1;
MEM_Copy( buffer, gname, len );
((FT_Byte*)buffer)[len] = 0;
}
return error;
}
}
#endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */

View File

@ -516,15 +516,15 @@
root->ascender = face->horizontal.Ascender;
root->descender = face->horizontal.Descender;
root->height = root->ascender - root->descender +
face->horizontal.Line_Gap;
/* if the line_gap is 0, we add an extra 15% to the text height -- */
/* this computation is based on various versions of Times New Roman */
if ( face->horizontal.Line_Gap == 0 )
root->height = ( root->height * 115 + 50 ) / 100;
#if 0
/* some fonts have the OS/2 "sTypoAscender", "sTypoDescender" & */
@ -532,11 +532,11 @@
if ( face->os2.version != 0xFFFF && root->ascender )
{
FT_Int height;
root->ascender = face->os2.sTypoAscender;
root->descender = -face->os2.sTypoDescender;
height = root->ascender + root->descender + face->os2.sTypoLineGap;
if ( height > root->height )
root->height = height;

View File

@ -439,7 +439,7 @@
ft_module_driver_has_hinter,
#else
0,
#endif
#endif
sizeof ( TT_DriverRec ),

View File

@ -545,7 +545,7 @@
FT_UNUSED( debug ); /* used by truetype interpreter only */
n_ins = load->glyph->control_len;
/* add shadow points */
@ -648,7 +648,7 @@
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
Exit:
#endif
#endif
return error;
}

View File

@ -57,24 +57,24 @@
FT_UInt buffer_max )
{
FT_String* gname;
gname = face->type1.glyph_names[glyph_index];
if ( buffer_max > 0 )
{
FT_UInt len = strlen( gname );
if (len >= buffer_max)
len = buffer_max - 1;
MEM_Copy( buffer, gname, len );
((FT_Byte*)buffer)[len] = 0;
}
return T1_Err_Ok;
}
}
/*************************************************************************/

View File

@ -104,7 +104,7 @@
T1_Parse_Glyph );
if ( error )
return error;
decoder.builder.metrics_only = 1;
decoder.builder.load_points = 0;
@ -168,7 +168,7 @@
glyph->root.outline.n_points = 0;
glyph->root.outline.n_contours = 0;
hinting = ( load_flags & FT_LOAD_NO_SCALE ) == 0 &&
( load_flags & FT_LOAD_NO_HINTING ) == 0;
@ -183,13 +183,13 @@
T1_Parse_Glyph );
if ( error )
goto Exit;
decoder.builder.no_recurse = ( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 );
decoder.num_subrs = type1->num_subrs;
decoder.subrs = type1->subrs;
decoder.subrs_len = type1->subrs_len;
/* now load the unscaled outline */
error = T1_Parse_Glyph( &decoder, glyph_index );
@ -209,7 +209,7 @@
{
glyph->root.outline.flags &= ft_outline_owner;
glyph->root.outline.flags |= ft_outline_reverse_fill;
/* for composite glyphs, return only left side bearing and */
/* advance width */
if ( load_flags & FT_LOAD_NO_RECURSE )

View File

@ -130,7 +130,7 @@
if ( blend->num_designs == 0 )
{
FT_UInt nn;
/* allocate the blend `private' and `font_info' dictionaries */
if ( ALLOC_ARRAY( blend->font_infos[1], num_designs, T1_FontInfo ) ||
@ -142,13 +142,13 @@
blend->font_infos[0] = &face->type1.font_info;
blend->privates [0] = &face->type1.private_dict;
for ( nn = 2; nn <= num_designs; nn++ )
{
blend->privates[nn] = blend->privates [nn - 1] + 1;
blend->font_infos[nn] = blend->font_infos[nn - 1] + 1;
}
blend->num_designs = num_designs;
}
else if ( blend->num_designs != num_designs )
@ -912,7 +912,7 @@
matrix->yx = temp[1];
matrix->xy = temp[2];
matrix->yy = temp[3];
/* note that the offsets must be expressed in integer font units */
offset->x = temp[4] >> 16;
offset->y = temp[5] >> 16;
@ -926,7 +926,7 @@
T1_ParserRec* parser = &loader->parser;
FT_Byte* cur = parser->root.cursor;
FT_Byte* limit = parser->root.limit;
PSAux_Interface* psaux = (PSAux_Interface*)face->psaux;
@ -972,7 +972,7 @@
/* We need to `zero' out encoding_table.elements */
for ( n = 0; n < count; n++ )
{
char* notdef = ".notdef";
char* notdef = ".notdef";
T1_Add_Table( char_table, n, notdef, 8 );
@ -1091,7 +1091,7 @@
PSAux_Interface* psaux = (PSAux_Interface*)face->psaux;
loader->num_subrs = T1_ToInt( parser );
if ( parser->root.error )
return;
@ -1123,7 +1123,7 @@
break;
index = T1_ToInt( parser );
if ( !read_binary_data( parser, &size, &base ) )
return;
@ -1296,7 +1296,7 @@
/* index 0. Then take end of table name/code and place it into index */
/* notdef_index. */
error = T1_Add_Table( name_table, n,
error = T1_Add_Table( name_table, n,
name_table->elements[0],
name_table->lengths [0] );
if ( error )
@ -1339,7 +1339,7 @@
/* charstrings dictionary. Worry about /.notdef undefined. */
/* we take index 0 and add it to the end of the table(s) */
/* and add our own /.notdef glyph to index 0. */
/* 0 333 hsbw endchar */
FT_Byte notdef_glyph[] = {0x8B, 0xF7, 0xE1, 0x0D, 0x0E};
char* notdef_name = ".notdef";
@ -1578,7 +1578,7 @@
T1_ParserRec* parser;
T1_Font* type1 = &face->type1;
FT_Error error;
PSAux_Interface* psaux = (PSAux_Interface*)face->psaux;

View File

@ -183,7 +183,7 @@
{
psaux = (PSAux_Interface*)
FT_Get_Module_Interface( FT_FACE_LIBRARY( face ), "psaux" );
face->psaux = psaux;
}

View File

@ -85,7 +85,7 @@
{
FT_UShort tag;
FT_Long size;
} PFB_Tag;
@ -247,7 +247,7 @@
/* free the base dictionary only when we have a disk stream */
if ( !parser->in_memory )
FREE( parser->base_dict );
parser->root.funcs.done( &parser->root );
}

View File

@ -462,7 +462,7 @@
if ( cur->header.pixel_height == size->root.metrics.y_ppem )
{
size->font = cur;
size->root.metrics.ascender = cur->header.ascent * 64;
size->root.metrics.descender = ( cur->header.pixel_height -
cur->header.ascent ) * 64;
@ -528,7 +528,7 @@
glyph_index--;
else
glyph_index = font->header.default_char - font->header.first_char;
new_format = font->header.version == 0x300;
len = new_format ? 6 : 4;