diff --git a/BUILD b/BUILD index ccaa15b36..9a03572f8 100644 --- a/BUILD +++ b/BUILD @@ -17,19 +17,19 @@ I. QUICK COMMAND-LINE GUIDE: ---------------------------- Install GNU Make, then try the following on Unix or any system with gcc: - + make // this will setup the build make // this will build the library - + On Win32+Visual C++: - + make setup visualc // setup the build for VisualC++ on Win32 make // build the library - + Then, go to the "demos" directory and type - + make - + To compile the demo programs.. If this doesn't work, read the following.. @@ -45,58 +45,58 @@ II. COMMAND-LINE COMPILATION: FreeType 2 includes a powerful and flexible build system that allows you to easily compile it on a great variety of platforms from the command line. To do so, just follow these simple instructions: - + a/ Install GNU Make: - + Because GNU Make is the only Make tool supported to compile FreeType 2, you should install it on your machine. Because the FT2 build system relies on many important features of GNU Make, trying to build the library with any other Make tool will *fail*. - + b/ Invoke "make": - + Go to the root FT2 directory, then simply invoke GNU Make from the command line, this will launch the FreeType 2 Host Platform detection routines. A summary will be displayed, for example, on Win32: - + ======================================================================== FreeType build system -- automatic system detection - + The following settings are used: - + platform win32 compiler gcc configuration directory ./config/win32 - configuration rules ./config/win32/w32-gcc.mk - + configuration rules ./config/win32/w32-gcc.mk + If this does not correspond to your system or settings please remove the file 'config.mk' from this directory then read the INSTALL file for help. - + Otherwise, simply type 'make' again to build the library. ========================================================================= - + If the detected settings correspond to your platform and compiler, skip to step e/. Note that if your platform is completely alien to the build system, the detected platform will be "ansi". - - + + c/ Configure the build system for a different compiler: If the build system correctly detected your platform, but you want to use a different compiler than the one specified in the summary (for most platforms, gcc is the defaut compiler), simply invoke GNU Make like : - + make setup - + For example: - + to use Visual C++ on Win32, type: "make setup visualc" to use LCC-Win32 on Win32, type: "make setup lcc" - + The name to use is platform-dependent. The list of available compilers for your system is available in the file "config//detect.mk" (note that we hope to make the list @@ -106,50 +106,50 @@ II. COMMAND-LINE COMPILATION: d/ Configure the build system for an unknown platform/compiler: - + What the auto-detection/setup phase of the build system does is simply copy a file to the current directory under the name "config.mk". - + For example, on OS/2+gcc, it would simply copy "config/os2/os2-gcc.mk" to "./config.mk" - + If for some reason your platform isn't correctly detected, simply copy manually the configuration sub-makefile to "./config.mk" and go to step e/. - + Note that this file is a sub-Makefile used to specify Make variables used to invoke the compiler and linker during the build, you can easily create your own version from one of the existing configuration files, then copy it to the current directory under the name "./config.mk". - - + + e/ Build the library: - + The auto-detection/setup phase should have copied a file in the current directory, called "./config.mk". This file contains definitions of various Make variables used to invoke the compiler and linker during the build. - + To launch the build, simply invoke GNU Make again: the top Makefile will detect the configuration file and run the build with it.. - - + + f/ Build the demonstration programs: - + Once the library is compiled, go to "demos", then invoke GNU Make. - + Note that the demonstration programs include a tiny graphics sub-system that includes "drivers" to display Windows on Win32, X11 and OS/2. The build system should automatically detect which driver to use based on the current platform. UNIX USERS TAKE NOTE: XXXXXX - + When building the demos, the build system tries to detect your X11 path by looking for the patterns "X11R5/bin", "X11R6/bin" or "X11/bin" in your current path. If no X11 path is found, the demo programs will not be able to display graphics and will fail. Change your current path if you encounter this problem. - + Note that the release version will use Autoconf to detect everything on Unix, so this will not be necessary !! @@ -165,7 +165,7 @@ II. DETAILED COMPILATION PROCEDURE: Each component must be compiled as a stand-alone object file, even when it is really made of several C source files. For example, the "base layer" component is made of the following C files: - + src/ base/ ftcalc.c - computations @@ -174,10 +174,10 @@ II. DETAILED COMPILATION PROCEDURE: ftlist.c - simple list management ftoutln.c - simple outline processing ftextend.c - extensions support - + However, you can create a single object file by compiling the file "src/base/ftbase.c", whose content is: - + #include #include #include @@ -187,7 +187,7 @@ II. DETAILED COMPILATION PROCEDURE: Similarly, each component has a single "englobing" C file to compile it as a stand-alone object, i.e. : - + src/base/ftbase.c - the base layer, high-level interface src/sfnt/sfnt.c - the "sfnt" module src/psnames/psnames.c - the Postscript Names module @@ -196,9 +196,9 @@ II. DETAILED COMPILATION PROCEDURE: To compile one component, do the following: - + - add the top-level "include" directory to your compilation include path - + - add the component's path to your compilation include path too. Being in the component's directory isn't enough !! @@ -206,18 +206,18 @@ II. DETAILED COMPILATION PROCEDURE: For example, the following line can be used to compile the truetype driver on Unix: - + cd freetype2/ cc -c -Iinclude -Isrc/truetype src/truetype/truetype.c Alternatively: - + cd freetype2/src/truetype cc -c -I../../include -I. src/truetype/truetype.c The complete list of files to compile for a feature-complete build of FreeType 2 is: - + src/base/ftsystem.c - system-specific memory and i/o support src/base/ftinit.c - initialisation layer src/base/ftdebug.c - debugging component (empty in release build) diff --git a/CHANGES b/CHANGES index 7178efcc9..f1d4389e5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,4 @@ -LATEST CHANGES - +LATEST CHANGES - - tagged "BETA-6" in the CVS tree. This one is a serious release candidate even though it doesn't incorporate the auto-hinter yet.. @@ -9,7 +9,7 @@ LATEST CHANGES - + re-enable support for 5-gray levels anti-aliasing (suck, suck..) - created new header files, and modified sources accordingly: - + - simple FreeType types, without the API - definition of memory-management macros @@ -26,15 +26,15 @@ LATEST CHANGES - | It seems the C pre-processor that comes with LCC is broken, it | doesn't recognize the ANSI standard directives # and ## correctly | when one of the argument is a macro. Also, something like: - | + | | #define F(x) print##x - | + | | F(("hello")) - | + | | will get incorrectly translated to: - | + | | print "hello") - | + | | by its pre-processor. For this reason, you simply cannot build | FreeType 2 in debug mode with this compiler.. @@ -42,12 +42,12 @@ LATEST CHANGES - - yet another massive grunt work. I've changed the definition of the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These now take an argument, which is the function's return value type. - + This is necessary to compile FreeType as a DLL on Windows and OS/2. Depending on the compiler used, a compiler-specific keyword like __export or __system must be placed before (VisualC++) or after (BorlandC++) the type.. - + Of course, this needed a lot of changes throughout the source code to make it compile again... All cleaned up now, apparently.. @@ -80,7 +80,7 @@ LATEST CHANGES - within it for more information. - major directory hierarchy re-organisation. This was done for two things: - + * first, to ease the "manual" compilation of the library by requiring at lot less include paths :-) @@ -90,19 +90,19 @@ LATEST CHANGES - Basically, you should now use the 'freetype/' prefix for header inclusion, as in: - + #include #include Some new include sub-directories are available: - + a. the "freetype/config" directory, contains two files used to configure the build of the library. Client applications should not need to look at these normally, but they can if they want. - + #include #include - + b. the "freetype/internal" directory, contains header files that describes library internals. These are the header files that were previously found in the "src/base" and "src/shared" directories. @@ -110,9 +110,9 @@ LATEST CHANGES - As usual, the build system and the demos have been updated to reflect the change.. - + Here's a layout of the new directory hierarchy: - + TOP include/ freetype/ @@ -122,17 +122,17 @@ LATEST CHANGES - ftoption.h ftconfig.h ftmodule.h - + internal/ ftobjs.h ftstream.h ftcalc.h ... - + src/ base/ ... - + sfnt/ psnames/ truetype/ @@ -142,7 +142,7 @@ LATEST CHANGES - Compiling a module is now much easier, for example, the following should work when in the TOP directory on an ANSI build: - + gcc -c -I./include -I./src/base src/base/ftbase.c gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c etc.. @@ -178,9 +178,9 @@ OLD CHANGES - 14-apr-2000 - fixed a bug in the TrueType glyph loader that prevented the correct loading of some CJK glyphs in mingli.ttf - + - improved the standard Type 1 hinter in "src/type1" - + - fixed two bugs in the experimental Type 1 driver in "src/type1z" to handle the new XFree86 4.0 fonts (and a few other ones..) @@ -189,7 +189,7 @@ OLD CHANGES - 14-apr-2000 in "demos/src/ftgrays.c" and should move to the library itself in the next beta.. NOTE: The smooth renderer doesn't compile in stand-alone mode anymore, but this should be fixed RSN.. - + - introduced convenience functions to more easily deal with glyph images, see "include/ftglyph.h" for more details, as well as the new demo program named "demos/src/ftstring.c" that demonstrates @@ -214,11 +214,11 @@ OLD CHANGES - 12-mar-2000 - changed the layout of configuration files : now, all ANSI configuration files are located in "freetype2/config". System-specific over-rides can be placed in "freetype2/config/". - + - moved all configuration macros to "config/ftoption.h" - + - improvements in the Type 1 driver with AFM support - + - changed the fields in the FT_Outline structure : the old "flags" array is re-named "tags", while all ancient flags are encoded into a single unsigned int named "flags". @@ -230,10 +230,10 @@ OLD CHANGES - 12-mar-2000 - added a smooth anti-alias renderer to the demonstration programs - added Mac graphics driver (thanks Just) - + - FT_Open_Face changed in order to received a pointer to a FT_Open_Args descriptor.. - + - various cleanups, a few more API functions implemented (see FT_Attach_File) - updated some docs @@ -314,11 +314,11 @@ OLDER CHANGES - 27-jan-2000 - updated the "sfnt" module interface to allow several SFNT-based drivers to co-exist peacefully - + - updated the "T1_Face" type to better separate Postscript font content from the rest of the FT_Face structure. Might be used later by the CFF/Type2 driver.. - + - added an experimental replacement Type 1 driver featuring advanced (and speedy) pattern matching to retrieve the data from postscript fonts. @@ -351,27 +351,27 @@ High-Level Interface : - resource objects have disappeared. this means that face objects can now be created with a single function call (see FT_New_Face and FT_Open_Face) - + - when calling either FT_New_Face & FT_Open_Face, a size object and a glyph slot object are automatically created for the face, and can be accessed through "face->glyph" and "face->size" if one really needs to. In most cases, there's no need to call FT_New_Size or FT_New_Glyph. - + - similarly, FT_Load_Glyph now only takes a "face" argument (instead of a glyph slot and a size). Also, it's "result" parameter is gone, as the glyph image type is returned in the field "face->glyph.format" - + - the list of available charmaps is directly accessible through "face->charmaps", counting "face->num_charmaps" elements. Each charmap has an 'encoding' field which specifies which known encoding it deals with. Valid values are, for example : - + ft_encoding_unicode (for ASCII, Latin-1 and Unicode) ft_encoding_apple_roman ft_encoding_sjis ft_encoding_adobe_standard ft_encoding_adobe_expert - + other values may be added in the future. Each charmap still holds its "platform_id" and "encoding_id" values in case the encoding is too exotic for the current library @@ -510,7 +510,7 @@ Portability : ----------------------------------------------------------------------------------------- Font Drivers : - + The Font Driver interface has been modified in order to support extensions & versioning. @@ -561,10 +561,10 @@ Extensions support : driver = FT_Get_Driver( library, "truetype" ); if (!driver) return FT_Err_Unimplemented_Feature; - return FT_Register_Extension( driver, &extension_class ); + return FT_Register_Extension( driver, &extension_class ); } - + // Implementing the extensions // FT_Error FT_Proceed_Extension_XXX( FT_Face face ) diff --git a/demos/graph/graph.h b/demos/graph/graph.h index e5f3b32e8..e09667db3 100644 --- a/demos/graph/graph.h +++ b/demos/graph/graph.h @@ -33,7 +33,7 @@ /* initialisation */ extern int grInit( void ); - + /* finalisation */ extern void grDone( void ); @@ -52,13 +52,13 @@ gr_pixel_mode_rgb32, /* 32-bits mode - 16 million colors */ gr_pixel_mode_max /* don't remove */ - + } grPixelMode; /* forward declaration of the surface class */ typedef struct grSurface_ grSurface; - + /********************************************************************* * @@ -106,7 +106,7 @@ { grPos x; grPos y; - + } grVector; @@ -114,7 +114,7 @@ { long value; unsigned char chroma[4]; - + } grColor; @@ -125,7 +125,7 @@ * grNewBitmap * * - * creates a new bitmap + * creates a new bitmap * * * pixel_mode :: the target surface's pixel_mode @@ -163,7 +163,7 @@ * writes a given glyph bitmap to a target surface. * * - * target :: handle to target bitmap + * target :: handle to target bitmap * glyph :: handle to source glyph bitmap * x :: position of left-most pixel of glyph image in target surface * y :: position of top-most pixel of glyph image in target surface @@ -185,7 +185,7 @@ * This function performs clipping * **********************************************************************/ - + extern int grBlitGlyphToBitmap( grBitmap* target, grBitmap* glyph, grPos x, @@ -199,7 +199,7 @@ * grFillRectangle * * - * this function is used to fill a given rectangle on a surface + * this function is used to fill a given rectangle on a surface * * * surface :: handle to target surface @@ -210,7 +210,7 @@ * color :: fill color * **********************************************************************/ - + extern void grFillRectangle( grBitmap* surface, grPos x, grPos y, @@ -240,7 +240,7 @@ * color :: color to be used to draw the character * **********************************************************************/ - + extern void grWriteCellChar( grBitmap* target, int x, @@ -262,14 +262,14 @@ * This function writes a string with the internal font * * - * target :: handle to target bitmap + * target :: handle to target bitmap * x :: x pixel position of string's top left corner * y :: y pixel position of string's top left corner * string :: Latin-1 text string * color :: color to be used to draw the character * **********************************************************************/ - + extern void grWriteCellString( grBitmap* target, int x, @@ -283,7 +283,7 @@ * grDoneBitmap * * - * destroys a bitmap + * destroys a bitmap * * * bitmap :: handle to bitmap descriptor @@ -336,7 +336,7 @@ * client applications.. * **********************************************************************/ - + typedef struct grDeviceChain_ grDeviceChain; struct grDeviceChain_ @@ -372,7 +372,7 @@ * If no driver could be initialised, this function returns NULL. * **********************************************************************/ - + extern grDeviceChain* grInitDevices( void ); @@ -411,12 +411,12 @@ * 2 and 256. * * the pixel modes do not provide the number of grays in the case - * of "gray" devices. You should try to create a surface with the + * of "gray" devices. You should try to create a surface with the * maximal number (256, that is) and see the value returned in * the bitmap descriptor. * **********************************************************************/ - + extern void grGetDeviceModes( const char* device_name, int *num_modes, grPixelMode* *pixel_modes ); @@ -469,7 +469,7 @@ * you can thus discard the 'bitmap' parameter after the call. * **********************************************************************/ - + extern grSurface* grNewSurface( const char* device, grBitmap* bitmap ); @@ -493,7 +493,7 @@ * height :: rectangle height in pixels * **********************************************************************/ - + extern void grRefreshRectangle( grSurface* surface, grPos x, grPos y, @@ -508,7 +508,7 @@ * * * a variation of grRefreshRectangle which repaints the whole surface - * to the screen. + * to the screen. * * * surface :: handle to target surface @@ -542,7 +542,7 @@ * color :: color to be used to draw the character * **********************************************************************/ - + extern void grWriteSurfaceChar( grSurface* target, int x, @@ -567,14 +567,14 @@ * This function writes a string with the internal font * * - * target :: handle to target bitmap + * target :: handle to target bitmap * x :: x pixel position of string's top left corner * y :: y pixel position of string's top left corner * string :: Latin-1 text string * color :: color to be used to draw the character * **********************************************************************/ - + extern void grWriteSurfaceString( grSurface* target, int x, @@ -622,7 +622,7 @@ * XXX : For now, only keypresses are supported. * **********************************************************************/ - + extern int grListenSurface( grSurface* surface, int event_mask, diff --git a/demos/graph/grblit.c b/demos/graph/grblit.c index f0346e196..b8d1b6e84 100644 --- a/demos/graph/grblit.c +++ b/demos/graph/grblit.c @@ -32,7 +32,7 @@ case gr_pixel_mode_pal4: width = (width + 1) & -2; break; - + default: ; } @@ -82,7 +82,7 @@ case gr_pixel_mode_pal4: target_width = (target_width + 1) & -2; break; - + default: ; } @@ -104,7 +104,7 @@ blit->read_line = blit->source.pitch; blit->write_line = blit->target.pitch; - + if ( blit->read_line < 0 ) blit->read -= (blit->source.rows-1) * blit->read_line; @@ -247,7 +247,7 @@ { if ( mask == 0x80 ) val = *_read++; - + if ( val & mask ) *_write = (unsigned char)color.value; @@ -344,7 +344,7 @@ unsigned int left_mask; unsigned char* read; unsigned char* write; - + read = blit->read + (blit->xread >> 3); write = blit->write + blit->xwrite*2; @@ -396,7 +396,7 @@ unsigned int left_mask; unsigned char* read; unsigned char* write; - + read = blit->read + (blit->xread >> 3); write = blit->write + blit->xwrite*3; @@ -452,7 +452,7 @@ unsigned int left_mask; unsigned char* read; unsigned char* write; - + read = blit->read + (blit->xread >> 3); write = blit->write + blit->xwrite*4; @@ -523,19 +523,19 @@ { int count; const byte* table; - + } grSaturation; - - + + static const byte gr_saturation_5[8] = { 0, 1, 2, 3, 4, 4, 4, 4 }; - + static const byte gr_saturation_17[32] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }; @@ -565,7 +565,7 @@ grError = gr_err_bad_argument; return 0; } - + for ( ; sat < limit; sat++ ) { if ( sat->count == num_grays ) @@ -574,25 +574,25 @@ return sat->table; } } - + /* not found, simply create a new entry if there is room */ if (gr_num_saturations < GR_MAX_SATURATIONS) { int i; const byte* table; - + table = (const byte*)grAlloc( (3*num_grays-1)*sizeof(byte) ); if (!table) return 0; - + sat->count = num_grays; sat->table = table; - + for ( i = 0; i < num_grays; i++, table++ ) - *(unsigned char*)table = (unsigned char)i; - + *(unsigned char*)table = (unsigned char)i; + for ( i = 2*num_grays-1; i > 0; i--, table++ ) - *(unsigned char*)table = (unsigned char)(num_grays-1); - + *(unsigned char*)table = (unsigned char)(num_grays-1); + gr_num_saturations++; gr_last_saturation = sat; return sat->table; @@ -614,11 +614,11 @@ int target_grays; int source_grays; const byte* table; - + } grConversion; - - - + + + static const byte gr_gray5_to_gray17[5] = { 0, 4, 8, 12, 16 }; @@ -654,13 +654,13 @@ { grConversion* conv = gr_conversions; grConversion* limit = conv + gr_num_conversions; - + if ( target_grays < 2 || source_grays < 2 ) { grError = gr_err_bad_argument; return 0; } - + /* otherwise, scan table */ for ( ; conv < limit; conv++ ) { @@ -671,7 +671,7 @@ return conv->table; } } - + /* not found, add a new conversion to the table */ if (gr_num_conversions < GR_MAX_CONVERSIONS) { @@ -681,15 +681,15 @@ table = (const byte*)grAlloc( source_grays*sizeof(byte) ); if (!table) return 0; - + conv->target_grays = target_grays; conv->source_grays = source_grays; conv->table = table; for ( n = 0; n < source_grays; n++ ) - ((unsigned char*)table)[n] = (unsigned char)(n*(target_grays-1)) / + ((unsigned char*)table)[n] = (unsigned char)(n*(target_grays-1)) / (source_grays-1); - + gr_num_conversions++; gr_last_conversion = conv; return table; @@ -720,7 +720,7 @@ max1 = (unsigned char)(blit->source.grays-1); max2 = (unsigned char)(blit->target.grays-1); - + read = (unsigned char*)blit->read + blit->xread; write = (unsigned char*)blit->write + blit->xwrite; @@ -735,7 +735,7 @@ { #ifdef GR_CONFIG_GRAY_SKIP_WHITE unsigned char val = *_read; - + if (val) { if (val == max) @@ -750,7 +750,7 @@ _read++; x--; } - + read += blit->read_line; write += blit->write_line; y--; @@ -775,7 +775,7 @@ unsigned char max; max = (unsigned char)(blit->source.grays-1); - + read = (unsigned char*)blit->read + blit->xread; write = (unsigned char*)blit->write + blit->xwrite; @@ -790,7 +790,7 @@ { #ifdef GR_CONFIG_GRAY_SKIP_WHITE unsigned char val = *_read; - + if (val) { if (val == max) @@ -805,7 +805,7 @@ _read++; x--; } - + read += blit->read_line; write += blit->write_line; y--; @@ -834,7 +834,7 @@ color.chroma[0] = (pixel >> 10) & 0x1F; \ color.chroma[1] = (pixel >> 5) & 0x1F; \ color.chroma[2] = (pixel ) & 0x1F; - + #define extract565( pixel, color ) \ color.chroma[0] = (pixel >> 11) & 0x1F; \ @@ -846,13 +846,13 @@ ( ( (unsigned short)color.chroma[0] << 10 ) | \ ( (unsigned short)color.chroma[1] << 5 ) | \ color.chroma[2] ) - + #define inject565( color ) \ ( ( (unsigned short)color.chroma[0] << 11 ) | \ ( (unsigned short)color.chroma[1] << 5 ) | \ color.chroma[2] ) - + /**************************************************************************/ /* */ @@ -872,7 +872,7 @@ read = blit->read + blit->xread; write = blit->write + 2*blit->xwrite; - + /* convert color to R:G:B triplet */ color2 = color.value; extract555( color2, color ); @@ -887,12 +887,12 @@ while (x > 0) { unsigned char val; - + val = *_read; if (val) { unsigned short* pixel = (unsigned short*)_write; - + if (val == max) { pixel[0] = (short)color2; @@ -902,18 +902,18 @@ /* compose gray value */ unsigned short pix16 = *pixel; grColor pix; - + extract555( pix16, pix ); compose_pixel( pix, color, val, max ); *pixel = inject555(pix); - } + } } _write += 2; _read ++; x--; } - + read += blit->read_line; write += blit->write_line; y--; @@ -940,7 +940,7 @@ read = blit->read + blit->xread; write = blit->write + 2*blit->xwrite; - + color2 = color.value; extract565( color2, color ); @@ -954,12 +954,12 @@ while (x > 0) { unsigned char val; - + val = *_read; if (val) { unsigned short* pixel = (unsigned short*)_write; - + if (val == max) { pixel[0] = (short)color2; @@ -970,17 +970,17 @@ unsigned short pix16 = *pixel; grColor pix; - extract565( pix16, pix ); + extract565( pix16, pix ); compose_pixel( pix, color, val, max ); *pixel = inject565( pix ); - } + } } _write +=2; _read ++; x--; } - + read += blit->read_line; write += blit->write_line; y--; @@ -1006,7 +1006,7 @@ read = blit->read + blit->xread; write = blit->write + 3*blit->xwrite; - + y = blit->height; do { @@ -1017,7 +1017,7 @@ while (x > 0) { unsigned char val; - + val = *_read; if (val) { @@ -1031,23 +1031,23 @@ { /* compose gray value */ grColor pix; - + pix.chroma[0] = _write[0]; pix.chroma[1] = _write[1]; pix.chroma[2] = _write[2]; compose_pixel( pix, color, val, max ); - + _write[0] = pix.chroma[0]; _write[1] = pix.chroma[1]; _write[2] = pix.chroma[2]; - } + } } _write += 3; _read ++; x--; } - + read += blit->read_line; write += blit->write_line; y--; @@ -1073,7 +1073,7 @@ read = blit->read + blit->xread; write = blit->write + 4*blit->xwrite; - + y = blit->height; do { @@ -1084,7 +1084,7 @@ while (x > 0) { unsigned char val; - + val = *_read; if (val) { @@ -1099,23 +1099,23 @@ { /* compose gray value */ grColor pix; - + pix.chroma[0] = _write[0]; pix.chroma[1] = _write[1]; pix.chroma[2] = _write[2]; compose_pixel( pix, color, val, max ); - + _write[0] = pix.chroma[0]; _write[1] = pix.chroma[1]; _write[2] = pix.chroma[2]; - } + } } _write += 4; _read ++; x--; } - + read += blit->read_line; write += blit->write_line; y--; @@ -1142,7 +1142,7 @@ * Error code. 0 means success * **********************************************************************/ - + typedef void (*grColorGlyphBlitter)( grBlitter* blit, grColor color, int max_gray ); @@ -1158,9 +1158,9 @@ blit_gray_to_565, blit_gray_to_24, blit_gray_to_32 - }; + }; + - extern int grBlitGlyphToBitmap( grBitmap* target, grBitmap* glyph, grPos x, @@ -1169,14 +1169,14 @@ { grBlitter blit; grPixelMode mode; - + /* check arguments */ if (!target || !glyph) { grError = gr_err_bad_argument; return -1; } - + /* set up blitter and compute clipping. Return immediately if needed */ blit.source = *glyph; @@ -1185,7 +1185,7 @@ if ( compute_clips( &blit, x, y ) ) return 0; - + /* handle monochrome bitmap blitting */ if (glyph->mode == gr_pixel_mode_mono) @@ -1195,11 +1195,11 @@ grError = gr_err_bad_source_depth; return -1; } - + gr_mono_blitters[mode]( &blit, color ); - goto End; + goto End; } - + /* handle gray bitmap composition */ if (glyph->mode == gr_pixel_mode_gray && glyph->grays > 1 ) @@ -1207,7 +1207,7 @@ int target_grays = target->grays; int source_grays = glyph->grays; const byte* saturation; - + if ( mode == gr_pixel_mode_gray && target_grays > 1 ) { /* rendering into a gray target - use special composition */ @@ -1235,7 +1235,7 @@ conversion = grGetConversion( target_grays, source_grays ); if (!conversion) return -3; }; - + blit_gray_to_gray( &blit, saturation, conversion ); } } @@ -1248,18 +1248,18 @@ grError = gr_err_bad_target_depth; return -1; } - + gr_color_blitters[mode]( &blit, color, source_grays-1 ); } - goto End; + goto End; } - + /* we don't support the blitting of bitmaps of the following */ /* types : pal4, pal8, rgb555, rgb565, rgb24, rgb32 */ /* */ grError = gr_err_bad_source_depth; return -2; - + End: return 0; } diff --git a/demos/graph/grdevice.c b/demos/graph/grdevice.c index ba367dde0..901f4e272 100644 --- a/demos/graph/grdevice.c +++ b/demos/graph/grdevice.c @@ -10,20 +10,20 @@ grDevice* find_device( const char* device_name ) { int index = 0; - + if (device_name) { for ( index = gr_num_devices-1; index > 0; index-- ) if ( strcmp( device_name, gr_device_chain[index].name ) == 0 ) break; } - + if ( index < 0 || gr_num_devices <= 0 || !gr_device_chain[index].device ) { grError = gr_err_invalid_device; return 0; } - + return gr_device_chain[index].device; } @@ -62,18 +62,18 @@ * 2 and 256. * * the pixel modes do not provide the number of grays in the case - * of "gray" devices. You should try to create a surface with the + * of "gray" devices. You should try to create a surface with the * maximal number (256, that is) and see the value returned in * the bitmap descriptor. * **********************************************************************/ - + extern void grGetDeviceModes( const char* device_name, int *num_modes, grPixelMode* *pixel_modes ) { grDevice* device; - + *num_modes = 0; *pixel_modes = 0; @@ -132,7 +132,7 @@ * you can thus discard the 'bitmap' parameter after the call. * **********************************************************************/ - + extern grSurface* grNewSurface( const char* device_name, grBitmap* bitmap ) { @@ -145,7 +145,7 @@ surface = (grSurface*)grAlloc( device->surface_objsize ); if (!surface) return 0; - + if ( !device->init_surface( surface, bitmap ) ) { grFree( surface ); @@ -173,7 +173,7 @@ * height :: rectangle height in pixels * **********************************************************************/ - + extern void grRefreshRectangle( grSurface* surface, grPos x, grPos y, @@ -185,7 +185,7 @@ } - + /********************************************************************** * * @@ -209,7 +209,7 @@ * color :: color to be used to draw the character * **********************************************************************/ - + extern void grWriteSurfaceChar( grSurface* target, int x, @@ -239,14 +239,14 @@ * This function writes a string with the internal font * * - * target :: handle to target bitmap + * target :: handle to target bitmap * x :: x pixel position of string's top left corner * y :: y pixel position of string's top left corner * string :: Latin-1 text string * color :: color to be used to draw the character * **********************************************************************/ - + extern void grWriteSurfaceString( grSurface* target, int x, @@ -270,7 +270,7 @@ * * * a variation of grRefreshRectangle which repaints the whole surface - * to the screen. + * to the screen. * * * surface :: handle to target surface @@ -330,7 +330,7 @@ * XXX : For now, only keypresses are supported. * **********************************************************************/ - + extern int grListenSurface( grSurface* surface, int event_mask, @@ -348,12 +348,12 @@ { /* first of all, call the device-specific destructor */ surface->done(surface); - + /* then remove the bitmap if we're owner */ if (surface->owner) grFree( surface->bitmap.buffer ); - - surface->owner = 0; + + surface->owner = 0; surface->bitmap.buffer = 0; grFree( surface ); } diff --git a/demos/graph/grdevice.h b/demos/graph/grdevice.h index a43460932..9ffea163f 100644 --- a/demos/graph/grdevice.h +++ b/demos/graph/grdevice.h @@ -108,14 +108,14 @@ { int surface_objsize; const char* device_name; /* name of device */ - + grDeviceInitFunc init; grDeviceDoneFunc done; grDeviceInitSurfaceFunc init_surface; int num_pixel_modes; - grPixelMode* pixel_modes; + grPixelMode* pixel_modes; }; diff --git a/demos/graph/grevents.h b/demos/graph/grevents.h index c32f75b9d..36dd52d1d 100644 --- a/demos/graph/grevents.h +++ b/demos/graph/grevents.h @@ -19,13 +19,13 @@ #define gr_event_mouse 0x3C #define gr_event_key 0xC0 -#define gr_event_type (gr_event_mouse | gr_event_key) +#define gr_event_type (gr_event_mouse | gr_event_key) typedef enum grKey_ { grKeyNone = 0, - + grKeyF1, grKeyF2, grKeyF3, @@ -38,12 +38,12 @@ grKeyF10, grKeyF11, grKeyF12, - + grKeyLeft, grKeyRight, grKeyUp, grKeyDown, - + grKeyIns, grKeyDel, grKeyHome, @@ -51,7 +51,7 @@ grKeyPageUp, grKeyPageDown, - grKeyEsc, + grKeyEsc, grKeyTab, grKeyBackSpace, grKeyReturn, @@ -59,7 +59,7 @@ grKeyMax, grKeyForceShort = 0x7FFF /* this forces the grKey to be stored */ /* on at least one short ! */ - + } grKey; #define grKEY(c) ((grKey)(c)) @@ -102,7 +102,7 @@ #define grKeyAt grKEY('@') #define grKeyUnder grKEY('_') - + typedef struct grEvent_ { int type; diff --git a/demos/graph/grfont.c b/demos/graph/grfont.c index b96715e49..99024231a 100644 --- a/demos/graph/grfont.c +++ b/demos/graph/grfont.c @@ -283,12 +283,12 @@ { if (charcode < 0 || charcode > 255) return; - + gr_charcell.buffer = (char*)font_8x8 + 8*charcode; grBlitGlyphToBitmap( target, &gr_charcell, x, y, color ); } - - + + void grWriteCellString( grBitmap* target, int x, int y, @@ -302,7 +302,7 @@ x += 8; } } - + static int gr_cursor_x = 0; static int gr_cursor_y = 0; static grBitmap* gr_text_bitmap = 0; @@ -313,19 +313,19 @@ { gr_text_bitmap = bitmap; } - + extern void grSetMargin( int right, int top ) { gr_margin_top = top << 3; gr_margin_right = right << 3; } - + extern void grGotoxy ( int x, int y ) { gr_cursor_x = x; gr_cursor_y = y; } - + extern void grWrite ( const char* string ) { if (string) @@ -338,11 +338,11 @@ gr_margin_top + (gr_cursor_y << 3), string, color ); - + gr_cursor_x += strlen(string); } } - + extern void grLn() { gr_cursor_y ++; @@ -355,4 +355,4 @@ grLn(); } - + diff --git a/demos/graph/grfont.h b/demos/graph/grfont.h index 1456af2f3..2697e0040 100644 --- a/demos/graph/grfont.h +++ b/demos/graph/grfont.h @@ -11,6 +11,6 @@ extern void grWrite ( const char* string ); extern void grWriteln( const char* string ); - extern void grLn(); + extern void grLn(); #endif /* GRFONT_H */ diff --git a/demos/graph/grinit.c b/demos/graph/grinit.c index 39498858d..4da1db6cf 100644 --- a/demos/graph/grinit.c +++ b/demos/graph/grinit.c @@ -62,7 +62,7 @@ device = chain->device; if ( device->init() == 0 && gr_num_devices < GR_MAX_DEVICES ) - + { /* successful device initialisation - add it to our chain */ cur->next = 0; diff --git a/demos/graph/grobjs.c b/demos/graph/grobjs.c index f2bdd2b76..ae106dd9b 100644 --- a/demos/graph/grobjs.c +++ b/demos/graph/grobjs.c @@ -25,16 +25,16 @@ char* grAlloc( long size ) { char* p; - + p = (char*)malloc(size); if (!p && size > 0) { - grError = gr_err_memory; + grError = gr_err_memory; } - + if (p) memset( p, 0, size ); - + return p; } @@ -59,7 +59,7 @@ char* grRealloc( const char* block, long size ) { char* p; - + p = realloc( (char*)block, size ); if (!p && size > 0) { @@ -97,7 +97,7 @@ if ( pixel_mode <= gr_pixel_mode_none || pixel_mode >= gr_pixel_mode_max ) goto Fail; - + if ( pixel_mode != gr_pixel_mode_gray || ( num_grays >= 2 && num_grays < 256 ) ) return 0; @@ -114,7 +114,7 @@ * grNewBitmap * * - * creates a new bitmap + * creates a new bitmap * * * pixel_mode :: the target surface's pixel_mode @@ -160,28 +160,28 @@ { case gr_pixel_mode_mono : pitch = (width+7) >> 3; break; case gr_pixel_mode_pal4 : pitch = (width+3) >> 2; break; - + case gr_pixel_mode_pal8 : case gr_pixel_mode_gray : pitch = width; break; - + case gr_pixel_mode_rgb555: case gr_pixel_mode_rgb565: pitch = width*2; break; - + case gr_pixel_mode_rgb24 : pitch = width*3; break; - + case gr_pixel_mode_rgb32 : pitch = width*4; break; - + default: grError = gr_err_bad_target_depth; return 0; } - + bit->pitch = pitch; bit->buffer = grAlloc( (long)bit->pitch * bit->rows ); if (!bit->buffer) goto Fail; - + return 0; - + Fail: return grError; } @@ -192,7 +192,7 @@ * grDoneBitmap * * - * destroys a bitmap + * destroys a bitmap * * * bitmap :: handle to bitmap descriptor diff --git a/demos/graph/grobjs.h b/demos/graph/grobjs.h index 79eb31d86..5f99d0510 100644 --- a/demos/graph/grobjs.h +++ b/demos/graph/grobjs.h @@ -23,7 +23,7 @@ { grColor foreground; grColor background; - + int num_levels; int max_levels; grColor* levels; @@ -97,13 +97,13 @@ int y, int width, int height ); - + typedef void (*grDoneSurfaceFunc)( grSurface* surface ); typedef int (*grListenEventFunc)( grSurface* surface, int event_mode, grEvent *event ); - + struct grSurface_ @@ -112,7 +112,7 @@ grBitmap bitmap; grBool refresh; grBool owner; - + const byte* saturation; /* used for gray surfaces only */ grBlitterFunc blit_mono; /* 0 by default, set by grBlit.. */ @@ -141,7 +141,7 @@ ********************************************************************/ extern char* grAlloc( long size ); - + /******************************************************************** * diff --git a/demos/graph/grtypes.h b/demos/graph/grtypes.h index aca1856be..7c39e2aa6 100644 --- a/demos/graph/grtypes.h +++ b/demos/graph/grtypes.h @@ -23,7 +23,7 @@ typedef unsigned short ushort; typedef unsigned int uint; #endif - + typedef struct grDimension_ { int x; diff --git a/demos/graph/mac/grmac.c b/demos/graph/mac/grmac.c index 189776a5a..359aac88c 100644 --- a/demos/graph/mac/grmac.c +++ b/demos/graph/mac/grmac.c @@ -298,7 +298,7 @@ grSurface* init_surface( grSurface* surface, case gr_pixel_mode_gray: thePixMap.cmpSize = 8; thePixMap.pixelSize = 8; - thePixMap.pmTable = GetCTable(256); /* color palette matching FT's idea + thePixMap.pmTable = GetCTable(256); /* color palette matching FT's idea of grayscale. See ftview.rsrc */ break; diff --git a/demos/graph/os2/gros2pm.c b/demos/graph/os2/gros2pm.c index e23436520..1aba61cd0 100644 --- a/demos/graph/os2/gros2pm.c +++ b/demos/graph/os2/gros2pm.c @@ -35,9 +35,9 @@ { ULONG os2key; grKey grkey; - + } Translator; - + static Translator key_translators[] = @@ -296,7 +296,7 @@ WinUpdateWindow( surface->frame_window ); } - + static void set_title( grPMSurface* surface, const char* title ) @@ -319,7 +319,7 @@ - static + static void listen_event( grPMSurface* surface, int event_mask, grEvent* grevent ) @@ -517,7 +517,7 @@ the_surface = surface; LOG(( "Os2PM: RunPMWindow( %08lx )\n", (long)surface )); - + /* create an anchor to allow this thread to use PM */ surface->anchor = WinInitialize(0); if (!surface->anchor) @@ -546,8 +546,8 @@ } /* create the PM window */ - class_flags = FCF_TITLEBAR | FCF_MINBUTTON | FCF_DLGBORDER | - FCF_TASKLIST | FCF_SYSMENU; + class_flags = FCF_TITLEBAR | FCF_MINBUTTON | FCF_DLGBORDER | + FCF_TASKLIST | FCF_SYSMENU; LOG(( "Os2PM: RunPMWindow: Creating window\n" )); surface->frame_window = WinCreateStdWindow( @@ -669,7 +669,7 @@ case WM_MINMAXFRAME: /* to update minimized if changed */ swp = *((PSWP) parm1); - if ( swp.fl & SWP_MINIMIZE ) + if ( swp.fl & SWP_MINIMIZE ) minimized = TRUE; if ( swp.fl & SWP_RESTORE ) minimized = FALSE; @@ -677,11 +677,11 @@ break; case WM_ERASEBACKGROUND: - case WM_PAINT: + case WM_PAINT: /* copy the memory image of the screen out to the real screen */ DosRequestMutexSem( surface->image_lock, SEM_INDEFINITE_WAIT ); WinBeginPaint( handle, screen_ps, NULL ); - + /* main image and magnified picture */ GpiBitBlt( screen_ps, surface->image_ps, @@ -690,7 +690,7 @@ ROP_SRCCOPY, BBO_AND ); WinEndPaint( screen_ps ); - DosReleaseMutexSem( surface->image_lock ); + DosReleaseMutexSem( surface->image_lock ); break; case WM_HELP: /* this really is a F1 Keypress !! */ @@ -740,15 +740,15 @@ { sizeof( grPMSurface ), "os2pm", - + init_device, done_device, - + (grDeviceInitSurfaceFunc) init_surface, - + 0, 0 - + }; diff --git a/demos/graph/win32/grwin32.c b/demos/graph/win32/grwin32.c index 28bd3634e..69b44d4c2 100644 --- a/demos/graph/win32/grwin32.c +++ b/demos/graph/win32/grwin32.c @@ -64,9 +64,9 @@ { ULONG winkey; grKey grkey; - + } Translator; - + static Translator key_translators[] = { @@ -105,7 +105,7 @@ /* This is a minimalist driver, it is only able to display */ /* a _single_ window. Moreover, only monochrome and gray */ /* bitmaps are supported.. */ - + /* handle of the window. */ static HWND hwndGraphic; @@ -170,7 +170,7 @@ void done_surface( grSurface* surface ) row_bytes = surface->bitmap.pitch; if (row_bytes < 0) row_bytes = -row_bytes; - + if ( row_bytes*8 != pbmi->bmiHeader.biWidth * pbmi->bmiHeader.biBitCount ) pbmi->bmiHeader.biWidth = row_bytes * 8 / pbmi->bmiHeader.biBitCount; @@ -181,7 +181,7 @@ void done_surface( grSurface* surface ) surface->bitmap.buffer, pbmi, DIB_RGB_COLORS ); - + ReleaseDC ( hwndGraphic, hDC ); ShowWindow( hwndGraphic, SW_SHOW ); @@ -193,7 +193,7 @@ void done_surface( grSurface* surface ) void set_title( grSurface* surface, const char* title ) { (void)surface; - + /* the title will be set on the next listen_event, just */ /* record it there.. */ the_title = title; @@ -206,17 +206,17 @@ void done_surface( grSurface* surface ) grEvent* grevent ) { MSG msg; - + (void)surface; (void)event_mask; - + if ( hwndGraphic && !title_set ) { SetWindowText( hwndGraphic, the_title ); title_set = 1; } - eventToProcess = 0; + eventToProcess = 0; while (GetMessage( &msg, 0, 0, 0 )) { TranslateMessage( &msg ); @@ -224,7 +224,7 @@ void done_surface( grSurface* surface ) if (eventToProcess) break; } - + *grevent = ourevent; } @@ -243,7 +243,7 @@ grSurface* init_surface( grSurface* surface, { static RGBQUAD black = { 0, 0, 0, 0 }; static RGBQUAD white = { 0xFF, 0xFF, 0xFF, 0 }; - + if( ! RegisterTheClass() ) return 0; /* if already running, fails. */ /* find some memory for the bitmap header */ @@ -298,7 +298,7 @@ grSurface* init_surface( grSurface* surface, int count = bitmap->grays; int x; RGBQUAD* color = pbmi->bmiColors; - + for ( x = 0; x < count; x++, color++ ) { color->rgbRed = @@ -324,7 +324,7 @@ grSurface* init_surface( grSurface* surface, free ( pbmi ); return 0; } - + surface->done = (grDoneSurfaceFunc) done_surface; surface->refresh_rect = (grRefreshRectFunc) refresh_rectangle; surface->set_title = (grSetTitleFunc) set_title; @@ -452,7 +452,7 @@ LRESULT CALLBACK Message_Process( HWND handle, UINT mess, return DefWindowProc( handle, mess, wParam, lParam ); } - + case WM_KEYDOWN: switch ( wParam ) { @@ -476,7 +476,7 @@ LRESULT CALLBACK Message_Process( HWND handle, UINT mess, goto Do_Key_Event; } } - + /* the key isn't found, default processing */ /* return DefWindowProc( handle, mess, wParam, lParam ); */ return DefWindowProc( handle, mess, wParam, lParam ); @@ -485,7 +485,7 @@ LRESULT CALLBACK Message_Process( HWND handle, UINT mess, case WM_CHAR: { ourevent.key = wParam; - + Do_Key_Event: ourevent.type = gr_event_key; eventToProcess = 1; @@ -511,12 +511,12 @@ LRESULT CALLBACK Message_Process( HWND handle, UINT mess, { sizeof( grSurface ), "win32", - + init_device, done_device, - + (grDeviceInitSurfaceFunc) init_surface, - + 0, 0 }; diff --git a/demos/graph/x11/grx11.c b/demos/graph/x11/grx11.c index b73fa9e34..8ca4f7f08 100644 --- a/demos/graph/x11/grx11.c +++ b/demos/graph/x11/grx11.c @@ -24,9 +24,9 @@ { KeySym xkey; grKey grkey; - + } Translator; - + static Translator key_translators[] = { @@ -59,9 +59,9 @@ #ifdef TEST - + #define grAlloc malloc - + #endif @@ -76,7 +76,7 @@ typedef XPixmapFormatValues XDepth; static int num_pixel_modes = 0; - static grPixelMode pixel_modes[ MAX_PIXEL_MODES ]; + static grPixelMode pixel_modes[ MAX_PIXEL_MODES ]; static XDepth pixel_depth[ MAX_PIXEL_MODES ]; typedef struct grXSurface_ @@ -90,9 +90,9 @@ int depth; XDepth* xdepth; Bool gray; - + GC gc; - + XColor color[256]; /* gray levels palette for 8-bit modes */ XImage* ximage; @@ -100,10 +100,10 @@ int win_org_y; int win_width; int win_height; - + int image_width; int image_height; - + } grXSurface; @@ -133,10 +133,10 @@ { if ( num_pixel_modes >= MAX_PIXEL_MODES ) Panic( "X11.Too many pixel modes\n" ); - + pixel_modes[ num_pixel_modes ] = pixel_mode; pixel_depth[ num_pixel_modes ] = *depth; - + num_pixel_modes++; } @@ -146,21 +146,21 @@ int init_device( void ) { XDepth dummy; - + XrmInitialize(); - + display = XOpenDisplay( displayname ); if (!display) { return -1; /* Panic( "Gr:error: cannot open X11 display\n" ); */ } - + idle = XCreateFontCursor( display, XC_left_ptr ); busy = XCreateFontCursor( display, XC_watch ); - + num_pixel_modes = 0; - + /* always enable the 8-bit gray levels pixel mode */ /* even if its display is emulated through a constrained palette */ /* or another color mode */ @@ -177,45 +177,45 @@ formats = XListPixmapFormats( display, &count ); format = formats; - + #ifdef TEST printf( "available pixmap formats\n" ); printf( "depth pixbits scanpad\n" ); #endif - + while ( count-- > 0 ) { -#ifdef TEST +#ifdef TEST printf( " %3d %3d %3d\n", format->depth, format->bits_per_pixel, format->scanline_pad ); #endif - + if ( format->depth == 1 ) /* usually, this should be the first format */ add_pixel_mode( gr_pixel_mode_mono, format ); - + else if ( format->depth == 8 ) add_pixel_mode( gr_pixel_mode_pal8, format ); - /* note, the 32-bit modes return a depth of 24, and 32 bits per pixel */ + /* note, the 32-bit modes return a depth of 24, and 32 bits per pixel */ else if ( format->depth == 24 ) { -#ifdef TEST +#ifdef TEST { int count2; XVisualInfo* visuals; XVisualInfo* visual; const char* string = "unknown"; - + template.depth = format->depth; visuals = XGetVisualInfo( display, VisualDepthMask, &template, &count2 ); visual = visuals; - + switch (visual->class) { case TrueColor: string = "TrueColor"; break; @@ -234,15 +234,15 @@ visual->bits_per_rgb, string ); visual++; - } + } #endif if ( format->bits_per_pixel == 24 ) add_pixel_mode( gr_pixel_mode_rgb24, format ); - + else if ( format->bits_per_pixel == 32 ) add_pixel_mode( gr_pixel_mode_rgb32, format ); } - + else if ( format->depth == 16 ) { int count2; @@ -255,12 +255,12 @@ &template, &count2 ); visual = visuals; - + while ( count2-- > 0 ) { -#ifdef TEST +#ifdef TEST const char* string = "unknown"; - + switch (visual->class) { case TrueColor: string = "TrueColor"; break; @@ -278,34 +278,34 @@ visual->colormap_size, visual->bits_per_rgb, string ); - + #endif if ( visual->red_mask == 0xf800 && visual->green_mask == 0x07e0 && visual->blue_mask == 0x001f ) add_pixel_mode( gr_pixel_mode_rgb565, format ); - + else if ( visual->red_mask == 0x7c00 && visual->green_mask == 0x03e0 && visual->blue_mask == 0x001f ) add_pixel_mode( gr_pixel_mode_rgb555, format ); - - /* other 16-bit modes are ignored */ + + /* other 16-bit modes are ignored */ visual++; } - + XFree( visuals ); } - + format++; } - + XFree( formats ); } - + gr_x11_device.num_pixel_modes = num_pixel_modes; gr_x11_device.pixel_modes = pixel_modes; - + return 0; } @@ -327,13 +327,13 @@ byte* write = (byte*)target->buffer + y*target->pitch + x; byte* read = (byte*)source->buffer + y*source->pitch + x; XColor* palette = surface->color; - + while (h > 0) { byte* _write = write; byte* _read = read; byte* limit = _write + w; - + for ( ; _write < limit; _write++, _read++ ) *_write = (byte) palette[ *_read ].pixel; @@ -356,13 +356,13 @@ byte* write = (byte*)target->buffer + y*target->pitch + 2*x; byte* read = (byte*)source->buffer + y*source->pitch + x; XColor* palette = surface->color; - + while (h > 0) { byte* _write = write; byte* _read = read; byte* limit = _write + 2*w; - + for ( ; _write < limit; _write += 2, _read++ ) *(short*)_write = (short)palette[ *_read ].pixel; @@ -384,17 +384,17 @@ grBitmap* source = &surface->root.bitmap; byte* write = (byte*)target->buffer + y*target->pitch + 3*x; byte* read = (byte*)source->buffer + y*source->pitch + x; - + while (h > 0) { byte* _write = write; byte* _read = read; byte* limit = _write + 3*w; - + for ( ; _write < limit; _write += 3, _read++ ) { XColor* color = surface->color + *_read; - + _write[0] = color->red; _write[1] = color->green; _write[2] = color->blue; @@ -418,13 +418,13 @@ grBitmap* source = &surface->root.bitmap; byte* write = (byte*)target->buffer + y*target->pitch + 4*x; byte* read = (byte*)source->buffer + y*source->pitch + x; - + while (h > 0) { byte* _write = write; byte* _read = read; byte* limit = _write + 4*w; - + for ( ; _write < limit; _write += 4, _read++ ) { byte color = *_read; @@ -447,28 +447,28 @@ int h ) { int z; - + /* first of all, clip to the surface's area */ if ( x >= surface->image.width || x+w <= 0 || y >= surface->image.rows || y+h <= 0 ) return; - + if ( x < 0 ) { w += x; x = 0; } - + z = (x + w) - surface->image.width; if (z > 0) w -= z; - + z = (y + h) - surface->image.rows; if (z > 0) h -= z; - + /* convert the rectangle to the target depth for gray surfaces */ if (surface->gray) { @@ -480,7 +480,7 @@ case 32: convert_gray_to_32 ( surface, x, y, w, h ); break; } } - } + } static @@ -492,7 +492,7 @@ { if (surface->gray) convert_rectangle( surface, x, y, w, h ); - + XPutImage( display, surface->win, surface->gc, @@ -500,7 +500,7 @@ x, y, x, y, w, h ); } - + static void set_title( grXSurface* surface, const char* title ) @@ -535,7 +535,7 @@ - static + static void listen_event( grXSurface* surface, int event_mask, grEvent* grevent ) @@ -565,7 +565,7 @@ switch ( x_event.type ) { - case KeyPress: + case KeyPress: key_number = XLookupString( &x_event.xkey, key_buffer, sizeof ( key_buffer ), @@ -579,7 +579,7 @@ /* this may be a special key like F1, F2, etc.. */ grkey = KeySymTogrKey(key); if (grkey != grKeyNone) - goto Set_Key; + goto Set_Key; } else bool_exit = 1; @@ -588,7 +588,7 @@ case MappingNotify: XRefreshKeyboardMapping( &x_event.xmapping ); break; - + case Expose: refresh_rectangle( surface, x_event.xexpose.x, @@ -608,7 +608,7 @@ /* If this wasn't part of the simple translated keys, simply get the charcode */ /* from the character buffer */ grkey = grKEY(key_buffer[key_cursor++]); - + Set_Key: grevent->type = gr_key_down; grevent->key = grkey; @@ -625,12 +625,12 @@ char grays; XDepth* format; int image_depth; - + screen = DefaultScreen( display ); - + surface->colormap = DefaultColormap( display, screen ); surface->depth = DefaultDepth( display, screen ); - surface->visual = DefaultVisual( display, screen ); + surface->visual = DefaultVisual( display, screen ); image = &surface->image; @@ -644,7 +644,7 @@ bitmap->grays >= 2 ); surface->gray = grays; - + /* copy dimensions */ image->width = bitmap->width; image->rows = bitmap->rows; @@ -656,7 +656,7 @@ /* find the supported format corresponding to the request */ format = 0; - if (grays) + if (grays) { /* choose the default depth in case of grays rendering */ int i; @@ -672,7 +672,7 @@ { /* otherwise, select the format depending on the pixel mode */ int i; - + format = 0; for ( i = 0; i < num_pixel_modes; i++ ) if ( pixel_modes[i] == bitmap->mode ) @@ -682,7 +682,7 @@ break; } } - + if (!format) { grError = gr_err_bad_argument; @@ -695,17 +695,17 @@ if ( format->depth == 24 && format->bits_per_pixel == 32 ) image_depth = 32; - + /* allocate surface image */ { int bits, over; bits = image->width * format->bits_per_pixel; over = bits % format->scanline_pad; - + if (over) bits += format->scanline_pad - over; - + if (!grays) { image->width = bits; @@ -733,9 +733,9 @@ } surface->root.bitmap = *bitmap; - + /* Now create the surface X11 image */ - surface->ximage = XCreateImage( display, + surface->ximage = XCreateImage( display, surface->visual, format->depth, format->depth == 1 ? XYBitmap : ZPixmap, @@ -747,20 +747,20 @@ 0 ); if ( !surface->ximage ) Panic( "grX11: cannot create surface X11 image\n" ); - + /* allocate gray levels in the case of gray surface */ if ( grays ) { XColor* color = surface->color; int i; - + for ( i = 0; i < bitmap->grays; i++, color++ ) { color->red = color->green = color->blue = 65535 - ( i * 65535 ) / bitmap->grays; - + if ( !XAllocColor( display, surface->colormap, color ) ) Panic( "ERROR: cannot allocate Color\n" ); } @@ -775,13 +775,13 @@ XTextProperty xtp; XSizeHints xsh; XSetWindowAttributes xswa; - + xswa.border_pixel = BlackPixel( display, screen ); xswa.background_pixel = WhitePixel( display, screen ); xswa.cursor = busy; - + xswa.event_mask = KeyPressMask | ExposureMask; - + surface->win = XCreateWindow( display, RootWindow( display, screen ), 0, @@ -790,45 +790,45 @@ image->rows, 10, surface->depth, - InputOutput, + InputOutput, surface->visual, CWBackPixel | CWBorderPixel | CWEventMask | CWCursor, &xswa ); - + XMapWindow( display, surface->win ); - + surface->gc = XCreateGC( display, RootWindow( display, screen ), 0L, NULL ); XSetForeground( display, surface->gc, xswa.border_pixel ); XSetBackground( display, surface->gc, xswa.background_pixel ); - - + + /* make window manager happy :-) */ xtp.value = (unsigned char*)"FreeType"; xtp.encoding = 31; xtp.format = 8; xtp.nitems = strlen( (char*)xtp.value ); - + xsh.x = 0; xsh.y = 0; - + xsh.width = image->width; xsh.height = image->rows; xsh.flags = (PPosition | PSize); xsh.flags = 0; - + XSetWMProperties( display, surface->win, &xtp, &xtp, NULL, 0, &xsh, NULL, NULL ); } - + surface->root.done = (grDoneSurfaceFunc) done_surface; surface->root.refresh_rect = (grRefreshRectFunc) refresh_rectangle; surface->root.set_title = (grSetTitleFunc) set_title; surface->root.listen_event = (grListenEventFunc) listen_event; - + convert_rectangle( surface, 0, 0, bitmap->width, bitmap->rows ); return surface; } - + @@ -836,15 +836,15 @@ { sizeof( grXSurface ), "x11", - + init_device, done_device, - + (grDeviceInitSurfaceFunc) init_surface, - + 0, 0 - + }; #ifdef TEST @@ -875,7 +875,7 @@ const grKeyName key_names[] = { grKeyEsc, "Esc" }, { grKeyHome, "Home" }, { grKeyEnd, "End" }, - + { grKeyPageUp, "Page_Up" }, { grKeyPageDown, "Page_Down" }, { grKeyLeft, "Left" }, @@ -891,7 +891,7 @@ int main( void ) { grSurface* surface; int n; - + grInit(); surface = grNewScreenSurface( 0, gr_pixel_mode_gray, 320, 400, 128 ); if (!surface) @@ -902,10 +902,10 @@ int main( void ) grEvent event; const char* string; int x; - + grSetSurfaceRefresh( surface, 1 ); grSetTitle(surface,"X11 driver demonstration" ); - + for ( x = -10; x < 10; x++ ) { for ( n = 0; n < 128; n++ ) @@ -919,15 +919,15 @@ int main( void ) } color.value = 64; grWriteCellString( surface, 0, 0, "just an example", color ); - + do { listen_event((grXSurface*)surface, 0, &event); - + /* return if ESC was pressed */ if ( event.key == grKeyEsc ) return 0; - + /* otherwise, display key string */ color.value = (color.value + 8) & 127; { @@ -936,7 +936,7 @@ int main( void ) grKeyName* limit = name + count; const char* kname = 0; char kname_temp[16]; - + while (name < limit) { if ( name->key == event.key ) @@ -946,23 +946,23 @@ int main( void ) } name++; } - + if (!kname) { sprintf( kname_temp, "char '%c'", (char)event.key ); kname = kname_temp; } - + grWriteCellString( surface, 30, 30, kname, color ); grRefreshSurface(surface); paint_rectangle( surface, 0, 0, surface->bitmap.width, surface->bitmap.rows ); } } while (1); } - + return 0; - - + + } #endif /* O */ #endif /* TEST */ diff --git a/demos/graph/xtest.c b/demos/graph/xtest.c index 4c6295e1d..7bc806bed 100644 --- a/demos/graph/xtest.c +++ b/demos/graph/xtest.c @@ -37,7 +37,7 @@ const grKeyName key_names[] = { grKeyEsc, "Esc" }, { grKeyHome, "Home" }, { grKeyEnd, "End" }, - + { grKeyPageUp, "Page_Up" }, { grKeyPageDown, "Page_Down" }, { grKeyLeft, "Left" }, @@ -52,7 +52,7 @@ int main( void ) { grSurface* surface; int n; - + grInit(); surface = grNewScreenSurface( 0, gr_pixel_mode_gray, 320, 400, 128 ); if (!surface) @@ -63,10 +63,10 @@ int main( void ) grEvent event; const char* string; int x; - + grSetSurfaceRefresh( surface, 1 ); grSetTitle(surface,"X11 driver demonstration" ); - + for ( x = -10; x < 10; x++ ) { for ( n = 0; n < 128; n++ ) @@ -80,15 +80,15 @@ int main( void ) } color.value = 64; grWriteCellString( surface, 0, 0, "just an example", color ); - + do { grListenSurface( surface, 0, &event); - + /* return if ESC was pressed */ if ( event.key == grKeyEsc ) return 0; - + /* otherwise, display key string */ color.value = (color.value + 8) & 127; { @@ -97,7 +97,7 @@ int main( void ) grKeyName* limit = name + count; const char* kname = 0; char kname_temp[16]; - + while (name < limit) { if ( name->key == event.key ) @@ -107,13 +107,13 @@ int main( void ) } name++; } - + if (!kname) { sprintf( kname_temp, "char '%c'", (char)event.key ); kname = kname_temp; } - + grWriteCellString( surface, 30, 30, kname, color ); grRefreshSurface(surface); } diff --git a/demos/src/common.c b/demos/src/common.c index fe59e9b8c..0c963479a 100644 --- a/demos/src/common.c +++ b/demos/src/common.c @@ -209,7 +209,7 @@ current = name; c = *current; - + while ( c ) { #ifndef macintosh diff --git a/demos/src/compos.c b/demos/src/compos.c index 2ae0b0f20..976d4ab7b 100644 --- a/demos/src/compos.c +++ b/demos/src/compos.c @@ -56,7 +56,7 @@ } - int main( int argc, char** argv ) + int main( int argc, char** argv ) { int i, file_index; unsigned int id; @@ -112,7 +112,7 @@ fname = filename + i + 1; i = -1; } - else + else i--; printf( "%s:\n", fname ); @@ -136,7 +136,7 @@ for ( id = 0; id < num_glyphs; id++ ) { int has_scale; - + error = FT_Load_Glyph( face, id, FT_LOAD_NO_RECURSE ); if (!error && slot->format == ft_glyph_format_composite) { @@ -150,19 +150,19 @@ FT_SUBGLYPH_FLAG_SCALE | FT_SUBGLYPH_FLAG_XY_SCALE | FT_SUBGLYPH_FLAG_2X2 ); - + printf( " [%d%c", subg->index, subg->flags & FT_SUBGLYPH_FLAG_USE_MY_METRICS ? '*' : ' ' ); - + if ( subg->arg1|subg->arg2 ) { - if ( subg->flags & FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES ) + if ( subg->flags & FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES ) printf( "(%d,%d)", subg->arg1, subg->arg2 ); else printf( "<%d,%d>", subg->arg1, subg->arg2 ); } - + if (has_scale) printf( "-{%0.3f %0.3f %0.3f %0.3f}", subg->transform.xx/65536.0, diff --git a/demos/src/ftlint.c b/demos/src/ftlint.c index 5066906d6..3df69e05e 100644 --- a/demos/src/ftlint.c +++ b/demos/src/ftlint.c @@ -56,7 +56,7 @@ } - int main( int argc, char** argv ) + int main( int argc, char** argv ) { int i, file_index; unsigned int id; @@ -115,7 +115,7 @@ fname = filename + i + 1; i = -1; } - else + else i--; printf( "%s: ", fname ); diff --git a/demos/src/ftsbit.c b/demos/src/ftsbit.c index 14f355319..11e310839 100644 --- a/demos/src/ftsbit.c +++ b/demos/src/ftsbit.c @@ -115,14 +115,14 @@ } - + static void dump_range( FT_GlyphSlot glyph, int first_glyph, int last_glyph ) { int i; - + for ( i = first_glyph; i <= last_glyph; i++ ) { error = FT_Load_Glyph( glyph, @@ -137,7 +137,7 @@ TT_ErrToString18( error ) ); continue; } - + dump_bitmap(glyph,i); } } @@ -270,7 +270,7 @@ char* base = argv[i]; char* cur = base; int first, last; - + while (*cur) { if (*cur == '-') @@ -285,14 +285,14 @@ { if ( sscanf( argv[i], "%d-%d", &first, &last ) != 2 ) Usage( execname ); - + dump_range( glyph, first, last ); } else { if ( sscanf( argv[i], "%d", &first ) != 1 ) Usage( execname ); - + dump_range( glyph, first, first ); } } diff --git a/demos/src/ftstring.c b/demos/src/ftstring.c index 859fcfec7..c0c13493e 100644 --- a/demos/src/ftstring.c +++ b/demos/src/ftstring.c @@ -37,7 +37,7 @@ static char* new_header = 0; static char* Text = "The quick brown fox jumps over the lazy dog"; - + static FT_Library library; /* the FreeType library */ static FT_Face face; /* the font face */ static FT_Error error; /* error returned by FreeType ? */ @@ -49,7 +49,7 @@ static int Num; static int Rotation = 0; static int Fail; - + static int hinted = 1; /* is glyph hinting active ? */ static int antialias = 1; /* is anti-aliasing active ? */ static int use_sbits = 1; /* do we use embedded bitmaps ? */ @@ -68,7 +68,7 @@ static FT_Matrix trans_matrix; static int transform = 0; - + static FT_Vector string_center; typedef struct TGlyph_ @@ -76,7 +76,7 @@ FT_UInt glyph_index; /* glyph index in face */ FT_Vector pos; /* position of glyph origin */ FT_Glyph image; /* glyph image */ - + } TGlyph, *PGlyph; #define FLOOR(x) ((x) & -64) @@ -176,7 +176,7 @@ static void clear_display( void ) { long size = (long)bit.pitch * bit.rows; - + if (size < 0) size = -size; memset( bit.buffer, 0, size ); } @@ -192,7 +192,7 @@ res ); return FT_Err_Ok; } - + /************************************************************** * @@ -204,17 +204,17 @@ PGlyph glyph = glyphs; FT_BBox bbox; int n; - + bbox.xMin = 32000; bbox.xMax = -32000; bbox.yMin = 32000; bbox.yMax = -32000; - + for ( n = 0; n < num_glyphs; n++, glyph++ ) { FT_BBox cbox; FT_Pos x, y; - + if (!glyph->image) continue; - + x = glyph->pos.x >> 6; y = glyph->pos.y >> 6; @@ -224,7 +224,7 @@ cbox.yMin += y; cbox.xMax += x; cbox.yMax += y; - + if (cbox.xMin < bbox.xMin) bbox.xMin = cbox.xMin; if (cbox.xMax > bbox.xMax) bbox.xMax = cbox.xMax; if (cbox.yMin < bbox.yMin) bbox.yMin = cbox.yMin; @@ -253,11 +253,11 @@ load_flags = FT_LOAD_DEFAULT; if( !hinted ) load_flags |= FT_LOAD_NO_HINTING; - + num_grays = 128; if (!antialias) num_grays = 0; - + for ( n = 0; n < num_glyphs; n++, glyph++ ) { /* compute glyph origin */ @@ -266,11 +266,11 @@ if (prev_index) { FT_Vector kern; - + FT_Get_Kerning( face, prev_index, glyph->glyph_index, &kern ); kern.x = FT_MulFix( kern.x, face->size->metrics.x_scale ); if (hinted) kern.x = (kern.x+32) & -64; - + origin_x += kern.x; } prev_index = glyph->glyph_index; @@ -285,7 +285,7 @@ /* clear existing image if there is one */ if (glyph->image) FT_Done_Glyph(glyph->image); - + /* load the glyph image */ /* for now, we take a monochrome glyph bitmap */ error = FT_Get_Glyph_Bitmap( face, glyph->glyph_index, @@ -294,9 +294,9 @@ &origin, (FT_BitmapGlyph*)&glyph->image ); if (error) continue; - + glyph->pos = origin; - + origin_x += glyph->image->advance; } string_center.x = origin_x / 2; @@ -315,12 +315,12 @@ PGlyph glyph = glyphs; grBitmap bit3; int n; - + for ( n = 0; n < num_glyphs; n++, glyph++ ) { if (!glyph->image) continue; - + switch (glyph->image->glyph_type) { case ft_glyph_type_bitmap: @@ -329,42 +329,42 @@ FT_BitmapGlyph bitm = (FT_BitmapGlyph)glyph->image; FT_Bitmap* source = &bitm->bitmap; FT_Pos x_top, y_top; - + bit3.rows = source->rows; bit3.width = source->width; bit3.pitch = source->pitch; bit3.buffer = source->buffer; - + switch (source->pixel_mode) { case ft_pixel_mode_mono: bit3.mode = gr_pixel_mode_mono; break; - + case ft_pixel_mode_grays: bit3.mode = gr_pixel_mode_gray; bit3.grays = source->num_grays; break; - + default: continue; } - + /* now render the bitmap into the display surface */ x_top = x + (glyph->pos.x >> 6) + bitm->left; y_top = y - (glyph->pos.y >> 6) - bitm->top; grBlitGlyphToBitmap( &bit, &bit3, x_top, y_top, fore_color ); } break; -#if 0 +#if 0 case ft_glyph_type_outline: { /* in the case of outlines, we directly render it into the */ /* target surface with the smooth renderer.. */ FT_OutlineGlyph out = (FT_OutlineGlyph)glyph->image; - + FT_Outline_Translate( (x+pen_pos[n]) << 6, (y+ - error = FT_Outline_Render( + error = FT_Outline_Render( } break; #endif @@ -387,7 +387,7 @@ const unsigned char* p = (const unsigned char*)string; PGlyph glyph = glyphs; FT_UInt glyph_index; - + num_glyphs = 0; while (*p) { @@ -399,7 +399,7 @@ break; p++; } - } + } static void reset_transform( void ) @@ -407,13 +407,13 @@ double angle = Rotation*3.14159/64.0; FT_Fixed cosinus = (FT_Fixed)(cos(angle)*65536.0); FT_Fixed sinus = (FT_Fixed)(sin(angle)*65536.0); - + transform = (angle != 0); trans_matrix.xx = cosinus; trans_matrix.xy = -sinus; trans_matrix.yx = sinus; trans_matrix.yy = cosinus; - + FT_Set_Transform(face,&trans_matrix, 0); } @@ -437,7 +437,7 @@ grGotoxy( 0, 0 ); grSetMargin( 2, 1 ); grGotobitmap( &bit ); - + grWriteln("FreeType String Viewer - part of the FreeType test suite" ); grLn(); grWriteln("This program is used to display a string of text using" ); @@ -462,7 +462,7 @@ grWriteln(" F8 : big rotate clockwise"); grLn(); grWriteln("press any key to exit this help screen"); - + grRefreshSurface( surface ); grListenSurface( surface, gr_event_key, &dummy_event ); } @@ -471,11 +471,11 @@ static void reset_raster( void ) { FT_Error error; - + error = 1; if ( use_grays && antialias ) error = FT_Set_Raster( library, &ft_grays_raster ); - + if (error) (void)FT_Set_Raster( library, &std_raster ); } @@ -484,7 +484,7 @@ static int Process_Event( grEvent* event ) { int i; - + switch ( event->key ) { case grKeyEsc: /* ESC or q */ @@ -497,7 +497,7 @@ ? "kerning is now active" : "kerning is now ignored" ); return 1; - + case grKEY('a'): antialias = !antialias; new_header = ( antialias @@ -512,7 +512,7 @@ ? "embedded bitmaps are now used when available" : "embedded bitmaps are now ignored" ); return 1; - + case grKEY('n'): case grKEY('p'): return (int)event->key; @@ -524,7 +524,7 @@ : "now using the standard anti-aliaser" ); reset_raster(); break; - + case grKEY('h'): hinted = !hinted; new_header = ( hinted @@ -575,13 +575,13 @@ if (ptsize > MAXPTSIZE) ptsize = MAXPTSIZE; return 1; -#if 0 +#if 0 Do_Glyph: Num += i; if (Num < 0) Num = 0; if (Num >= num_glyphs) Num = num_glyphs-1; return 1; -#endif +#endif } @@ -614,7 +614,7 @@ } - int main( int argc, char** argv ) + int main( int argc, char** argv ) { int i, old_ptsize, orig_ptsize, file; int first_glyph = 0; @@ -627,7 +627,7 @@ FT_Error error; grEvent event; - + execname = ft_basename( argv[0] ); while ( 1 ) @@ -650,7 +650,7 @@ usage( execname ); Text = optarg; break; - + default: usage( execname ); break; @@ -686,7 +686,7 @@ { if ( argv[file][i] == '.' ) i = 0; - i--; + i--; } #endif @@ -713,10 +713,10 @@ prepare_text( (unsigned char*)Text ); file_loaded++; - + error = reset_scale( ptsize ); if (error) goto Display_Font; - + Display_Font: /* initialise graphics if needed */ if ( !XisSetup ) @@ -724,7 +724,7 @@ XisSetup = 1; init_display(); } - + grSetTitle( surface, "FreeType String Viewer - press F1 for help" ); old_ptsize = ptsize; @@ -732,10 +732,10 @@ { Fail = 0; Num = first_glyph; - + if ( Num >= num_glyphs ) Num = num_glyphs-1; - + if ( Num < 0 ) Num = 0; } @@ -751,7 +751,7 @@ /* layout & render string */ { FT_BBox bbox; - + reset_transform(); layout_glyphs(); compute_bbox( &bbox ); @@ -766,7 +766,7 @@ if (!new_header) new_header = Header; - + grWriteCellString( &bit, 0, 0, new_header, fore_color ); new_header = 0; @@ -782,7 +782,7 @@ grWriteCellString( &bit, 0, 8, Header, fore_color ); grRefreshSurface( surface ); - + grListenSurface( surface, 0, &event ); if ( !( key = Process_Event( &event ) ) ) goto Fin; @@ -791,7 +791,7 @@ { if (file_loaded >= 1) FT_Done_Face( face ); - + if ( file < argc - 1 ) file++; @@ -802,7 +802,7 @@ { if (file_loaded >= 1) FT_Done_Face( face ); - + if ( file > 1 ) file--; diff --git a/demos/src/fttimer.c b/demos/src/fttimer.c index 78a3ec0e1..5e057db65 100644 --- a/demos/src/fttimer.c +++ b/demos/src/fttimer.c @@ -63,7 +63,7 @@ int cur_glyph; int cur_point; unsigned short cur_contour; - + int pixel_size = CHARSIZE; int repeat_count = 1; int use_grays = 0; @@ -80,7 +80,7 @@ short antialias; /* smooth fonts with gray levels */ short force_low; - + #define RASTER_BUFF_SIZE 128000 char raster_buff[ RASTER_BUFF_SIZE ]; @@ -176,8 +176,8 @@ /* create a new outline */ FT_Outline_New( library, - glyph->outline.n_points, - glyph->outline.n_contours, + glyph->outline.n_points, + glyph->outline.n_contours, &outlines[cur_glyph] ); /* copy the glyph outline into it */ @@ -190,7 +190,7 @@ /* center outline around 0 */ { FT_BBox bbox; - + FT_Outline_Get_CBox( &glyph->outline, &bbox ); FT_Outline_Translate( &outlines[cur_glyph], - ( bbox.xMax - bbox.xMin )/2, @@ -265,7 +265,7 @@ case 'a': use_grays = 1; break; - + case 'l': force_low = 1; break; @@ -334,7 +334,7 @@ error = FT_Set_Raster( library, &ft_grays_raster ); if (error) Panic( "Could not initialize smooth anti-aliasing renderer" ); } - + /* Load face */ error = FT_New_Face( library, filename, 0, &face ); @@ -347,7 +347,7 @@ num_glyphs = face->num_glyphs; glyph = face->glyph; - + tab_glyphs = MAX_GLYPHS; if ( tab_glyphs > num_glyphs ) tab_glyphs = num_glyphs; @@ -361,12 +361,12 @@ bit.width = 640; bit.rows = 480; bit.grays = 128; - + if ( visual ) { if ( !grInitDevices() ) Panic( "Could not initialize graphics.\n" ); - + surface = grNewSurface( 0, &bit ); if (!surface) Panic( "Could not open graphics window/screen.\n" ); @@ -398,12 +398,12 @@ while ( total > 0 ) { int repeat; - + /* First, preload 'tab_glyphs' in memory */ cur_glyph = 0; cur_point = 0; cur_contour = 0; - + printf( "loading %d glyphs", tab_glyphs ); for ( Num = 0; Num < tab_glyphs; Num++ ) @@ -417,7 +417,7 @@ base += tab_glyphs; - if ( tab_glyphs > total ) + if ( tab_glyphs > total ) tab_glyphs = total; printf( ", rendering... " ); @@ -432,7 +432,7 @@ { if ( (error = ConvertRaster( Num )) ) Fail++; - + else { rendered_glyphs ++; @@ -468,7 +468,7 @@ printf( "rendered glyphs = %d\n", rendered_glyphs ); printf( "render time = %f s\n", (double)t0 / 10000 ); printf( "fails = %d\n", Fail ); - printf( "average glyphs/s = %f\n", + printf( "average glyphs/s = %f\n", (double)rendered_glyphs / t0 * 10000 ); printf( "total timing = %f s\n", (double)tz0 / 10000 ); diff --git a/demos/src/fttry.c b/demos/src/fttry.c index 1dd878eb5..c0b9cac6f 100644 --- a/demos/src/fttry.c +++ b/demos/src/fttry.c @@ -53,7 +53,7 @@ exit(1); } - int main( int argc, char** argv ) + int main( int argc, char** argv ) { int i, file_index, glyph_index; char filename[128 + 4]; @@ -119,7 +119,7 @@ fname = filename + i + 1; i = -1; } - else + else i--; printf( "%s: ", fname ); @@ -132,7 +132,7 @@ error = FT_Set_Char_Size( face, ptsize << 6, 0, 0, 0 ); if (error) Panic( "Could not set character size" ); - + error = FT_Load_Glyph( face, glyph_index, load_unscaled ? FT_LOAD_NO_SCALE diff --git a/demos/src/ftview.c b/demos/src/ftview.c index 3448e86d7..dca3a69aa 100644 --- a/demos/src/ftview.c +++ b/demos/src/ftview.c @@ -49,7 +49,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; FT_Face face; /* the font face */ FT_Size size; /* the font size */ FT_GlyphSlot glyph; /* the glyph slot */ - + FT_Error error; /* error returned by FreeType ? */ grSurface* surface; /* current display surface */ @@ -57,7 +57,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; int num_glyphs; /* number of glyphs */ int ptsize; /* current point size */ - + int hinted = 1; /* is glyph hinting active ? */ int antialias = 0; /* is anti-aliasing active ? */ int use_sbits = 1; /* do we use embedded bitmaps ? */ @@ -146,7 +146,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; static char bit_buffer[ MAX_BUFFER ]; - + /* Render a single glyph with the "grays" component */ static FT_Error Render_Glyph( int x_offset, int y_offset ) @@ -161,19 +161,19 @@ $\243^\250*\265\371%!\247:/;.,?<>"; left = FLOOR( glyph->metrics.horiBearingX ); right = CEIL( glyph->metrics.horiBearingX + glyph->metrics.width ); width = TRUNC(right - left); - + top = CEIL( glyph->metrics.horiBearingY ); bottom = FLOOR( glyph->metrics.horiBearingY - glyph->metrics.height ); height = TRUNC( top - bottom ); if ( glyph->format == ft_glyph_format_outline ) - { + { pitch = ( antialias ? (width+3) & -4 : (width+7) >> 3 ); - size = pitch*height; + size = pitch*height; if (size > MAX_BUFFER) return FT_Err_Out_Of_Memory; - + bit2.width = width; bit2.rows = height; bit2.pitch = pitch; @@ -192,7 +192,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; if (low_prec) glyph->outline.flags &= ~ft_outline_high_precision; - + error = FT_Outline_Get_Bitmap( library, &glyph->outline, &bit2 ); } else @@ -230,14 +230,14 @@ $\243^\250*\265\371%!\247:/;.,?<>"; } return FT_Err_Ok; } - + static FT_Error LoadChar( int idx, int hint ) { int flags; flags = FT_LOAD_DEFAULT; - + if ( !hint ) flags |= FT_LOAD_NO_HINTING; @@ -287,7 +287,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; LOG(( "-------------------------\n")); } #endif - + Render_Glyph( x, y ); x += ( glyph->metrics.horiAdvance >> 6 ) + 1; @@ -348,7 +348,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; LOG(( "-------------------------\n")); } #endif - + Render_Glyph( x, y ); x += ( glyph->metrics.horiAdvance >> 6 ) + 1; @@ -381,7 +381,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; grGotoxy( 0, 0 ); grSetMargin( 2, 1 ); grGotobitmap( &bit ); - + grWriteln("FreeType Glyph Viewer - part of the FreeType test suite" ); grLn(); grWriteln("This program is used to display all glyphs from one or" ); @@ -413,7 +413,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; grWriteln(" F10 : increment first glyph index by 1000"); grLn(); grWriteln("press any key to exit this help screen"); - + grRefreshSurface( surface ); grListenSurface( surface, gr_event_key, &dummy_event ); } @@ -430,7 +430,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; static int Process_Event( grEvent* event ) { int i; - + switch ( event->key ) { case grKeyEsc: /* ESC or q */ @@ -451,7 +451,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; ? "embedded bitmaps are now used when available" : "embedded bitmaps are now ignored" ); return 1; - + case grKEY('n'): case grKEY('p'): return (int)event->key; @@ -463,14 +463,14 @@ $\243^\250*\265\371%!\247:/;.,?<>"; : "now using the standard anti-aliaser" ); reset_raster(); break; - + case grKEY('l'): low_prec = !low_prec; new_header = ( low_prec ? "rendering precision is now forced to low" : "rendering precision is now normal" ); break; - + case grKEY('h'): hinted = !hinted; new_header = ( hinted @@ -515,7 +515,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; } return 1; -#if 0 +#if 0 Do_Rotate: Rotation = (Rotation + i) & 1023; return 1; @@ -526,7 +526,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; if (ptsize < 1) ptsize = 1; if (ptsize > MAXPTSIZE) ptsize = MAXPTSIZE; return 1; - + Do_Glyph: Num += i; if (Num < 0) Num = 0; @@ -553,7 +553,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; } - int main( int argc, char** argv ) + int main( int argc, char** argv ) { int i, old_ptsize, orig_ptsize, file; int first_glyph = 0; @@ -566,7 +566,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; FT_Error error; grEvent event; - + execname = ft_basename( argv[0] ); while ( 1 ) @@ -581,7 +581,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; case 'f': first_glyph = atoi( optarg ); break; - + case 'r': res = atoi( optarg ); if ( res < 1 ) @@ -624,7 +624,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; { if ( argv[file][i] == '.' ) i = 0; - i--; + i--; } #endif @@ -648,10 +648,10 @@ $\243^\250*\265\371%!\247:/;.,?<>"; if (error) goto Display_Font; file_loaded++; - + error = Reset_Scale( ptsize ); if (error) goto Display_Font; - + num_glyphs = face->num_glyphs; glyph = face->glyph; size = face->size; @@ -663,7 +663,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; XisSetup = 1; Init_Display(); } - + grSetTitle( surface, "FreeType Glyph Viewer - press F1 for help" ); old_ptsize = ptsize; @@ -671,10 +671,10 @@ $\243^\250*\265\371%!\247:/;.,?<>"; { Fail = 0; Num = first_glyph; - + if ( Num >= num_glyphs ) Num = num_glyphs-1; - + if ( Num < 0 ) Num = 0; } @@ -692,7 +692,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; case 0: Render_Text( Num, ptsize ); break; - + default: Render_All( Num, ptsize ); } @@ -704,7 +704,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; if (!new_header) new_header = Header; - + grWriteCellString( &bit, 0, 0, new_header, fore_color ); new_header = 0; @@ -720,7 +720,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; grWriteCellString( &bit, 0, 8, Header, fore_color ); grRefreshSurface( surface ); - + grListenSurface( surface, 0, &event ); if ( !( key = Process_Event( &event ) ) ) goto Fin; @@ -729,7 +729,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; { if (file_loaded >= 1) FT_Done_Face( face ); - + if ( file < argc - 1 ) file++; @@ -740,7 +740,7 @@ $\243^\250*\265\371%!\247:/;.,?<>"; { if (file_loaded >= 1) FT_Done_Face( face ); - + if ( file > 1 ) file--; diff --git a/demos/src/memtest.c b/demos/src/memtest.c index 1cb92795f..b510ef31d 100644 --- a/demos/src/memtest.c +++ b/demos/src/memtest.c @@ -51,11 +51,11 @@ void record_my_block( void* base, long size ) fprintf( stderr, "adding a block with non-positive length - should not happen \n" ); exit(1); } - + if ( num_my_blocks < MAX_RECORDED_BLOCKS ) { MyBlock* block; - + #ifdef CHECK_DUPLICATES MyBlock* limit; block = my_blocks; @@ -86,7 +86,7 @@ static void forget_my_block( void* base ) { MyBlock* block = my_blocks + num_my_blocks-1; - + /* we scan in reverse, because transient blocks are always located */ /* at the end of the table.. (it supposedly faster then..) */ for ( ; block >= my_blocks; block-- ) @@ -118,7 +118,7 @@ void* my_alloc( FT_Memory memory, void* p = malloc(size); if (p) record_my_block(p,size); - + return p; } @@ -161,7 +161,7 @@ static void dump_mem( void ) int bad = 0; printf( "total allocated blocks = %d\n", num_my_blocks ); - + /* we scan in reverse, because transient blocks are always located */ /* at the end of the table.. (it supposedly faster then..) */ for ( ; block >= my_blocks; block-- ) @@ -221,7 +221,7 @@ int main( int argc, char** argv ) /* Create a new library with our own memory manager */ error = FT_New_Library( &my_memory, &library ); if (error) Panic( "Could not create library object" ); - + /* the new library has no drivers in it, add the default ones */ /* (implemented in ftinit.c).. */ FT_Default_Drivers(library); @@ -265,7 +265,7 @@ int main( int argc, char** argv ) fname = filename + i + 1; i = -1; } - else + else i--; printf( "%s: ", fname ); diff --git a/demos/src/ttdebug.c b/demos/src/ttdebug.c index c983013c1..a7c45dd68 100644 --- a/demos/src/ttdebug.c +++ b/demos/src/ttdebug.c @@ -617,20 +617,20 @@ TT_CodeRange_Tag debug_coderange = tt_coderange_glyph; #ifdef UNIX struct termios old_termio; - + static void Init_Keyboard( void ) { struct termios termio; #ifndef HAVE_TCGETATTR - ioctl( 0, TCGETS, &old_termio ); + ioctl( 0, TCGETS, &old_termio ); #else tcgetattr( 0, &old_termio ); #endif termio = old_termio; - + /* termio.c_lflag &= ~(ICANON+ECHO+ECHOE+ECHOK+ECHONL+ECHOKE); */ termio.c_lflag &= ~(ICANON+ECHO+ECHOE+ECHOK+ECHONL); @@ -838,7 +838,7 @@ TT_CodeRange_Tag debug_coderange = tt_coderange_glyph; exc->pts.n_contours = exc->zp0.n_contours; pts = exc->pts; - + save.n_points = pts.n_points; save.n_contours = pts.n_contours; @@ -1205,7 +1205,7 @@ int glyph_size; memory = library->memory; driver = FT_Get_Driver( library, "truetype" ); if (!driver) Panic( "could not find the TrueType driver in FreeType 2\n" ); - + FT_Set_Debug_Hook( library, FT_DEBUG_HOOK_TRUETYPE, (FT_DebugHook_Func)RunIns ); @@ -1219,7 +1219,7 @@ int glyph_size; error = FT_Err_Invalid_File_Format; Panic( "This is not a TrueType font" ); } - + size = (TT_Size)face->root.size; if (glyph_index < 0) diff --git a/docs/design/build-system.html b/docs/design/build-system.html index acc4cedc6..b548b4566 100644 --- a/docs/design/build-system.html +++ b/docs/design/build-system.html @@ -56,7 +56,7 @@
  • b. Selecting another build configuration

    - +
  • 2. Library compilation

    III. Build setup details

    @@ -274,17 +274,17 @@ C:\FreeType> make FreeType build system -- automatic system detection - + The following settings are used: - + platform win32 compiler gcc configuration directory ./config/win32 - configuration rules ./config/win32/w32-gcc.mk - + configuration rules ./config/win32/w32-gcc.mk + If this does not correspond to your system or settings please remove the file 'config.mk' from this directory then read the INSTALL file for help. - + Otherwise, simply type 'make' again to build the library. C:\FreeType> @@ -353,20 +353,20 @@
    • Compiling the ftsystem component

        - It encapsulates all low-level operations (memory management + + It encapsulates all low-level operations (memory management + i/o access) for the library. Its default version, located in ./src/base/ftsystem.c uses the ANSI C library but system-specific implementations are also available to improve performance (e.g. memory-mapped files on Unix).

      - +
    • Compiling the base layer and optional components

        They provide the library's high-level API as well as various useful routines for client applications. Many features of the base layer can be activated or not depending on a configuration file named ftoption.h

      - +
    • Compiling the modules

        Each module is used to support a specific font format (it is then called a font driver), or to provide helper services to @@ -374,7 +374,7 @@ sub-directories of ./src, like ./src/truetype, ./src/type1.

      - +
    • Compiling the ftinit component

        This one is in charge of implementing FT_Init_FreeType, the library initialisation routine. It also selects what modules @@ -414,16 +414,16 @@

        - +

        Each system-specific detect.mk works as follows:

        • It checks that the value of PLATFORM is currently set to ansi, which indicates that no platform was detected for now. If this isn't true, it doesn't do anything

          - +
        • Otherwise, it runs a series of test to see wether it is on a system it knows about. Here are a few examples of tests:

          - +

          Unix @@ -446,10 +446,10 @@ we're on a Win32 system.

          - +
        • It sets the value of PLATFORM to a new value corresponding to its platform.

          - +
        • It then tries to select a configuration sub-makefile, depending on the current platform and any optional make target (like "visualc" or "devel", etc..). Note that it can @@ -465,17 +465,17 @@

          • A new subdirectory, in ./config, with a file named detect.mk in it, containing relevant checks for the system. - +
          • One or more configuration sub-makefiles that will get copied to config.mk at build setup time. You can use the one in ./config/ansi/config.mk as a template. -
          +

        Similary, supporting a new compiler on an existing system simply means:

        • Writing a new config sub-makefile that contains definitions used to specify the compiler and flags for the build. - +
        • Change your ./config/system/detect.mk to recognize a new optional build target that will copy your new config sub-makefile instead of the default one. @@ -496,14 +496,14 @@ the host environment, like the compiler, compilation flags, object file suffix, the directory where all object files are placed, etc..

          - +
        • If BUILD_FREETYPE is defined, it includes the file ./config/freetype.mk, which is in charge of defining all the rules used to build the library object files. (The test is useful to use the config.mk file to compile other projects that rely on FreeType 2, like its demonstration programs).

          - +
        • Finally, it defines the rule(s) used to link FreeType 2 object files into a library file (e.g. libfreetype.a, freetype.lib, freetype.dll, ...). Unfortunately, the command line interface of link tools is @@ -525,7 +525,7 @@

          
               #include <freetype/freetype.h>
               #include <freetype/ftglyph.h>
          -
          +

          to include one the FreeType 2 public header files. freetype.mk uses a variable named INCLUDES to hold the inclusion @@ -535,17 +535,17 @@

          freetype.mk uses a variable named INCLUDES to hold directory inclusion-path to be used when compiling the library. It always add ./include to this variable, which means - +

        b. Configuration header files:

        -
          +

            Three header files used to configure the compilation of the FreeType 2 library. Their default versions are all located in the directory ./include/freetype/config/, even though project specific versions can be provided on a given build, as described later:

            - +

              #include <freetype/config/ftoption.h>

                This file contains a set of configuration macro definitions that @@ -557,7 +557,7 @@ You might need to provide an alternative version of ftoption.h for one of your own projects.

              - +

              #include <freetype/config/ftconfig.h>

                This file includes ftoption.h but also contains some automatic macro definitions used to indicate some important system-specific @@ -566,7 +566,7 @@ You shouldn't normally need to change or provide an alternative version of this file.

              - +

              #include <freetype/config/ftmodule.h>

                This file is very special, as it is normally machine-generated, and @@ -583,13 +583,13 @@ ./src.

            - +

            Note that we strongly advise you to avoid modifying the config files within the FreeType 2 source directory hierarchy. Rather, it's possible to specify alternative versions through the help of a build-specific include path that is include before ./include in the inclusion path.

            - +

            For example, imagine that your platform, named foo, needs a specific version of ftoption.h

          @@ -600,14 +600,14 @@ and i/o access) within a single component called ftsystem. Its default implementation uses the ANSI C Library and is located in ./src/base/ftsystem.c.

          - +

          However, some alternate, system-specific, implementations of ftsystem are provided with the library in order to support more efficient and advanced features. As an example, the file ./config/unix/ftsystem.c is an implementation that uses memory-mapped files rather than the slow ANSI fopen, fread and fseek, boosting performance significantly.

          - +

          The build system is thus capable of managing alternate implementations of ftsystem

        @@ -638,7 +638,7 @@ code located in a sub-directory of ./src that contains a file named rules., for example: src/sfnt, src/truetype, src/type1, ...

        - +

        The rules. file simply contains directives used by the build system to compile the corresponding module into a single object file.

        diff --git a/docs/design/io-frames.html b/docs/design/io-frames.html index 61ad381ba..6bd515a19 100644 --- a/docs/design/io-frames.html +++ b/docs/design/io-frames.html @@ -51,10 +51,10 @@ FreeType 2.0 I/O Frames
              error = read_short(stream, &str.value1);
              if (error) goto ...
        -           
        +
              error = read_ulong(stream, &str.value2);
              if (error) goto ...
        -     
        +
              error = read_ulong(stream, &str.value3);
              if (error) goto ...
              
        @@ -63,11 +63,11 @@ FreeType 2.0 I/O Frames
              error = FT_Access_Frame(stream, 2+4+4);
              if (error) goto ...
        -     
        +
              str.value1 = FT_Get_Short(stream);
              str.value2 = FT_Get_ULong(stream);
              str.value3 = FT_Get_ULong(stream);
        -     
        +
              FT_Forget_Frame(stream);
              

        @@ -126,63 +126,63 @@ FreeType 2.0 I/O Frames
        Macro name Translation Description - +
        GET_Byte() (FT_Get_Byte(stream)) reads an 8-bit unsigned byte - +
        GET_Char() ((FT_Char)FT_Get_Byte(stream)) reads an 8-bit signed byte - +
        GET_Short() (FT_Get_Short(stream)) reads a 16-bit signed big-endian integer - +
        GET_UShort() ((FT_UShort)FT_Get_Short(stream)) reads a 16-bit unsigned big-endian integer - +
        GET_Offset() (FT_Get_Offset(stream)) reads a 24-bit signed big-endian integer - +
        GET_UOffset() ((FT_UOffset)FT_Get_Offset(stream)) reads a 24-bit unsigned big-endian integer - +
        GET_Long() (FT_Get_Long(stream)) reads a 32-bit signed big-endian integer - +
        GET_ULong() ((FT_ULong)FT_Get_Long(stream)) reads a 32-bit unsigned big-endian integer - +

      @@ -192,22 +192,22 @@ FreeType 2.0 I/O Frames

             error = FT_Access_Frame(stream, 2+4+4);
             if (error) goto ...
      -      
      +
             str.value1 = FT_Get_Short(stream);
             str.value2 = FT_Get_ULong(stream);
             str.value3 = FT_Get_ULong(stream);
      -      
      +
             FT_Forget_Frame(stream);

      Can be replaced with macros by:

             if ( ACCESS_Frame( 2+4+4 ) ) goto ...
      -      
      +
             str.value1 = GET_Short();
             str.value2 = GET_ULong();
             str.value3 = GET_ULong();
      -      
      +
             FORGET_Frame();
       	

      diff --git a/docs/tutorial/index.html b/docs/tutorial/index.html index f6413cbca..0f4c74c36 100644 --- a/docs/tutorial/index.html +++ b/docs/tutorial/index.html @@ -56,14 +56,14 @@ FreeType 2.0 Tutorial

        Simply create a variable of type FT_Library named, for example, library, and call the function FT_Init_FreeType as in: - +
                #include <freetype/freetype.h>
        -       
        +
                FT_Library  library;
        -       
        +
                ....
        -       
        +
                {
                  ..
                  error = FT_Init_FreeType( &library );
        @@ -76,7 +76,7 @@ FreeType 2.0 Tutorial
               
      • Creating a new instance of the FreeType 2 library, and set the handle library to it.

        - +

      • Load each font driver that FreeType knows about in the library. This means that by default, your new library object is able to handle TrueType and Type 1 fonts gracefully. @@ -101,13 +101,13 @@ FreeType 2.0 Tutorial two different faces.

        -    
        +
               FT_Library   library;   /* handle to library     */
               FT_Face      face;      /* handle to face object */
         
               error = FT_Init_FreeType( &library );
               if (error) { ..... }
        -      
        +
               error = FT_New_Face( library,
                                    "/usr/share/fonts/truetype/arial.ttf",
                                    0,
        @@ -131,17 +131,17 @@ FreeType 2.0 Tutorial
             library
                 handle to the FreeType library instance where the face object is
                     created
        -                                               
        +
             filepathname
                 the font file pathname (standard C string).
        -        
        +
             face_index
                 Certain font formats allow several font faces to be embedded in
                     a single file.
        This index tells which face you want to load. An error will be returned if its value is too large.
        Index 0 always work though. - + face A pointer to the handle that will be set to describe the new face object.
        @@ -155,7 +155,7 @@ FreeType 2.0 Tutorial the font file.

      - +

      b. From memory:

        In the case where you have already loaded the font file in memory, you @@ -163,13 +163,13 @@ FreeType 2.0 Tutorial FT_New_Memory_Face as in:

        -    
        +
               FT_Library   library;   /* handle to library     */
               FT_Face      face;      /* handle to face object */
         
               error = FT_Init_FreeType( &library );
               if (error) { ..... }
        -      
        +
               error = FT_New_Memory_Face( library,
                                           buffer,    /* first byte in memory */
                                           size,      /* size in bytes        */
        @@ -184,7 +184,7 @@ FreeType 2.0 Tutorial
             FT_New_Face.
           

      - +

      c. From other sources: (compressed files, network, etc..)

        There are cases where using a filepathname or preloading the file in @@ -215,7 +215,7 @@ FreeType 2.0 Tutorial gives the number of glyphs available in the font face. A glyph is simply a character image. It doesn't necessarily correspond to a character code though. - + face−>flags a 32-bit integer containing bit flags used to describe some face @@ -224,13 +224,13 @@ FreeType 2.0 Tutorial glyph images can be rendered for all character pixel sizes. For more information on face flags, please read the FreeType API Reference - + face−>units_per_EM This field is only valid for scalable formats (it is set to 0 otherwise). It indicates the number of font units covered by the EM. - + face−>num_fixed_sizes this field gives the number of embedded bitmap strikes in @@ -280,16 +280,16 @@ FreeType 2.0 Tutorial You'll notice that:

        • The character width and heights are specified in 1/64th of points.

          - +

        • The horizontal and vertical device resolutions are expressed in dots-per-inch, or dpi. You can use 72 or 96 dpi for display devices like the screen.

          - +

        • A value of 0 for the character width means "same as character height", a value of 0 for the character height means "same as character width". Otherwise, it is possible to specify different char width and height.

          - +

        • Using a value of 0 for the horizontal or vertical resolution means 72 dpi, which is the default.

          @@ -362,7 +362,7 @@ FreeType 2.0 Tutorial

        - +

        b. Loading a glyph from the face:

          Once you have a glyph index, you can load the corresponding glyph image. @@ -397,13 +397,13 @@ FreeType 2.0 Tutorial bitmaps are favored over outlines as they usually correspond to higher-quality images of the same glyph).

          - +

        • if there is an outline for the corresponding glyph, load it unless FT_LOAD_NO_OUTLINE is set. Otherwise, scale it to the current size, unless the FT_LOAD_NO_SCALE flag is set.

          - +

        • if the outline was loaded and scaled, try to grid-fit it (which dramatically improves its quality) unless the flag FT_LOAD_NO_HINTING is set. @@ -413,7 +413,7 @@ FreeType 2.0 Tutorial details see the FreeType 2 API Reference.

        - +

        c. Using other charmaps:

          As said before, when a new face object is created, it will look for @@ -445,7 +445,7 @@ FreeType 2.0 Tutorial FT_CharMap found = 0; FT_CharMap charmap; int n; - + for ( n = 0; n < face->num_charmaps; n++ ) { charmap = face>charmaps[n]; @@ -457,7 +457,7 @@ FreeType 2.0 Tutorial } if (!found) { ... } - + /* now, select the charmap for the face object */ error = FT_Set_CharMap( face, found ); if (error) { .... } @@ -465,7 +465,7 @@ FreeType 2.0 Tutorial

          One might now call FT_Get_Char_Index with Big5 character codes to retrieve glyph indices. -

          +

      @@ -506,7 +506,7 @@ FreeType 2.0 Tutorial Indicates the type of the loaded glyph image. Can be either ft_glyph_format_bitmap, ft_glyph_format_outline or other values. - + glyph−>metrics A simple structure used to hold the glyph image's metrics. Note @@ -526,7 +526,7 @@ FreeType 2.0 Tutorial describes it. See the definition of the FT_Outline structure. -

      +

    8. Rendering glyph outlines into bitmaps:

    @@ -542,9 +542,9 @@ FreeType 2.0 Tutorial or something else, the library provides a means to convert such glyph images to bitmaps through what are called rasters.

    - - - + + + On the other hand, when the image is a scalable outline, or something else, FreeType provides a function to convert the glyph image into a pre-existing bitmap that you'll handle to it, named @@ -556,26 +556,26 @@ FreeType 2.0 Tutorial FT_GlyphSlot glyph; .... load glyph ... - + glyph = face->glyph; /* shortcut to glyph data */ if (glyph->format == ft_glyph_format_outline ) { FT_Bitmap bit; - + /* set-up a bitmap descriptor for our target bitmap */ bit.rows = bitmap_height; bit.width = bitmap_width; bit.pitch = bitmap_row_bytes; bit.pixel_mode = ft_pixel_mode_mono; /* render into a mono bitmap */ bit.buffer = bitmap_buffer; - + /* render the outline directly into the bitmap */ error = FT_Get_Glyph_Bitmap( face, &bit ); if (error) { ... } - } + } } -

    +

    You should note that FT_Get_Glyph_Bitmap doesn't create the bitmap. It only needs a descriptor, of type FT_Bitmap, and writes directly into it. @@ -590,12 +590,12 @@ FreeType 2.0 Tutorial FT_GlyphSlot glyph; .... load glyph ... - + glyph = face->glyph; /* shortcut to glyph data */ if (glyph->format == ft_glyph_format_outline ) { FT_Bitmap bit; - + /* set-up a bitmap descriptor for our target bitmap */ bit.rows = bitmap_height; bit.width = bitmap_width; @@ -606,11 +606,11 @@ FreeType 2.0 Tutorial /* clean the bitmap - IMPORTANT */ memset( bit.buffer, 0, bit.rows*bit.pitch ); - + /* render the outline directly into the bitmap */ error = FT_Get_Glyph_Bitmap( face, &bit ); if (error) { ... } - } + } }

    @@ -618,17 +618,17 @@ FreeType 2.0 Tutorial

    • As previously, FT_Get_Glyph_Bitmap doesn't generate the bitmap, it simply renders to it.

      - +

    • The target bitmap must be cleaned before calling the function. This is a limitation of our current anti-aliasing algorithm and is EXTREMELY important.

      - +

    • The anti-aliaser uses 128 levels of grays exclusively for now (this will probably change in a near future). This means that you must set bit.grays to 128. The generated image uses values from 0 (back color) to 127 (foreground color). -

      - +

      +

    • It is not possible to render directly an anti-aliased outline into a pre-existing gray-level bitmap, or even any colored-format one (like RGB16 or paletted 8-bits). We will not discuss this issue in @@ -640,6 +640,6 @@ FreeType 2.0 Tutorial
    - +


    diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h index c1c525315..5a6fcabed 100644 --- a/include/freetype/freetype.h +++ b/include/freetype/freetype.h @@ -943,12 +943,12 @@ /* returned by FT_Load_Glyph(). */ /* */ /* */ - + enum { ft_glyph_own_bitmap = 1 }; - + typedef struct FT_GlyphSlotRec_ { FT_Face face; diff --git a/include/freetype/fterrors.h b/include/freetype/fterrors.h index aa67c207c..e918f167c 100644 --- a/include/freetype/fterrors.h +++ b/include/freetype/fterrors.h @@ -47,15 +47,15 @@ FT_ERROR_START_LIST FT_ERRORDEF( FT_Err_Cannot_Open_Resource, 0x0001, "can't open stream" ) FT_ERRORDEF( FT_Err_Unknown_File_Format, 0x0002, "unknown file format" ) FT_ERRORDEF( FT_Err_Invalid_File_Format, 0x0003, "broken file" ) - + FT_ERRORDEF( FT_Err_Invalid_Argument, 0x0010, "invalid argument" ) FT_ERRORDEF( FT_Err_Invalid_Handle, 0x0011, "invalid object handle" ) FT_ERRORDEF( FT_Err_Invalid_Glyph_Index, 0x0012, "invalid glyph index" ) FT_ERRORDEF( FT_Err_Invalid_Character_Code, 0x0013, "invalid character code" ) - + FT_ERRORDEF( FT_Err_Unimplemented_Feature, 0x0020, "unimplemented feature" ) FT_ERRORDEF( FT_Err_Invalid_Glyph_Format, 0x0021, "invalid glyph image format" ) - + FT_ERRORDEF( FT_Err_Invalid_Library_Handle, 0x0030, "invalid library handle" ) FT_ERRORDEF( FT_Err_Invalid_Driver_Handle, 0x0031, "invalid module handle" ) FT_ERRORDEF( FT_Err_Invalid_Face_Handle, 0x0032, "invalid face handle" ) @@ -64,7 +64,7 @@ FT_ERROR_START_LIST FT_ERRORDEF( FT_Err_Invalid_CharMap_Handle, 0x0035, "invalid charmap handle" ) FT_ERRORDEF( FT_Err_Invalid_Outline, 0x0036, "invalid outline" ) FT_ERRORDEF( FT_Err_Invalid_Dimensions, 0x0037, "invalid dimensions" ) - + FT_ERRORDEF( FT_Err_Unavailable_Outline, 0x0040, "unavailable outline" ) FT_ERRORDEF( FT_Err_Unavailable_Bitmap, 0x0041, "unavailable bitmap" ) FT_ERRORDEF( FT_Err_File_Is_Not_Collection, 0x0042, "file is not a font collection" ) @@ -84,7 +84,7 @@ FT_ERROR_START_LIST FT_ERRORDEF( FT_Err_Invalid_Frame_Operation, 0x0066, "invalid frame operation" ) FT_ERRORDEF( FT_Err_Nested_Frame_Access, 0x0067, "nested frame access" ) FT_ERRORDEF( FT_Err_Invalid_Frame_Read, 0x0068, "invalid frame read" ) - + FT_ERRORDEF( FT_Err_Too_Many_Points, 0x0070, "too many points in glyph" ) FT_ERRORDEF( FT_Err_Too_Many_Contours, 0x0071, "too many contours in glyph" ) FT_ERRORDEF( FT_Err_Invalid_Composite, 0x0072, "invalid composite glyph" ) @@ -97,7 +97,7 @@ FT_ERROR_START_LIST /* range 0x500 - 0x5FF is reserved for TrueDoc specific stuff */ /* range 0x600 - 0x6FF is reserved for Type1 specific stuff */ - + FT_ERRORDEF( FT_Err_Raster_Uninitialized, 0x0080, "raster uninitialized" ) FT_ERRORDEF( FT_Err_Raster_Corrupted, 0x0081, "raster corrupted !!" ) FT_ERRORDEF( FT_Err_Raster_Overflow, 0x0082, "raster overflow !!" ) diff --git a/include/freetype/ftglyph.h b/include/freetype/ftglyph.h index 71138caac..853dc256f 100644 --- a/include/freetype/ftglyph.h +++ b/include/freetype/ftglyph.h @@ -29,11 +29,11 @@ #include typedef enum { - + ft_glyph_type_none = 0, ft_glyph_type_bitmap = 1, ft_glyph_type_outline = 2 - + } FT_GlyphType; /*********************************************************************** @@ -68,7 +68,7 @@ * float sub-pixels (i.e. 1/64th of pixels). * * the vertical bearing has a positive value when the glyph top is - * above the baseline, and negative when it is under.. + * above the baseline, and negative when it is under.. * ***********************************************************************/ @@ -81,7 +81,7 @@ FT_Int bearingX; FT_Int bearingY; FT_Int advance; - + } FT_GlyphRec, *FT_Glyph; @@ -91,7 +91,7 @@ * FT_BitmapGlyphRec * * - * A structure used to describe a bitmap glyph image.. + * A structure used to describe a bitmap glyph image.. * Note that the FT_BitmapGlyph type is a pointer to FT_BitmapGlyphRec * * @@ -111,14 +111,14 @@ * and is thus creatde and destroyed with it.. * ***********************************************************************/ - + typedef struct FT_BitmapGlyphRec_ { FT_GlyphRec metrics; FT_Int left; FT_Int top; FT_Bitmap bitmap; - + } FT_BitmapGlyphRec_, *FT_BitmapGlyph; @@ -128,7 +128,7 @@ * FT_OutlineGlyphRec * * - * A structure used to describe a vectorial outline glyph image.. + * A structure used to describe a vectorial outline glyph image.. * Note that the FT_OutlineGlyph type is a pointer to FT_OutlineGlyphRec * * @@ -147,12 +147,12 @@ * function FT_OutlineGlyph_Render() * ***********************************************************************/ - + typedef struct FT_OutlineGlyphRec_ { FT_GlyphRec metrics; FT_Outline outline; - + } FT_OutlineGlyphRec_, *FT_OutlineGlyph; @@ -221,7 +221,7 @@ * face :: handle to source face object * glyph_index :: glyph index in face * load_flags :: load flags, see FT_LOAD_FLAG_XXXX constants.. - * + * * * vecglyph :: pointer to the new outline glyph * @@ -236,7 +236,7 @@ * FT_LOAD_NO_RECURSE are set.. * ***********************************************************************/ - + EXPORT_DEF(FT_Error) FT_Get_Glyph_Outline( FT_Face face, FT_UInt glyph_index, FT_UInt load_flags, @@ -250,7 +250,7 @@ * * * A function used to set the transform that is applied to glyph images - * just after they're loaded in the face's glyph slot, and before they're + * just after they're loaded in the face's glyph slot, and before they're * returned by either FT_Get_Glyph_Bitmap or FT_Get_Glyph_Outline * * @@ -263,7 +263,7 @@ * in a font face. It is unable to transform embedded glyph bitmaps * ***********************************************************************/ - + EXPORT_DEF(void) FT_Set_Transform( FT_Face face, FT_Matrix* matrix, FT_Vector* delta ); @@ -278,10 +278,10 @@ * Destroys a given glyph.. * * - * glyph :: handle to target glyph object + * glyph :: handle to target glyph object * ***********************************************************************/ - + EXPORT_DEF(void) FT_Done_Glyph( FT_Glyph glyph ); @@ -294,7 +294,7 @@ * Returns the glyph image's bounding box in pixels. * * - * glyph :: handle to target glyph object + * glyph :: handle to target glyph object * * * box :: the glyph bounding box. Coordinates are expressed in @@ -308,7 +308,7 @@ * The height is box.yMax - box.yMin * ***********************************************************************/ - + EXPORT_DEF(void) FT_Glyph_Get_Box( FT_Glyph glyph, FT_BBox *box ); diff --git a/include/freetype/ftimage.h b/include/freetype/ftimage.h index c4443dfa2..77bb3688d 100644 --- a/include/freetype/ftimage.h +++ b/include/freetype/ftimage.h @@ -857,7 +857,7 @@ * * * raster :: handle to new raster object - * mode :: a 4-byte tag used to name the mode or property + * mode :: a 4-byte tag used to name the mode or property * args :: a pointer to the new mode/property to use * **************************************************************************/ diff --git a/include/freetype/internal/autohint.h b/include/freetype/internal/autohint.h index fced489c5..4a995f89f 100644 --- a/include/freetype/internal/autohint.h +++ b/include/freetype/internal/autohint.h @@ -190,11 +190,11 @@ FT_AutoHinter_Init_Func init_autohinter; FT_AutoHinter_Done_Func done_autohinter; FT_AutoHinter_Load_Func load_glyph; - + FT_AutoHinter_Get_Global_Func get_global_hints; FT_AutoHinter_Done_Global_Func done_global_hints; - } FT_AutoHinter_Interface; + } FT_AutoHinter_Interface; #endif /* AUTOHINT_H */ diff --git a/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h index 5acbc6c2b..8a00da15c 100644 --- a/include/freetype/internal/ftcalc.h +++ b/include/freetype/internal/ftcalc.h @@ -42,7 +42,7 @@ #define SQRT_64( z ) FT_Sqrt64( z ) EXPORT_DEF(FT_Int32) FT_Sqrt64( FT_Int64 x ); - + #endif /* OLD_CALCS */ #else /* LONG64 */ @@ -61,7 +61,7 @@ EXPORT_DEF(void) FT_Add64 ( FT_Int64* x, FT_Int64* y, FT_Int64* z ); EXPORT_DEF(void) FT_MulTo64 ( FT_Int32 x, FT_Int32 y, FT_Int64* z ); - + EXPORT_DEF(FT_Int32) FT_Div64by32( FT_Int64* x, FT_Int32 y ); #ifdef FT_CONFIG_OPTION_OLD_CALCS @@ -69,7 +69,7 @@ #define SQRT_64( z ) FT_Sqrt64( &z ) EXPORT_DEF(FT_Int32) FT_Sqrt64( FT_Int64* x ); - + #endif /* OLD_CALC */ #endif /* LONG64 */ diff --git a/include/freetype/internal/ftdriver.h b/include/freetype/internal/ftdriver.h index 68d416bf7..b89afef07 100644 --- a/include/freetype/internal/ftdriver.h +++ b/include/freetype/internal/ftdriver.h @@ -72,7 +72,7 @@ /* */ typedef FT_Error (*FTDriver_doneDriver)( FT_Driver driver ); - + typedef void (*FTDriver_Interface)( void ); /*************************************************************************/ diff --git a/include/freetype/internal/ftextend.h b/include/freetype/internal/ftextend.h index 7c5c52684..73dbb59ca 100644 --- a/include/freetype/internal/ftextend.h +++ b/include/freetype/internal/ftextend.h @@ -55,7 +55,7 @@ /* data, as the finalizer will get called later by the function's */ /* caller. */ /* */ - typedef FT_Error (*FT_Extension_Initializer)( void* ext, + typedef FT_Error (*FT_Extension_Initializer)( void* ext, FT_Face face ); @@ -114,11 +114,11 @@ FT_Extension_Initializer init; FT_Extension_Finalizer finalize; void* interface; - + FT_ULong offset; - + } FT_Extension_Class; - + EXPORT_DEF(FT_Error) FT_Register_Extension( FT_Driver driver, FT_Extension_Class* clazz ); diff --git a/include/freetype/internal/ftobjs.h b/include/freetype/internal/ftobjs.h index 55eefab07..ad95592ba 100644 --- a/include/freetype/internal/ftobjs.h +++ b/include/freetype/internal/ftobjs.h @@ -181,11 +181,11 @@ * n_contours :: current number of contours in zone * org :: original glyph coordinates (font units/scaled) * cur :: current glyph coordinates (scaled/hinted) - * tags :: point control tags + * tags :: point control tags * contours :: contour end points * ***********************************************************************/ - + typedef struct FT_GlyphZone_ { FT_Memory memory; @@ -209,7 +209,7 @@ FT_GlyphZone* zone ); BASE_DEF(void) FT_Done_GlyphZone( FT_GlyphZone* zone ); - + BASE_DEF(FT_Error) FT_Update_GlyphZone( FT_GlyphZone* zone, FT_UShort num_points, FT_Short num_contours ); @@ -260,7 +260,7 @@ /* ideally be changed dynamically at run-time. */ /* */ typedef void (*FT_DebugHook_Func)( void* arg ); - + typedef struct FT_LibraryRec_ { FT_Memory memory; /* library's memory object */ diff --git a/include/freetype/internal/ftstream.h b/include/freetype/internal/ftstream.h index bfb2a5e9c..ec9d331df 100644 --- a/include/freetype/internal/ftstream.h +++ b/include/freetype/internal/ftstream.h @@ -27,15 +27,15 @@ typedef enum FT_Frame_Op_ { ft_frame_end = 0, ft_frame_start = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ), - + ft_frame_byte = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 0 ), ft_frame_schar = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 1 ), - + ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ), ft_frame_short_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ), ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ), ft_frame_short_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ), - + ft_frame_ulong_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ), ft_frame_ulong_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ), ft_frame_long_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ), @@ -54,7 +54,7 @@ typedef struct FT_Frame_Field_ FT_Frame_Op value; char size; FT_UShort offset; - + } FT_Frame_Field; /* make-up a FT_Frame_Field out of a structure type and a field name */ @@ -171,53 +171,53 @@ typedef struct FT_Frame_Field_ void* base, unsigned long size, FT_Stream stream ); - + BASE_DEF(FT_Error) FT_Seek_Stream( FT_Stream stream, FT_ULong pos ); BASE_DEF(FT_Error) FT_Skip_Stream( FT_Stream stream, FT_Long distance ); - + BASE_DEF(FT_Long) FT_Stream_Pos( FT_Stream stream ); BASE_DEF(FT_Error) FT_Read_Stream( FT_Stream stream, void* buffer, FT_ULong count ); - + BASE_DEF(FT_Error) FT_Read_Stream_At( FT_Stream stream, FT_ULong pos, void* buffer, FT_ULong count ); - + BASE_DEF(FT_Error) FT_Access_Frame( FT_Stream stream, FT_ULong count ); - + BASE_DEF(void) FT_Forget_Frame( FT_Stream stream ); BASE_DEF(FT_Char) FT_Get_Char( FT_Stream stream ); - + BASE_DEF(FT_Short) FT_Get_Short( FT_Stream stream ); - + BASE_DEF(FT_Long) FT_Get_Offset( FT_Stream stream ); - + BASE_DEF(FT_Long) FT_Get_Long( FT_Stream stream ); BASE_DEF(FT_Char) FT_Read_Char( FT_Stream stream, - FT_Error* error ); + FT_Error* error ); BASE_DEF(FT_Short) FT_Read_Short( FT_Stream stream, - FT_Error* error ); + FT_Error* error ); BASE_DEF(FT_Long) FT_Read_Offset( FT_Stream stream, - FT_Error* error ); + FT_Error* error ); BASE_DEF(FT_Long) FT_Read_Long( FT_Stream stream, - FT_Error* error ); + FT_Error* error ); BASE_DEF(FT_Error) FT_Read_Fields( FT_Stream stream, const FT_Frame_Field* fields, diff --git a/include/freetype/internal/psnames.h b/include/freetype/internal/psnames.h index 53011f389..282a2b0a9 100644 --- a/include/freetype/internal/psnames.h +++ b/include/freetype/internal/psnames.h @@ -65,8 +65,8 @@ * uncode :: unicode value. * * - * The glyph index. 0xFFFF is no glyph correspond to this Unicode - * value.. + * The glyph index. 0xFFFF is no glyph correspond to this Unicode + * value.. * * * This function is able to recognize several glyph names per @@ -87,14 +87,14 @@ * PS_Macintosh_Name_Func * * - * A function used to return the glyph name corresponding to one + * A function used to return the glyph name corresponding to one * Apple glyph name index. * * * name_index :: index of the Mac name * * - * The glyph name, or 0 if the index is incorrect. + * The glyph name, or 0 if the index is incorrect. * * * This function will not be compiled if the configuration macro @@ -104,8 +104,8 @@ typedef const char* (*PS_Macintosh_Name_Func)( FT_UInt name_index ); - - + + typedef const char* (*PS_Adobe_Std_Strings_Func)( FT_UInt string_index ); /*************************************************************************** @@ -130,19 +130,19 @@ * corresponding to a given Unicode character code. * ***************************************************************************/ - + typedef struct PS_UniMap_ { FT_UInt unicode; FT_UInt glyph_index; - + } PS_UniMap; - + typedef struct PS_Unicodes_ { FT_UInt num_maps; PS_UniMap* maps; - + } PS_Unicodes; @@ -155,14 +155,14 @@ FT_UInt unicode ); /************************************************************************* - * - * - * PSNames_Interface - * - * - * this structure holds pointers to the functions used to load and - * free the basic tables that are required in a `sfnt' font file. - * + * + * + * PSNames_Interface + * + * + * this structure holds pointers to the functions used to load and + * free the basic tables that are required in a `sfnt' font file. + * * * unicode_value :: a function used to convert a glyph name into * a Unicode character code @@ -200,11 +200,11 @@ PS_Build_Unicodes_Func build_unicodes; PS_Lookup_Unicode_Func lookup_unicode; PS_Macintosh_Name_Func macintosh_name; - + PS_Adobe_Std_Strings_Func adobe_std_strings; const unsigned short* adobe_std_encoding; const unsigned short* adobe_expert_encoding; - + } PSNames_Interface; #endif /* PSNAMES_H */ diff --git a/include/freetype/internal/sfnt.h b/include/freetype/internal/sfnt.h index b08492a40..9e6eb11b5 100644 --- a/include/freetype/internal/sfnt.h +++ b/include/freetype/internal/sfnt.h @@ -161,7 +161,7 @@ /* */ /* The `map.buffer' field is always freed before the glyph is loaded. */ /* */ - typedef + typedef TT_Error (*TT_Load_SBit_Image_Func)( TT_Face face, TT_Int x_ppem, TT_Int y_ppem, @@ -336,7 +336,7 @@ typedef struct SFNT_Interface_ { TT_Goto_Table_Func goto_table; - + TT_Load_Any_Func load_any; TT_Load_Format_Tag_Func load_format_tag; TT_Load_Directory_Func load_directory; @@ -363,7 +363,7 @@ TT_Load_Table_Func load_sbits; TT_Load_SBit_Image_Func load_sbit_image; TT_Free_Table_Func free_sbits; - + /* see `ttpost.h' */ TT_Get_PS_Name_Func get_psname; TT_Free_Table_Func free_psnames; @@ -371,7 +371,7 @@ /* see `ttcmap.h' */ TT_CharMap_Load_Func load_charmap; TT_CharMap_Free_Func free_charmap; - + } SFNT_Interface; #endif /* SFNT_H */ diff --git a/include/freetype/internal/t1types.h b/include/freetype/internal/t1types.h index 9c755f54d..e4eaa354e 100644 --- a/include/freetype/internal/t1types.h +++ b/include/freetype/internal/t1types.h @@ -311,7 +311,7 @@ /* font info dictionary */ T1_FontInfo font_info; - + /* private dictionary */ T1_Private private_dict; @@ -341,9 +341,9 @@ T1_Long font_id; T1_Int stroke_width; - + } T1_Font; - + /*************************************************************************/ diff --git a/include/freetype/internal/tttypes.h b/include/freetype/internal/tttypes.h index f28c0b972..2a0f46c41 100644 --- a/include/freetype/internal/tttypes.h +++ b/include/freetype/internal/tttypes.h @@ -1574,7 +1574,7 @@ /* */ /* */ /* loaded :: A flag to indicate whether the PS names are loaded. */ - /* */ + /* */ /* format_20 :: The sub-table used for format 2.0. */ /* */ /* format_25 :: The sub-table used for format 2.5. */ @@ -1717,7 +1717,7 @@ { FT_CharMapRec root; TT_CMapTable cmap; - + } TT_CharMapRec; @@ -1997,7 +1997,7 @@ /* TT_Goto_Table defined in `ttload.h', but some font drivers */ /* might need something different, e.g. Type 42 fonts */ TT_Goto_Table_Func goto_table; - + /* a typeless pointer to the SFNT_Interface table used to load */ /* the basic TrueType tables in the face object */ void* sfnt; diff --git a/include/freetype/t1tables.h b/include/freetype/t1tables.h index 0f565aa3d..a25d7f25a 100644 --- a/include/freetype/t1tables.h +++ b/include/freetype/t1tables.h @@ -35,7 +35,7 @@ * FontInfo. * */ - + typedef struct T1_FontInfo { FT_String* version; @@ -47,7 +47,7 @@ FT_Bool is_fixed_pitch; FT_Short underline_position; FT_UShort underline_thickness; - + } T1_FontInfo; @@ -62,7 +62,7 @@ * Private dict. * */ - + typedef struct T1_Private { @@ -99,18 +99,18 @@ FT_Long password; FT_Short min_feature[2]; - + } T1_Private; /************************************************************************* * - * + * * T1_Blend_Flags * * * A set of flags used to indicate which fields are present in a - * given blen dictionary (font info or private). Used to support + * given blen dictionary (font info or private). Used to support * multiple masters.. * */ @@ -122,8 +122,8 @@ t1_blend_underline_position, t1_blend_underline_thickness, t1_blend_italic_angle, - - /* required fields in a Private blend dictionary */ + + /* required fields in a Private blend dictionary */ t1_blend_blue_values, t1_blend_other_blues, t1_blend_standard_width, @@ -138,7 +138,7 @@ /* never remove */ t1_blend_max - + } T1_Flags; @@ -146,7 +146,7 @@ { FT_Fixed min; FT_Fixed max; - + } T1_Blend_Pos; /************************************************************************* @@ -163,14 +163,14 @@ { FT_Int num_axis; FT_String* axis_types[4]; - - /* XXXX : add /BlendDesignMap entries */ - + + /* XXXX : add /BlendDesignMap entries */ + FT_Int num_blends; T1_Flags* flags [17]; T1_Private* privates [17]; T1_FontInfo* fontinfos[17]; - + } T1_Blend; @@ -183,16 +183,16 @@ FT_UInt num_subrs; FT_ULong subrmap_offset; FT_Int sd_bytes; - + } CID_FontDict; - + typedef struct CID_Info_ { FT_String* cid_font_name; FT_Fixed cid_version; FT_Int cid_font_type; - + FT_String* registry; FT_String* ordering; FT_Int supplement; @@ -201,16 +201,16 @@ FT_Int num_xuid; FT_ULong xuid[16]; - - + + FT_ULong cidmap_offset; FT_Int fd_bytes; FT_Int gd_bytes; FT_ULong cid_count; - + FT_Int num_font_dicts; CID_FontDict* font_dicts; - + } CID_Info; diff --git a/include/freetype/tttables.h b/include/freetype/tttables.h index 7f98c2057..3cd9e4dbc 100644 --- a/include/freetype/tttables.h +++ b/include/freetype/tttables.h @@ -360,7 +360,7 @@ FT_UShort usDefaultChar; FT_UShort usBreakChar; FT_UShort usMaxContext; - + } TT_OS2; @@ -493,7 +493,7 @@ ft_sfnt_post = 5, sfnt_max /* don't remove */ - + } FT_Sfnt_Tag; /* internal use only */ @@ -524,7 +524,7 @@ * You can load any table with a different function.. XXX * ***************************************************************************/ - + EXPORT_DEF(void*) FT_Get_Sfnt_Table( FT_Face face, FT_Sfnt_Tag tag ); diff --git a/license.txt b/license.txt index c42206ac7..105b6d528 100644 --- a/license.txt +++ b/license.txt @@ -117,7 +117,7 @@ Legal Terms Neither the FreeType authors and contributors nor you shall use the name of the other for commercial, advertising, or promotional purposes without specific prior written permission. - + We suggest, but do not require, that you use one or more of the following phrases to refer to this software in your documentation or advertising materials: `FreeType Project', `FreeType Engine', diff --git a/src/base/ftcalc.c b/src/base/ftcalc.c index c08c40b8b..2feee6986 100644 --- a/src/base/ftcalc.c +++ b/src/base/ftcalc.c @@ -53,7 +53,7 @@ 536870912, 759250125, 1073741824, 1518500250, 2147483647 }; -#else +#else /*************************************************************************/ /* */ /* */ @@ -243,12 +243,12 @@ /* */ /* The 32-bit square-root. */ /* */ - + static int ft_order64( FT_Int64 z ) { int j = 0; - + while ( z ) { z = (unsigned INT64)z >> 1; @@ -678,13 +678,13 @@ /* */ /* The 32-bit square-root. */ /* */ - + static int ft_order64( FT_Int64* z ) { FT_Word32 i; int j; - + i = z->lo; j = 0; if ( z->hi ) @@ -692,7 +692,7 @@ i = z->hi; j = 32; } - + while ( i > 0 ) { i >>= 1; diff --git a/src/base/ftglyph.c b/src/base/ftglyph.c index 4bfb3ce79..271a6b545 100644 --- a/src/base/ftglyph.c +++ b/src/base/ftglyph.c @@ -32,11 +32,11 @@ FT_Bool vertical ) { FT_Glyph_Metrics* metrics = &face->glyph->metrics; - + glyph->memory = face->memory; glyph->width = metrics->width; glyph->height = metrics->height; - + if (vertical) { glyph->bearingX = metrics->vertBearingX; @@ -110,13 +110,13 @@ FT_Pos origin_y = 0; *abitglyph = 0; - + if (origin) { origin_x = origin->x & 63; origin_y = origin->y & 63; } - + /* check arguments if the face's format is not scalable */ if ( !(face->face_flags & FT_FACE_FLAG_SCALABLE) && face->transform_flags ) { @@ -135,10 +135,10 @@ /* disable embedded bitmaps for transformed images */ if ( face->face_flags & FT_FACE_FLAG_SCALABLE && face->transform_flags ) load_flags |= FT_LOAD_NO_BITMAP; - + error = FT_Load_Glyph( face, glyph_index, load_flags ); if (error) goto Exit; - + /* now, handle bitmap and outline glyph images */ memory = face->memory; switch ( face->glyph->format ) @@ -147,22 +147,22 @@ { FT_Long size; FT_Bitmap* source; - + if ( ALLOC( bitglyph, sizeof(*bitglyph) ) ) goto Exit; - + glyph = (FT_Glyph)bitglyph; glyph->glyph_type = ft_glyph_type_bitmap; ft_prepare_glyph( glyph, face, 0 ); - + source = &face->glyph->bitmap; size = source->rows * source->pitch; if (size < 0) size = -size; - + bitglyph->bitmap = *source; if ( ALLOC( bitglyph->bitmap.buffer, size ) ) goto Fail; - + /* copy the content of the source glyph */ MEM_Copy( bitglyph->bitmap.buffer, source->buffer, size ); } @@ -173,49 +173,49 @@ FT_BBox cbox; FT_Int width, height, pitch; FT_Long size; - + /* transform the outline - note that the original metrics are NOT */ /* transformed by this.. only the outline points themselves.. */ FT_Outline_Transform( &face->glyph->outline, &face->transform_matrix ); FT_Outline_Translate( &face->glyph->outline, face->transform_delta.x + origin_x, face->transform_delta.y + origin_y ); - + /* compute the size in pixels of the outline */ FT_Outline_Get_CBox( &face->glyph->outline, &cbox ); cbox.xMin &= -64; cbox.yMin &= -64; cbox.xMax = (cbox.xMax+63) & -64; cbox.yMax = (cbox.yMax+63) & -64; - + width = (cbox.xMax - cbox.xMin) >> 6; height = (cbox.yMax - cbox.yMin) >> 6; /* allocate the pixel buffer for the glyph bitmap */ if (grays) pitch = (width+3) & -4; /* some raster implementation need this */ else pitch = (width+7) >> 3; - + size = pitch * height; if ( ALLOC( bitglyph, sizeof(*bitglyph) ) ) goto Exit; - + glyph = (FT_Glyph)bitglyph; glyph->glyph_type = ft_glyph_type_bitmap; ft_prepare_glyph( glyph, face, 0 ); - + if ( ALLOC( bitglyph->bitmap.buffer, size ) ) goto Fail; - + bitglyph->bitmap.width = width; bitglyph->bitmap.rows = height; bitglyph->bitmap.pitch = pitch; bitglyph->bitmap.pixel_mode = grays ? ft_pixel_mode_grays : ft_pixel_mode_mono; bitglyph->bitmap.num_grays = (short)grays; - + bitglyph->left = (cbox.xMin >> 6); bitglyph->top = (cbox.yMax >> 6); - + /* render the monochrome outline into the target buffer */ FT_Outline_Translate( &face->glyph->outline, -cbox.xMin, -cbox.yMin ); error = FT_Outline_Get_Bitmap( face->driver->library, @@ -228,22 +228,22 @@ } } break; - + default: error = FT_Err_Invalid_Glyph_Index; goto Exit; } - + *abitglyph = bitglyph; Exit: return error; - + Fail: FREE( glyph ); goto Exit; } - + /*********************************************************************** * * @@ -257,7 +257,7 @@ * face :: handle to source face object * glyph_index :: glyph index in face * load_flags :: load flags, see FT_LOAD_FLAG_XXXX constants.. - * + * * * vecglyph :: pointer to the new outline glyph * @@ -269,7 +269,7 @@ * FT_LOAD_NO_RECURSE are set.. * ***********************************************************************/ - + EXPORT_FUNC(FT_Error) FT_Get_Glyph_Outline( FT_Face face, FT_UInt glyph_index, FT_UInt load_flags, @@ -280,27 +280,27 @@ FT_OutlineGlyph glyph; *vecglyph = 0; - + /* check that NO_OUTLINE and NO_RECURSE are not set */ if (load_flags & (FT_LOAD_NO_OUTLINE|FT_LOAD_NO_RECURSE)) { error = FT_Err_Invalid_Argument; goto Exit; } - + /* disable the loading of embedded bitmaps */ load_flags |= FT_LOAD_NO_BITMAP; - + error = FT_Load_Glyph( face, glyph_index, load_flags ); if (error) goto Exit; - + /* check that we really loaded an outline */ if ( face->glyph->format != ft_glyph_format_outline ) { error = FT_Err_Invalid_Glyph_Index; goto Exit; } - + /* transform the outline - note that the original metrics are NOT */ /* transformed by this.. only the outline points themselves.. */ if ( face->transform_flags ) @@ -310,7 +310,7 @@ face->transform_delta.x, face->transform_delta.y ); } - + /* now, create a new outline glyph and copy everything there */ memory = face->memory; if ( ALLOC( glyph, sizeof(*glyph) ) ) @@ -318,20 +318,20 @@ ft_prepare_glyph( (FT_Glyph)glyph, face, 0 ); glyph->metrics.glyph_type = ft_glyph_type_outline; - + error = FT_Outline_New( face->driver->library, face->glyph->outline.n_points, face->glyph->outline.n_contours, &glyph->outline ); if (!error) error = FT_Outline_Copy( &face->glyph->outline, &glyph->outline ); - + if (error) goto Fail; - + *vecglyph = glyph; Exit: return error; - + Fail: FREE( glyph ); goto Exit; @@ -344,7 +344,7 @@ * * * A function used to set the transform that is applied to glyph images - * just after they're loaded in the face's glyph slot, and before they're + * just after they're loaded in the face's glyph slot, and before they're * returned by either FT_Get_Glyph_Bitmap or FT_Get_Glyph_Outline * * @@ -357,13 +357,13 @@ * in a font face. It is unable to transform embedded glyph bitmaps * ***********************************************************************/ - + EXPORT_FUNC(void) FT_Set_Transform( FT_Face face, FT_Matrix* matrix, FT_Vector* delta ) { face->transform_flags = 0; - + if (!matrix) { face->transform_matrix.xx = 0x10000L; @@ -374,7 +374,7 @@ } else face->transform_matrix = *matrix; - + /* set transform_flags bit flag 0 if delta isn't the null vector */ if ( (matrix->xy | matrix->yx) || matrix->xx != 0x10000L || @@ -389,7 +389,7 @@ } else face->transform_delta = *delta; - + /* set transform_flags bit flag 1 if delta isn't the null vector */ if ( delta->x | delta->y ) face->transform_flags |= 2; @@ -404,16 +404,16 @@ * Destroys a given glyph.. * * - * glyph :: handle to target glyph object + * glyph :: handle to target glyph object * ***********************************************************************/ - + EXPORT_FUNC(void) FT_Done_Glyph( FT_Glyph glyph ) { if (glyph) { FT_Memory memory = glyph->memory; - + if ( glyph->glyph_type == ft_glyph_type_bitmap ) { FT_BitmapGlyph bit = (FT_BitmapGlyph)glyph; @@ -429,7 +429,7 @@ FREE( out->outline.tags ); } } - + FREE( glyph ); } } @@ -444,7 +444,7 @@ * Returns the glyph image's bounding box in pixels. * * - * glyph :: handle to target glyph object + * glyph :: handle to target glyph object * * * box :: the glyph bounding box. Coordinates are expressed in @@ -458,13 +458,13 @@ * The height is box.yMax - box.yMin * ***********************************************************************/ - + EXPORT_FUNC(void) FT_Glyph_Get_Box( FT_Glyph glyph, FT_BBox *box ) { box->xMin = box->xMax = 0; box->yMin = box->yMax = 0; - + if (glyph) switch (glyph->glyph_type) { case ft_glyph_type_bitmap: @@ -476,11 +476,11 @@ box->yMin = box->yMax - bit->bitmap.rows; } break; - + case ft_glyph_type_outline: { FT_OutlineGlyph out = (FT_OutlineGlyph)glyph; - + FT_Outline_Get_CBox( &out->outline, box ); box->xMin >>= 6; box->yMin >>= 6; @@ -488,7 +488,7 @@ box->yMax = (box->yMax+63) >> 6; } break; - + default: ; } @@ -502,7 +502,7 @@ /**** ****/ /***************************************************************************/ /***************************************************************************/ - + #if 0 /* Compute the norm of a vector */ @@ -542,21 +542,21 @@ hi = (FT_ULong)u >> 16; lo = (FT_ULong)u & 0xFFFF; med = hi*lo; - + H = hi*hi + (med >> 15); med <<= 17; L = lo*lo + med; if (L < med) H++; - + hi = (FT_ULong)v >> 16; lo = (FT_ULong)v & 0xFFFF; med = hi*lo; - + H += hi*hi + (med >> 15); med <<= 17; L2 = lo*lo + med; if (L2 < med) H++; - + L += L2; if (L < L2) H++; @@ -598,17 +598,17 @@ prev = cur - 1; next = cur + 1; - first = 0; + first = 0; for ( c = 0; c < outline->n_contours; c++ ) { last = outline->contours[c]; if ( n == first ) prev = outline->points + last; - + if ( n == last ) next = outline->points + first; - + first = last + 1; } @@ -721,7 +721,7 @@ for ( c = 0; c < outline->n_contours; c++ ) { int last = outline->contours[c]; - + prev = points[last]; for ( n = first; n <= last; n++ ) @@ -777,7 +777,7 @@ x = distance + cur.x + FT_MulFix( d, u.x + v.x )/2; y = distance + cur.y + FT_MulFix( d, u.y + v.y )/2; - + outline->points[n].x = x; outline->points[n].y = y; } @@ -794,4 +794,4 @@ return 0; } -#endif /* 0 - EXPERIMENTAL STUFF !! */ +#endif /* 0 - EXPERIMENTAL STUFF !! */ diff --git a/src/base/ftgrays.c b/src/base/ftgrays.c index 67ef667e1..95550cef9 100644 --- a/src/base/ftgrays.c +++ b/src/base/ftgrays.c @@ -120,7 +120,7 @@ typedef long TPos; /* sub-pixel coordinate */ #define FT_MAX_GRAY_SPANS 32 -#ifdef GRAYS_COMPACT +#ifdef GRAYS_COMPACT typedef struct TCell_ { short x : 14; @@ -599,12 +599,12 @@ int render_conic( RAS_ARG_ FT_Vector* control, FT_Vector* to ) /* we compute the mid-point directly in order to avoid */ /* calling split_conic().. */ TPos to_x, to_y, mid_x, mid_y; - + to_x = UPSCALE(to->x); to_y = UPSCALE(to->y); mid_x = (ras.x + to_x + 2*UPSCALE(control->x))/4; mid_y = (ras.y + to_y + 2*UPSCALE(control->y))/4; - + return render_line( RAS_VAR_ mid_x, mid_y ) || render_line( RAS_VAR_ to_x, to_y ); } @@ -613,7 +613,7 @@ int render_conic( RAS_ARG_ FT_Vector* control, FT_Vector* to ) levels = ras.lev_stack; top = 0; levels[0] = level; - + arc[0].x = UPSCALE(to->x); arc[0].y = UPSCALE(to->y); arc[1].x = UPSCALE(control->x); @@ -647,12 +647,12 @@ int render_conic( RAS_ARG_ FT_Vector* control, FT_Vector* to ) Draw: { TPos to_x, to_y, mid_x, mid_y; - + to_x = arc[0].x; to_y = arc[0].y; mid_x = (ras.x + to_x + 2*arc[1].x)/4; mid_y = (ras.y + to_y + 2*arc[1].y)/4; - + if ( render_line( RAS_VAR_ mid_x, mid_y ) || render_line( RAS_VAR_ to_x, to_y ) ) return 1; top--; @@ -723,12 +723,12 @@ int render_cubic( RAS_ARG_ FT_Vector* control1, if (level <= 1) { TPos to_x, to_y, mid_x, mid_y; - + to_x = UPSCALE(to->x); to_y = UPSCALE(to->y); mid_x = (ras.x + to_x + 3*UPSCALE(control1->x+control2->x))/8; mid_y = (ras.y + to_y + 3*UPSCALE(control1->y+control2->y))/8; - + return render_line( RAS_VAR_ mid_x, mid_y ) || render_line( RAS_VAR_ to_x, to_y ); } @@ -775,12 +775,12 @@ int render_cubic( RAS_ARG_ FT_Vector* control1, Draw: { TPos to_x, to_y, mid_x, mid_y; - + to_x = arc[0].x; to_y = arc[0].y; mid_x = (ras.x + to_x + 3*(arc[1].x+arc[2].x))/8; mid_y = (ras.y + to_y + 3*(arc[1].y+arc[2].y))/8; - + if ( render_line( RAS_VAR_ mid_x, mid_y ) || render_line( RAS_VAR_ to_x, to_y ) ) return 1; top --; @@ -1015,9 +1015,9 @@ int check_sort( PCell cells, int count ) for ( ; count > 0; count--, spans++ ) { if (spans->coverage) -#if 1 +#if 1 memset( p + spans->x, (spans->coverage+1) >> 1, spans->len ); -#else +#else { q = p + spans->x; limit = q + spans->len; @@ -1172,7 +1172,7 @@ int check_sort( PCell cells, int count ) ++cur; if (cur >= limit || cur->y != start->y || cur->x != start->x) break; - + area += cur->area; cover += cur->cover; } @@ -1226,7 +1226,7 @@ int check_sort( PCell cells, int count ) typedef struct TBand_ { FT_Pos min, max; - + } TBand; static @@ -1254,7 +1254,7 @@ int check_sort( PCell cells, int count ) if ( ras.max_ex <= 0 || ras.min_ex >= ras.target.width || ras.max_ey <= 0 || ras.min_ey >= ras.target.rows ) return 0; - + if (ras.min_ex < 0) ras.min_ex = 0; if (ras.min_ey < 0) ras.min_ey = 0; @@ -1271,7 +1271,7 @@ int check_sort( PCell cells, int count ) level++; if (ras.max_ex > 120 || ras.max_ey > 120) level+=2; - + ras.conic_level <<= level; ras.cubic_level <<= level; } @@ -1280,7 +1280,7 @@ int check_sort( PCell cells, int count ) num_bands = (ras.max_ey - ras.min_ey)/ras.band_size; if (num_bands == 0) num_bands = 1; if (num_bands >= 39) num_bands = 39; - + ras.band_shoot = 0; min = ras.min_ey; @@ -1290,24 +1290,24 @@ int check_sort( PCell cells, int count ) max = min + ras.band_size; if (n == num_bands-1 || max > max_y) max = max_y; - + bands[0].min = min; bands[0].max = max; band = bands; - + while (band >= bands) { FT_Pos bottom, top, middle; int error; - + ras.num_cells = 0; ras.invalid = 1; ras.min_ey = band->min; ras.max_ey = band->max; - + error = FT_Outline_Decompose( outline, &interface, &ras ) || record_cell( RAS_VAR ); - + if (!error) { #ifdef SHELL_SORT @@ -1315,22 +1315,22 @@ int check_sort( PCell cells, int count ) #else quick_sort( ras.cells, ras.num_cells ); #endif - + #ifdef DEBUG_GRAYS check_sort( ras.cells, ras.num_cells ); dump_cells( RAS_VAR ); #endif - + grays_sweep( RAS_VAR_ &ras.target ); band--; continue; } - + /* render pool overflow, we will reduce the render band by half */ bottom = band->min; top = band->max; middle = bottom + ((top-bottom) >> 1); - + /* waoow !! this is too complex for a single scanline, something */ /* must be really rotten here !! */ if (middle == bottom) @@ -1340,10 +1340,10 @@ int check_sort( PCell cells, int count ) #endif return 1; } - + if (bottom-top >= ras.band_size) ras.band_shoot++; - + band[1].min = bottom; band[1].max = middle; band[0].min = middle; @@ -1461,10 +1461,10 @@ int check_sort( PCell cells, int count ) long pool_size ) { PRaster rast = (PRaster)raster; - + if (raster && pool_base && pool_size >= 4096) init_cells( rast, (char*)pool_base, pool_size ); - + rast->band_size = (pool_size / sizeof(TCell))/8; } diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 29caeeaa8..81438e24d 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -227,9 +227,9 @@ memory = library->memory; if ( ALLOC( stream, sizeof ( *stream ) ) ) goto Exit; - + stream->memory = memory; - + /* now, look at the stream flags */ if ( args->flags & ft_open_memory ) { @@ -253,10 +253,10 @@ { error = FT_Err_Invalid_Argument; } - + if ( error ) FREE( stream ); - + *astream = stream; Exit: return error; @@ -341,7 +341,7 @@ face->generic.finalizer( face ); /* close the stream for this face */ - ft_done_stream( &face->stream ); + ft_done_stream( &face->stream ); /* get rid of it */ FREE( face ); @@ -394,8 +394,8 @@ * FT_Get_Raster * * - * Return a pointer to the raster corresponding to a given glyph - * format tag. + * Return a pointer to the raster corresponding to a given glyph + * format tag. * * * library :: handle to source library object @@ -408,13 +408,13 @@ * a pointer to the corresponding raster object. * *************************************************************************/ - + EXPORT_FUNC(FT_Raster) FT_Get_Raster( FT_Library library, FT_Glyph_Format glyph_format, FT_Raster_Funcs *raster_funcs ) { FT_Int n; - + for ( n = 0; n < FT_MAX_GLYPH_FORMATS; n++ ) { FT_Raster_Funcs* funcs = &library->raster_funcs[n]; @@ -462,18 +462,18 @@ FT_Raster raster; FT_Error error; FT_Int n, index; - + if ( glyph_format == ft_glyph_format_none) return FT_Err_Invalid_Argument; - + /* create a new raster object */ error = raster_funcs->raster_new( library->memory, &raster ); if (error) goto Exit; - + raster_funcs->raster_reset( raster, library->raster_pool, library->raster_pool_size ); - + index = -1; for (n = 0; n < FT_MAX_GLYPH_FORMATS; n++) { @@ -482,7 +482,7 @@ /* record the first vacant entry in "index" */ if (index < 0 && funcs->glyph_format == ft_glyph_format_none) index = n; - + /* compare this entry's glyph format with the one we need */ if (funcs->glyph_format == glyph_format) { @@ -511,7 +511,7 @@ Fail: raster_funcs->raster_done( raster ); goto Exit; - } + } /*************************************************************************/ /* */ @@ -534,8 +534,8 @@ FT_Glyph_Format glyph_format = raster_funcs->glyph_format; FT_Error error; FT_Int n; - - error = FT_Err_Invalid_Argument; + + error = FT_Err_Invalid_Argument; if ( glyph_format == ft_glyph_format_none) goto Exit; @@ -581,7 +581,7 @@ { FT_Raster_Funcs funcs; FT_Raster raster; - + raster = FT_Get_Raster( library, format, &funcs ); if (raster && funcs.raster_set_mode ) return funcs.raster_set_mode( raster, mode, args ); @@ -657,7 +657,7 @@ /* now register the default raster for the `outline' glyph image format */ /* for now, ignore the error... */ error = FT_Set_Raster( library, &ft_default_raster ); - + /* That's ok now */ *alibrary = library; @@ -1133,13 +1133,13 @@ { FT_Int num_params = 0; FT_Parameter* params = 0; - + if ( args->flags & ft_open_params ) { num_params = args->num_params; params = args->params; } - + error = open_face( driver, stream, face_index, num_params, params, &face ); if ( !error ) @@ -1164,13 +1164,13 @@ { FT_Int num_params = 0; FT_Parameter* params = 0; - + if ( args->flags & ft_open_params ) { num_params = args->num_params; params = args->params; } - + error = open_face( driver, stream, face_index, num_params, params, &face ); if ( !error ) @@ -1194,7 +1194,7 @@ goto Fail; node->data = face; - /* don't assume driver is the same as face->driver, so use + /* don't assume driver is the same as face->driver, so use face->driver instead. (JvR 3/5/2000) */ FT_List_Add( &face->driver->faces_list, node ); @@ -1283,7 +1283,7 @@ return FT_Attach_Stream( face, &open ); } - + /*************************************************************************/ /* */ /* */ @@ -1315,33 +1315,33 @@ FT_Stream stream; FT_Error error; FT_Driver driver; - + FTDriver_getInterface get_interface; - + if ( !face || !face->driver ) return FT_Err_Invalid_Handle; - + driver = face->driver; error = ft_new_input_stream( driver->library, parameters, &stream ); if (error) goto Exit; - + /* we implement FT_Attach_Stream in each driver through the */ /* "attach_file" interface.. */ error = FT_Err_Unimplemented_Feature; get_interface = driver->interface.get_interface; - if (get_interface) + if (get_interface) { FT_Attach_Reader reader; - + reader = (FT_Attach_Reader)(get_interface( driver, "attach_file" )); if (reader) error = reader( face, stream ); } - + /* close the attached stream */ ft_done_stream( &stream ); - + Exit: return error; } @@ -1653,7 +1653,7 @@ face->units_per_EM ); } - error = interface->set_pixel_sizes( face->size, + error = interface->set_pixel_sizes( face->size, pixel_width, pixel_height ); return error; @@ -1814,7 +1814,7 @@ return FT_Err_Invalid_Face_Handle; driver = face->driver; - + /* when the flag NO_RECURSE is set, we disable hinting and scaling */ if (load_flags & FT_LOAD_NO_RECURSE) load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; @@ -1940,7 +1940,7 @@ { FT_CharMap* cur = face->charmaps; FT_CharMap* limit = cur + face->num_charmaps; - + for ( ; cur < limit; cur++ ) { if ( cur[0]->encoding == encoding ) @@ -1979,7 +1979,7 @@ { FT_CharMap* cur = face->charmaps; FT_CharMap* limit = cur + face->num_charmaps; - + for ( ; cur < limit; cur++ ) { if ( cur[0] == charmap ) @@ -2048,26 +2048,26 @@ * You can load any table with a different function.. XXX * ***************************************************************************/ - - + + EXPORT_FUNC(void*) FT_Get_Sfnt_Table( FT_Face face, FT_Sfnt_Tag tag ) { void* table = 0; FT_Get_Sfnt_Table_Func func; FT_Driver driver; - + if (!face || !FT_IS_SFNT(face)) goto Exit; - + driver = face->driver; func = (FT_Get_Sfnt_Table_Func)driver->interface.get_interface( driver, "get_sfnt" ); if (func) table = func(face,tag); - + Exit: return table; - } + } diff --git a/src/base/ftoutln.c b/src/base/ftoutln.c index 10befb5a6..e3db124d0 100644 --- a/src/base/ftoutln.c +++ b/src/base/ftoutln.c @@ -88,7 +88,7 @@ v_start = outline->points[first]; v_last = outline->points[last]; - + v_start.x = SCALED(v_start.x); v_start.y = SCALED(v_start.y); v_last.x = SCALED(v_last.x); v_last.y = SCALED(v_last.y); @@ -133,91 +133,91 @@ { point++; tags++; - + tag = FT_CURVE_TAG( tags[0] ); switch (tag) { case FT_Curve_Tag_On: /* emit a single line_to */ { FT_Vector vec; - + vec.x = SCALED(point->x); vec.y = SCALED(point->y); - + error = interface->line_to( &vec, user ); if (error) goto Exit; continue; } - + case FT_Curve_Tag_Conic: /* consume conic arcs */ { v_control.x = SCALED(point->x); v_control.y = SCALED(point->y); - + Do_Conic: if (point < limit) { FT_Vector vec; FT_Vector v_middle; - + point++; tags++; tag = FT_CURVE_TAG( tags[0] ); - + vec.x = SCALED(point->x); vec.y = SCALED(point->y); - + if (tag == FT_Curve_Tag_On) { error = interface->conic_to( &v_control, &vec, user ); if (error) goto Exit; continue; } - + if (tag != FT_Curve_Tag_Conic) goto Invalid_Outline; - + v_middle.x = (v_control.x + vec.x)/2; v_middle.y = (v_control.y + vec.y)/2; - + error = interface->conic_to( &v_control, &v_middle, user ); if (error) goto Exit; - + v_control = vec; goto Do_Conic; } - + error = interface->conic_to( &v_control, &v_start, user ); goto Close; } - + default: /* FT_Curve_Tag_Cubic */ { FT_Vector vec1, vec2; - + if ( point+1 > limit || FT_CURVE_TAG( tags[1] ) != FT_Curve_Tag_Cubic ) goto Invalid_Outline; - + point += 2; tags += 2; - + vec1.x = SCALED(point[-2].x); vec1.y = SCALED(point[-2].y); vec2.x = SCALED(point[-1].x); vec2.y = SCALED(point[-1].y); if (point <= limit) { FT_Vector vec; - + vec.x = SCALED(point->x); vec.y = SCALED(point->y); - + error = interface->cubic_to( &vec1, &vec2, &vec, user ); if (error) goto Exit; continue; } - + error = interface->cubic_to( &vec1, &vec2, &v_start, user ); goto Close; } @@ -226,7 +226,7 @@ /* close the contour with a line segment */ error = interface->line_to( &v_start, user ); - + Close: if (error) goto Exit; first = last+1; @@ -235,7 +235,7 @@ return 0; Exit: return error; - + Invalid_Outline: return -1; } @@ -389,7 +389,7 @@ FT_BBox* cbox ) { FT_Pos xMin, yMin, xMax, yMax; - + if ( outline && cbox ) { if ( outline->n_points == 0 ) @@ -428,7 +428,7 @@ } } - + /*************************************************************************/ /* */ @@ -481,18 +481,18 @@ { FT_UShort n; FT_Int first, last; - + first = 0; for ( n = 0; n < outline->n_contours; n++ ) { last = outline->contours[n]; - + /* reverse point table */ { FT_Vector* p = outline->points + first; FT_Vector* q = outline->points + last; FT_Vector swap; - + while (p < q) { swap = *p; @@ -502,13 +502,13 @@ q--; } } - + /* reverse tags table */ { char* p = outline->tags + first; char* q = outline->tags + last; char swap; - + while (p < q) { swap = *p; @@ -518,7 +518,7 @@ q--; } } - + first = last+1; } outline->flags ^= ft_outline_reverse_fill; @@ -538,7 +538,7 @@ BASE_FUNC(void) FT_Done_GlyphZone( FT_GlyphZone* zone ) { FT_Memory memory = zone->memory; - + FREE( zone->contours ); FREE( zone->tags ); FREE( zone->cur ); @@ -547,7 +547,7 @@ zone->max_points = zone->n_points = 0; zone->max_contours = zone->n_contours = 0; } - + /*************************************************************************/ /* */ /* */ @@ -581,7 +581,7 @@ MEM_Set( zone, 0, sizeof(*zone) ); zone->memory = memory; - + if ( ALLOC_ARRAY( zone->org, maxPoints*2, FT_F26Dot6 ) || ALLOC_ARRAY( zone->cur, maxPoints*2, FT_F26Dot6 ) || ALLOC_ARRAY( zone->tags, maxPoints, FT_Byte ) || @@ -621,7 +621,7 @@ { FT_Error error = FT_Err_Ok; FT_Memory memory = zone->memory; - + newPoints += 2; if ( zone->max_points < newPoints ) { @@ -630,16 +630,16 @@ REALLOC_ARRAY( zone->cur, zone->max_points*2, newPoints*2, FT_F26Dot6 ) || REALLOC_ARRAY( zone->tags, zone->max_points*2, newPoints, FT_Byte ) ) goto Exit; - + zone->max_points = newPoints; } - + if ( zone->max_contours < newContours ) { /* reallocate the contours array */ if ( REALLOC_ARRAY( zone->contours, zone->max_contours, newContours, FT_UShort ) ) goto Exit; - + zone->max_contours = newContours; } Exit: @@ -692,7 +692,7 @@ params.flags = 0; if (map->pixel_mode == ft_pixel_mode_grays) params.flags |= ft_raster_flag_aa; - + error = funcs.raster_render( raster, ¶ms ); Exit: return error; @@ -732,7 +732,7 @@ EXPORT_FUNC(FT_Error) FT_Outline_Render( FT_Library library, FT_Outline* outline, FT_Raster_Params* params ) - { + { FT_Error error; FT_Raster raster; FT_Raster_Funcs funcs; @@ -788,7 +788,7 @@ FT_Outline* target ) { FT_Int is_owner; - + if ( !source || !target || source->n_points != target->n_points || source->n_contours != target->n_contours ) @@ -806,7 +806,7 @@ /* copy all flags, except the "ft_outline_owner" one */ is_owner = target->flags & ft_outline_owner; target->flags = source->flags; - + target->flags &= ~ft_outline_owner; target->flags |= is_owner; return FT_Err_Ok; diff --git a/src/base/ftraster.c b/src/base/ftraster.c index 93c25aff8..26a9a2b88 100644 --- a/src/base/ftraster.c +++ b/src/base/ftraster.c @@ -189,14 +189,14 @@ /** **/ /****************************************************************/ /****************************************************************/ - + typedef int Int; typedef unsigned int UInt; typedef short Short; typedef unsigned short UShort, *PUShort; typedef long Long, *PLong; typedef unsigned long ULong; - + typedef unsigned char Byte, *PByte; typedef char Bool; @@ -204,7 +204,7 @@ { Long x; Long y; - + } TPoint; @@ -213,7 +213,7 @@ Flow_None = 0, Flow_Up = 1, Flow_Down = -1 - + } TFlow; @@ -224,7 +224,7 @@ Ascending, Descending, Flat - + } TStates; @@ -257,7 +257,7 @@ { Short y_min; /* band's minimum */ Short y_max; /* band's maximum */ - + } TBand; @@ -410,7 +410,7 @@ /* in bytes of at least 'gray_width*2' */ #endif /* FT_RASTER_ANTI_ALIASING */ - + #if 0 PByte flags; /* current flags table */ PUShort outs; /* current outlines table */ @@ -428,7 +428,7 @@ static TRaster_Instance cur_ras; #define ras cur_ras - + #else #define ras (*raster) @@ -442,7 +442,7 @@ /** **/ /****************************************************************/ /****************************************************************/ - + /************************************************************************/ /* */ @@ -1415,7 +1415,7 @@ SWAP_(v_start.x,v_start.y); SWAP_(v_last.x,v_last.y); } - + v_control = v_start; point = points + first; @@ -1457,14 +1457,14 @@ { point++; tags++; - + tag = FT_CURVE_TAG( tags[0] ); switch (tag) { case FT_Curve_Tag_On: /* emit a single line_to */ { Long x, y; - + x = SCALED(point->x); y = SCALED(point->y); if (flipped) SWAP_(x,y); @@ -1473,64 +1473,64 @@ continue; } - + case FT_Curve_Tag_Conic: /* consume conic arcs */ { v_control.x = SCALED(point[0].x); v_control.y = SCALED(point[0].y); if (flipped) SWAP_(v_control.x,v_control.y); - + Do_Conic: if (point < limit) { FT_Vector v_middle; Long x, y; - + point++; tags++; tag = FT_CURVE_TAG( tags[0] ); - + x = SCALED(point[0].x); y = SCALED(point[0].y); if (flipped) SWAP_(x,y); - + if (tag == FT_Curve_Tag_On) { if (Conic_To( RAS_VARS v_control.x, v_control.y, x, y )) goto Fail; continue; } - + if (tag != FT_Curve_Tag_Conic) goto Invalid_Outline; v_middle.x = (v_control.x + x)/2; v_middle.y = (v_control.y + y)/2; - if (Conic_To( RAS_VARS v_control.x, v_control.y, + if (Conic_To( RAS_VARS v_control.x, v_control.y, v_middle.x, v_middle.y )) goto Fail; - + v_control.x = x; v_control.y = y; goto Do_Conic; } - + if (Conic_To( RAS_VARS v_control.x, v_control.y, v_start.x, v_start.y )) goto Fail; goto Close; } - + default: /* FT_Curve_Tag_Cubic */ { Long x1, y1, x2, y2, x3, y3; - + if ( point+1 > limit || FT_CURVE_TAG( tags[1] ) != FT_Curve_Tag_Cubic ) goto Invalid_Outline; - + point += 2; tags += 2; - + x1 = SCALED(point[-2].x); y1 = SCALED(point[-2].y); x2 = SCALED(point[-1].x); @@ -1549,7 +1549,7 @@ goto Fail; continue; } - + if (Cubic_To( RAS_VARS x1, y1, x2, y2, v_start.x, v_start.y )) goto Fail; goto Close; @@ -1563,14 +1563,14 @@ Close: return SUCCESS; - + Invalid_Outline: ras.error = Raster_Err_Invalid; - + Fail: return FAILURE; } - + /****************************************************************************/ /* */ /* Function: Convert_Glyph */ @@ -1650,7 +1650,7 @@ /** **/ /****************************************************************/ /****************************************************************/ - + /************************************************/ /* */ @@ -1820,14 +1820,14 @@ static void Vertical_Sweep_Init( RAS_ARGS Short* min, Short* max ) { Long pitch = ras.target.pitch; - + UNUSED(max); - + ras.traceIncr = (Short)- pitch; ras.traceOfs = - *min * pitch; if (pitch > 0) ras.traceOfs += (ras.target.rows-1)*pitch; - + ras.gray_min_x = 0; ras.gray_max_x = 0; } @@ -2039,7 +2039,7 @@ UNUSED(left); UNUSED(right); - + if ( x2-x1 < ras.precision ) { e1 = CEILING( x1 ); @@ -2059,7 +2059,7 @@ p = bits - e1*ras.target.pitch; if (ras.target.pitch > 0) p += (ras.target.rows-1)*ras.target.pitch; - + p[0] |= f1; } } @@ -2191,7 +2191,7 @@ static void Vertical_Gray_Sweep_Init( RAS_ARGS Short* min, Short* max ) { Long pitch, byte_len; - + *min = *min & -2; *max = ( *max + 3 ) & -2; @@ -2232,7 +2232,7 @@ Int last_cell = last_pixel >> 2; Int last_bit = last_pixel & 3; Bool over = 0; - + if (ras.gray_max_x >= last_cell && last_bit != 3) { ras.gray_max_x = last_cell-1; @@ -2267,7 +2267,7 @@ pix += 4; c1 --; } - + if (over) { c2 = count[*bit] + count[*bit2]; @@ -2800,7 +2800,7 @@ Scan_DropOuts : ras.bWidth = ras.gray_width; pixel_width = 2*((ras.target.width + 3) >> 2); - + if ( ras.bWidth > pixel_width ) ras.bWidth = pixel_width; @@ -2850,7 +2850,7 @@ Scan_DropOuts : { FT_UInt n; FT_ULong c; - + /* setup count table */ for ( n = 0; n < 256; n++ ) { @@ -2860,14 +2860,14 @@ Scan_DropOuts : ((c << 4) & 0x0300) | ((c << 2) & 0x0030) | (c & 0x0003); - + raster->count_table[n] = c; } - + /* set default 5-levels gray palette */ for ( n = 0; n < 5; n++ ) raster->grays[n] = (n*127/4); - + raster->gray_width = RASTER_GRAY_LINES/2; } @@ -2879,7 +2879,7 @@ Scan_DropOuts : int ft_black_new( void* memory, FT_Raster *araster ) { static FT_RasterRec_ the_raster; - *araster = &the_raster; + *araster = &the_raster; memset( &the_raster, sizeof(the_raster), 0 ); ft_black_init( &the_raster ); return 0; @@ -2901,7 +2901,7 @@ Scan_DropOuts : { FT_Error error; TRaster_Instance* raster; - + *araster = 0; if ( !ALLOC( raster, sizeof(*raster) )) { @@ -2910,17 +2910,17 @@ Scan_DropOuts : *araster = raster; } - + return error; } - + static void ft_black_done( TRaster_Instance* raster ) { FT_Memory memory = (FT_Memory)raster->memory; FREE( raster ); } - + #endif @@ -2949,8 +2949,8 @@ Scan_DropOuts : raster->grays[3] = palette[3]; raster->grays[4] = palette[4]; } - } - + } + static int ft_black_render( TRaster_Instance* raster, @@ -2958,7 +2958,7 @@ Scan_DropOuts : { FT_Outline* outline = (FT_Outline*)params->source; FT_Bitmap* target_map = params->target; - + if ( !raster || !raster->buff || !raster->sizeBuff ) return Raster_Err_Not_Ini; @@ -2981,8 +2981,8 @@ Scan_DropOuts : ras.outline = *outline; ras.target = *target_map; - - return ( params->flags & ft_raster_flag_aa + + return ( params->flags & ft_raster_flag_aa ? Render_Gray_Glyph( raster ) : Render_Glyph( raster ) ); } diff --git a/src/base/ftstream.c b/src/base/ftstream.c index d759a43b9..2179ba1b9 100644 --- a/src/base/ftstream.c +++ b/src/base/ftstream.c @@ -428,29 +428,29 @@ { FT_Error error; FT_Bool frame_accessed = 0; - + if (!fields || !stream) return FT_Err_Invalid_Argument; - + error = FT_Err_Ok; do { FT_ULong value; FT_Int sign_shift; FT_Byte* p; - + switch (fields->value) { case ft_frame_start: /* access a new frame */ { error = FT_Access_Frame( stream, fields->offset ); if (error) goto Exit; - + frame_accessed = 1; fields++; continue; /* loop ! */ } - + case ft_frame_byte: case ft_frame_schar: /* read a single byte */ { @@ -458,7 +458,7 @@ sign_shift = 24; break; } - + case ft_frame_short_be: case ft_frame_ushort_be: /* read a 2-byte big-endian short */ { @@ -538,13 +538,13 @@ /* otherwise, exit the loop */ goto Exit; } - + /* now, compute the signed value is necessary */ if (fields->value & FT_FRAME_OP_SIGNED) value = (FT_ULong)((FT_Long)(value << sign_shift) >> sign_shift); - + /* finally, store the value in the object */ - + p = (FT_Byte*)structure + fields->offset; switch (fields->size) { @@ -553,7 +553,7 @@ case 4: *(FT_ULong*)p = (FT_ULong) value; break; default: ; /* ignore !! */ } - + /* go to next field */ fields++; } @@ -563,7 +563,7 @@ /* close the frame if it was opened by this read */ if (frame_accessed) FT_Forget_Frame(stream); - + return error; } diff --git a/src/base/ftsystem.c b/src/base/ftsystem.c index e9dae85ea..165b2f112 100644 --- a/src/base/ftsystem.c +++ b/src/base/ftsystem.c @@ -6,20 +6,20 @@ * * This file contains the definition of interface used by FreeType * to access low-level, i.e. memory management, i/o access as well - * as thread synchronisation. + * as thread synchronisation. * * - * Copyright 1996-1999 by - * David Turner, Robert Wilhelm, and Werner Lemberg - * - * This file is part of the FreeType project, and may only be used - * modified and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * + * Copyright 1996-1999 by + * David Turner, Robert Wilhelm, and Werner Lemberg + * + * This file is part of the FreeType project, and may only be used + * modified and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * **************************************************************************/ - + #include #include #include @@ -48,7 +48,7 @@ * * block :: address of newly allocated block * - * + * * Error code. 0 means success. * * @@ -90,7 +90,7 @@ * Error code. 0 means success. * * - * This function is _never_ called when the system flag + * This function is _never_ called when the system flag * FT_SYSTEM_FLAG_NO_REALLOC is set. Instead, the engine will emulate * realloc through "alloc" and "free". * @@ -165,10 +165,10 @@ unsigned long count ) { FILE* file; - + file = STREAM_FILE(stream); - fseek( file, offset, SEEK_SET ); + fseek( file, offset, SEEK_SET ); return (unsigned long)fread( buffer, 1, count, file ); } @@ -177,18 +177,18 @@ FT_Stream stream ) { FILE* file; - + file = fopen( filepathname, "rb" ); if (!file) return FT_Err_Cannot_Open_Resource; - + fseek( file, 0, SEEK_END ); stream->size = ftell(file); fseek( file, 0, SEEK_SET ); - + stream->descriptor.pointer = file; stream->pos = 0; - + stream->read = ft_io_stream; stream->close = ft_close_stream; @@ -199,7 +199,7 @@ EXPORT_FUNC(FT_Memory) FT_New_Memory( void ) { FT_Memory memory; - + memory = (FT_Memory)malloc( sizeof(*memory) ); if (memory) { diff --git a/src/oldapi/truetype.h b/src/oldapi/truetype.h index fbde46901..e97656e71 100644 --- a/src/oldapi/truetype.h +++ b/src/oldapi/truetype.h @@ -19,13 +19,13 @@ * * This file is part of the FreeType project and may only be used, * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute + * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * * Note: * - * This is the only file that should be included by client + * This is the only file that should be included by client * application sources. All other types and functions defined * in the "tt*.h" files are library internals and should not be * included. @@ -115,7 +115,7 @@ struct TT_UnitVector_ /* guess what... */ - { + { TT_F2Dot14 x; TT_F2Dot14 y; }; @@ -215,7 +215,7 @@ typedef struct TT_Outline_ TT_Outline; - + /* A structure used to return glyph metrics. */ /* */ /* The "bearingX" isn't called "left-side bearing" anymore because */ @@ -427,7 +427,7 @@ TT_Short metric_Data_Format; TT_UShort number_Of_HMetrics; - + /* The following fields are not defined by the TrueType specification */ /* but they're used to connect the metrics header to the relevant */ /* "HMTX" or "VMTX" table. */ @@ -463,7 +463,7 @@ TT_Short metric_Data_Format; TT_UShort number_Of_VMetrics; - + /* The following fields are not defined by the TrueType specification */ /* but they're used to connect the metrics header to the relevant */ /* "HMTX" or "VMTX" table. */ @@ -979,7 +979,7 @@ - + /*************************************************************/ /* */ /* TT_SBit_Component */ @@ -1225,7 +1225,7 @@ EXPORT_DEF TT_Error TT_Set_Raster_Gray_Palette( TT_Engine engine, const TT_Byte* palette ); - + /* ----------------------- face management ----------------------- */ @@ -1450,7 +1450,7 @@ /* Return glyph outline pointers in 'outline'. Note that the returned */ /* pointers are owned by the glyph object, and will be destroyed with */ /* it. The client application should _not_ change the pointers. */ - + EXPORT_DEF TT_Error TT_Get_Glyph_Outline( TT_Glyph glyph, TT_Outline* outline ); @@ -1580,7 +1580,7 @@ EXPORT_DEF void TT_Matrix_Multiply( TT_Matrix* a, TT_Matrix* b ); - + /* Invert a transformation matrix. */ @@ -1593,7 +1593,7 @@ EXPORT_DEF TT_Long TT_MulDiv( TT_Long A, TT_Long B, TT_Long C ); - + /* Compute A*B/0x10000 with 64 bits intermediate precision. */ /* Useful to multiply by a 16.16 fixed float value. */ @@ -1697,7 +1697,7 @@ TT_UShort* length ); /* string length address */ - + #ifdef __cplusplus } diff --git a/src/oldapi/ttapi.c b/src/oldapi/ttapi.c index 6367251d6..1d072190e 100644 --- a/src/oldapi/ttapi.c +++ b/src/oldapi/ttapi.c @@ -1,6 +1,6 @@ /******************************************************************* * - * ttapi.c + * ttapi.c * * High-level interface implementation * @@ -9,7 +9,7 @@ * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute + * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * @@ -17,7 +17,7 @@ * * This file is used to implement most of the functions that are * defined in the file "freetype.h". However, two functions are - * implemented elsewhere : + * implemented elsewhere : * ******************************************************************/ @@ -47,7 +47,7 @@ static const FT_DriverInterface* tt_interface = &tt_driver_interface; - + static const TT_DriverInterface* tt_extension = &tt_format_interface; @@ -84,7 +84,7 @@ error = FT_New_System( &system ); if (error) return error; - + error = FT_New_Library( system, &library ); if (!error) /* Now create a new TrueType driver object */ @@ -163,12 +163,12 @@ EXPORT_FUNC TT_Error TT_Set_Raster_Gray_Palette( TT_Engine engine, const TT_Byte* palette ) - { + { FT_Library library; - + if (!engine) return TT_Err_Invalid_Engine; - + library = (FT_Library)engine; return FT_Set_Raster_Palette( library, 5, (unsigned char*)palette ); } @@ -216,13 +216,13 @@ { TT_Error error; FT_Resource resource; - + *aface = 0; - + error = FT_New_Resource( library, pathname, &resource ); if (error) return error; -#if 0 +#if 0 error = FT_Add_Resource( library, resource ); if (error) goto Fail_Install; #endif @@ -231,10 +231,10 @@ /* Destroy glyph slot to comply with the 1.x API */ if (!error) FT_Done_GlyphSlot( (*aface)->root.slot ); - + if (error) FT_Done_Resource(resource); - + return error; } @@ -249,7 +249,7 @@ return open_face( (FT_Library)engine, pathname, 0, aface ); } - + /***********************************************************************/ /* */ @@ -318,7 +318,7 @@ TT_Error TT_Close_Face( TT_Face face ) { FT_Resource resource; - + if (!face) return TT_Err_Invalid_Face_Handle; @@ -377,7 +377,7 @@ props->num_Names = face->num_names; props->header = &face->header; props->horizontal = &face->horizontal; - + /* The driver supports old Mac fonts where there are no OS/2 */ /* tables present in the file. However, this is not true of */ /* FreeType 1.1. For the sake of backwards compatibility, we */ @@ -390,7 +390,7 @@ /* */ props->os2 = &face->os2; - + props->postscript = &face->postscript; props->hdmx = &face->hdmx; props->vertical = ( face->vertical_info ? &face->vertical : 0 ); @@ -508,7 +508,7 @@ /* This function will much probably move to another */ /* component in the short future, but I haven't decided */ /* which yet... */ - + static void get_metrics( TT_HoriHeader* header, TT_Int index, @@ -516,10 +516,10 @@ TT_UShort* advance ) { TT_LongMetrics* longs_m; - + TT_UShort k = header->number_Of_HMetrics; - - + + if ( index < k ) { longs_m = (TT_LongMetrics*)header->long_metrics + index; @@ -532,7 +532,7 @@ *advance = ((TT_LongMetrics*)header->long_metrics)[k - 1].advance; } } - + EXPORT_FUNC @@ -769,7 +769,7 @@ { /* The point size is now ignored by the driver */ (void)pointSize; - + return FT_Set_Pixel_Sizes( (FT_Size)ins, pixelWidth, pixelHeight ); } @@ -814,7 +814,7 @@ metrics->x_ppem = size->root.metrics.x_ppem; metrics->y_ppem = size->root.metrics.y_ppem; - metrics->pointSize = size->root.metrics.pointSize; + metrics->pointSize = size->root.metrics.pointSize; return TT_Err_Ok; } @@ -936,7 +936,7 @@ (void)instance; /* the parameters are unused, the (void) prevents */ (void)rotated; /* warnings from pedantic compilers.. */ (void)stretched; - + return TT_Err_Ok; } @@ -1130,7 +1130,7 @@ metrics->bearingX = slot->metrics.horiBearingX; metrics->bearingY = slot->metrics.horiBearingY; metrics->advance = slot->metrics.horiAdvance; - + return TT_Err_Ok; } @@ -1182,7 +1182,7 @@ metrics->linearVertAdvance = met2->vertAdvance; metrics->linearVertBearingY = met2->vertBearingY; - + return TT_Err_Ok; } @@ -1441,7 +1441,7 @@ #include /* for malloc and free */ - static TT_Outline null_api_outline = { 0, 0, NULL, NULL, NULL, + static TT_Outline null_api_outline = { 0, 0, NULL, NULL, NULL, 0, 0, 0, 0 }; EXPORT_FUNC @@ -1459,7 +1459,7 @@ outline->points = (TT_Vector*)malloc( numPoints * sizeof(TT_Vector) ); outline->flags = (TT_Byte*) malloc( numPoints * sizeof(TT_Char) ); outline->contours = (TT_UShort*)malloc( numPoints * sizeof(TT_UShort) ); - + if ( !outline->points || !outline->flags || !outline->contours ) goto Fail; @@ -1573,7 +1573,7 @@ TT_Matrix* matrix ) { FT_Transform_Outline( (FT_Outline*)outline, (FT_Matrix*)matrix ); - } + } /******************************************************************* * @@ -1679,7 +1679,7 @@ return FT_MulDiv( A, B, C ); } - + /***********************************************************************/ /* */ /* */ @@ -1910,12 +1910,12 @@ if (!face) return TT_Err_Invalid_Face_Handle; - + if ( nameIndex >= face->num_names ) return TT_Err_Bad_Argument; name = face->name_table.names + nameIndex; - + *platformID = name->platformID; *encodingID = name->encodingID; *languageID = name->languageID; @@ -1953,18 +1953,18 @@ TT_UShort* length ) { TT_NameRec* name; - + if (!face) return TT_Err_Invalid_Face_Handle; - + if ( nameIndex >= face->num_names ) return TT_Err_Bad_Argument; name = face->name_table.names + nameIndex; *stringPtr = (TT_String*)name->string; - *length = name->stringLength; - + *length = name->stringLength; + return TT_Err_Ok; } diff --git a/src/otlayout/oltypes.c b/src/otlayout/oltypes.c index 619b7a1de..bd2fa2204 100644 --- a/src/otlayout/oltypes.c +++ b/src/otlayout/oltypes.c @@ -21,23 +21,23 @@ TT_UInt count, max_langs; TT_Error error; - /* skip version of the JSTF table */ + /* skip version of the JSTF table */ if (otl_type == otl_jstf) start += 4; - + p = start; - + /* we must allocate the script_tags and language_tags arrays */ /* this requires that we compute the maximum number of languages */ /* per script.. */ - + count = table->num_scripts = OTL_UShort(p); max_langs = 0; for ( ; count > 0; count++ ) { TT_Byte* script; TT_UInt num_langs; - + p += 4; /* skip tag */ script = bytes + OTL_UShort(p); @@ -48,10 +48,10 @@ /* test if there is a default language system */ if ( OTL_UShort(script) ) num_langs++; - + /* test other language systems */ num_langs += OTL_UShort(script); /* add other lang sys */ - + if (num_langs > max_langs) max_langs = num_langs; } @@ -65,15 +65,15 @@ table->max_languages = max_langs; table->num_languages = 0; table->otl_type = otl_type; - + table->scripts_table = bytes; table->scripts_len = len; - + /* fill the script_tags array */ { TT_UInt n; TT_Byte* p = start + 2; /* skip count */ - + for ( n = 0; n < table->num_scripts; n++ ) { table->script_tags[n] = OTL_ULong(p); @@ -96,7 +96,7 @@ TT_Error error; TT_Byte* p = bytes; TT_UInt count; - + table->max_features = count = OTL_UShort(p); if ( !ALLOC_ARRAY( table->feature_tags, count, TT_ULong ) && !ALLOC_ARRAY( table->features, count, TT_Bool ) ) @@ -104,7 +104,7 @@ table->features_table = bytes; table->features_len = len; } - return error; + return error; } @@ -118,14 +118,14 @@ TT_Error error; TT_Byte* p = bytes; TT_UInt count; - + table->max_lookups = count = OTL_UShort(p); if ( !ALLOC_ARRAY( table->lookups, count, TT_Bool ) ) { table->lookups_table = bytes; table->lookups_len = len; } - return error; + return error; } /* discard table arrays */ @@ -149,12 +149,12 @@ TT_Byte* p; TT_Byte* script = 0; TT_Byte* start = table->scripts_table; - + if ( table->otl_type == otl_type_jstf ) /* skip version for JSTF */ start += 4; - + p = start + 6; /* skip count+first tag */ - + for ( n = 0; n < table->num_scripts; n++, p += 6 ) { if ( table->script_tags[n] == script_tag ) @@ -163,7 +163,7 @@ break; } } - + table->cur_script = script; if (!script) table->num_languages = 0; @@ -173,31 +173,31 @@ /* not that we put a '0' tag in front of the list to indicate that */ /* there is a default language for this script.. */ TT_ULong* tags = table->language_tags; - + switch (table->otl_type) { case otl_type_base: case otl_type_jstf: script += 2; /* skip basevalue or extenders */ /* fall-through */ - + default: if ( OTL_UShort(script) ) *tags++ = 0; } - + count = OTL_UShort(script); for ( ; count > 0; count-- ) { *tags++ = OTL_ULong(script); script += 2; /* skip offset */ } - + table->num_langs = tags - table->language_tags; } } - + /* return the list of available features for the current script/language */ /* use with a GPOS or GSUB script table */ LOCAL_FUNC @@ -218,14 +218,14 @@ { offset = OTL_UShort(script); if (!offset) return; /* if there is no default language, exit */ - + language = script - 2 + offset; } else { TT_Byte* p = script + 8; /* skip default+count+1st tag */ TT_UShort index; - + for ( n = 0; n < table->num_languages; n++, p+=6 ) { if ( table->language_tags[n] == language_tag ) @@ -235,9 +235,9 @@ } } - table->cur_language = language; + table->cur_language = language; if (!language) return; - + p = language + 2; /* skip lookup order */ index = OTL_UShort(p); /* required feature index */ if (index != 0xFFFF) @@ -245,7 +245,7 @@ if (index < table->max_features) table->features[index] = 1; } - + count = OTL_UShort(p); for ( ; count > 0; count-- ) { @@ -265,11 +265,11 @@ TT_UInt n; TT_Byte* features = table->features_table; TT_Byte* p = features + 6; /* skip count+1st tag */ - + /* clear lookup list */ for ( n = 0; n < table->max_lookups; n++ ) table->lookups[n] = 0; - + /* now, parse the features list */ for ( n = 0; n < table->features; n++ ) { @@ -278,10 +278,10 @@ TT_UInt count; TT_UShort index; TT_Byte* feature; - + feature = features + OTL_UShort(p); p += 4; /* skip tag */ - + /* now, select all lookups from this feature */ count = OTL_UShort(feature); for ( ; count > 0; count-- ) @@ -293,9 +293,9 @@ } } } - - /* find the basevalues and minmax for the current script/language */ + + /* find the basevalues and minmax for the current script/language */ /* only use it with a BASE table.. */ LOCAL_FUNC void OTL_Get_Baseline_Values( OTL_Table* table, @@ -307,12 +307,12 @@ table->cur_basevalues = 0; table->cur_minmax = 0; - - /* read basevalues */ + + /* read basevalues */ offset = OTL_UShort(p); if (offset) table->cur_basevalues = script + offset; - + offset = OTL_UShort(p); if (offset) table->cur_minmax = script + offset; @@ -321,7 +321,7 @@ for ( ; count > 0; count-- ) { TT_ULong tag; - + tag = OTL_ULong(p); if ( language_tag == tag ) { @@ -341,7 +341,7 @@ TT_Long result = -1; TT_UInt count, index, start, end; TT_Byte* p = coverage; - + switch ( OTL_UShort(p) ) { case 1: /* coverage format 1 - array of glyph indices */ @@ -357,7 +357,7 @@ } } break; - + case 2: { count = OTL_UShort(p); @@ -387,14 +387,14 @@ TT_Byte* p = class_def; TT_UInt result = 0; TT_UInt start, end, count, index; - + switch ( OTL_UShort(p) ) { case 1: { start = OTL_UShort(p); count = OTL_UShort(p); - + glyph_id -= start; if (glyph_id < count) { @@ -403,7 +403,7 @@ } } break; - + case 2: { count = OTL_UShort(p); @@ -434,7 +434,7 @@ TT_Int result = 0; TT_UInt start, end; TT_Short value; - + start = OTL_UShort(p); end = OTL_UShort(p); if (size >= start && size <= end) @@ -442,7 +442,7 @@ /* I know we could do all of this without a switch, with */ /* clever shifts and everything, but it makes the code */ /* really difficult to understand.. */ - + size -= start; switch ( OTL_UShort(p) ) { @@ -454,7 +454,7 @@ result = value >> 14; } break; - + case 2: /* 4-bits per value */ { p += 2*(size >> 2); @@ -463,7 +463,7 @@ result = value >> 12; } break; - + case 3: /* 8-bits per value */ { p += 2*(size >> 1); @@ -476,7 +476,7 @@ } return result; } - + /* extract a BaseCoord value */ LOCAL_FUNC void OTL_Get_Base_Coordinate( TT_Byte* base_coord, @@ -484,7 +484,7 @@ { TT_Byte* p = base_coord; TT_Int result = 0; - + coord->format = OTL_UShort(p); coord->coordinate = OTL_Short(p); coord->device = 0; @@ -495,13 +495,13 @@ coord->ref_glyph = OTL_UShort(p); coord->ref_point = OTL_UShort(p); break; - + case 3: /* format 3 */ coord->device = p - 4 + OTL_UShort(p); break; default: - ; + ; } } @@ -514,13 +514,13 @@ /* each bit in the value format corresponds to a single ushort */ /* we thus count the bits, and multiply the result by 2 */ - + count = (TT_Int)(format & 0xFF); count = ((count & 0xAA) >> 1) + (count & 0x55); count = ((count & 0xCC) >> 2) + (count & 0x33); count = ((count & 0xF0) >> 4) + (count & 0x0F); - return count*2; + return count*2; } @@ -533,28 +533,28 @@ OTL_ValueRecord* record ) { TT_Byte* p = value_record; - + /* clear vectors */ record->placement.x = 0; record->placement.y = 0; record->advance.x = 0; record->advance.y = 0; - + record->device_pla_x = 0; record->device_pla_y = 0; record->device_adv_x = 0; record->device_adv_y = 0; - + if (value_format & 1) record->placement.x = NEXT_Short(p); if (value_format & 2) record->placement.y = NEXT_Short(p); if (value_format & 4) record->advance.x = NEXT_Short(p); if (value_format & 8) record->advance.y = NEXT_Short(p); - + if (value_format & 16) record->device_pla_x = pos_table + NEXT_UShort(p); if (value_format & 32) record->device_pla_y = pos_table + NEXT_UShort(p); if (value_format & 64) record->device_adv_x = pos_table + NEXT_UShort(p); if (value_format & 128) record->device_adv_y = pos_table + NEXT_UShort(p); - } + } @@ -564,32 +564,32 @@ OTL_Anchor* anchor ) { TT_Byte* p = anchor_table; - + anchor->format = NEXT_UShort(p); anchor->coord.x = NEXT_Short(p); anchor->coord.y = NEXT_Short(p); anchor->point = 0; anchor->device_x = 0; anchor->device_y = 0; - + switch (anchor->format) { case 2: anchor->point = NEXT_UShort(p); break; - + case 3: anchor->device_x = anchor_table + NEXT_UShort(p); anchor->device_y = anchor_table + NEXT_UShort(p); break; - + default: ; } } - + /* extract Mark from MarkArray */ LOCAL_FUNC void OTL_Get_Mark( TT_Byte* mark_array, @@ -599,10 +599,10 @@ { TT_Byte* p = mark_array; TT_UInt count; - + *clazz = 0; MEM_Set( anchor, 0, sizeof(*anchor) ); - + count = NEXT_UShort(p); if (index < count) { diff --git a/src/otlayout/oltypes.h b/src/otlayout/oltypes.h index dc92908f9..b4a4d802e 100644 --- a/src/otlayout/oltypes.h +++ b/src/otlayout/oltypes.h @@ -25,7 +25,7 @@ * max_features :: total number of features in table * feature_tags :: tags of all features for current script/language * features :: selection flags for all features in current script/lang - * + * * max_lookups :: total number of lookups in table * lookups :: selection flags for all lookups for current * feature list. @@ -40,17 +40,17 @@ otl_type_gpos, otl_type_gsub, otl_type_jstf - + } OTL_Type; - - + + typedef struct OTL_Table_ { FT_Memory memory; TT_Int num_scripts; TT_Tag* script_tags; - + TT_Int max_languages; TT_Int num_languages; TT_Tag* language_tags; @@ -61,19 +61,19 @@ TT_Int max_lookups; TT_Bool* lookups; - + TT_Byte* scripts_table; TT_Long scripts_len; - + TT_Byte* features_table; TT_Long* features_len; - + TT_Byte* lookups_table; TT_Byte* lookups_len; TT_Byte* cur_script; /* current script */ TT_Byte* cur_language; /* current language */ - + TT_Byte* cur_base_values; TT_Byte* cur_min_max; @@ -89,7 +89,7 @@ TT_UShort ref_glyph; TT_UShort ref_point; TT_Byte* device; - + } OTL_BaseCoord; @@ -102,7 +102,7 @@ TT_Byte* device_pla_y; TT_Byte* device_adv_x; TT_Byte* device_adv_y; - + } OTL_ValueRecord; @@ -113,7 +113,7 @@ TT_UInt anchor_point; TT_Byte* device_x; TT_Byte* device_y; - + } OTL_Anchor; LOCAL_DEF @@ -153,7 +153,7 @@ * table->num_scripts is the number of scripts * */ - + /******************************************************** * * - after calling OTL_Table_Set_Features: @@ -169,7 +169,7 @@ * it is empty (zero-filled) by default. * */ - + /******************************************************************* * * - after calling OTL_Get_Languages_List(script_tag): @@ -217,7 +217,7 @@ LOCAL_DEF void OTL_Get_Justification( OTL_Table* table, TT_ULong language_tag ); - + /******************************************************************* * * - after calling OTL_Get_Lookups_List(): diff --git a/src/psnames/psdriver.c b/src/psnames/psdriver.c index 78283b7a8..0e532f41d 100644 --- a/src/psnames/psdriver.c +++ b/src/psnames/psdriver.c @@ -20,7 +20,7 @@ FT_Int n; char first = glyph_name[0]; char temp[64]; - + /* if the name begins with "uni", then the glyph name may be a */ /* hard-coded unicode character code.. */ if ( glyph_name[0] == 'u' && @@ -36,7 +36,7 @@ { char c = *p; unsigned char d; - + d = (unsigned char)c-'0'; if (d >= 10) { @@ -49,7 +49,7 @@ /* exit if one non-uppercase-hexadecimal character was found */ if (d >= 16) break; - + value = (value << 4) + d; if (count == 0) return value; @@ -61,11 +61,11 @@ { const char* p; int len; - + p = glyph_name; while ( *p && *p != '.' ) p++; len = p-glyph_name; - + if ( *p && len < 64 ) { strncpy( temp, glyph_name, len ); @@ -73,12 +73,12 @@ glyph_name = temp; } } - + /* now, lookup the glyph in the Adobe Glyph List */ for ( n = 0; n < NUM_ADOBE_GLYPHS; n++ ) { const char* name = t1_standard_glyphs[n]; - + if ( first == name[0] && strcmp( glyph_name, name ) == 0 ) return names_to_unicode[n]; } @@ -86,14 +86,14 @@ return 0; } - + /* qsort callback to sort the unicode map */ static int compare_uni_maps( const void* a, const void* b ) { PS_UniMap* map1 = (PS_UniMap*)a; PS_UniMap* map2 = (PS_UniMap*)b; - + return ( map1->unicode < map2->unicode ? -1 : map1->unicode > map2->unicode ? 1 : 0 ); } @@ -107,18 +107,18 @@ PS_Unicodes *table ) { FT_Error error; - + /* we first allocate the table */ table->num_maps = 0; table->maps = 0; - + if ( !ALLOC_ARRAY( table->maps, num_glyphs, PS_UniMap ) ) { FT_UInt n; FT_UInt count; PS_UniMap* map; FT_ULong uni_char; - + map = table->maps; for ( n = 0; n < num_glyphs; n++ ) { @@ -143,7 +143,7 @@ { count = 0; } - + if (count == 0) { FREE( table->maps ); @@ -167,23 +167,23 @@ /* perform a binary search on the table */ min = table->maps; max = min + table->num_maps - 1; - + while (min <= max) { mid = min + (max-min)/2; if ( mid->unicode == unicode ) return mid->glyph_index; - + if (min == max) break; - + if ( mid->unicode < unicode ) min = mid+1; else max = mid-1; } return 0xFFFF; } - + #endif static @@ -191,17 +191,17 @@ { if (name_index >= 258) name_index = 0; - + return standard_glyph_names[ mac_standard_names[name_index] ]; } - + static const char* PS_Standard_Strings( FT_UInt sid ) { return (sid < NUM_STD_GLYPHS ? t1_standard_glyphs[sid] : 0); } - + static const PSNames_Interface psnames_interface = { #ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST @@ -216,11 +216,11 @@ (PS_Macintosh_Name_Func) PS_Macintosh_Name, (PS_Adobe_Std_Strings_Func) PS_Standard_Strings, - + t1_standard_encoding, t1_expert_encoding }; - + const FT_DriverInterface psnames_driver_interface = { diff --git a/src/psnames/rules.mk b/src/psnames/rules.mk index a97797b3a..af226b728 100644 --- a/src/psnames/rules.mk +++ b/src/psnames/rules.mk @@ -29,7 +29,7 @@ ifndef PSNAMES_INCLUDE # compilation flags for the driver # PSNAMES_CFLAGS := $(PSNAMES_INCLUDE:%=$I%) - PSNAMES_COMPILE := $(FT_COMPILE) $(PSNAMES_CFLAGS) + PSNAMES_COMPILE := $(FT_COMPILE) $(PSNAMES_CFLAGS) # driver sources (i.e., C files) diff --git a/src/sfnt/rules.mk b/src/sfnt/rules.mk index 31f7a8dc0..0969c350f 100644 --- a/src/sfnt/rules.mk +++ b/src/sfnt/rules.mk @@ -29,7 +29,7 @@ ifndef SFNT_INCLUDE # compilation flags for the driver # SFNT_CFLAGS := $(SFNT_INCLUDE:%=$I%) - SFNT_COMPILE := $(FT_COMPILE) $(SFNT_CFLAGS) + SFNT_COMPILE := $(FT_COMPILE) $(SFNT_CFLAGS) # driver sources (i.e., C files) diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c index 8fe6609e9..23682c445 100644 --- a/src/sfnt/sfdriver.c +++ b/src/sfnt/sfdriver.c @@ -8,7 +8,7 @@ static const SFNT_Interface sfnt_interface = { TT_Goto_Table, - + TT_Load_Any, TT_Load_Format_Tag, TT_Load_Directory, @@ -38,22 +38,22 @@ 0, 0, 0, -#endif - +#endif + /* see `ttpost.h' */ -#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES +#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES TT_Get_PS_Name, - TT_Free_Post_Names, + TT_Free_Post_Names, #else 0, 0, -#endif +#endif /* see `ttcmap.h' */ TT_CharMap_Load, TT_CharMap_Free, }; - + const FT_DriverInterface sfnt_driver_interface = { diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c index 32604e0b1..08bee1258 100644 --- a/src/sfnt/ttcmap.c +++ b/src/sfnt/ttcmap.c @@ -30,7 +30,7 @@ static TT_UInt code_to_index0( TT_CMapTable* charmap, TT_ULong char_code ); static TT_UInt code_to_index2( TT_CMapTable* charmap, TT_ULong char_code ); static TT_UInt code_to_index4( TT_CMapTable* charmap, TT_ULong char_code ); - static TT_UInt code_to_index6( TT_CMapTable* charmap, TT_ULong char_code ); + static TT_UInt code_to_index6( TT_CMapTable* charmap, TT_ULong char_code ); /*************************************************************************/ /* */ @@ -152,7 +152,7 @@ cmap2->glyphIdArray[i] = GET_UShort(); FORGET_Frame(); - + cmap->get_index = code_to_index2; break; @@ -212,7 +212,7 @@ cmap4->glyphIdArray[i] = GET_UShort(); FORGET_Frame(); - + cmap->get_index = code_to_index4; break; @@ -338,7 +338,7 @@ TT_ULong charCode ) { TT_CMap0* cmap0 = &cmap->c.cmap0; - + return ( charCode <= 0xFF ? cmap0->glyphIdArray[charCode] : 0 ); } diff --git a/src/sfnt/ttload.c b/src/sfnt/ttload.c index b2a678c91..c764d28d0 100644 --- a/src/sfnt/ttload.c +++ b/src/sfnt/ttload.c @@ -56,7 +56,7 @@ { TT_Table* entry; TT_Table* limit; - + FT_TRACE4(( "TT_LookUp_Table( %08lx, %c%c%c%c )\n", (TT_Long)face, (TT_Char)(tag >> 24), @@ -70,7 +70,7 @@ { if ( entry->Tag == tag ) return entry; - } + } FT_TRACE4(( " Could not find table!\n" )); return 0; } @@ -99,18 +99,18 @@ { TT_Table* table; TT_Error error; - + table = TT_LookUp_Table( face, tag ); if (table) { if (length) *length = table->Length; - + (void)FILE_Seek( table->Offset ); } else error = TT_Err_Table_Missing; - + return error; } @@ -147,7 +147,7 @@ { TT_Error error; FT_Memory memory = stream->memory; - + #ifdef READ_FIELDS const FT_Frame_Field ttc_header_fields[] = { FT_FRAME_START(8), /* frame of 8 bytes */ @@ -173,9 +173,9 @@ if ( *format_tag == TTAG_ttcf ) { TT_Int n; - + FT_TRACE4(( "TT_Load_Format_Tag: file is a collection\n" )); - + /* it's a TrueType collection, i.e. a file containing several */ /* font files. Read the font directory now */ /* */ @@ -183,7 +183,7 @@ if ( READ_Fields( ttc_header_fields, &face->ttc_header ) ) goto Exit; #else - if ( ACCESS_Frame( 8 ) ) goto Exit; + if ( ACCESS_Frame( 8 ) ) goto Exit; face->ttc_header.version = GET_Long(); face->ttc_header.DirCount = GET_Long(); @@ -209,12 +209,12 @@ { error = TT_Err_Bad_Argument; goto Exit; - } - + } + /* if we're checking the font format, exit immediately */ if (faceIndex < 0) goto Exit; - + /* seek to the appropriate TrueType file, then read tag */ if ( FILE_Seek( face->ttc_header.TableDirectory[faceIndex] ) || READ_Long( *format_tag ) ) @@ -544,7 +544,7 @@ FT_FRAME_USHORT( TT_MaxProfile, numGlyphs ), FT_FRAME_USHORT( TT_MaxProfile, maxPoints ), FT_FRAME_USHORT( TT_MaxProfile, maxContours ), - FT_FRAME_USHORT( TT_MaxProfile, maxCompositePoints ), + FT_FRAME_USHORT( TT_MaxProfile, maxCompositePoints ), FT_FRAME_USHORT( TT_MaxProfile, maxCompositeContours ), FT_FRAME_USHORT( TT_MaxProfile, maxZones ), FT_FRAME_USHORT( TT_MaxProfile, maxTwilightPoints ), @@ -998,17 +998,17 @@ FILE_Read_At( table_pos + names->storageOffset, (void*)names->storage, storageSize ) ) goto Exit; - + /* Go through and assign the string pointers to the name records. */ { TT_NameRec* cur = names->names; TT_NameRec* limit = cur + names->numNameRecords; - + for ( ; cur < limit; cur++ ) cur->string = names->storage + cur->stringOffset; } -#ifdef FT_DEBUG_LEVEL_TRACE +#ifdef FT_DEBUG_LEVEL_TRACE /* Print Name Record Table in case of debugging */ { TT_NameRec* cur = names->names; @@ -1017,20 +1017,20 @@ for ( ; cur < limit; cur++ ) { TT_UInt j; - + FT_TRACE2(( "%d %d %x %d ", cur->platformID, cur->encodingID, cur->languageID, cur->nameID )); - + /* I know that M$ encoded strings are Unicode, */ /* but this works reasonable well for debugging purposes. */ if ( cur->string ) for ( j = 0; j < cur->stringLength; j++ ) { TT_Char c = *(cur->string + j); - + if ( (TT_Byte)c < 128 ) FT_TRACE2(( "%c", c )); } @@ -1165,12 +1165,12 @@ cmap->offset = (TT_ULong)GET_Long(); } FORGET_Frame(); - + /* now read the rest of each table */ for ( charmap = face->charmaps; charmap < limit; charmap++ ) { TT_CMapTable* cmap = &charmap->cmap; - + #ifdef READ_FIELDS if ( FILE_Seek( table_start + (TT_Long)cmap->offset ) || READ_Fields( cmap_rec_fields, cmap ) ) @@ -1179,11 +1179,11 @@ if ( FILE_Seek( table_start + (TT_Long)cmap->offset ) || ACCESS_Frame(6L) ) goto Exit; - + cmap->format = GET_UShort(); cmap->length = GET_UShort(); cmap->version = GET_UShort(); - + FORGET_Frame(); #endif cmap->offset = FILE_Pos(); @@ -1264,7 +1264,7 @@ FT_FRAME_USHORT( TT_OS2, usWinAscent ), FT_FRAME_USHORT( TT_OS2, usWinDescent ), FT_FRAME_END }; - + const FT_Frame_Field os2_fields_extra[] = { FT_FRAME_START(8), FT_FRAME_ULONG( TT_OS2, ulCodePageRange1 ), @@ -1579,7 +1579,7 @@ coverage = GET_UShort(); FORGET_Frame(); - + if ( coverage == 0x0001 ) { TT_UInt num_pairs; @@ -1615,7 +1615,7 @@ face->kern_table_index = n; goto Exit; } - + if ( FILE_Skip( length ) ) goto Exit; } @@ -1646,7 +1646,7 @@ /* TrueType error code. 0 means success. */ /* */ LOCAL_FUNC - TT_Error TT_Load_Hdmx( TT_Face face, + TT_Error TT_Load_Hdmx( TT_Face face, FT_Stream stream ) { TT_Error error; @@ -1692,11 +1692,11 @@ if ( READ_Byte( cur->ppem ) || READ_Byte( cur->max_width ) ) goto Exit; - + if ( ALLOC( cur->widths, num_glyphs ) || FILE_Read( cur->widths, num_glyphs ) ) goto Exit; - + /* skip padding bytes */ if ( record_size > 0 && FILE_Skip(record_size) ) goto Exit; diff --git a/src/sfnt/ttsbit.c b/src/sfnt/ttsbit.c index 7eeac202d..57cf6a581 100644 --- a/src/sfnt/ttsbit.c +++ b/src/sfnt/ttsbit.c @@ -75,7 +75,7 @@ /* first of all, compute starting write position */ line_incr = target->pitch; line_buff = target->buffer; - + if (line_incr < 0) line_buff -= line_incr*(target->rows-1); @@ -354,7 +354,7 @@ range->glyph_codes[n] = GET_UShort(); if (load_offsets) - range->glyph_offsets[n] = (TT_ULong)range->image_offset + + range->glyph_offsets[n] = (TT_ULong)range->image_offset + GET_UShort(); } @@ -1226,19 +1226,19 @@ switch ( strike->bit_depth ) { case 1: - map->pixel_mode = ft_pixel_mode_mono; + map->pixel_mode = ft_pixel_mode_mono; map->pitch = (map->width+7) >> 3; break; case 2: - map->pixel_mode = ft_pixel_mode_pal2; + map->pixel_mode = ft_pixel_mode_pal2; map->pitch = (map->width+3) >> 2; break; case 4: - map->pixel_mode = ft_pixel_mode_pal4; + map->pixel_mode = ft_pixel_mode_pal4; map->pitch = (map->width+1) >> 1; break; case 8: - map->pixel_mode = ft_pixel_mode_grays; + map->pixel_mode = ft_pixel_mode_grays; map->pitch = map->width; break; @@ -1399,13 +1399,13 @@ /* the font file */ error = face->goto_table( face, TTAG_EBDT, stream, 0 ); if (error) goto Exit; - + ebdt_pos = FILE_Pos(); /* clear the bitmap & load the bitmap */ if (face->root.glyph->flags & ft_glyph_own_bitmap) FREE( map->buffer ); - + map->rows = map->pitch = map->width = 0; error = Load_SBit_Image( strike, range, ebdt_pos, glyph_offset, @@ -1415,7 +1415,7 @@ /* the glyph slot owns this bitmap buffer */ face->root.glyph->flags |= ft_glyph_own_bitmap; - + /* setup vertical metrics if needed */ if ( strike->flags & 1 ) { diff --git a/src/truetype/rules.mk b/src/truetype/rules.mk index 8ed78a788..bfb1f5efc 100644 --- a/src/truetype/rules.mk +++ b/src/truetype/rules.mk @@ -38,7 +38,7 @@ TT_INCLUDE := $(SFNT_INCLUDE) $(TT_DIR) $(TT_EXT_DIR) # compilation flags for the driver # TT_CFLAGS := $(TT_INCLUDE:%=$I%) -TT_COMPILE := $(FT_COMPILE) $(TT_CFLAGS) +TT_COMPILE := $(FT_COMPILE) $(TT_CFLAGS) # driver sources (i.e., C files) diff --git a/src/truetype/ttdriver.c b/src/truetype/ttdriver.c index 091a3700d..9137758ba 100644 --- a/src/truetype/ttdriver.c +++ b/src/truetype/ttdriver.c @@ -49,7 +49,7 @@ * find_encoding * * - * return the FT_Encoding corresponding to a given + * return the FT_Encoding corresponding to a given * (platform_id,encoding_id) pair, as found in TrueType charmaps * * @@ -60,7 +60,7 @@ * the corresponding FT_Encoding tag. ft_encoding_none by default * *****************************************************************/ - + static FT_Encoding find_encoding( int platform_id, int encoding_id ) @@ -70,28 +70,28 @@ int platform_id; int encoding_id; FT_Encoding encoding; - + } TEncoding; static const TEncoding tt_encodings[] = { { TT_PLATFORM_ISO, -1, ft_encoding_unicode }, - + { TT_PLATFORM_APPLE_UNICODE, -1, ft_encoding_unicode }, - + { TT_PLATFORM_MACINTOSH, TT_MAC_ID_ROMAN, ft_encoding_apple_roman }, - + { TT_PLATFORM_MICROSOFT, TT_MS_ID_UNICODE_CS, ft_encoding_unicode }, { TT_PLATFORM_MICROSOFT, TT_MS_ID_SJIS, ft_encoding_sjis }, { TT_PLATFORM_MICROSOFT, TT_MS_ID_BIG_5, ft_encoding_big5 } }; - + const TEncoding *cur, *limit; - + cur = tt_encodings; limit = cur + sizeof(tt_encodings)/sizeof(tt_encodings[0]); - + for ( ; cur < limit; cur++ ) { if (cur->platform_id == platform_id) @@ -235,7 +235,7 @@ /* now, set root->charmap with a unicode charmap wherever available */ if (!root->charmap && charmap->root.encoding == ft_encoding_unicode) root->charmap = (FT_CharMap)charmap; - + root->charmaps[n] = (FT_CharMap)charmap; } @@ -443,7 +443,7 @@ metrics->x_ppem = (TT_UShort)(dim_x >> 6); metrics->y_ppem = (TT_UShort)(dim_y >> 6); } - + size->ttmetrics.valid = FALSE; return TT_Reset_Size( size ); @@ -593,7 +593,7 @@ TT_Error error; TT_Face face; TT_CMapTable* cmap; - + cmap = &charmap->cmap; face = (TT_Face)charmap->root.face; @@ -601,7 +601,7 @@ if ( !cmap->loaded ) { SFNT_Interface* sfnt = (SFNT_Interface*)face->sfnt; - + error = sfnt->load_charmap( face, cmap, face->root.stream ); if (error) return error; @@ -620,7 +620,7 @@ void* tt_get_sfnt_table( TT_Face face, FT_Sfnt_Tag tag ) { void* table; - + switch (tag) { case ft_sfnt_head: table = &face->header; break; @@ -629,7 +629,7 @@ case ft_sfnt_os2: table = (face->os2.version == 0xFFFF ? 0 : &face->os2 ); break; case ft_sfnt_post: table = &face->postscript; break; case ft_sfnt_maxp: table = &face->max_profile; break; - + default: table = 0; } @@ -641,10 +641,10 @@ FTDriver_Interface tt_get_interface( TT_Driver driver, const char* interface ) { UNUSED(driver); - + if (strcmp(interface,"get_sfnt")==0) return (FTDriver_Interface)tt_get_sfnt_table; - + return 0; } diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c index bd66e8f2d..2413066cd 100644 --- a/src/truetype/ttgload.c +++ b/src/truetype/ttgload.c @@ -198,10 +198,10 @@ TT_UShort n_ins; TT_Int n, n_points; - + /*********************************************************************/ /* simple check */ - + if ( n_contours > load->left_contours ) { FT_TRACE0(( "ERROR: Glyph index %ld has %d contours > left %d\n", @@ -216,7 +216,7 @@ /*********************************************************************/ /* reading the contours endpoints */ - + if ( ACCESS_Frame( byte_count ) ) return error; @@ -230,7 +230,7 @@ /*********************************************************************/ /* reading the bytecode instructions */ - + n_ins = GET_UShort(); load->face->root.glyph->control_len = n_ins; @@ -269,15 +269,15 @@ #endif stream->cursor += n_ins; - + /*********************************************************************/ /* reading the point tags */ - { + { TT_Byte* flag = load->zone.tags; TT_Byte* limit = flag + n_points; TT_Byte c, count; - + for (; flag < limit; flag++) { *flag = c = GET_Byte(); @@ -291,17 +291,17 @@ /*********************************************************************/ /* reading the X coordinates */ - + { TT_Vector* vec = zone->org; TT_Vector* limit = vec + n_points; TT_Byte* flag = zone->tags; TT_Pos x = 0; - + for ( ; vec < limit; vec++, flag++ ) { TT_Pos y = 0; - + if ( *flag & 2 ) { y = GET_Byte(); @@ -309,7 +309,7 @@ } else if ((*flag & 16) == 0) y = GET_Short(); - + x += y; vec->x = x; } @@ -323,11 +323,11 @@ TT_Vector* limit = vec + n_points; TT_Byte* flag = zone->tags; TT_Pos x = 0; - + for ( ; vec < limit; vec++, flag++ ) { TT_Pos y = 0; - + if ( *flag & 4 ) { y = GET_Byte(); @@ -335,7 +335,7 @@ } else if ((*flag & 32) == 0) y = GET_Short(); - + x += y; vec->y = x; } @@ -345,24 +345,24 @@ /*********************************************************************/ /* Add shadow points */ - + /* Now add the two shadow points at n and n + 1. */ /* We need the left side bearing and advance width. */ { TT_Vector* pp1; TT_Vector* pp2; - + /* pp1 = xMin - lsb */ pp1 = zone->org + n_points; pp1->x = load->bbox.xMin - load->left_bearing; pp1->y = 0; - + /* pp2 = pp1 + aw */ pp2 = pp1 + 1; pp2->x = pp1->x + load->advance; pp2->y = 0; - + /* clear the touch tags */ for ( n = 0; n < n_points; n++ ) zone->tags[n] &= FT_Curve_Tag_On; @@ -439,7 +439,7 @@ } return TT_Err_Ok; - + Fail: FORGET_Frame(); return error; @@ -472,7 +472,7 @@ TT_UInt index, num_points, num_contours, count; TT_Fixed x_scale, y_scale; TT_ULong ins_offset; - + /* check glyph index */ index = glyph_index; if ( index >= (TT_UInt)face->root.num_glyphs ) @@ -485,7 +485,7 @@ num_contours = 0; num_points = 0; ins_offset = 0; - + x_scale = 0x10000; y_scale = 0x10000; if ( (loader->load_flags & FT_LOAD_NO_SCALE)==0 ) @@ -514,7 +514,7 @@ count = 0; if (index < (TT_UInt)face->num_locations-1) count = face->glyph_locations[index+1] - offset; - + if (count == 0) { @@ -574,7 +574,7 @@ loader->pp1.y = 0; loader->pp2.x = loader->pp1.x + loader->advance; loader->pp2.y = 0; - + if ((loader->load_flags & FT_LOAD_NO_SCALE)==0) { loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale ); @@ -590,7 +590,7 @@ if (contours_count >= 0) { TT_UInt num_base_points; - + #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER error = Load_Simple( loader, count, @@ -599,7 +599,7 @@ loader->size->debug ) ); #else error = Load_Simple( loader, count, contours_count, 0 ); -#endif +#endif if ( error ) goto Fail; @@ -607,7 +607,7 @@ /* but the code is fat enough already :-) */ num_points = loader->zone.n_points; num_contours = loader->zone.n_contours; - + num_base_points = loader->base.n_points; { TT_UInt k; @@ -633,16 +633,16 @@ { /* for each subglyph, read composite header */ FT_SubGlyph* subglyph = subglyphs; - + if (ACCESS_Frame(count)) goto Fail; - + num_subglyphs = 0; do { TT_Fixed xx, xy, yy, yx; - + subglyph->arg1 = subglyph->arg2 = 0; - + subglyph->flags = GET_UShort(); subglyph->index = GET_UShort(); @@ -657,11 +657,11 @@ subglyph->arg1 = GET_Char(); subglyph->arg2 = GET_Char(); } - + /* read transform */ xx = yy = 0x10000; xy = yx = 0; - + if (subglyph->flags & WE_HAVE_A_SCALE) { xx = (TT_Fixed)GET_Short() << 2; @@ -679,12 +679,12 @@ yx = (TT_Fixed)GET_Short() << 2; yy = (TT_Fixed)GET_Short() << 2; } - + subglyph->transform.xx = xx; subglyph->transform.xy = xy; subglyph->transform.yx = yx; subglyph->transform.yy = yy; - + subglyph++; num_subglyphs++; if (num_subglyphs >= TT_MAX_SUBGLYPHS) @@ -709,22 +709,22 @@ { FT_GlyphSlot glyph = loader->glyph; - /* reallocate subglyph array if necessary */ + /* reallocate subglyph array if necessary */ if (glyph->max_subglyphs < num_subglyphs) { FT_Memory memory = loader->face->root.memory; - + if ( REALLOC_ARRAY( glyph->subglyphs, glyph->max_subglyphs, num_subglyphs, FT_SubGlyph ) ) goto Fail; - + glyph->max_subglyphs = num_subglyphs; } /* copy subglyph array */ MEM_Copy( glyph->subglyphs, subglyphs, num_subglyphs*sizeof(FT_SubGlyph)); - + /* set up remaining glyph fields */ glyph->num_subglyphs = num_subglyphs; glyph->format = ft_glyph_format_composite; @@ -740,18 +740,18 @@ /* Now, read each subglyph independently.. */ { TT_Int n, num_base_points, num_new_points; - + subglyph = subglyphs; for ( n = 0; n < num_subglyphs; n++, subglyph++ ) { TT_Vector pp1, pp2; TT_Pos x, y; - + pp1 = loader->pp1; pp2 = loader->pp2; num_base_points = loader->base.n_points; - + error = load_truetype_glyph( loader, subglyph->index ); if ( subglyph->flags & USE_MY_METRICS ) { @@ -763,15 +763,15 @@ loader->pp1 = pp1; loader->pp2 = pp2; } - + num_points = loader->base.n_points; num_contours = loader->base.n_contours; - + num_new_points = num_points - num_base_points; - + /********************************************************/ /* now perform the transform required for this subglyph */ - + if ( subglyph->flags & ( WE_HAVE_A_SCALE | WE_HAVE_AN_XY_SCALE | WE_HAVE_A_2X2 ) ) @@ -783,7 +783,7 @@ for ( ; cur < limit; cur++, org++ ) { TT_Pos nx, ny; - + nx = FT_MulFix( cur->x, subglyph->transform.xx ) + FT_MulFix( cur->y, subglyph->transform.yx ); @@ -818,8 +818,8 @@ goto Fail; } - l += num_base_points; - + l += num_base_points; + x = loader->base.cur[k].x - loader->base.cur[l].x; y = loader->base.cur[k].y - loader->base.cur[l].y; } @@ -832,7 +832,7 @@ { x = FT_MulFix( x, x_scale ); y = FT_MulFix( y, y_scale ); - + if ( subglyph->flags & ROUND_XY_TO_GRID ) { x = (x + 32) & -64; @@ -844,7 +844,7 @@ translate_array( num_new_points, loader->zone.cur, x, y ); cur_to_org( num_new_points, &loader->zone ); } - + /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ @@ -861,12 +861,12 @@ TT_UInt n_points = loader->base.n_points; FT_GlyphZone* pts; TT_Vector* pp1; - + /* read size of instructions */ if ( FILE_Seek( ins_offset ) || READ_UShort(n_ins) ) goto Fail; FT_TRACE4(( "Instructions size = %d\n", n_ins )); - + /* check it */ if ( n_ins > face->max_profile.maxSizeOfInstructions ) { @@ -874,68 +874,68 @@ subglyph->index )); return TT_Err_Too_Many_Ins; } - + if (exec) { } /* read the instructions */ if ( FILE_Read( exec->glyphIns, n_ins ) ) goto Fail; - + error = TT_Set_CodeRange( exec, tt_coderange_glyph, exec->glyphIns, n_ins ); if ( error ) goto Fail; - + /* prepare the execution context */ exec->pts = loader->base; pts = &exec->pts; - + pts->n_points = num_points + 2; pts->n_contours = num_contours; - + /* add phantom points */ pp1 = pts->cur + num_points; pp1[0] = loader->pp1; pp1[1] = loader->pp2; - + pts->tags[num_points + 1] = 0; pts->tags[num_points + 2] = 0; - + /* if hinting, round the phantom points */ if ( IS_HINTED(loader->load_flags) ) { pp1[0].x = ((loader->pp1.x + 32) & -64); pp1[1].x = ((loader->pp2.x + 32) & -64); } - + { TT_UInt k; for ( k = 0; k < n_points; k++ ) pts->tags[k] &= FT_Curve_Tag_On; } - + cur_to_org( n_points, pts ); - + /* now consider hinting */ if ( IS_HINTED(loader->load_flags) && n_ins > 0 ) { exec->is_composite = TRUE; exec->pedantic_hinting = (TT_Bool)(loader->load_flags & FT_LOAD_PEDANTIC); - + error = TT_Run_Context( exec, loader->size->debug ); if ( error && exec->pedantic_hinting ) goto Fail; } - + /* save glyph origin and advance points */ loader->pp1 = pp1[0]; loader->pp2 = pp1[1]; } #endif - + } } @@ -948,7 +948,7 @@ error = TT_Err_Ok; Fail: - return error; + return error; } @@ -966,7 +966,7 @@ TT_Fixed x_scale, y_scale; TT_GlyphSlot glyph = loader->glyph; TT_Size size = loader->size; - + /* when a simple glyph was loaded, the value of */ /* "base.n_points" and "base.n_contours" is 0, we must */ /* take those in the "zone" instead.. */ @@ -975,7 +975,7 @@ num_points = loader->zone.n_points; num_contours = loader->zone.n_contours; } - + x_scale = 0x10000; y_scale = 0x10000; if ( (loader->load_flags & FT_LOAD_NO_SCALE) == 0) @@ -983,7 +983,7 @@ x_scale = size->root.metrics.x_scale; y_scale = size->root.metrics.y_scale; } - + if ( glyph->format != ft_glyph_format_composite ) { TT_UInt u; @@ -1000,13 +1000,13 @@ glyph->outline.flags &= ~ft_outline_single_pass; glyph->outline.n_points = num_points; glyph->outline.n_contours = num_contours; - + /* translate array so that (0,0) is the glyph's origin */ translate_array( (TT_UShort)(num_points + 2), glyph->outline.points, -loader->pp1.x, 0 ); - + FT_Outline_Get_CBox( &glyph->outline, &bbox ); if ( IS_HINTED(loader->load_flags) ) @@ -1199,7 +1199,7 @@ TT_Error error; TT_Loader loader; FT_GlyphZone* zone; - + face = (TT_Face)glyph->face; sfnt = (SFNT_Interface*)face->sfnt; stream = face->root.stream; @@ -1223,7 +1223,7 @@ if ( size && (load_flags & FT_LOAD_NO_BITMAP) == 0 && sfnt->load_sbits ) { TT_SBit_Metrics metrics; - + error = sfnt->load_sbit_image( face, size->root.metrics.x_ppem, size->root.metrics.y_ppem, @@ -1279,7 +1279,7 @@ goto Exit; } loader.base = *zone; - + loader.zone.n_points = 0; loader.zone.n_contours = 0; @@ -1290,7 +1290,7 @@ loader.exec = size->debug ? size->context : TT_New_Context(face); if ( !loader.exec ) return TT_Err_Could_Not_Find_Context; - + TT_Load_Context( loader.exec, face, size ); /* load default graphics state - if needed */ @@ -1301,7 +1301,7 @@ /* clear all outline flags, except the "owner" one */ glyph->outline.flags &= ft_outline_owner; - + if (size && size->root.metrics.y_ppem < 24 ) glyph->outline.flags |= ft_outline_high_precision; @@ -1315,7 +1315,7 @@ loader.size = size; loader.glyph = glyph; loader.stream = stream; - + loader.glyf_offset = FILE_Pos(); #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER diff --git a/src/truetype/ttgload.h b/src/truetype/ttgload.h index 5350d641a..93a8d2336 100644 --- a/src/truetype/ttgload.h +++ b/src/truetype/ttgload.h @@ -49,13 +49,13 @@ TT_Bool preserve_pps; TT_Vector pp1; TT_Vector pp2; - + TT_ULong glyf_offset; - + /* the zone where we load our glyphs */ FT_GlyphZone base; FT_GlyphZone zone; - + #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER TT_ExecContext exec; TT_Byte* instructions; diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index 1ef9dc463..64bce53a0 100644 --- a/src/truetype/ttinterp.c +++ b/src/truetype/ttinterp.c @@ -1561,7 +1561,7 @@ { TT_F26Dot6 val; - + UNUSED_EXEC; if ( distance >= 0 ) @@ -2040,7 +2040,7 @@ TT_Vector* v2 ) { UNUSED_EXEC; - + return (v1->y - v2->y); } @@ -2153,7 +2153,7 @@ TT_Bool S1, S2; UNUSED_EXEC; - + if ( ABS( Vx ) < 0x10000L && ABS( Vy ) < 0x10000L ) { Vx *= 0x100; @@ -2236,7 +2236,7 @@ return SUCCESS; } -#else +#else static TT_Bool Normalize( EXEC_OP_ TT_F26Dot6 Vx, TT_F26Dot6 Vy, @@ -2258,7 +2258,7 @@ R->x = 0; R->y = 0; - + /* check that we're not trying to normalise zero !! */ if (u==0) return SUCCESS; @@ -2266,21 +2266,21 @@ hi = (TT_ULong)u >> 16; lo = (TT_ULong)u & 0xFFFF; med = hi*lo; - + H = hi*hi + (med >> 15); med <<= 17; L = lo*lo + med; if (L < med) H++; - + hi = (TT_ULong)v >> 16; lo = (TT_ULong)v & 0xFFFF; med = hi*lo; - + H += hi*hi + (med >> 15); med <<= 17; L2 = lo*lo + med; if (L2 < med) H++; - + L += L2; if (L < L2) H++; @@ -2293,7 +2293,7 @@ L <<= 2; shift++; } - + d = FT_Sqrt32(L); R->x = (TT_F2Dot14)TT_MULDIV( Vx << shift, 0x4000, d ); R->y = (TT_F2Dot14)TT_MULDIV( Vy << shift, 0x4000, d ); @@ -2308,7 +2308,7 @@ H >>= 2; shift++; } - + d = FT_Sqrt32(L); R->x = (TT_F2Dot14)TT_MULDIV( Vx >> shift, 0x4000, d ); R->y = (TT_F2Dot14)TT_MULDIV( Vy >> shift, 0x4000, d ); @@ -2322,7 +2322,7 @@ sy = ( R->y >= 0 ? 1 : -1 ); x = (TT_ULong)sx*R->x; y = (TT_ULong)sy*R->y; - + w = x*x+y*y; /* we now want to adjust (x,y) in order to have sqrt(w) == 0x4000 */ @@ -2332,10 +2332,10 @@ /* increment the smallest coordinate */ if ( x < y ) x++; else y++; - + w = x*x+y*y; } - + while ( w >= 0x10040000L ) { /* decrement the smallest coordinate */ @@ -4055,13 +4055,13 @@ rec = CUR.FDefs; limit = rec + CUR.numFDefs; n = args[0]; - + for ( ; rec < limit; rec++ ) { if (rec->opc == n) break; } - + if ( rec == limit ) { /* check that there is enough room for new functions */ @@ -4072,15 +4072,15 @@ } CUR.numFDefs++; } - + rec->range = CUR.curRange; rec->opc = n; rec->start = CUR.IP+1; rec->active = TRUE; - + if ( n > CUR.maxFunc ) CUR.maxFunc = n; - + /* Now skip the whole function definition. */ /* We don't allow nested IDEFS & FDEFs. */ @@ -4164,7 +4164,7 @@ /* first of all, check the index */ F = args[0]; if ( BOUNDS( F, CUR.maxFunc+1 ) ) goto Fail; - + /* Except for some old Apple fonts, all functions in a TrueType */ /* font are defined in increasing order, starting from 0. This */ /* means that we normally have */ @@ -4179,20 +4179,20 @@ { /* look up the FDefs table */ TT_DefRecord* limit; - + def = CUR.FDefs; limit = def + CUR.numFDefs; - + while (def < limit && def->opc != F) def++; - + if (def == limit) goto Fail; } - + /* check that the function is active */ if (!def->active) goto Fail; - + /* check the call stack */ if ( CUR.callTop >= CUR.callSize ) { @@ -4211,10 +4211,10 @@ INS_Goto_CodeRange( def->range, def->start ); - + CUR.step_ins = FALSE; return; - + Fail: CUR.error = TT_Err_Invalid_Reference; } @@ -4236,7 +4236,7 @@ /* first of all, check the index */ F = args[1]; if ( BOUNDS( F, CUR.maxFunc+1 ) ) goto Fail; - + /* Except for some old Apple fonts, all functions in a TrueType */ /* font are defined in increasing order, starting from 0. This */ /* means that we normally have */ @@ -4251,21 +4251,21 @@ { /* look up the FDefs table */ TT_DefRecord* limit; - + def = CUR.FDefs; limit = def + CUR.numFDefs; - + while (def < limit && def->opc != F) def++; - + if (def == limit) goto Fail; } - + /* check that the function is active */ if (!def->active) goto Fail; - /* check stack */ + /* check stack */ if ( CUR.callTop >= CUR.callSize ) { CUR.error = TT_Err_Stack_Overflow; @@ -4312,7 +4312,7 @@ for ( ; def < limit; def++ ) if (def->opc == (TT_ULong)args[0] ) break; - + if ( def == limit ) { /* check that there is enough room for a new instruction */ @@ -4323,15 +4323,15 @@ } CUR.numIDefs++; } - + def->opc = args[0]; def->start = CUR.IP+1; def->range = CUR.curRange; def->active = TRUE; - + if ( (TT_ULong)args[0] > CUR.maxIns ) CUR.maxIns = args[0]; - + /* Now skip the whole function definition. */ /* We don't allow nested IDEFs & FDEFs. */ @@ -6320,30 +6320,30 @@ { TT_DefRecord* def = CUR.IDefs; TT_DefRecord* limit = def + CUR.numIDefs; - + UNUSED_ARG; - + for ( ; def < limit; def++ ) { if (def->opc == CUR.opcode && def->active ) { TT_CallRec* call; - + if ( CUR.callTop >= CUR.callSize ) { CUR.error = TT_Err_Stack_Overflow; return; } - + call = CUR.callStack + CUR.callTop++; call->Caller_Range = CUR.curRange; call->Caller_IP = CUR.IP+1; call->Cur_Count = 1; call->Cur_Restart = def->start; - + INS_Goto_CodeRange( def->range, def->start ); - + CUR.step_ins = FALSE; return; } @@ -7292,29 +7292,29 @@ { TT_DefRecord* def = CUR.IDefs; TT_DefRecord* limit = def + CUR.numIDefs; - + for ( ; def < limit; def++ ) { if ( def->active && CUR.opcode == def->opc ) { TT_CallRec* callrec; - + if ( CUR.callTop >= CUR.callSize ) { CUR.error = TT_Err_Invalid_Reference; goto LErrorLabel_; } - + callrec = &CUR.callStack[CUR.callTop]; - + callrec->Caller_Range = CUR.curRange; callrec->Caller_IP = CUR.IP + 1; callrec->Cur_Count = 1; callrec->Cur_Restart = def->start; - + if ( INS_Goto_CodeRange( def->range, def->start ) == FAILURE ) goto LErrorLabel_; - + goto LSuiteLabel_; } } diff --git a/src/truetype/ttobjs.h b/src/truetype/ttobjs.h index 33457e028..3bace3872 100644 --- a/src/truetype/ttobjs.h +++ b/src/truetype/ttobjs.h @@ -365,7 +365,7 @@ /*************************************************************************/ - /* Face Funcs */ + /* Face Funcs */ LOCAL_DEF TT_Error TT_Init_Face( FT_Stream stream, TT_Face face, @@ -377,7 +377,7 @@ /*************************************************************************/ - /* Size funcs */ + /* Size funcs */ LOCAL_DEF TT_Error TT_Init_Size ( TT_Size size ); LOCAL_DEF void TT_Done_Size ( TT_Size size ); @@ -385,14 +385,14 @@ /*************************************************************************/ - /* GlyphSlot funcs */ + /* GlyphSlot funcs */ LOCAL_DEF TT_Error TT_Init_GlyphSlot( TT_GlyphSlot slot ); LOCAL_DEF void TT_Done_GlyphSlot( TT_GlyphSlot slot ); /*************************************************************************/ - /* Driver funcs */ + /* Driver funcs */ LOCAL_DEF TT_Error TT_Init_Driver( TT_Driver driver ); LOCAL_DEF void TT_Done_Driver( TT_Driver driver ); diff --git a/src/type1/t1afm.c b/src/type1/t1afm.c index 2b904af83..ec216f555 100644 --- a/src/type1/t1afm.c +++ b/src/type1/t1afm.c @@ -34,27 +34,27 @@ FT_UInt result = 0; char temp[64]; - /* skip whitespace */ + /* skip whitespace */ while ( (*p == ' ' || *p == '\t' || *p == ':' || *p == ';') && p < limit ) p++; *start = p; - + /* now, read glyph name */ while ( IS_ALPHANUM(*p) && p < limit ) p++; len = p - *start; if (len > 0 && len < 64) { FT_Int n; - + /* copy glyph name to intermediate array */ MEM_Copy( temp, *start, len ); temp[len] = 0; - + /* lookup glyph name in face array */ for ( n = 0; n < type1->num_glyphs; n++ ) { char* gname = (char*)type1->glyph_names[n]; - + if ( gname && gname[0] == temp[0] && strcmp(gname,temp) == 0 ) { result = n; @@ -74,17 +74,17 @@ FT_Byte* p = *start; int sum = 0; int sign = 1; - + /* skip everything that is not a number */ while ( p < limit && (*p < '0' || *p > '9') ) { sign = 1; if (*p == '-') sign = -1; - + p++; } - + while ( p < limit && (*p >= '0' && *p < '9') ) { sum = sum*10 + (*p - '0'); @@ -104,10 +104,10 @@ { T1_Kern_Pair* pair1 = (T1_Kern_Pair*)a; T1_Kern_Pair* pair2 = (T1_Kern_Pair*)b; - + T1_ULong index1 = KERN_INDEX(pair1->glyph1,pair1->glyph2); T1_ULong index2 = KERN_INDEX(pair2->glyph1,pair2->glyph2); - + return ( index1 < index2 ? -1 : ( index1 > index2 ? 1 : 0 )); } @@ -127,14 +127,14 @@ T1_Kern_Pair* pair; T1_Font* type1 = &((T1_Face)t1_face)->type1; T1_AFM* afm = 0; - + if ( ACCESS_Frame(stream->size) ) return error; - + start = (FT_Byte*)stream->cursor; limit = (FT_Byte*)stream->limit; p = start; - + /* we are now going to count the occurences of "KP" or "KPX" in */ /* the AFM file.. */ count = 0; @@ -147,16 +147,16 @@ /* Actually, kerning pairs are simply optional !! */ if (count == 0) goto Exit; - + /* allocate the pairs */ if ( ALLOC( afm, sizeof(*afm ) ) || ALLOC_ARRAY( afm->kern_pairs, count, T1_Kern_Pair ) ) goto Exit; - + /* now, read each kern pair */ pair = afm->kern_pairs; afm->num_pairs = count; - + /* save in face object */ ((T1_Face)t1_face)->afm_data = afm; @@ -165,26 +165,26 @@ if ( IS_KERN_PAIR(p) ) { FT_Byte* q; - + /* skip keyword (KP or KPX) */ q = p+2; if (*q == 'X') q++; - + pair->glyph1 = afm_atoindex( &q, limit, type1 ); pair->glyph2 = afm_atoindex( &q, limit, type1 ); pair->kerning.x = afm_atoi( &q, limit ); - + pair->kerning.y = 0; if ( p[2] != 'X' ) pair->kerning.y = afm_atoi( &q, limit ); - + pair++; } } - + /* now, sort the kern pairs according to their glyph indices */ qsort( afm->kern_pairs, count, sizeof(T1_Kern_Pair), compare_kern_pairs ); - + Exit: if (error) FREE( afm ); @@ -194,7 +194,7 @@ } - /* find the kerning for a given glyph pair */ + /* find the kerning for a given glyph pair */ LOCAL_FUNC void T1_Get_Kerning( T1_AFM* afm, FT_UInt glyph1, @@ -203,23 +203,23 @@ { T1_Kern_Pair *min, *mid, *max; T1_ULong index = KERN_INDEX(glyph1,glyph2); - + /* simple binary search */ min = afm->kern_pairs; max = min + afm->num_pairs-1; - + while (min <= max) { T1_ULong midi; - + mid = min + (max-min)/2; - midi = KERN_INDEX(mid->glyph1,mid->glyph2); + midi = KERN_INDEX(mid->glyph1,mid->glyph2); if ( midi == index ) { *kerning = mid->kerning; return; } - + if ( midi < index ) min = mid+1; else max = mid-1; } diff --git a/src/type1/t1afm.h b/src/type1/t1afm.h index 61e18b82c..984ae945c 100644 --- a/src/type1/t1afm.h +++ b/src/type1/t1afm.h @@ -18,7 +18,7 @@ typedef struct T1_Kern_Pair_ FT_UInt glyph1; FT_UInt glyph2; FT_Vector kerning; - + } T1_Kern_Pair; diff --git a/src/type1/t1driver.c b/src/type1/t1driver.c index 69984604e..d96eddf59 100644 --- a/src/type1/t1driver.c +++ b/src/type1/t1driver.c @@ -9,7 +9,7 @@ * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute + * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * @@ -59,10 +59,10 @@ const FT_String* interface ) { UNUSED(driver); - + if ( strcmp( (const char*)interface, "attach_file" ) == 0 ) return (FTDriver_Interface)T1_Read_AFM; - + return 0; } @@ -107,7 +107,7 @@ T1_Vector* kerning ) { T1_AFM* afm; - + kerning->x = 0; kerning->y = 0; @@ -185,7 +185,7 @@ UNUSED(pixel_width); UNUSED(pixel_height); - size->valid = FALSE; + size->valid = FALSE; return T1_Reset_Size(size); } @@ -214,7 +214,7 @@ face = (T1_Face)charmap->face; psnames = (PSNames_Interface*)face->psnames; - if (psnames) + if (psnames) switch (charmap->encoding) { /********************************************************************/ @@ -233,7 +233,7 @@ result = 0; goto Exit; } - + /********************************************************************/ /* */ /* Custom Type 1 encoding */ @@ -248,7 +248,7 @@ } goto Exit; } - + /********************************************************************/ /* */ /* Adobe Standard & Expert encoding support */ @@ -259,18 +259,18 @@ FT_UInt code; FT_Int n; const char* glyph_name; - + code = psnames->adobe_std_encoding[charcode]; if (charmap->encoding == ft_encoding_adobe_expert) code = psnames->adobe_expert_encoding[charcode]; - + glyph_name = psnames->adobe_std_strings(code); if (!glyph_name) break; - + for ( n = 0; n < face->type1.num_glyphs; n++ ) { const char* gname = face->type1.glyph_names[n]; - + if ( gname && gname[0] == glyph_name[0] && strcmp( gname, glyph_name ) == 0 ) { @@ -280,7 +280,7 @@ } } } - Exit: + Exit: return result; } @@ -366,7 +366,7 @@ sizeof( T1_FaceRec ), sizeof( T1_SizeRec ), sizeof( T1_GlyphSlotRec ), - + "type1", 100, 200, @@ -385,7 +385,7 @@ (FTDriver_initFace) T1_Init_Face, (FTDriver_doneFace) T1_Done_Face, -#ifdef T1_CONFIG_OPTION_NO_AFM +#ifdef T1_CONFIG_OPTION_NO_AFM (FTDriver_getKerning) 0, #else (FTDriver_getKerning) Get_Kerning, @@ -425,12 +425,12 @@ /* */ #ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS - + EXPORT_FUNC(FT_DriverInterface*) getDriverInterface( void ) { return &t1_driver_interface; } - + #endif /* FT_CONFIG_OPTION_DYNAMIC_DRIVERS */ diff --git a/src/type1/t1driver.h b/src/type1/t1driver.h index d1feadc63..35fe57d12 100644 --- a/src/type1/t1driver.h +++ b/src/type1/t1driver.h @@ -9,7 +9,7 @@ * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute + * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * diff --git a/src/type1/t1errors.h b/src/type1/t1errors.h index 01f5e4a27..7984f546e 100644 --- a/src/type1/t1errors.h +++ b/src/type1/t1errors.h @@ -34,7 +34,7 @@ #define T1_Err_Ok FT_Err_Ok /* ----------- high level API errors -------- */ - + #define T1_Err_Invalid_File_Format FT_Err_Invalid_File_Format #define T1_Err_Invalid_Argument FT_Err_Invalid_Argument #define T1_Err_Invalid_Driver_Handle FT_Err_Invalid_Driver_Handle @@ -53,7 +53,7 @@ #define T1_Err_Invalid_Engine FT_Err_Invalid_Driver_Handle /* ------------- internal errors ------------ */ - + #define T1_Err_Out_Of_Memory FT_Err_Out_Of_Memory #define T1_Err_Unlisted_Object FT_Err_Unlisted_Object diff --git a/src/type1/t1gload.c b/src/type1/t1gload.c index 19df387ba..585204d4e 100644 --- a/src/type1/t1gload.c +++ b/src/type1/t1gload.c @@ -168,7 +168,7 @@ * to implement the SEAC Type 1 operator. * * - * face :: current face object + * face :: current face object * charcode :: charcode to look for * * @@ -184,18 +184,18 @@ T1_Int n; const T1_String* glyph_name; PSNames_Interface* psnames = (PSNames_Interface*)face->psnames; - + /* check range of standard char code */ if (charcode < 0 || charcode > 255) return -1; - + glyph_name = psnames->adobe_std_strings( psnames->adobe_std_encoding[charcode]); - + for ( n = 0; n < face->type1.num_glyphs; n++ ) { T1_String* name = (T1_String*)face->type1.glyph_names[n]; - + if ( name && strcmp(name,glyph_name) == 0 ) return n; } @@ -221,7 +221,7 @@ * achar :: accent character's StandardEncoding charcode * * - * Error code. 0 means success. + * Error code. 0 means success. * *********************************************************************/ @@ -240,10 +240,10 @@ FT_Outline* base = &decoder->builder.base; T1_Vector left_bearing, advance; T1_Font* type1 = &face->type1; - + bchar_index = lookup_glyph_by_stdcharcode( face, bchar ); achar_index = lookup_glyph_by_stdcharcode( face, achar ); - + if (bchar_index < 0 || achar_index < 0) { FT_ERROR(( "T1.Parse_Seac : invalid seac character code arguments\n" )); @@ -275,20 +275,20 @@ FT_GlyphSlot glyph = (FT_GlyphSlot)decoder->builder.glyph; FT_SubGlyph* subg; - /* reallocate subglyph array if necessary */ + /* reallocate subglyph array if necessary */ if (glyph->max_subglyphs < 2) { FT_Memory memory = decoder->builder.face->root.memory; - + if ( REALLOC_ARRAY( glyph->subglyphs, glyph->max_subglyphs, 2, FT_SubGlyph ) ) return error; - + glyph->max_subglyphs = 2; } subg = glyph->subglyphs; - + /* subglyph 0 = base character */ subg->index = bchar_index; subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES | @@ -296,7 +296,7 @@ subg->arg1 = 0; subg->arg2 = 0; subg++; - + /* subglyph 1 = accent character */ subg->index = achar_index; subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES; @@ -313,19 +313,19 @@ /* as they will be erased by the next load.. */ left_bearing = decoder->builder.left_bearing; advance = decoder->builder.advance; - + decoder->builder.left_bearing.x = 0; - decoder->builder.left_bearing.y = 0; - + decoder->builder.left_bearing.y = 0; + /* Now load "achar" on top of */ /* the base outline */ - /* */ + /* */ cur->n_points = 0; cur->n_contours = 0; cur->points = base->points + base->n_points; cur->tags = base->tags + base->n_points; cur->contours = base->contours + base->n_contours; - + error = T1_Parse_CharStrings( decoder, type1->charstrings [achar_index], type1->charstrings_len[achar_index], @@ -333,20 +333,20 @@ type1->subrs, type1->subrs_len ); if (error) return error; - + /* adjust contours in accented character outline */ { T1_Int n; - + for ( n = 0; n < cur->n_contours; n++ ) cur->contours[n] += n_base_points; } - + /* restore the left side bearing and */ /* advance width of the base character */ decoder->builder.left_bearing = left_bearing; decoder->builder.advance = advance; - + /* Finally, move the accent */ FT_Outline_Translate( cur, adx - asb, ady ); } @@ -368,7 +368,7 @@ * end_y :: position of final flex point * * - * Error code. 0 means success. + * Error code. 0 means success. * *********************************************************************/ @@ -434,7 +434,7 @@ * subrs_len :: array of sub-routines lengths * * - * Error code. 0 means success. + * Error code. 0 means success. * *********************************************************************/ @@ -454,7 +454,7 @@ T1_Builder_Funcs* builds = &builder->funcs; T1_Hinter_Funcs* hints = &decoder->hinter; - static const T1_Int args_count[ op_max ] = + static const T1_Int args_count[ op_max ] = { 0, /* none */ 0, /* endchar */ @@ -959,11 +959,11 @@ if ( REALLOC_ARRAY( builder->base.points, current, builder->max_points, T1_Vector ) || - + REALLOC_ARRAY( builder->base.tags, current, builder->max_points, T1_Byte ) ) return error; - + builder->current.points = builder->base.points + increment; builder->current.tags = builder->base.tags + increment; } @@ -1015,7 +1015,7 @@ if ( REALLOC_ARRAY( builder->base.contours, current, builder->max_contours, T1_Short ) ) return error; - + builder->current.contours = builder->base.contours + increment; } @@ -1160,7 +1160,7 @@ FT_Outline* cur = &builder->current; T1_Int num_points; T1_Int first_point; - + /* Some fonts, like Hershey, are made of "open paths" which are */ /* now managed directly by FreeType. In this case, it is necessary */ /* to close the path by duplicating its points in reverse order, */ @@ -1171,7 +1171,7 @@ first_point = cur->contours[ cur->n_contours-2 ]+1; else first_point = 0; - + num_points = cur->n_points - first_point - 2; if ( num_points > 0 ) { @@ -1179,19 +1179,19 @@ char* source_tags; T1_Vector* point; char* tags; - + error = T1_Add_Points( builder, num_points ); if (error) return error; point = cur->points + cur->n_points; tags = cur->tags + cur->n_points; - + source_point = point - 2; source_tags = tags - 2; cur->n_points += num_points; - if ( builder->load_points ) + if ( builder->load_points ) do { *point++ = *source_point--; @@ -1241,7 +1241,7 @@ if (error) return error; } - error = gload_closepath( builder ); + error = gload_closepath( builder ); builder->base.n_points += cur->n_points; builder->base.n_contours += cur->n_contours; @@ -1324,7 +1324,7 @@ if (error) return error; } } - + /* grow buffer if necessary */ error = T1_Add_Contours( builder, 1 ) || T1_Add_Points ( builder, 1 ); @@ -1391,7 +1391,7 @@ builder->last = vec; } - + cur->n_points += 3; builder->path_begun = 1; return T1_Err_Ok; @@ -1532,9 +1532,9 @@ T1_Init_Builder( &decoder.builder, face, size, glyph, &gload_builder_interface ); - + decoder.builder.no_recurse = !!(load_flags & FT_LOAD_NO_RECURSE); - + /* now load the unscaled outline */ error = T1_Parse_CharStrings( &decoder, type1->charstrings [glyph_index], @@ -1542,7 +1542,7 @@ type1->num_subrs, type1->subrs, type1->subrs_len ); - + /* save new glyph tables */ T1_Done_Builder( &decoder.builder ); } @@ -1564,9 +1564,9 @@ { FT_BBox cbox; FT_Glyph_Metrics* metrics = &glyph->root.metrics; - + FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - + /* grid fit the bounding box if necessary */ if (hinting) { @@ -1575,36 +1575,36 @@ cbox.xMax = ( cbox.xMax+63 ) & -64; cbox.yMax = ( cbox.yMax+63 ) & -64; } - + metrics->width = cbox.xMax - cbox.xMin; metrics->height = cbox.yMax - cbox.yMin; - + metrics->horiBearingX = cbox.xMin; metrics->horiBearingY = cbox.yMax; - + /* copy the _unscaled_ advance width */ metrics->horiAdvance = decoder.builder.advance.x; - + /* make up vertical metrics */ metrics->vertBearingX = 0; metrics->vertBearingY = 0; metrics->vertAdvance = 0; - + glyph->root.format = ft_glyph_format_outline; - + glyph->root.outline.flags &= ft_outline_owner; - + if ( size->root.metrics.y_ppem < 24 ) glyph->root.outline.flags |= ft_outline_high_precision; glyph->root.outline.flags |= ft_outline_reverse_fill; - + /* glyph->root.outline.second_pass = TRUE; glyph->root.outline.high_precision = ( size->root.metrics.y_ppem < 24 ); glyph->root.outline.dropout_mode = 2; */ - + if ( hinting ) { /* adjust the advance width */ @@ -1620,30 +1620,30 @@ T1_Vector* vec = cur->points; T1_Fixed x_scale = glyph->x_scale; T1_Fixed y_scale = glyph->y_scale; - + /* First of all, scale the points */ for ( n = cur->n_points; n > 0; n--, vec++ ) { vec->x = FT_MulFix( vec->x, x_scale ); vec->y = FT_MulFix( vec->y, y_scale ); } - + /* Then scale the metrics */ metrics->width = FT_MulFix( metrics->width, x_scale ); metrics->height = FT_MulFix( metrics->height, y_scale ); - + metrics->horiBearingX = FT_MulFix( metrics->horiBearingX, x_scale ); metrics->horiBearingY = FT_MulFix( metrics->horiBearingY, y_scale ); metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); - + metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, x_scale ); - + } } } - + return error; } diff --git a/src/type1/t1gload.h b/src/type1/t1gload.h index 53d1d535d..37a9aadfe 100644 --- a/src/type1/t1gload.h +++ b/src/type1/t1gload.h @@ -181,7 +181,7 @@ /* a structure used to store the address of various functions */ /* used by a Type 1 hinter to perform outline hinting. */ /* */ - + typedef T1_Error (*T1_Hinter_ChangeHints)( T1_Builder* builder ); typedef T1_Error (*T1_Hinter_DotSection)( T1_Builder* builder ); diff --git a/src/type1/t1hinter.c b/src/type1/t1hinter.c index f9d5db9b5..d7dd8945b 100644 --- a/src/type1/t1hinter.c +++ b/src/type1/t1hinter.c @@ -2,7 +2,7 @@ * * t1hinter.c 1.2 * - * Type1 hinter. + * Type1 hinter. * * Copyright 1996-1999 by * David Turner, Robert Wilhelm, and Werner Lemberg. @@ -66,7 +66,7 @@ * 1. It extracts the bottom and top blue zones from the * face object. * - * 2. Each zone is then grown by BlueFuzz, overlapping + * 2. Each zone is then grown by BlueFuzz, overlapping * is eliminated by adjusting the zone edges appropriately * * 3. For each zone, we keep its original font units position, its @@ -83,7 +83,7 @@ { T1_Int i, swap; T1_Int* cur; - + for ( i = 2; i < count; i += 2 ) { cur = blues + i; @@ -91,7 +91,7 @@ { if ( cur[-1] < cur[0] ) break; - + swap = cur[-2]; cur[-2] = cur[0]; cur[0] = swap; swap = cur[-1]; cur[-1] = cur[1]; cur[1] = swap; cur -= 2; @@ -210,27 +210,27 @@ } } - + /* Compare the current pixel size with the BlueScale value */ /* to know wether to supress overshoots.. */ - - hints->supress_overshoots = + + hints->supress_overshoots = ( size->root.metrics.y_ppem < FT_MulFix(1000,priv->blue_scale) ); /* Now print the new blue values in tracing mode */ #ifdef FT_DEBUG_LEVEL_TRACE - + FT_TRACE2(( "Blue Zones for size object at $%08lx :\n", (long)size )); FT_TRACE2(( " orus pix min max\n" )); FT_TRACE2(( "-------------------------------\n" )); - + zone = hints->blue_zones; for ( n = 0; n < hints->num_blue_zones; n++ ) { FT_TRACE2(( " %3d %.2f %.2f %.2f\n", - zone->orus, + zone->orus, zone->pix/64.0, - zone->min/64.0, + zone->min/64.0, zone->max/64.0 )); zone++; } @@ -238,7 +238,7 @@ hints->supress_overshoots ? "supressed" : "active" )); #endif /* DEBUG_LEVEL_TRACE */ - + return T1_Err_Ok; } @@ -262,7 +262,7 @@ * This function performs the following : * * 1. It reads and scales the stem snap widths from the parent face - * + * * 2. A "snap zone" is computed for each snap width, by "growing" * it with a threshold of a 1/2 pixel. Overlapping is avoided * through proper edge adjustment. @@ -296,7 +296,7 @@ base_zone = hints->snap_widths; orgs = priv->stem_snap_widths; scale = size->root.metrics.x_scale; - + while (direction < 2) { /*****************************************************************/ @@ -305,7 +305,7 @@ /* font record. */ /* */ T1_Pos prev, orus, pix, min, max, threshold; - + threshold = ONE_PIXEL/4; zone = base_zone; @@ -347,14 +347,14 @@ /* print the scaled stem snap values in tracing modes */ #ifdef FT_DEBUG_LEVEL_TRACE - - FT_TRACE2(( "Set_Snap_Zones : first %s pass\n", + + FT_TRACE2(( "Set_Snap_Zones : first %s pass\n", direction ? "vertical" : "horizontal" )); - + FT_TRACE2(( "Scaled original stem snap zones :\n" )); FT_TRACE2(( " orus pix min max\n" )); FT_TRACE2(( "-----------------------------\n" )); - + zone = base_zone; for ( n = 0; n < n_zones; n++, zone++ ) FT_TRACE2(( " %3d %.2f %.2f %.2f\n", @@ -363,7 +363,7 @@ zone->min/64.0, zone->max/64.0 )); FT_TRACE2(( "\n" )); - + FT_TRACE2(( "Standard width = %d\n", standard_width )); #endif @@ -378,7 +378,7 @@ T1_Snap_Zone* parent; T1_Pos std_pix, std_min, std_max; - std_pix = SCALE( standard_width ); + std_pix = SCALE( standard_width ); std_min = std_pix-threshold; std_max = std_pix+threshold; @@ -402,29 +402,29 @@ } zone++; } - + /**********************************************/ /* Now, insert the standard width zone */ - + zone = base_zone+num_zones; while ( zone > base_zone && zone[-1].pix > std_max ) { zone[0] = zone[-1]; zone --; } - + /* check border zones */ if ( zone > base_zone && zone[-1].max > std_min ) zone[-1].max = std_min; - + if ( zone < base_zone+num_zones && zone[1].min < std_max ) zone[1].min = std_max; - + zone->orus = standard_width; zone->pix = std_pix; zone->min = std_min; zone->max = std_max; - + num_zones++; } else @@ -436,14 +436,14 @@ /* print the scaled stem snap values in tracing modes */ #ifdef FT_DEBUG_LEVEL_TRACE - - FT_TRACE2(( "Set_Snap_Zones : second %s pass\n", + + FT_TRACE2(( "Set_Snap_Zones : second %s pass\n", direction ? "vertical" : "horizontal" )); - + FT_TRACE2(( "Scaled clipped stem snap zones :\n" )); FT_TRACE2(( " orus pix min max\n" )); FT_TRACE2(( "-----------------------------\n" )); - + zone = base_zone; for ( n = 0; n < num_zones; n++, zone++ ) FT_TRACE2(( " %3d %.2f %.2f %.2f\n", @@ -452,10 +452,10 @@ zone->min/64.0, zone->max/64.0 )); FT_TRACE2(( "\n" )); - + FT_TRACE2(( "Standard width = %d\n", standard_width )); #endif - + /* continue with vertical snap zone */ direction++; standard_width = priv->standard_height; @@ -467,7 +467,7 @@ return T1_Err_Ok; } - + /************************************************************************ * @@ -489,7 +489,7 @@ T1_Error T1_New_Size_Hinter( T1_Size size ) { FT_Memory memory = size->root.face->memory; - + return MEM_Alloc( size->hints, sizeof(*size->hints) ); } @@ -562,7 +562,7 @@ T1_Error T1_New_Glyph_Hinter( T1_GlyphSlot glyph ) { FT_Memory memory = glyph->root.face->memory; - + return MEM_Alloc( glyph->hints, sizeof(*glyph->hints) ); } @@ -846,7 +846,7 @@ * table :: the horizontal stem hints table * hints :: the current size's hint structure * blueShift :: the value of the /BlueShift as taken from the - * face object. + * face object. * scale :: the 16.16 scale used to convert outline * units to 26.6 pixels * @@ -895,7 +895,7 @@ for ( ; zone < zone_limit; zone++ ) { T1_Pos dist; - + dist = width_pix - zone->min; if (dist < 0) dist = -dist; if (dist < best_dist) { @@ -903,7 +903,7 @@ best_dist = dist; } } - + if (best_zone) { if (width_pix > best_zone->pix) @@ -948,7 +948,7 @@ if (!hints->supress_overshoots) { T1_Pos delta = blue->pix - bottom_pix; - + delta = ( delta < blueShift ? 0 : ROUND( delta ) ); bottom -= delta; } @@ -960,7 +960,7 @@ /******************************************************************/ /* Check for top blue zones alignement */ { - T1_Int num_blues = hints->num_blue_zones - + T1_Int num_blues = hints->num_blue_zones - hints->num_bottom_zones; T1_Snap_Zone* blue = hints->blue_zones + @@ -982,7 +982,7 @@ if (!hints->supress_overshoots) { T1_Pos delta = top - blue->pix; - + delta = ( delta < blueShift ? 0 : ROUND( delta ) ); top += delta; } @@ -999,27 +999,27 @@ bottom_pix = bottom; top_pix = bottom + width_pix; break; - + case T1_ALIGN_TOP: /* top zone alignement */ top_pix = top; bottom_pix = top - width_pix; - + break; - + case T1_ALIGN_BOTH: /* bottom+top zone alignement */ bottom_pix = bottom; top_pix = top; break; - + default: /* no alignement */ - /* XXXX : TODO : Add management of controlled stems */ + /* XXXX : TODO : Add management of controlled stems */ bottom = ( SCALE(bottom_orus+top_orus) - width_pix )/2; - + bottom_pix = ROUND(bottom); top_pix = bottom_pix + width_pix; } - + stem->min_edge.pix = bottom_pix; stem->max_edge.pix = top_pix; } @@ -1079,7 +1079,7 @@ for ( ; zone < zone_limit; zone++ ) { T1_Pos dist; - + dist = width_pix - zone->min; if (dist < 0) dist = -dist; if (dist < best_dist) { @@ -1087,7 +1087,7 @@ best_dist = dist; } } - + if (best_zone) { if (width_pix > best_zone->pix) @@ -1104,7 +1104,7 @@ } } } - + /* round width - minimum 1 pixel if this isn't a ghost stem */ if ( width_pix > 0 ) width_pix = ( width_pix < ONE_PIXEL ? ONE_PIXEL : @@ -1227,7 +1227,7 @@ * * * this function grid-fits several points in a given Type 1 builder - * at once. + * at once. * * * builder :: handle to target Type 1 builder diff --git a/src/type1/t1hinter.h b/src/type1/t1hinter.h index 4bf753af9..b5c9327a9 100644 --- a/src/type1/t1hinter.h +++ b/src/type1/t1hinter.h @@ -2,7 +2,7 @@ * * t1hinter.h 1.2 * - * Type1 hinter. + * Type1 hinter. * * Copyright 1996-1999 by * David Turner, Robert Wilhelm, and Werner Lemberg. @@ -56,10 +56,10 @@ typedef struct T1_Snap_Zone_ { T1_Pos orus; - T1_Pos pix; - T1_Pos min; - T1_Pos max; - + T1_Pos pix; + T1_Pos min; + T1_Pos max; + } T1_Snap_Zone; @@ -80,8 +80,8 @@ typedef struct T1_Edge_ { T1_Pos orus; - T1_Pos pix; - + T1_Pos pix; + } T1_Edge; @@ -209,7 +209,7 @@ * * * A structure used to model the stem hints of a given glyph outline - * during glyph loading. + * during glyph loading. * * * hori_stems :: horizontal stem hints table @@ -344,7 +344,7 @@ * * * this function grid-fits several points in a given Type 1 builder - * at once. + * at once. * * * builder :: handle to target Type 1 builder diff --git a/src/type1/t1load.c b/src/type1/t1load.c index f59f22607..f8df35353 100644 --- a/src/type1/t1load.c +++ b/src/type1/t1load.c @@ -1131,7 +1131,7 @@ error = Expect_Dict_Arguments( parser, 1, tok_error, dict_font, 0 ); if (error) goto Exit; - + /* clear stack from all the previous content. This */ /* could be some stupid Postscript code ... */ parser->top = parser->stack; @@ -1384,7 +1384,7 @@ /* syntax, we never escape from the private dictionary */ if (dict_state != dict_private) parser->state_index--; - + /* many fonts use a NP instead of def or put, so */ /* we simply ignore the nest token.. */ #if 0 diff --git a/src/type1/t1load.h b/src/type1/t1load.h index 673316a03..8cd5c80a2 100644 --- a/src/type1/t1load.h +++ b/src/type1/t1load.h @@ -2,7 +2,7 @@ * * t1load.h 1.0 * - * Type1 Loader. + * Type1 Loader. * * Copyright 1996-1998 by * David Turner, Robert Wilhelm, and Werner Lemberg. diff --git a/src/type1/t1objs.c b/src/type1/t1objs.c index 254689632..b272a9787 100644 --- a/src/type1/t1objs.c +++ b/src/type1/t1objs.c @@ -2,7 +2,7 @@ * * t1objs.c 1.0 * - * Type1 Objects manager. + * Type1 Objects manager. * * Copyright 1996-1998 by * David Turner, Robert Wilhelm, and Werner Lemberg. @@ -88,9 +88,9 @@ T1_Error T1_Init_Size( T1_Size size ) { T1_Error error; - + size->valid = 0; - + #ifndef T1_CONFIG_OPTION_DISABLE_HINTER error = T1_New_Size_Hinter( size ); return error; @@ -117,7 +117,7 @@ * Error code. * ******************************************************************/ - + LOCAL_FUNC T1_Error T1_Reset_Size( T1_Size size ) { @@ -148,7 +148,7 @@ * face :: typeless pointer to the face object to destroy * * - * Error code. + * Error code. * ******************************************************************/ @@ -161,11 +161,11 @@ if (face) { memory = face->root.memory; - - /* release font info strings */ + + /* release font info strings */ { T1_FontInfo* info = &type1->font_info; - + FREE( info->version ); FREE( info->notice ); FREE( info->full_name ); @@ -173,21 +173,21 @@ FREE( info->weight ); } - /* release top dictionary */ + /* release top dictionary */ FREE( type1->charstrings_len ); FREE( type1->charstrings ); FREE( type1->glyph_names ); FREE( type1->subrs ); FREE( type1->subrs_len ); - + FREE( type1->subrs_block ); FREE( type1->charstrings_block ); FREE( type1->glyph_names_block ); FREE( type1->encoding.char_index ); FREE( type1->font_name ); - + #ifndef T1_CONFIG_OPTION_NO_AFM /* release afm data if present */ if ( face->afm_data) @@ -242,7 +242,7 @@ { /* look-up the PSNames driver */ FT_Driver psnames_driver; - + psnames_driver = FT_Get_Driver( face->root.driver->library, "psnames" ); if (psnames_driver) face->psnames = (PSNames_Interface*) @@ -278,15 +278,15 @@ { FT_Face root = (FT_Face)&face->root; T1_Font* type1 = &face->type1; - + root->num_glyphs = type1->num_glyphs; root->num_charmaps = 1; - + root->face_index = face_index; root->face_flags = FT_FACE_FLAG_SCALABLE; - + root->face_flags |= FT_FACE_FLAG_HORIZONTAL; - + if ( type1->font_info.is_fixed_pitch ) root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; @@ -299,13 +299,13 @@ { char* full = type1->font_info.full_name; char* family = root->family_name; - + while ( *family && *full == *family ) { family++; full++; } - + root->style_name = ( *full == ' ' ? full+1 : "Regular" ); } else @@ -317,17 +317,17 @@ root->style_name = "Regular"; } } - + /* no embedded bitmap support */ root->num_fixed_sizes = 0; root->available_sizes = 0; - + root->bbox = type1->font_bbox; root->units_per_EM = 1000; root->ascender = (T1_Short)type1->font_bbox.yMax; root->descender = -(T1_Short)type1->font_bbox.yMin; root->height = ((root->ascender + root->descender)*12)/10; - + /* now compute the maximum advance width */ root->max_advance_width = type1->private_dict.standard_width; @@ -347,10 +347,10 @@ } root->max_advance_height = root->height; - + root->underline_position = type1->font_info.underline_position; root->underline_thickness = type1->font_info.underline_thickness; - + root->max_points = 0; root->max_contours = 0; } @@ -381,7 +381,7 @@ charmap->encoding_id = 1; charmap++; } - + /* simply clear the error in case of failure (which really) */ /* means that out of memory or no unicode glyph names */ error = 0; @@ -391,25 +391,25 @@ /* now, support either the standard, expert, or custom encodings */ charmap->face = (FT_Face)face; charmap->platform_id = 7; /* a new platform id for Adobe fonts ?? */ - + switch (face->type1.encoding_type) { case t1_encoding_standard: charmap->encoding = ft_encoding_adobe_standard; charmap->encoding_id = 0; break; - + case t1_encoding_expert: charmap->encoding = ft_encoding_adobe_expert; charmap->encoding_id = 1; break; - + default: charmap->encoding = ft_encoding_adobe_custom; charmap->encoding_id = 2; break; } - + root->charmaps = face->charmaps; root->num_charmaps = charmap - face->charmaprecs + 1; face->charmaps[0] = &face->charmaprecs[0]; @@ -432,7 +432,7 @@ * * Input : _glyph typeless pointer to the glyph record to destroy * - * Output : Error code. + * Output : Error code. * ******************************************************************/ @@ -459,7 +459,7 @@ * Description : The glyph object constructor. * * Input : glyph glyph record to build. - * face the glyph's parent face. + * face the glyph's parent face. * * Output : Error code. * diff --git a/src/type1/t1objs.h b/src/type1/t1objs.h index 53fe3dbe1..dd4220fb1 100644 --- a/src/type1/t1objs.h +++ b/src/type1/t1objs.h @@ -2,7 +2,7 @@ * * t1objs.h 1.0 * - * Type1 objects definition. + * Type1 objects definition. * * Copyright 1996-1999 by * David Turner, Robert Wilhelm, and Werner Lemberg. @@ -83,7 +83,7 @@ /* NOW BEGINS THE TYPE1 SPECIFIC STUFF .............................. */ /* */ /**************************************************************************/ - + /***************************************************/ /* */ @@ -91,7 +91,7 @@ /* */ /* Type 1 size record.. */ /* */ - + typedef struct T1_SizeRec_ { FT_SizeRec root; @@ -110,14 +110,14 @@ /* */ /* TrueDoc glyph record.. */ /* */ - + typedef struct T1_GlyphSlotRec_ { FT_GlyphSlotRec root; T1_Bool hint; T1_Bool scaled; - + T1_Int max_points; T1_Int max_contours; @@ -251,7 +251,7 @@ * * glyph :: handle to glyph slot object * - * Error code. + * Error code. * ******************************************************************/ diff --git a/src/type1/t1parse.c b/src/type1/t1parse.c index d897d7446..9a71f9990 100644 --- a/src/type1/t1parse.c +++ b/src/type1/t1parse.c @@ -157,16 +157,16 @@ old_base = table->block; if (!old_base) return; - + (void)REALLOC( table->block, table->capacity, table->cursor ); table->capacity = table->cursor; - + if (old_base != table->block) { T1_Long delta = table->block - old_base; T1_Byte** element = table->elements; T1_Byte** limit = element + table->max_elems; - + for ( ; element < limit; element++ ) if (element[0]) element[0] += delta; diff --git a/src/type1/t1tokens.c b/src/type1/t1tokens.c index 6f2f58e0c..53e5a9e9e 100644 --- a/src/type1/t1tokens.c +++ b/src/type1/t1tokens.c @@ -170,7 +170,7 @@ FT_TRACE2(( "Growing tokenizer buffer by %d bytes\n", left_bytes )); - if ( !REALLOC( tokzer->base, tokzer->limit, + if ( !REALLOC( tokzer->base, tokzer->limit, tokzer->limit + left_bytes ) && !FILE_Read( tokzer->base + tokzer->limit, left_bytes ) ) tokzer->limit += left_bytes; @@ -309,13 +309,13 @@ tokzer->cursor = 0; *tokenizer = tokzer; - + /* Now check font format, we must see a '%!PS-AdobeFont-1' */ /* or a '%!FontType' */ { if ( 16 > tokzer->limit ) grow( tokzer ); - + if ( tokzer->limit <= 16 || ( strncmp( (const char*)tokzer->base, "%!PS-AdobeFont-1", 16 ) && strncmp( (const char*)tokzer->base, "%!FontType", 10 ) ) ) @@ -817,7 +817,7 @@ case '(': case '<': case '/': - goto Any_Token; + goto Any_Token; case ' ': case '\r': @@ -842,7 +842,7 @@ case '+': if (token_started) goto Next; - + token_started = 1; tok->token.start = cur-1; for (;;) diff --git a/src/type1z/t1afm.c b/src/type1z/t1afm.c index b9f8d8398..56eb84a06 100644 --- a/src/type1z/t1afm.c +++ b/src/type1z/t1afm.c @@ -34,27 +34,27 @@ FT_UInt result = 0; char temp[64]; - /* skip whitespace */ + /* skip whitespace */ while ( (*p == ' ' || *p == '\t' || *p == ':' || *p == ';') && p < limit ) p++; *start = p; - + /* now, read glyph name */ while ( IS_ALPHANUM(*p) && p < limit ) p++; len = p - *start; if (len > 0 && len < 64) { FT_Int n; - + /* copy glyph name to intermediate array */ MEM_Copy( temp, *start, len ); temp[len] = 0; - + /* lookup glyph name in face array */ for ( n = 0; n < type1->num_glyphs; n++ ) { char* gname = (char*)type1->glyph_names[n]; - + if ( gname && gname[0] == temp[0] && strcmp(gname,temp) == 0 ) { result = n; @@ -74,17 +74,17 @@ FT_Byte* p = *start; int sum = 0; int sign = 1; - + /* skip everything that is not a number */ while ( p < limit && (*p < '0' || *p > '9') ) { sign = 1; if (*p == '-') sign = -1; - + p++; } - + while ( p < limit && (*p >= '0' && *p < '9') ) { sum = sum*10 + (*p - '0'); @@ -104,10 +104,10 @@ { T1_Kern_Pair* pair1 = (T1_Kern_Pair*)a; T1_Kern_Pair* pair2 = (T1_Kern_Pair*)b; - + T1_ULong index1 = KERN_INDEX(pair1->glyph1,pair1->glyph2); T1_ULong index2 = KERN_INDEX(pair2->glyph1,pair2->glyph2); - + return ( index1 < index2 ? -1 : ( index1 > index2 ? 1 : 0 )); } @@ -127,14 +127,14 @@ T1_Kern_Pair* pair; T1_Font* type1 = &((T1_Face)t1_face)->type1; T1_AFM* afm = 0; - + if ( ACCESS_Frame(stream->size) ) return error; - + start = (FT_Byte*)stream->cursor; limit = (FT_Byte*)stream->limit; p = start; - + /* we are now going to count the occurences of "KP" or "KPX" in */ /* the AFM file.. */ count = 0; @@ -147,16 +147,16 @@ /* Actually, kerning pairs are simply optional !! */ if (count == 0) goto Exit; - + /* allocate the pairs */ if ( ALLOC( afm, sizeof(*afm ) ) || ALLOC_ARRAY( afm->kern_pairs, count, T1_Kern_Pair ) ) goto Exit; - + /* now, read each kern pair */ pair = afm->kern_pairs; afm->num_pairs = count; - + /* save in face object */ ((T1_Face)t1_face)->afm_data = afm; @@ -165,26 +165,26 @@ if ( IS_KERN_PAIR(p) ) { FT_Byte* q; - + /* skip keyword (KP or KPX) */ q = p+2; if (*q == 'X') q++; - + pair->glyph1 = afm_atoindex( &q, limit, type1 ); pair->glyph2 = afm_atoindex( &q, limit, type1 ); pair->kerning.x = afm_atoi( &q, limit ); - + pair->kerning.y = 0; if ( p[2] != 'X' ) pair->kerning.y = afm_atoi( &q, limit ); - + pair++; } } - + /* now, sort the kern pairs according to their glyph indices */ qsort( afm->kern_pairs, count, sizeof(T1_Kern_Pair), compare_kern_pairs ); - + Exit: if (error) FREE( afm ); @@ -194,7 +194,7 @@ } - /* find the kerning for a given glyph pair */ + /* find the kerning for a given glyph pair */ LOCAL_FUNC void T1_Get_Kerning( T1_AFM* afm, FT_UInt glyph1, @@ -203,23 +203,23 @@ { T1_Kern_Pair *min, *mid, *max; T1_ULong index = KERN_INDEX(glyph1,glyph2); - + /* simple binary search */ min = afm->kern_pairs; max = min + afm->num_pairs-1; - + while (min <= max) { T1_ULong midi; - + mid = min + (max-min)/2; - midi = KERN_INDEX(mid->glyph1,mid->glyph2); + midi = KERN_INDEX(mid->glyph1,mid->glyph2); if ( midi == index ) { *kerning = mid->kerning; return; } - + if ( midi < index ) min = mid+1; else max = mid-1; } diff --git a/src/type1z/t1afm.h b/src/type1z/t1afm.h index 61e18b82c..984ae945c 100644 --- a/src/type1z/t1afm.h +++ b/src/type1z/t1afm.h @@ -18,7 +18,7 @@ typedef struct T1_Kern_Pair_ FT_UInt glyph1; FT_UInt glyph2; FT_Vector kerning; - + } T1_Kern_Pair; diff --git a/src/type1z/t1driver.c b/src/type1z/t1driver.c index 7479fab57..c6dba1a5a 100644 --- a/src/type1z/t1driver.c +++ b/src/type1z/t1driver.c @@ -9,7 +9,7 @@ * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute + * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * @@ -59,10 +59,10 @@ const FT_String* interface ) { UNUSED(driver); - + if ( strcmp( (const char*)interface, "attach_file" ) == 0 ) return (FTDriver_Interface)T1_Read_AFM; - + return 0; } @@ -107,7 +107,7 @@ T1_Vector* kerning ) { T1_AFM* afm; - + kerning->x = 0; kerning->y = 0; @@ -185,7 +185,7 @@ UNUSED(pixel_width); UNUSED(pixel_height); - size->valid = FALSE; + size->valid = FALSE; return T1_Reset_Size(size); } @@ -214,7 +214,7 @@ face = (T1_Face)charmap->face; psnames = (PSNames_Interface*)face->psnames; - if (psnames) + if (psnames) switch (charmap->encoding) { /********************************************************************/ @@ -233,7 +233,7 @@ result = 0; goto Exit; } - + /********************************************************************/ /* */ /* Custom Type 1 encoding */ @@ -248,7 +248,7 @@ } goto Exit; } - + /********************************************************************/ /* */ /* Adobe Standard & Expert encoding support */ @@ -259,18 +259,18 @@ FT_UInt code; FT_Int n; const char* glyph_name; - + code = psnames->adobe_std_encoding[charcode]; if (charmap->encoding == ft_encoding_adobe_expert) code = psnames->adobe_expert_encoding[charcode]; - + glyph_name = psnames->adobe_std_strings(code); if (!glyph_name) break; - + for ( n = 0; n < face->type1.num_glyphs; n++ ) { const char* gname = face->type1.glyph_names[n]; - + if ( gname && gname[0] == glyph_name[0] && strcmp( gname, glyph_name ) == 0 ) { @@ -280,7 +280,7 @@ } } } - Exit: + Exit: return result; } @@ -365,7 +365,7 @@ sizeof( T1_FaceRec ), sizeof( T1_SizeRec ), sizeof( T1_GlyphSlotRec ), - + "type1", 100, 200, @@ -384,7 +384,7 @@ (FTDriver_initFace) T1_Init_Face, (FTDriver_doneFace) T1_Done_Face, -#ifdef T1_CONFIG_OPTION_NO_AFM +#ifdef T1_CONFIG_OPTION_NO_AFM (FTDriver_getKerning) 0, #else (FTDriver_getKerning) Get_Kerning, @@ -424,12 +424,12 @@ /* */ #ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS - + EXPORT_FUNC(FT_DriverInterface*) getDriverInterface( void ) { return &t1_driver_interface; } - + #endif /* FT_CONFIG_OPTION_DYNAMIC_DRIVERS */ diff --git a/src/type1z/t1driver.h b/src/type1z/t1driver.h index ec43946af..76f244a28 100644 --- a/src/type1z/t1driver.h +++ b/src/type1z/t1driver.h @@ -9,7 +9,7 @@ * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute + * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * diff --git a/src/type1z/t1errors.h b/src/type1z/t1errors.h index 93731c11d..a799115a8 100644 --- a/src/type1z/t1errors.h +++ b/src/type1z/t1errors.h @@ -32,7 +32,7 @@ #define T1_Err_Ok FT_Err_Ok /* ----------- high level API errors -------- */ - + #define T1_Err_Invalid_File_Format FT_Err_Invalid_File_Format #define T1_Err_Invalid_Argument FT_Err_Invalid_Argument #define T1_Err_Invalid_Driver_Handle FT_Err_Invalid_Driver_Handle @@ -51,7 +51,7 @@ #define T1_Err_Invalid_Engine FT_Err_Invalid_Driver_Handle /* ------------- internal errors ------------ */ - + #define T1_Err_Out_Of_Memory FT_Err_Out_Of_Memory #define T1_Err_Unlisted_Object FT_Err_Unlisted_Object diff --git a/src/type1z/t1gload.c b/src/type1z/t1gload.c index 51d3f44cc..71a717326 100644 --- a/src/type1z/t1gload.c +++ b/src/type1z/t1gload.c @@ -55,7 +55,7 @@ } T1_Operator; - static const T1_Int t1_args_count[ op_max ] = + static const T1_Int t1_args_count[ op_max ] = { 0, /* none */ 0, /* endchar */ @@ -223,7 +223,7 @@ return T1_Err_Ok; count += base->n_points + outline->n_points; - + /* realloc points table if necessary */ if ( count >= builder->max_points ) { @@ -237,14 +237,14 @@ if ( REALLOC_ARRAY( base->points, current, builder->max_points, T1_Vector ) || - + REALLOC_ARRAY( base->tags, current, builder->max_points, T1_Byte ) ) { builder->error = error; return error; } - + outline->points = base->points + increment; outline->tags = base->tags + increment; } @@ -265,17 +265,17 @@ { FT_Vector* point = outline->points + outline->n_points; FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points; - + point->x = x; point->y = y; *control = ( flag ? FT_Curve_Tag_On : FT_Curve_Tag_Cubic ); - + builder->last = *point; } - + outline->n_points++; } - + /* check room for a new on-curve point, then add it */ static @@ -284,7 +284,7 @@ FT_Pos y ) { T1_Error error; - + error = check_points(builder,1); if (!error) add_point( builder, x, y, 1 ); @@ -305,7 +305,7 @@ outline->n_contours++; return T1_Err_Ok; } - + /* realloc contours array if necessary */ if ( base->n_contours + outline->n_contours >= builder->max_contours && builder->load_points ) @@ -323,7 +323,7 @@ builder->error = error; return error; } - + outline->contours = base->contours + increment; } @@ -344,7 +344,7 @@ if (!builder->path_begun) { T1_Error error; - + builder->path_begun = 1; error = add_contour( builder ); if (error) return error; @@ -374,7 +374,7 @@ * to implement the SEAC Type 1 operator. * * - * face :: current face object + * face :: current face object * charcode :: charcode to look for * * @@ -390,18 +390,18 @@ T1_Int n; const T1_String* glyph_name; PSNames_Interface* psnames = (PSNames_Interface*)face->psnames; - + /* check range of standard char code */ if (charcode < 0 || charcode > 255) return -1; - + glyph_name = psnames->adobe_std_strings( psnames->adobe_std_encoding[charcode]); - + for ( n = 0; n < face->type1.num_glyphs; n++ ) { T1_String* name = (T1_String*)face->type1.glyph_names[n]; - + if ( name && strcmp(name,glyph_name) == 0 ) return n; } @@ -428,7 +428,7 @@ * achar :: accent character's StandardEncoding charcode * * - * Error code. 0 means success. + * Error code. 0 means success. * *********************************************************************/ @@ -447,10 +447,10 @@ FT_Outline* base = &decoder->builder.base; T1_Vector left_bearing, advance; T1_Font* type1 = &face->type1; - + bchar_index = lookup_glyph_by_stdcharcode( face, bchar ); achar_index = lookup_glyph_by_stdcharcode( face, achar ); - + if (bchar_index < 0 || achar_index < 0) { FT_ERROR(( "T1.Parse_Seac : invalid seac character code arguments\n" )); @@ -482,20 +482,20 @@ FT_GlyphSlot glyph = (FT_GlyphSlot)decoder->builder.glyph; FT_SubGlyph* subg; - /* reallocate subglyph array if necessary */ + /* reallocate subglyph array if necessary */ if (glyph->max_subglyphs < 2) { FT_Memory memory = decoder->builder.face->root.memory; - + if ( REALLOC_ARRAY( glyph->subglyphs, glyph->max_subglyphs, 2, FT_SubGlyph ) ) return error; - + glyph->max_subglyphs = 2; } subg = glyph->subglyphs; - + /* subglyph 0 = base character */ subg->index = bchar_index; subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES | @@ -503,7 +503,7 @@ subg->arg1 = 0; subg->arg2 = 0; subg++; - + /* subglyph 1 = accent character */ subg->index = achar_index; subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES; @@ -520,19 +520,19 @@ /* as they will be erase by the next load.. */ left_bearing = decoder->builder.left_bearing; advance = decoder->builder.advance; - + decoder->builder.left_bearing.x = 0; - decoder->builder.left_bearing.y = 0; - + decoder->builder.left_bearing.y = 0; + /* Now load "achar" on top of */ /* the base outline */ - /* */ + /* */ cur->n_points = 0; cur->n_contours = 0; cur->points = base->points + base->n_points; cur->tags = base->tags + base->n_points; cur->contours = base->contours + base->n_contours; - + error = T1_Parse_CharStrings( decoder, type1->charstrings [achar_index], type1->charstrings_len[achar_index], @@ -540,21 +540,21 @@ type1->subrs, type1->subrs_len ); if (error) return error; - + /* adjust contours in accented character outline */ if (decoder->builder.load_points) { T1_Int n; - + for ( n = 0; n < cur->n_contours; n++ ) cur->contours[n] += n_base_points; } - + /* restore the left side bearing and */ /* advance width of the base character */ decoder->builder.left_bearing = left_bearing; decoder->builder.advance = advance; - + /* Finally, move the accent */ if (decoder->builder.load_points) FT_Outline_Translate( cur, adx - asb, ady ); @@ -580,7 +580,7 @@ * subrs_len :: array of sub-routines lengths * * - * Error code. 0 means success. + * Error code. 0 means success. * *********************************************************************/ @@ -615,7 +615,7 @@ error = T1_Err_Ok; outline = &builder->current; - + x = builder->pos_x; y = builder->pos_y; @@ -749,27 +749,27 @@ FT_TRACE4(( " callothersubr" )); if ( top - decoder->stack < 2 ) goto Stack_Underflow; - + top -= 2; switch ( top[1] ) { case 1: /* start flex feature ---------------------- */ { if ( top[0] != 0 ) goto Unexpected_OtherSubr; - + decoder->flex_state = 1; decoder->num_flex_vectors = 0; if ( start_point(builder, x, y) || check_points(builder,6) ) goto Memory_Error; } break; - + case 2: /* add flex vectors ------------------------ */ { T1_Int index; - + if ( top[0] != 0 ) goto Unexpected_OtherSubr; - + /* note that we should not add a point for index 0 */ /* this will move our current position to the flex */ /* point without adding any point to the outline */ @@ -781,18 +781,18 @@ (T1_Byte)( index==3 || index==6 ) ); } break; - + case 0: /* end flex feature ------------------------- */ { if ( top[0] != 3 ) goto Unexpected_OtherSubr; - + if ( decoder->flex_state == 0 || decoder->num_flex_vectors != 7 ) { FT_ERROR(( "T1.Parse_CharStrings: unexpected flex end\n" )); goto Syntax_Error; } - + /* now consume the remaining "pop pop setcurpoint" */ if ( ip+6 > limit || ip[0] != 12 || ip[1] != 17 || /* pop */ @@ -802,16 +802,16 @@ FT_ERROR(( "T1.Parse_CharStrings: invalid flex charstring\n" )); goto Syntax_Error; } - + ip += 6; decoder->flex_state = 0; break; } - + case 3: /* change hints ---------------------------- */ { if ( top[0] != 1 ) goto Unexpected_OtherSubr; - + /* eat the following "pop" */ if (ip+2 > limit) { @@ -819,7 +819,7 @@ ip[-1] )); goto Syntax_Error; } - + if (ip[0] != 12 || ip[1] != 17) { FT_ERROR(( "T1.Parse_CharStrings: 'pop' expected, found (%d %d)\n", @@ -829,7 +829,7 @@ ip += 2; break;; } - + default: Unexpected_OtherSubr: FT_ERROR(( "T1.Parse_CharStrings: invalid othersubr [%d %d]!!\n", @@ -852,12 +852,12 @@ case op_endchar: /*************************************************/ { FT_TRACE4(( " endchar" )); - close_contour( builder ); + close_contour( builder ); /* add current outline to the glyph slot */ builder->base.n_points += builder->current.n_points; builder->base.n_contours += builder->current.n_contours; - + /* return now !! */ FT_TRACE4(( "\n\n" )); return T1_Err_Ok; @@ -870,16 +870,16 @@ builder->left_bearing.x += top[0]; builder->advance.x = top[1]; builder->advance.y = 0; - + builder->last.x = x = top[0]; builder->last.y = y = 0; - + /* the "metrics_only" indicates that we only want to compute */ /* the glyph's metrics (lsb + advance width), not load the */ /* rest of it.. so exit immediately */ if (builder->metrics_only) return T1_Err_Ok; - + break; } @@ -896,16 +896,16 @@ builder->left_bearing.y += top[1]; builder->advance.x = top[2]; builder->advance.y = top[3]; - + builder->last.x = x = top[0]; builder->last.y = y = top[1]; - + /* the "metrics_only" indicates that we only want to compute */ /* the glyph's metrics (lsb + advance width), not load the */ /* rest of it.. so exit immediately */ if (builder->metrics_only) return T1_Err_Ok; - + break; } @@ -942,7 +942,7 @@ FT_TRACE4(( " hvcurveto" )); if ( start_point( builder, x, y ) || check_points( builder, 3 ) ) goto Memory_Error; - + x += top[0]; add_point( builder, x, y, 0 ); x += top[1]; @@ -958,7 +958,7 @@ { FT_TRACE4(( " rlineto" )); if ( start_point( builder, x, y ) ) goto Memory_Error; - + x += top[0]; y += top[1]; Add_Line: @@ -980,11 +980,11 @@ FT_TRACE4(( " rcurveto" )); if ( start_point( builder, x, y ) || check_points( builder, 3 ) ) goto Memory_Error; - + x += top[0]; y += top[1]; add_point( builder, x, y, 0 ); - + x += top[2]; y += top[3]; add_point( builder, x, y, 0 ); @@ -993,7 +993,7 @@ y += top[5]; add_point( builder, x, y, 1 ); break; - } + } case op_vhcurveto: /**********************************************/ @@ -1001,7 +1001,7 @@ FT_TRACE4(( " vhcurveto" )); if ( start_point( builder, x, y ) || check_points( builder, 3 ) ) goto Memory_Error; - + y += top[0]; add_point( builder, x, y, 0 ); x += top[1]; @@ -1017,7 +1017,7 @@ { FT_TRACE4(( " vlineto" )); if ( start_point( builder, x, y ) ) goto Memory_Error; - + y += top[0]; goto Add_Line; } @@ -1150,10 +1150,10 @@ } decoder->top = top; - + } /* general operator processing */ - + } /* while ip < limit */ FT_TRACE4(( "..end..\n\n" )); return error; @@ -1163,7 +1163,7 @@ Stack_Underflow: return T1_Err_Stack_Underflow; - + Memory_Error: return builder->error; } @@ -1269,9 +1269,9 @@ { T1_Init_Decoder( &decoder ); T1_Init_Builder( &decoder.builder, face, size, glyph ); - + decoder.builder.no_recurse = (FT_Bool)!!(load_flags & FT_LOAD_NO_RECURSE); - + /* now load the unscaled outline */ error = T1_Parse_CharStrings( &decoder, type1->charstrings [glyph_index], @@ -1279,7 +1279,7 @@ type1->num_subrs, type1->subrs, type1->subrs_len ); - + /* save new glyph tables */ T1_Done_Builder( &decoder.builder ); } @@ -1300,29 +1300,29 @@ { FT_BBox cbox; FT_Glyph_Metrics* metrics = &glyph->root.metrics; - + /* copy the _unscaled_ advance width */ metrics->horiAdvance = decoder.builder.advance.x; - + /* make up vertical metrics */ metrics->vertBearingX = 0; metrics->vertBearingY = 0; metrics->vertAdvance = 0; - + glyph->root.format = ft_glyph_format_outline; - + glyph->root.outline.flags &= ft_outline_owner; if ( size && size->root.metrics.y_ppem < 24 ) glyph->root.outline.flags |= ft_outline_high_precision; glyph->root.outline.flags |= ft_outline_reverse_fill; - + /* glyph->root.outline.second_pass = TRUE; glyph->root.outline.high_precision = ( size->root.metrics.y_ppem < 24 ); glyph->root.outline.dropout_mode = 2; */ - + if ( (load_flags & FT_LOAD_NO_SCALE) == 0 ) { /* scale the outline and the metrics */ @@ -1331,7 +1331,7 @@ T1_Vector* vec = cur->points; T1_Fixed x_scale = glyph->x_scale; T1_Fixed y_scale = glyph->y_scale; - + /* First of all, scale the points */ for ( n = cur->n_points; n > 0; n--, vec++ ) { @@ -1340,10 +1340,10 @@ } FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - + /* Then scale the metrics */ metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); - + metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, x_scale ); @@ -1351,7 +1351,7 @@ /* compute the other metrics */ FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - + /* grid fit the bounding box if necessary */ if (hinting) { diff --git a/src/type1z/t1gload.h b/src/type1z/t1gload.h index 3c2de5ebb..0ac000a62 100644 --- a/src/type1z/t1gload.h +++ b/src/type1z/t1gload.h @@ -108,10 +108,10 @@ T1_Bool path_begun; T1_Bool load_points; T1_Bool no_recurse; - + T1_Error error; /* only used for memory errors */ T1_Bool metrics_only; - + } T1_Builder; diff --git a/src/type1z/t1load.c b/src/type1z/t1load.c index b2589c238..e53e9149a 100644 --- a/src/type1z/t1load.c +++ b/src/type1z/t1load.c @@ -2,7 +2,7 @@ * * t1load.h 2.0 * - * Type1 Loader. + * Type1 Loader. * * Copyright 1996-2000 by * David Turner, Robert Wilhelm, and Werner Lemberg. @@ -32,7 +32,7 @@ * * ..... /Field .... * - * where can be a number, a boolean, a string, or an + * where can be a number, a boolean, a string, or an * array of numbers. There are a few exceptions, namely the * encoding, font name, charstrings and subrs and they are * handled with a special pattern-matching routine. @@ -72,17 +72,17 @@ typedef void (*T1_Parse_Func)( T1_Face face, T1_Loader* loader ); - typedef struct T1_KeyWord_ + typedef struct T1_KeyWord_ { const char* name; T1_Parse_Func parsing; - + } T1_KeyWord; /* some handy macros used to easily define parsing callback functions */ /* each callback is in charge of loading a value and storing it in a */ /* given field of the Type 1 face.. */ - + #define PARSE_(x) static void FT_XCAT(parse_,x) ( T1_Face face, T1_Loader* loader ) #define FIELD FACE.x @@ -98,7 +98,7 @@ FACE.x = (t)T1_ToInt(&loader->parser); \ FT_TRACE2(( "type1.parse_%s: \"%d\"\n", #x, FACE.x )); \ } - + #define PARSE_INT(s,x) PARSE_(x) \ { \ FACE.x = T1_ToInt(&loader->parser); \ @@ -111,19 +111,19 @@ FT_TRACE2(( "type1.parse_%s : \"%s\"\n", \ #x, FACE.x ? "true" : "false" )); \ } - + #define PARSE_FIXED(s,x) PARSE_(x) \ { \ FACE.x = T1_ToFixed(&loader->parser,3); \ FT_TRACE2(( "type1.parse_%s: \"%f\"\n", #x, FACE.x/65536.0 )); \ } - + #define PARSE_COORDS(s,c,m,x) PARSE_(x) \ { \ FACE.c = T1_ToCoordArray(&loader->parser, m, (T1_Short*)FACE.x ); \ FT_TRACE2(( "type1.parse_%s\n", #x )); \ } - + #define PARSE_FIXEDS(s,c,m,x) PARSE_(x) \ { \ FACE.c = T1_ToFixedArray(&loader->parser, m, (T1_Fixed*)FACE.x, 3 ); \ @@ -168,49 +168,49 @@ void skip_whitespace( T1_Parser* parser ) { T1_Byte* cur = parser->cursor; - + while ( cur < parser->limit && is_space(*cur) ) cur++; - + parser->cursor = cur; } - + static void skip_blackspace( T1_Parser* parser ) { T1_Byte* cur = parser->cursor; - + while ( cur < parser->limit && !is_space(*cur) ) cur++; - + parser->cursor = cur; } - + static int read_binary_data( T1_Parser* parser, T1_Int *size, T1_Byte* *base ) { T1_Byte* cur; T1_Byte* limit = parser->limit; - + /* the binary data has the following format */ /* */ /* "size" [white*] RD white ....... ND */ /* */ - + skip_whitespace(parser); cur = parser->cursor; - + if ( cur < limit && (T1_Byte)(*cur-'0') < 10 ) { *size = T1_ToInt(parser); - + skip_whitespace(parser); skip_blackspace(parser); /* "RD" or "-|" or something else */ - + /* there is only one whitespace char after the */ /* "RD" or "-|" token */ *base = parser->cursor + 1; - + parser->cursor += *size+1; return 1; } @@ -235,12 +235,12 @@ T1_Byte* cur; T1_Byte* cur2; T1_Byte* limit; - + skip_whitespace(parser); cur = parser->cursor; limit = parser->limit; if ( cur >= limit-1 || *cur != '/' ) return; - + cur++; cur2 = cur; while (cur2 < limit && is_alpha(*cur2)) cur2++; @@ -252,7 +252,7 @@ parser->error = error; return; } - + MEM_Copy( face->type1.font_name, cur, len ); face->type1.font_name[len] = '\0'; } @@ -265,7 +265,7 @@ T1_Parser* parser = &loader->parser; T1_Short temp[4]; T1_BBox* bbox = &face->type1.font_bbox; - + (void)T1_ToCoordArray( parser, 4, temp ); bbox->xMin = temp[0]; bbox->yMin = temp[1]; @@ -279,7 +279,7 @@ T1_Parser* parser = &loader->parser; T1_Byte* cur = parser->cursor; T1_Byte* limit = parser->limit; - + /* skip whitespace */ while (is_space(*cur)) { @@ -291,7 +291,7 @@ return; } } - + /* if we have a number, then the encoding is an array, */ /* and we must load it now */ if ((T1_Byte)(*cur - '0') < 10) @@ -301,7 +301,7 @@ T1_Table* char_table = &loader->encoding_table; FT_Memory memory = parser->memory; FT_Error error; - + /* read the number of entries in the encoding, should be 256 */ count = T1_ToInt( parser ); if (parser->error) return; @@ -315,7 +315,7 @@ parser->error = error; return; } - + /* now, we will need to read a record of the form */ /* ... charcode /charname ... for each entry in our table */ /* */ @@ -337,9 +337,9 @@ for ( ; cur < limit; ) { T1_Byte c; - + c = *cur; - + /* we stop when we encounter a 'def' */ if ( c == 'd' && cur+3 < limit ) { @@ -352,39 +352,39 @@ break; } } - + /* otherwise, we must find a number before anything else */ if ( (T1_Byte)(c-'0') < 10 ) { T1_Int charcode; - + parser->cursor = cur; charcode = T1_ToInt(parser); cur = parser->cursor; - + /* skip whitespace */ while (cur < limit && is_space(*cur)) cur++; - + if (cur < limit && *cur == '/') { /* bingo, we have an immediate name - it must be a */ /* character name */ FT_Byte* cur2 = cur+1; T1_Int len; - + while (cur2 < limit && is_alpha(*cur2)) cur2++; len = cur2-cur-1; parser->error = T1_Add_Table( char_table, charcode, cur+1, len+1 ); char_table->elements[charcode][len] = '\0'; if (parser->error) return; - + cur = cur2; } } else cur++; } - + face->type1.encoding_type = t1_encoding_array; parser->cursor = cur; } @@ -395,7 +395,7 @@ if ( cur+17 < limit && strncmp( (const char*)cur, "StandardEncoding", 16 ) == 0 ) face->type1.encoding_type = t1_encoding_standard; - + else if ( cur+15 < limit && strncmp( (const char*)cur, "ExpertEncoding", 14 ) == 0 ) face->type1.encoding_type = t1_encoding_expert; @@ -404,7 +404,7 @@ { FT_ERROR(( "type1.parse_encoding: invalid token !!\n" )); parser->error = FT_Err_Invalid_File_Format; - } + } } } @@ -417,10 +417,10 @@ FT_Memory memory = parser->memory; FT_Error error; T1_Int n; - - loader->num_subrs = T1_ToInt( parser ); + + loader->num_subrs = T1_ToInt( parser ); if (parser->error) return; - + /* initialise subrs array */ error = T1_New_Table( table, loader->num_subrs, memory ); if (error) goto Fail; @@ -429,16 +429,16 @@ /* */ /* "index" + binary data */ /* */ - + for ( n = 0; n < loader->num_subrs; n++ ) { T1_Int index, size; T1_Byte* base; - + index = T1_ToInt(parser); if (!read_binary_data(parser,&size,&base)) return; - - T1_Decrypt( base, size, 4330 ); + + T1_Decrypt( base, size, 4330 ); size -= face->type1.private_dict.lenIV; base += face->type1.private_dict.lenIV; @@ -466,21 +466,21 @@ T1_Byte* cur; T1_Byte* limit = parser->limit; T1_Int n; - - loader->num_glyphs = T1_ToInt( parser ); + + loader->num_glyphs = T1_ToInt( parser ); if (parser->error) return; - + /* initialise tables */ error = T1_New_Table( code_table, loader->num_glyphs, memory ) || T1_New_Table( name_table, loader->num_glyphs, memory ); if (error) goto Fail; - + n = 0; for ( ;; ) { T1_Int size; T1_Byte* base; - + /* the format is simple : */ /* "/glyphname" + binary data */ /* */ @@ -491,7 +491,7 @@ if (cur >= limit) break; /* we stop when we find a "def" or "end" keyword */ - if (*cur == 'd' && + if (*cur == 'd' && cur+3 < limit && cur[1] == 'e' && cur[2] == 'f' ) @@ -509,26 +509,26 @@ { T1_Byte* cur2 = cur+1; T1_Int len; - + while (cur2 < limit && is_alpha(*cur2)) cur2++; len = cur2-cur-1; - + error = T1_Add_Table( name_table, n, cur+1, len+1 ); if (error) goto Fail; - + /* add a trailing zero to the name table */ name_table->elements[n][len] = '\0'; - - parser->cursor = cur2; + + parser->cursor = cur2; if (!read_binary_data(parser,&size,&base)) return; - T1_Decrypt( base, size, 4330 ); + T1_Decrypt( base, size, 4330 ); size -= face->type1.private_dict.lenIV; base += face->type1.private_dict.lenIV; error = T1_Add_Table( code_table, n, base, size ); if (error) goto Fail; - + n++; if (n >= loader->num_glyphs) break; @@ -536,7 +536,7 @@ } loader->num_glyphs = n; return; - + Fail: parser->error = error; } @@ -586,15 +586,15 @@ T1_Long size ) { T1_Parser* parser = &loader->parser; - + parser->cursor = base; parser->limit = base + size; parser->error = 0; - + { T1_Byte* cur = base; T1_Byte* limit = cur + size; - + for ( ;cur < limit; cur++ ) { /* look for immediates */ @@ -602,21 +602,21 @@ { T1_Byte* cur2; T1_Int len; - + cur ++; cur2 = cur; while (cur2 < limit && is_alpha(*cur2)) cur2++; len = cur2-cur; - + if (len > 0 && len < 20) { /* now, compare the immediate name to the keyword table */ T1_KeyWord* keyword = (T1_KeyWord*)t1_keywords; - + for (;;) { T1_Byte* name; - + name = (T1_Byte*)keyword->name; if (!name) break; @@ -627,7 +627,7 @@ for ( n = 1; n < len; n++ ) if (cur[n] != name[n]) break; - + if (n >= len) { /* we found it - run the parsing callback !! */ @@ -654,29 +654,29 @@ void t1_init_loader( T1_Loader* loader, T1_Face face ) { UNUSED(face); - + MEM_Set( loader, 0, sizeof(*loader) ); loader->num_glyphs = 0; loader->num_chars = 0; - /* initialize the tables - simply set their 'init' field to 0 */ + /* initialize the tables - simply set their 'init' field to 0 */ loader->encoding_table.init = 0; loader->charstrings.init = 0; loader->glyph_names.init = 0; loader->subrs.init = 0; } - + static void t1_done_loader( T1_Loader* loader ) { T1_Parser* parser = &loader->parser; - + /* finalize tables */ T1_Release_Table( &loader->encoding_table ); T1_Release_Table( &loader->charstrings ); T1_Release_Table( &loader->glyph_names ); T1_Release_Table( &loader->subrs ); - + /* finalize parser */ T1_Done_Parser( parser ); } @@ -693,47 +693,47 @@ /* default lenIV */ type1->private_dict.lenIV = 4; - + parser = &loader.parser; error = T1_New_Parser( parser, face->root.stream, face->root.memory ); if (error) goto Exit; error = parse_dict( face, &loader, parser->base_dict, parser->base_len ); if (error) goto Exit; - + error = T1_Get_Private_Dict( parser ); if (error) goto Exit; - + error = parse_dict( face, &loader, parser->private_dict, parser->private_len ); - if (error) goto Exit; + if (error) goto Exit; /* now, propagate the subrs, charstrings and glyphnames tables */ /* to the Type1 data */ type1->num_glyphs = loader.num_glyphs; - + if ( !loader.subrs.init ) { FT_ERROR(( "T1.Open_Face: no subrs array in face !!\n" )); error = FT_Err_Invalid_File_Format; } - + if ( !loader.charstrings.init ) { FT_ERROR(( "T1.Open_Face: no charstrings array in face !!\n" )); error = FT_Err_Invalid_File_Format; } - + loader.subrs.init = 0; type1->num_subrs = loader.num_subrs; type1->subrs_block = loader.subrs.block; type1->subrs = loader.subrs.elements; type1->subrs_len = loader.subrs.lengths; - + loader.charstrings.init = 0; type1->charstrings_block = loader.charstrings.block; type1->charstrings = loader.charstrings.elements; type1->charstrings_len = loader.charstrings.lengths; - + /* we copy the glyph names "block" and "elements" fields */ /* but the "lengths" field must be released later.. */ type1->glyph_names_block = loader.glyph_names.block; @@ -753,16 +753,16 @@ /* table, lookup the index of the glyph having the same name */ /* the index is then stored in type1.encoding.char_index, and */ /* a the name to type1.encoding.char_name */ - + min_char = +32000; max_char = -32000; - + charcode = 0; for ( ; charcode < loader.encoding_table.num_elems; charcode++ ) { type1->encoding.char_index[charcode] = 0; type1->encoding.char_name [charcode] = ".notdef"; - + char_name = loader.encoding_table.elements[charcode]; if (char_name) for ( index = 0; index < type1->num_glyphs; index++ ) @@ -773,7 +773,7 @@ { type1->encoding.char_index[charcode] = index; type1->encoding.char_name [charcode] = (char*)glyph_name; - + if (charcode < min_char) min_char = charcode; if (charcode > max_char) max_char = charcode; break; @@ -784,8 +784,8 @@ type1->encoding.code_last = max_char; type1->encoding.num_chars = loader.num_chars; } - + Exit: t1_done_loader( &loader ); return error; - } + } diff --git a/src/type1z/t1load.h b/src/type1z/t1load.h index 093096c86..629e94356 100644 --- a/src/type1z/t1load.h +++ b/src/type1z/t1load.h @@ -2,7 +2,7 @@ * * t1load.h 2.0 * - * Type1 Loader. + * Type1 Loader. * * Copyright 1996-2000 by * David Turner, Robert Wilhelm, and Werner Lemberg. @@ -32,14 +32,14 @@ T1_Int num_chars; /* number of characters in encoding */ T1_Table encoding_table; /* T1_Table used to store the */ /* encoding character names */ - - T1_Int num_glyphs; + + T1_Int num_glyphs; T1_Table glyph_names; T1_Table charstrings; - + T1_Int num_subrs; T1_Table subrs; - + } T1_Loader; LOCAL_DEF diff --git a/src/type1z/t1objs.c b/src/type1z/t1objs.c index 2d25408c0..3a5c053bb 100644 --- a/src/type1z/t1objs.c +++ b/src/type1z/t1objs.c @@ -2,7 +2,7 @@ * * t1objs.c 1.0 * - * Type1 Objects manager. + * Type1 Objects manager. * * Copyright 1996-1998 by * David Turner, Robert Wilhelm, and Werner Lemberg. @@ -97,7 +97,7 @@ * Error code. * ******************************************************************/ - + LOCAL_FUNC T1_Error T1_Reset_Size( T1_Size size ) { @@ -124,7 +124,7 @@ * face :: typeless pointer to the face object to destroy * * - * Error code. + * Error code. * ******************************************************************/ @@ -138,10 +138,10 @@ { memory = face->root.memory; - /* release font info strings */ + /* release font info strings */ { T1_FontInfo* info = &type1->font_info; - + FREE( info->version ); FREE( info->notice ); FREE( info->full_name ); @@ -149,21 +149,21 @@ FREE( info->weight ); } - /* release top dictionary */ + /* release top dictionary */ FREE( type1->charstrings_len ); FREE( type1->charstrings ); FREE( type1->glyph_names ); FREE( type1->subrs ); FREE( type1->subrs_len ); - + FREE( type1->subrs_block ); FREE( type1->charstrings_block ); FREE( type1->glyph_names_block ); FREE( type1->encoding.char_index ); FREE( type1->font_name ); - + #ifndef T1_CONFIG_OPTION_NO_AFM /* release afm data if present */ if ( face->afm_data) @@ -217,7 +217,7 @@ { /* look-up the PSNames driver */ FT_Driver psnames_driver; - + psnames_driver = FT_Get_Driver( face->root.driver->library, "psnames" ); if (psnames_driver) face->psnames = (PSNames_Interface*) @@ -246,15 +246,15 @@ /* Now set up root face fields */ { FT_Face root = (FT_Face)&face->root; - + root->num_glyphs = face->type1.num_glyphs; root->num_charmaps = 1; - + root->face_index = face_index; root->face_flags = FT_FACE_FLAG_SCALABLE; - + root->face_flags |= FT_FACE_FLAG_HORIZONTAL; - + if ( face->type1.font_info.is_fixed_pitch ) root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; @@ -267,13 +267,13 @@ { char* full = face->type1.font_info.full_name; char* family = root->family_name; - + while ( *family && *full == *family ) { family++; full++; } - + root->style_name = ( *full == ' ' ? full+1 : "Regular" ); } else @@ -285,17 +285,17 @@ root->style_name = "Regular"; } } - + /* no embedded bitmap support */ root->num_fixed_sizes = 0; root->available_sizes = 0; - + root->bbox = face->type1.font_bbox; root->units_per_EM = 1000; root->ascender = (T1_Short)face->type1.font_bbox.yMax; root->descender = -(T1_Short)face->type1.font_bbox.yMin; root->height = ((root->ascender + root->descender)*12)/10; - + /* now compute the maximum advance width */ root->max_advance_width = face->type1.private_dict.standard_width; @@ -315,10 +315,10 @@ } root->max_advance_height = root->height; - + root->underline_position = face->type1.font_info.underline_position; root->underline_thickness = face->type1.font_info.underline_thickness; - + root->max_points = 0; root->max_contours = 0; } @@ -349,7 +349,7 @@ charmap->encoding_id = 1; charmap++; } - + /* simply clear the error in case of failure (which really) */ /* means that out of memory or no unicode glyph names */ error = 0; @@ -359,25 +359,25 @@ /* now, support either the standard, expert, or custom encodings */ charmap->face = (FT_Face)face; charmap->platform_id = 7; /* a new platform id for Adobe fonts ?? */ - + switch (face->type1.encoding_type) { case t1_encoding_standard: charmap->encoding = ft_encoding_adobe_standard; charmap->encoding_id = 0; break; - + case t1_encoding_expert: charmap->encoding = ft_encoding_adobe_expert; charmap->encoding_id = 1; break; - + default: charmap->encoding = ft_encoding_adobe_custom; charmap->encoding_id = 2; break; } - + root->charmaps = face->charmaps; root->num_charmaps = charmap - face->charmaprecs + 1; face->charmaps[0] = &face->charmaprecs[0]; @@ -396,7 +396,7 @@ * * Input : _glyph typeless pointer to the glyph record to destroy * - * Output : Error code. + * Output : Error code. * ******************************************************************/ @@ -420,7 +420,7 @@ * Description : The glyph object constructor. * * Input : glyph glyph record to build. - * face the glyph's parent face. + * face the glyph's parent face. * * Output : Error code. * diff --git a/src/type1z/t1objs.h b/src/type1z/t1objs.h index 15f1e99a3..7da67139e 100644 --- a/src/type1z/t1objs.h +++ b/src/type1z/t1objs.h @@ -2,7 +2,7 @@ * * t1objs.h 1.0 * - * Type1 objects definition. + * Type1 objects definition. * * Copyright 1996-1999 by * David Turner, Robert Wilhelm, and Werner Lemberg. @@ -82,7 +82,7 @@ /* NOW BEGINS THE TYPE1 SPECIFIC STUFF .............................. */ /* */ /**************************************************************************/ - + /***************************************************/ /* */ @@ -90,7 +90,7 @@ /* */ /* Type 1 size record.. */ /* */ - + typedef struct T1_SizeRec_ { FT_SizeRec root; @@ -109,14 +109,14 @@ /* */ /* TrueDoc glyph record.. */ /* */ - + typedef struct T1_GlyphSlotRec_ { FT_GlyphSlotRec root; T1_Bool hint; T1_Bool scaled; - + T1_Int max_points; T1_Int max_contours; @@ -250,7 +250,7 @@ * * glyph :: handle to glyph slot object * - * Error code. + * Error code. * ******************************************************************/ diff --git a/src/type1z/t1parse.c b/src/type1z/t1parse.c index 42743c389..b7d9506f9 100644 --- a/src/type1z/t1parse.c +++ b/src/type1z/t1parse.c @@ -27,7 +27,7 @@ * See "t1load.c" to see how data is loaded from the font file * ******************************************************************/ - + #include #include #include @@ -75,7 +75,7 @@ Exit: if (error) FREE(table->elements); - + return error; } @@ -105,7 +105,7 @@ T1_Long delta = table->block - old_base; T1_Byte** offset = table->elements; T1_Byte** limit = offset + table->max_elems; - + if (delta) for ( ; offset < limit; offset++ ) { @@ -113,7 +113,7 @@ offset[0] += delta; } } - + static T1_Error reallocate_t1_table( T1_Table* table, T1_Int new_size ) @@ -121,17 +121,17 @@ FT_Memory memory = table->memory; T1_Byte* old_base = table->block; T1_Error error; - + /* realloc the base block */ if ( REALLOC( table->block, table->capacity, new_size ) ) return error; - + table->capacity = new_size; - + /* shift all offsets when needed */ if (old_base) shift_elements( table, old_base ); - + return T1_Err_Ok; } @@ -198,10 +198,10 @@ old_base = table->block; if (!old_base) return; - + (void)REALLOC( table->block, table->capacity, table->cursor ); table->capacity = table->cursor; - + if (old_base != table->block) shift_elements( table, old_base ); } @@ -211,7 +211,7 @@ void T1_Release_Table( T1_Table* table ) { FT_Memory memory = table->memory; - + if (table->init == (FT_Long)0xdeadbeef) { FREE( table->block ); @@ -228,20 +228,20 @@ T1_Long result = 0; T1_Byte* cur = *cursor; T1_Byte c, d; - + for (; cur < limit; cur++) { c = *cur; d = (T1_Byte)(c - '0'); if (d < 10) break; - + if ( c=='-' ) { cur++; break; } } - + if (cur < limit) { do @@ -249,16 +249,16 @@ d = (T1_Byte)(cur[0] - '0'); if (d >= 10) break; - + result = result*10 + d; cur++; - + } while (cur < limit); - + if (c == '-') result = -result; } - + *cursor = cur; return result; } @@ -273,26 +273,26 @@ T1_Long num, divider, result; T1_Int sign = 0; T1_Byte d; - + if (cur >= limit) return 0; - + /* first of all, read the integer part */ result = t1_toint( &cur, limit ) << 16; num = 0; divider = 1; - + if (result < 0) { sign = 1; result = -result; } if (cur >= limit) goto Exit; - + /* read decimal part, if any */ if (*cur == '.' && cur+1 < limit) { cur++; - + for (;;) { d = (T1_Byte)(*cur - '0'); @@ -307,14 +307,14 @@ if (cur >= limit) break; } } - + /* read exponent, if any */ if ( cur+1 < limit && (*cur == 'e' || *cur == 'E')) { cur++; power_ten += t1_toint( &cur, limit ); } - + Exit: /* raise to power of ten if needed */ while (power_ten > 0) @@ -323,7 +323,7 @@ num = num*10; power_ten--; } - + while (power_ten < 0) { result = result/10; @@ -336,7 +336,7 @@ if (sign) result = -result; - + *cursor = cur; return result; } @@ -351,19 +351,19 @@ T1_Byte* cur = *cursor; T1_Int count = 0; T1_Byte c, ender; - + if (cur >= limit) goto Exit; - + /* check for the beginning of an array. If not, only one number will be read */ c = *cur; ender = 0; - + if (c == '[') ender = ']'; - + if (c == '{') ender = '}'; - + if (ender) cur++; @@ -375,21 +375,21 @@ { c = *cur; if ( c != ' ' && c != '\t' ) break; - + cur++; if (cur >= limit) goto Exit; } - + if (count >= max_coords || c == ender) break; - + coords[count] = (T1_Short)(t1_tofixed(&cur,limit,0) >> 16); count++; - + if (!ender) break; } - + Exit: *cursor = cur; return count; @@ -399,7 +399,7 @@ static T1_Int t1_tofixedarray( T1_Byte* *cursor, - T1_Byte* limit, + T1_Byte* limit, T1_Int max_values, T1_Fixed* values, T1_Int power_ten ) @@ -407,19 +407,19 @@ T1_Byte* cur = *cursor; T1_Int count = 0; T1_Byte c, ender; - + if (cur >= limit) goto Exit; - + /* check for the beginning of an array. If not, only one number will be read */ c = *cur; ender = 0; - + if (c == '[') ender = ']'; - + if (c == '{') ender = '}'; - + if (ender) cur++; @@ -431,21 +431,21 @@ { c = *cur; if ( c != ' ' && c != '\t' ) break; - + cur++; if (cur >= limit) goto Exit; } if (count >= max_values || c == ender) break; - + values[count] = t1_tofixed(&cur,limit,power_ten); count++; - + if (!ender) break; } - + Exit: *cursor = cur; return count; @@ -472,18 +472,18 @@ while ( cur < limit && (*cur == ' ' || *cur == '\t')) cur++; if (cur+1 >= limit) return 0; - + if (*cur == '(') cur++; /* skip the opening parenthesis, if there is one */ - + *cursor = cur; count = 0; - + /* then, count its length */ for ( ; cur < limit; cur++ ) { if (*cur == '(') count++; - + else if (*cur == ')') { count--; @@ -492,14 +492,14 @@ } } - len = cur - *cursor; + len = cur - *cursor; if (cur >= limit || ALLOC(result,len+1)) return 0; - + /* now copy the string */ MEM_Copy( result, *cursor, len ); result[len] = '\0'; *cursor = cur; - return result; + return result; } static @@ -507,7 +507,7 @@ { T1_Byte* cur = *cursor; T1_Bool result = 0; - + /* return 1 if we find a "true", 0 otherwise */ if ( cur+3 < limit && cur[0] == 't' && @@ -583,21 +583,21 @@ FT_Error read_pfb_tag( FT_Stream stream, T1_UShort *tag, T1_Long* size ) { FT_Error error; - + if (READ_UShort(*tag)) goto Exit; if (*tag == 0x8001 || *tag == 0x8002) { FT_Long asize; - + if (READ_ULong(asize)) goto Exit; - + /* swap between big and little endianness */ *size = ((asize & 0xFF000000) >> 24) | ((asize & 0x00FF0000) >> 8 ) | ((asize & 0x0000FF00) << 8 ) | ((asize & 0x000000FF) << 24); } - + Exit: return error; } @@ -612,7 +612,7 @@ FT_Error error; T1_UShort tag; T1_Long size; - + parser->stream = stream; parser->memory = memory; parser->base_len = 0; @@ -622,10 +622,10 @@ parser->in_pfb = 0; parser->in_memory = 0; parser->single_block = 0; - + parser->cursor = 0; parser->limit = 0; - + /******************************************************************/ /* */ /* Here's a short summary of what is going on : */ @@ -641,12 +641,12 @@ /* parser->in_pfb is set when we are in a binary (".pfb") font */ /* parser->in_memory is set when we have a memory stream. */ /* */ - + /* try to compute the size of the base dictionary */ /* look for a Postscript binary file tag, i.e 0x8001 */ if ( FILE_Seek(0L) ) goto Exit; - + error = read_pfb_tag( stream, &tag, &size ); if (error) goto Exit; @@ -662,14 +662,14 @@ /* now, try to load the "size" bytes of the "base" dictionary we */ /* found previously */ - + /* if it's a memory-based resource, set up pointers */ if ( !stream->read ) { parser->base_dict = (T1_Byte*)stream->base + stream->pos; parser->base_len = size; parser->in_memory = 1; - + /* check that the "size" field is valid */ if ( FILE_Skip(size) ) goto Exit; } @@ -681,7 +681,7 @@ goto Exit; parser->base_len = size; } - + /* Now check font format, we must see a '%!PS-AdobeFont-1' */ /* or a '%!FontType' */ { @@ -764,7 +764,7 @@ FT_Memory memory = parser->memory; FT_Error error = 0; T1_Long size; - + if (parser->in_pfb) { /* in the case of the PFB format, the private dictionary can be */ @@ -775,15 +775,15 @@ T1_UShort tag; T1_Long size; - parser->private_len = 0; + parser->private_len = 0; for (;;) { error = read_pfb_tag(stream, &tag, &size); if (error) goto Fail; - + if (tag != 0x8002) break; - + parser->private_len += size; if ( FILE_Skip(size) ) @@ -824,9 +824,9 @@ /* first of all, look at the "eexec" keyword */ FT_Byte* cur = parser->base_dict; - FT_Byte* limit = cur + parser->base_len; + FT_Byte* limit = cur + parser->base_len; FT_Byte c; - + for (;;) { c = cur[0]; @@ -836,12 +836,12 @@ cur[3] == 'e' && cur[4] == 'c' ) { cur += 6; /* we skip the newling after the "eexec" */ - + /* XXX: Some fonts use DOS-linefeeds, i.e. \r\n, we need to skip */ /* the extra \n when we find it.. */ if (cur[0] == '\n') cur++; - + break; } } @@ -853,13 +853,13 @@ goto Exit; } } - + /* now determine wether where to write the _encrypted_ binary private */ /* dictionary. We overwrite the base dictionary for disk-based resources */ /* and allocate a new block otherwise */ - - size = parser->base_len - (cur-parser->base_dict); - + + size = parser->base_len - (cur-parser->base_dict); + if ( parser->in_memory ) { /* note that we allocate one more byte to put a terminating '0' */ @@ -868,13 +868,13 @@ } else { - parser->single_block = 1; + parser->single_block = 1; parser->private_dict = parser->base_dict; parser->private_len = size; parser->base_dict = 0; parser->base_len = 0; } - + /* now determine wether the private dictionary is encoded in binary */ /* or hexadecimal ASCII format.. */ /* and decode it accordingly */ @@ -890,40 +890,40 @@ MEM_Copy( parser->private_dict, cur, size ); } else - { + { /* ASCII hexadecimal encoding.. This blows goats !!.. */ - + T1_Byte* write; T1_Int count; write = parser->private_dict; count = 0; - + for ( ;cur < limit; cur++) { int hex1; - + /* check for newline */ if (cur[0] == '\r' || cur[0] == '\n') continue; - + /* exit if we have a non-hexadecimal digit that isn't a newline */ hex1 = hexa_value(cur[0]); if (hex1 < 0 || cur+1 >= limit) break; - + /* otherwise, store byte */ *write++ = (hex1 << 4) | hexa_value(cur[1]); count++; cur++; } - + /* put a safeguard */ parser->private_len = write - parser->private_dict; *write++ = 0; } } - + /* we now decrypt the encoded binary private dictionary */ T1_Decrypt( parser->private_dict, parser->private_len, 55665 ); parser->cursor = parser->private_dict; @@ -933,4 +933,4 @@ Exit: return error; } - + diff --git a/src/type1z/t1parse.h b/src/type1z/t1parse.h index 686691862..6482d52e1 100644 --- a/src/type1z/t1parse.h +++ b/src/type1z/t1parse.h @@ -116,13 +116,13 @@ { FT_Stream stream; FT_Memory memory; - + T1_Byte* base_dict; T1_Int base_len; - + T1_Byte* private_dict; T1_Int private_len; - + T1_Byte in_pfb; T1_Byte in_memory; T1_Byte single_block; @@ -130,7 +130,7 @@ T1_Byte* cursor; T1_Byte* limit; T1_Error error; - + } T1_Parser; diff --git a/src/type1z/t1tokens.h b/src/type1z/t1tokens.h index 0de85beec..2ef03b41f 100644 --- a/src/type1z/t1tokens.h +++ b/src/type1z/t1tokens.h @@ -26,37 +26,37 @@ PARSE_STRING("FullName",full_name) PARSE_STRING("FamilyName",family_name) PARSE_STRING("Weight",weight) - + PARSE_INT("ItalicAngle",italic_angle) PARSE_BOOL("isFixedPitch",is_fixed_pitch) PARSE_NUM("UnderlinePosition",underline_position,T1_Short) PARSE_NUM("UnderlineThickness",underline_thickness,T1_UShort) - /* define the private dict parsing callbacks */ - + /* define the private dict parsing callbacks */ + #undef FACE #define FACE (face->type1.private_dict) PARSE_INT("UniqueID",unique_id) PARSE_INT("lenIV",lenIV) - + PARSE_COORDS( "BlueValues", num_blues, 14, blue_values) PARSE_COORDS( "OtherBlues", num_other_blues, 10, other_blues) - + PARSE_COORDS( "FamilyBlues", num_family_blues, 14, family_blues) PARSE_COORDS( "FamilyOtherBlues", num_family_other_blues, 10, family_other_blues) - + PARSE_FIXED( "BlueScale", blue_scale) PARSE_INT( "BlueShift", blue_shift) - + PARSE_INT( "BlueFuzz", blue_fuzz) PARSE_COORDS2( "StdHW", 1, standard_width ) PARSE_COORDS2( "StdVW", 1, standard_height ) - + PARSE_COORDS( "StemSnapH", num_snap_widths, 12, stem_snap_widths ) PARSE_COORDS( "StemSnapV", num_snap_heights, 12, stem_snap_heights ) - + PARSE_INT( "LanguageGroup", language_group ) PARSE_INT( "password", password ) PARSE_COORDS2( "MinFeature", 2, min_feature ) @@ -66,7 +66,7 @@ #undef FACE #define FACE (face->type1) - + /* PARSE_STRING( "FontName", font_name ) -- handled by special routine */ PARSE_NUM( "PaintType", paint_type, T1_Byte ) PARSE_NUM( "FontType", font_type, T1_Byte )