Removing trailing whitespace.
This commit is contained in:
parent
dd33561ecb
commit
e4b32a5dc5
90
CHANGES
90
CHANGES
@ -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
17
INSTALL
@ -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...
|
||||
|
||||
|
@ -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
|
||||
|
@ -75,7 +75,7 @@ ANSIFLAGS :=
|
||||
|
||||
# library linking
|
||||
#
|
||||
#CLEAN_LIBRARY :=
|
||||
#CLEAN_LIBRARY :=
|
||||
LINK_LIBRARY = lcclib /out:$(subst $(SEP),\\,$@) $(subst $(SEP),\\,$(OBJECTS_LIST))
|
||||
|
||||
|
||||
# EOF
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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 )
|
||||
|
@ -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.
|
||||
#
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)),)
|
||||
|
@ -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)
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -55,7 +55,7 @@ LIBRARY := $(PROJECT)
|
||||
|
||||
|
||||
# The NO_OUTPUT macro is used to ignore the output of commands.
|
||||
#
|
||||
#
|
||||
NO_OUTPUT = 2> nul
|
||||
|
||||
# EOF
|
||||
|
14
docs/BUILD
14
docs/BUILD
@ -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
|
||||
|
@ -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 ---
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -37,7 +37,7 @@
|
||||
</h2>
|
||||
|
||||
<p>Though written in ANSI 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 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
|
||||
|
@ -92,19 +92,19 @@
|
||||
<p>The function <tt>FT_New_Face()</tt> will always automatically create
|
||||
a new stream object from the C 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 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>
|
||||
|
@ -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 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>
|
||||
|
@ -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
|
||||
|
138
docs/docmaker.py
138
docs/docmaker.py
@ -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 )
|
||||
|
@ -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
|
||||
|
@ -161,7 +161,7 @@
|
||||
FreeType 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 :-)</p>
|
||||
|
||||
<p>FreeType has been capable of anti-aliasing since version 1.0.
|
||||
<p>FreeType has been capable of anti-aliasing since version 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 2 directory in order to set up the build.
|
||||
the top-level FreeType 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 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 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 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
|
||||
|
@ -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" )
|
||||
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
4
include/freetype/cache/ftcchunk.h
vendored
4
include/freetype/cache/ftcchunk.h
vendored
@ -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;
|
||||
|
||||
|
||||
|
6
include/freetype/cache/ftcsbits.h
vendored
6
include/freetype/cache/ftcsbits.h
vendored
@ -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;
|
||||
|
||||
|
||||
|
24
include/freetype/cache/ftlru.h
vendored
24
include/freetype/cache/ftlru.h
vendored
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
@ -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;
|
||||
|
@ -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) )
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 );
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
2000-Jul-04
|
||||
|
||||
Copyright (C) 2000 by Catharon Productions, Inc.
|
||||
|
||||
|
||||
|
||||
|
||||
Introduction
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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 ) ));
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# FreeType 2 auto-hinter module definition
|
||||
# FreeType 2 auto-hinter module definition
|
||||
#
|
||||
|
||||
|
||||
|
@ -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 );
|
||||
|
@ -831,7 +831,7 @@
|
||||
|
||||
/* copy advance - thanks Karsten ;-) */
|
||||
bitmap->root.advance = glyph->advance;
|
||||
|
||||
|
||||
*the_glyph = FT_GLYPH( bitmap );
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
8
src/cache/ftcchunk.c
vendored
8
src/cache/ftcchunk.c
vendored
@ -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
12
src/cache/ftcglyph.c
vendored
@ -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;
|
||||
|
4
src/cache/ftcimage.c
vendored
4
src/cache/ftcimage.c
vendored
@ -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;
|
||||
|
||||
|
||||
|
4
src/cache/ftcmanag.c
vendored
4
src/cache/ftcmanag.c
vendored
@ -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
22
src/cache/ftcsbits.c
vendored
@ -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
64
src/cache/ftlru.c
vendored
@ -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;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# FreeType 2 CFF module definition
|
||||
# FreeType 2 CFF module definition
|
||||
#
|
||||
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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;
|
||||
|
@ -157,7 +157,7 @@
|
||||
{
|
||||
psaux = (PSAux_Interface*)FT_Get_Module_Interface(
|
||||
FT_FACE_LIBRARY( face ), "psaux" );
|
||||
|
||||
|
||||
face->psaux = psaux;
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -439,7 +439,7 @@
|
||||
ft_module_driver_has_hinter,
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
sizeof ( TT_DriverRec ),
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -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 )
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
@ -183,7 +183,7 @@
|
||||
{
|
||||
psaux = (PSAux_Interface*)
|
||||
FT_Get_Module_Interface( FT_FACE_LIBRARY( face ), "psaux" );
|
||||
|
||||
|
||||
face->psaux = psaux;
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user