[xorg-commit-diffs] xc/extras/freetype2/src/sfnt rules.mk, 1.1,
1.1.4.1 sfdriver.c, 1.1.4.2, 1.1.4.3 sfobjs.c, 1.1.4.2,
1.1.4.3 ttcmap0.c, 1.1.4.2, 1.1.4.3 ttload.c, 1.1.4.2,
1.1.4.3 ttpost.c, 1.1.4.1, 1.1.4.2 ttsbit.c, 1.1.4.1, 1.1.4.2
Egbert Eich
xorg-commit at pdx.freedesktop.org
Thu Apr 15 03:14:45 PDT 2004
- Previous message: [xorg-commit-diffs] xc/extras/freetype2/src/raster ftraster.c,
1.1.4.1, 1.1.4.2 ftrend1.c, 1.1.4.1, 1.1.4.2 rules.mk, 1.1, 1.1.4.1
- Next message: [xorg-commit-diffs] xc/extras/freetype2/src/smooth ftgrays.c,
1.1.4.1, 1.1.4.2 ftsmooth.c, 1.1.4.1, 1.1.4.2 rules.mk, 1.1, 1.1.4.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Committed by: eich
Update of /cvs/xorg/xc/extras/freetype2/src/sfnt
In directory pdx:/home/eich/tstbuild/xc/extras/freetype2/src/sfnt
Modified Files:
Tag: XORG-CURRENT
rules.mk sfdriver.c sfobjs.c ttcmap0.c ttload.c ttpost.c
ttsbit.c
Log Message:
2004-04-15 Egbert Eich <eich at freedesktop.org>
Merged changes from RELEASE-1 branch
Index: rules.mk
===================================================================
RCS file: /cvs/xorg/xc/extras/freetype2/src/sfnt/rules.mk,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- a/rules.mk 14 Nov 2003 16:48:24 -0000 1.1
+++ b/rules.mk 15 Apr 2004 10:14:41 -0000 1.1.4.1
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2000, 2002 by
+# Copyright 1996-2000, 2002, 2003 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -15,29 +15,28 @@
# SFNT driver directory
#
-SFNT_DIR := $(SRC_)sfnt
-SFNT_DIR_ := $(SFNT_DIR)$(SEP)
+SFNT_DIR := $(SRC_DIR)/sfnt
# compilation flags for the driver
#
-SFNT_COMPILE := $(FT_COMPILE) $I$(SFNT_DIR)
+SFNT_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SFNT_DIR))
# SFNT driver sources (i.e., C files)
#
-SFNT_DRV_SRC := $(SFNT_DIR_)ttload.c \
- $(SFNT_DIR_)ttcmap.c \
- $(SFNT_DIR_)ttcmap0.c \
- $(SFNT_DIR_)ttsbit.c \
- $(SFNT_DIR_)ttpost.c \
- $(SFNT_DIR_)sfobjs.c \
- $(SFNT_DIR_)sfdriver.c
+SFNT_DRV_SRC := $(SFNT_DIR)/ttload.c \
+ $(SFNT_DIR)/ttcmap.c \
+ $(SFNT_DIR)/ttcmap0.c \
+ $(SFNT_DIR)/ttsbit.c \
+ $(SFNT_DIR)/ttpost.c \
+ $(SFNT_DIR)/sfobjs.c \
+ $(SFNT_DIR)/sfdriver.c
# SFNT driver headers
#
SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) \
- $(SFNT_DIR_)sferrors.h
+ $(SFNT_DIR)/sferrors.h
# SFNT driver object(s)
@@ -45,25 +44,25 @@
# SFNT_DRV_OBJ_M is used during `multi' builds.
# SFNT_DRV_OBJ_S is used during `single' builds.
#
-SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR_)%.c=$(OBJ_)%.$O)
-SFNT_DRV_OBJ_S := $(OBJ_)sfnt.$O
+SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR)/%.c=$(OBJ_DIR)/%.$O)
+SFNT_DRV_OBJ_S := $(OBJ_DIR)/sfnt.$O
# SFNT driver source file for single build
#
-SFNT_DRV_SRC_S := $(SFNT_DIR_)sfnt.c
+SFNT_DRV_SRC_S := $(SFNT_DIR)/sfnt.c
# SFNT driver - single object
#
$(SFNT_DRV_OBJ_S): $(SFNT_DRV_SRC_S) $(SFNT_DRV_SRC) \
$(FREETYPE_H) $(SFNT_DRV_H)
- $(SFNT_COMPILE) $T$@ $(SFNT_DRV_SRC_S)
+ $(SFNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(SFNT_DRV_SRC_S))
# SFNT driver - multiple objects
#
-$(OBJ_)%.$O: $(SFNT_DIR_)%.c $(FREETYPE_H) $(SFNT_DRV_H)
- $(SFNT_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(SFNT_DIR)/%.c $(FREETYPE_H) $(SFNT_DRV_H)
+ $(SFNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
# update main driver object lists
Index: sfdriver.c
===================================================================
RCS file: /cvs/xorg/xc/extras/freetype2/src/sfnt/sfdriver.c,v
retrieving revision 1.1.4.2
retrieving revision 1.1.4.3
diff -u -d -r1.1.4.2 -r1.1.4.3
--- a/sfdriver.c 5 Mar 2004 13:38:43 -0000 1.1.4.2
+++ b/sfdriver.c 15 Apr 2004 10:14:41 -0000 1.1.4.3
@@ -4,7 +4,7 @@
/* */
/* High-level SFNT driver interface (body). */
/* */
-/* Copyright 1996-2001, 2002 by */
+/* Copyright 1996-2001, 2002, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -14,7 +14,6 @@
/* understand and accept it fully. */
/* */
/***************************************************************************/
-/* $XFree86: xc/extras/freetype2/src/sfnt/sfdriver.c,v 1.2 2003/05/27 22:26:22 tsi Exp $ */
#include <ft2build.h>
#include FT_INTERNAL_SFNT_H
@@ -25,6 +24,8 @@
#include "ttcmap.h"
#include "sfobjs.h"
+#include "sferrors.h"
+
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
#include "ttsbit.h"
#endif
@@ -33,6 +34,15 @@
#include "ttpost.h"
#endif
+#include FT_SERVICE_GLYPH_DICT_H
+#include FT_SERVICE_POSTSCRIPT_NAME_H
+#include FT_SERVICE_SFNT_H
+
+
+ /*
+ * SFNT TABLE SERVICE
+ *
+ */
static void*
get_sfnt_table( TT_Face face,
@@ -79,11 +89,22 @@
}
+ static const FT_Service_SFNT_TableRec sfnt_service_sfnt_table =
+ {
+ (FT_SFNT_TableLoadFunc)tt_face_load_any,
+ (FT_SFNT_TableGetFunc) get_sfnt_table
+ };
+
+
#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
+ /*
+ * GLYPH DICT SERVICE
+ *
+ */
static FT_Error
- get_sfnt_glyph_name( TT_Face face,
+ sfnt_get_glyph_name( TT_Face face,
FT_UInt glyph_index,
FT_Pointer buffer,
FT_UInt buffer_max )
@@ -109,16 +130,30 @@
}
+ static const FT_Service_GlyphDictRec sfnt_service_glyph_dict =
+ {
+ (FT_GlyphDict_GetNameFunc) sfnt_get_glyph_name,
+ (FT_GlyphDict_NameIndexFunc)NULL
+ };
+
+#endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */
+
+
+ /*
+ * POSTSCRIPT NAME SERVICE
+ *
+ */
+
static const char*
- get_sfnt_postscript_name( TT_Face face )
+ sfnt_get_ps_name( TT_Face face )
{
FT_Int n, found_win, found_apple;
const char* result = NULL;
/* shouldn't happen, but just in case to avoid memory leaks */
- if ( face->root.internal->postscript_name )
- return face->root.internal->postscript_name;
+ if ( face->postscript_name )
+ return face->postscript_name;
/* scan the name table to see whether we have a Postscript name here, */
/* either in Macintosh or Windows platform encodings */
@@ -149,7 +184,9 @@
FT_Memory memory = face->root.memory;
TT_NameEntryRec* name = face->name_table.names + found_win;
FT_UInt len = name->stringLength / 2;
- FT_Error error;
+ FT_Error error = SFNT_Err_Ok;
+
+ FT_UNUSED( error );
if ( !FT_ALLOC( result, name->stringLength + 1 ) )
@@ -181,9 +218,6 @@
FT_FRAME_EXIT();
}
-
- (void)error; /* Muffle compiler */
-
goto Exit;
}
@@ -192,7 +226,9 @@
FT_Memory memory = face->root.memory;
TT_NameEntryRec* name = face->name_table.names + found_apple;
FT_UInt len = name->stringLength;
- FT_Error error;
+ FT_Error error = SFNT_Err_Ok;
+
+ FT_UNUSED( error );
if ( !FT_ALLOC( result, len + 1 ) )
@@ -211,17 +247,35 @@
}
((char*)result)[len] = '\0';
}
-
- (void)error; /* Muffle compiler */
}
Exit:
- face->root.internal->postscript_name = result;
+ face->postscript_name = result;
return result;
}
+ static const FT_Service_PsFontNameRec sfnt_service_ps_name =
+ {
+ (FT_PsName_GetFunc)sfnt_get_ps_name
+ };
-#endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */
+
+
+ /*
+ * SERVICE LIST
+ *
+ */
+
+ static const FT_ServiceDescRec sfnt_services[] =
+ {
+ { FT_SERVICE_ID_SFNT_TABLE, &sfnt_service_sfnt_table },
+ { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name },
+#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
+ { FT_SERVICE_ID_GLYPH_DICT, &sfnt_service_glyph_dict },
+#endif
+
+ { NULL, NULL }
+ };
FT_CALLBACK_DEF( FT_Module_Interface )
@@ -236,15 +290,7 @@
if ( ft_strcmp( module_interface, "load_sfnt" ) == 0 )
return (FT_Module_Interface)tt_face_load_any;
-#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
- if ( ft_strcmp( module_interface, "glyph_name" ) == 0 )
- return (FT_Module_Interface)get_sfnt_glyph_name;
-#endif
-
- if ( ft_strcmp( module_interface, "postscript_name" ) == 0 )
- return (FT_Module_Interface)get_sfnt_postscript_name;
-
- return 0;
+ return ft_service_list_lookup( sfnt_services, module_interface );
}
Index: sfobjs.c
===================================================================
RCS file: /cvs/xorg/xc/extras/freetype2/src/sfnt/sfobjs.c,v
retrieving revision 1.1.4.2
retrieving revision 1.1.4.3
diff -u -d -r1.1.4.2 -r1.1.4.3
--- a/sfobjs.c 5 Mar 2004 13:38:43 -0000 1.1.4.2
+++ b/sfobjs.c 15 Apr 2004 10:14:41 -0000 1.1.4.3
@@ -4,7 +4,7 @@
/* */
/* SFNT object management (base). */
/* */
-/* Copyright 1996-2001, 2002 by */
+/* Copyright 1996-2001, 2002, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -14,17 +14,15 @@
/* understand and accept it fully. */
/* */
/***************************************************************************/
-/* $XFree86: xc/extras/freetype2/src/sfnt/sfobjs.c,v 1.2 2003/05/27 22:26:22 tsi Exp $ */
#include <ft2build.h>
#include "sfobjs.h"
#include "ttload.h"
#include "ttcmap0.h"
#include FT_INTERNAL_SFNT_H
-#include FT_INTERNAL_POSTSCRIPT_NAMES_H
#include FT_TRUETYPE_IDS_H
#include FT_TRUETYPE_TAGS_H
-
+#include FT_SERVICE_POSTSCRIPT_CMAPS_H
#include "sferrors.h"
@@ -258,9 +256,11 @@
{
if ( rec->string == NULL )
{
- FT_Error error;
+ FT_Error error = SFNT_Err_Ok;
FT_Stream stream = face->name_table.stream;
+ FT_UNUSED( error );
+
if ( FT_NEW_ARRAY ( rec->string, rec->stringLength ) ||
FT_STREAM_SEEK( rec->stringOffset ) ||
@@ -271,8 +271,6 @@
result = NULL;
goto Exit;
}
-
- (void)error; /* Muffle compiler */
}
result = convert( rec, memory );
@@ -307,11 +305,11 @@
{ TT_PLATFORM_MICROSOFT, TT_MS_ID_SYMBOL_CS, FT_ENCODING_MS_SYMBOL },
{ TT_PLATFORM_MICROSOFT, TT_MS_ID_UCS_4, FT_ENCODING_UNICODE },
{ TT_PLATFORM_MICROSOFT, TT_MS_ID_UNICODE_CS, FT_ENCODING_UNICODE },
- { TT_PLATFORM_MICROSOFT, TT_MS_ID_SJIS, FT_ENCODING_MS_SJIS },
- { TT_PLATFORM_MICROSOFT, TT_MS_ID_GB2312, FT_ENCODING_MS_GB2312 },
- { TT_PLATFORM_MICROSOFT, TT_MS_ID_BIG_5, FT_ENCODING_MS_BIG5 },
- { TT_PLATFORM_MICROSOFT, TT_MS_ID_WANSUNG, FT_ENCODING_MS_WANSUNG },
- { TT_PLATFORM_MICROSOFT, TT_MS_ID_JOHAB, FT_ENCODING_MS_JOHAB }
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_SJIS, FT_ENCODING_SJIS },
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_GB2312, FT_ENCODING_GB2312 },
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_BIG_5, FT_ENCODING_BIG5 },
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_WANSUNG, FT_ENCODING_WANSUNG },
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_JOHAB, FT_ENCODING_JOHAB }
};
const TEncoding *cur, *limit;
@@ -365,11 +363,7 @@
face->goto_table = sfnt->goto_table;
}
- if ( !face->psnames )
- {
- face->psnames = (PSNames_Service)
- FT_Get_Module_Interface( library, "psnames" );
- }
+ FT_FACE_FIND_GLOBAL_SERVICE( face, face->psnames, POSTSCRIPT_CMAPS );
/* check that we have a valid TrueType file */
error = sfnt->load_sfnt_header( face, stream, face_index, &sfnt_header );
@@ -558,7 +552,7 @@
/* Compute style flags. */
/* */
flags = 0;
- if ( has_outline == TRUE && face->os2.version != 0xFFFF )
+ if ( has_outline == TRUE && face->os2.version != 0xFFFFU )
{
/* we have an OS/2 table; use the `fsSelection' field */
if ( face->os2.fsSelection & 1 )
@@ -633,18 +627,30 @@
root->face_flags |= FT_FACE_FLAG_VERTICAL;
}
#endif
- root->num_fixed_sizes = face->num_sbit_strikes;
+ root->num_fixed_sizes = (FT_Int)face->num_sbit_strikes;
if ( FT_NEW_ARRAY( root->available_sizes, face->num_sbit_strikes ) )
goto Exit;
for ( n = 0 ; n < face->num_sbit_strikes ; n++ )
{
- root->available_sizes[n].width =
- face->sbit_strikes[n].x_ppem;
+ FT_Bitmap_Size* bsize = root->available_sizes + n;
+ TT_SBit_Strike strike = face->sbit_strikes + n;
+ FT_UShort fupem = face->header.Units_Per_EM;
+ FT_Short height = (FT_Short)( face->horizontal.Ascender -
+ face->horizontal.Descender +
+ face->horizontal.Line_Gap );
+ FT_Short avg = face->os2.xAvgCharWidth;
- root->available_sizes[n].height =
- face->sbit_strikes[n].y_ppem;
+
+ /* assume 72dpi */
+ bsize->height =
+ (FT_Short)( ( height * strike->y_ppem + fupem/2 ) / fupem );
+ bsize->width =
+ (FT_Short)( ( avg * strike->y_ppem + fupem/2 ) / fupem );
+ bsize->size = strike->y_ppem << 6;
+ bsize->x_ppem = strike->x_ppem << 6;
+ bsize->y_ppem = strike->y_ppem << 6;
}
}
else
@@ -663,7 +669,7 @@
if ( has_outline == TRUE )
{
/* XXX What about if outline header is missing */
- /* (e.g. sfnt wrapped outline)? */
+ /* (e.g. sfnt wrapped bitmap)? */
root->bbox.xMin = face->header.xMin;
root->bbox.yMin = face->header.yMin;
root->bbox.xMax = face->header.xMax;
@@ -708,16 +714,18 @@
root->height = (FT_Short)( root->ascender - root->descender +
face->horizontal.Line_Gap );
+#if 0
/* if the line_gap is 0, we add an extra 15% to the text height -- */
/* this computation is based on various versions of Times New Roman */
if ( face->horizontal.Line_Gap == 0 )
root->height = (FT_Short)( ( root->height * 115 + 50 ) / 100 );
+#endif
#if 0
/* some fonts have the OS/2 "sTypoAscender", "sTypoDescender" & */
/* "sTypoLineGap" fields set to 0, like ARIALNB.TTF */
- if ( face->os2.version != 0xFFFF && root->ascender )
+ if ( face->os2.version != 0xFFFFU && root->ascender )
{
FT_Int height;
Index: ttcmap0.c
===================================================================
RCS file: /cvs/xorg/xc/extras/freetype2/src/sfnt/ttcmap0.c,v
retrieving revision 1.1.4.2
retrieving revision 1.1.4.3
diff -u -d -r1.1.4.2 -r1.1.4.3
--- a/ttcmap0.c 5 Mar 2004 13:38:44 -0000 1.1.4.2
+++ b/ttcmap0.c 15 Apr 2004 10:14:41 -0000 1.1.4.3
@@ -4,7 +4,7 @@
/* */
/* TrueType new character mapping table (cmap) support (body). */
/* */
-/* Copyright 2002 by */
+/* Copyright 2002, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -14,7 +14,6 @@
/* understand and accept it fully. */
/* */
/***************************************************************************/
-/* $XFree86: xc/extras/freetype2/src/sfnt/ttcmap0.c,v 1.3 2003/05/27 22:26:22 tsi Exp $ */
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
@@ -701,9 +700,18 @@
p += offset; /* start of glyph id array */
/* check that we point within the glyph ids table only */
- if ( p < glyph_ids ||
- p + ( end - start + 1 ) * 2 > table + length )
- FT_INVALID_DATA;
+ if ( valid->level >= FT_VALIDATE_TIGHT )
+ {
+ if ( p < glyph_ids ||
+ p + ( end - start + 1 ) * 2 > table + length )
+ FT_INVALID_DATA;
+ }
+ else
+ {
+ if ( p < glyph_ids ||
+ p + ( end - start + 1 ) * 2 > valid->limit )
+ FT_INVALID_DATA;
+ }
/* check glyph indices within the segment range */
if ( valid->level >= FT_VALIDATE_TIGHT )
@@ -780,10 +788,8 @@
if ( code < start )
max = mid;
-
else if ( code > end )
min = mid + 1;
-
else
{
/* we found the segment */
@@ -872,24 +878,117 @@
{
FT_Byte* table = cmap->data;
FT_UInt32 result = 0;
- FT_UInt32 char_code = *pchar_code + 1;
FT_UInt gindex = 0;
+ FT_UInt32 char_code = *pchar_code;
FT_Byte* p;
- FT_Byte* q;
FT_UInt code, num_segs2;
- if ( char_code >= 0x10000UL )
+ if ( char_code >= 0xFFFFUL )
goto Exit;
- code = (FT_UInt)char_code;
+ code = (FT_UInt)char_code + 1;
p = table + 6;
num_segs2 = TT_PEEK_USHORT(p) & -2; /* ensure even-ness */
+#if 1
+
for (;;)
{
- FT_UInt offset, n;
+ /* Some fonts have more than 170 segments in their charmaps! */
+ /* We changed this function to use a more efficient binary */
+ /* search */
+ FT_UInt offset;
FT_Int delta;
+ FT_UInt min = 0;
+ FT_UInt max = num_segs2 >> 1;
+ FT_UInt mid, start, end;
+ FT_UInt hi;
+
+
+ /* we begin by finding the segment which end is
+ closer to our code point */
+ hi = max + 1;
+ while ( min < max )
+ {
+ mid = ( min + max ) >> 1;
+ p = table + 14 + mid * 2;
+ end = TT_PEEK_USHORT( p );
+
+ if ( end < code )
+ min = mid + 1;
+ else
+ {
+ hi = mid;
+ max = mid;
+ }
+ }
+
+ if ( hi > max )
+ {
+ /* the point is behind the last segment;
+ we will exit right now */
+ goto Exit;
+ }
+
+ p = table + 14 + hi * 2;
+ end = TT_PEEK_USHORT( p );
+
+ p += 2 + num_segs2;
+ start = TT_PEEK_USHORT( p );
+
+ if ( code < start )
+ code = start;
+
+ p += num_segs2;
+ delta = TT_PEEK_USHORT( p );
+
+ p += num_segs2;
+ offset = TT_PEEK_USHORT( p );
+
+ if ( offset != 0 && offset != 0xFFFFU )
+ {
+ /* parse the glyph ids array for non-zero index */
+ p += offset + ( code - start ) * 2;
+ while ( code <= end )
+ {
+ gindex = TT_NEXT_USHORT( p );
+ if ( gindex != 0 )
+ {
+ gindex = (FT_UInt)( gindex + delta ) & 0xFFFFU;
+ if ( gindex != 0 )
+ {
+ result = code;
+ goto Exit;
+ }
+ }
+ code++;
+ }
+ }
+ else if ( offset == 0xFFFFU )
+ {
+ /* an offset of 0xFFFF means an empty glyph in certain fonts! */
+ code = end + 1;
+ }
+ else /* offset == 0 */
+ {
+ gindex = (FT_UInt)( code + delta ) & 0xFFFFU;
+ if ( gindex != 0 )
+ {
+ result = code;
+ goto Exit;
+ }
+ code++;
+ }
+ }
+
+#else /* old code -- kept for reference */
+
+ for ( ;; )
+ {
+ FT_UInt offset, n;
+ FT_Int delta;
+ FT_Byte* q;
p = table + 14; /* ends table */
@@ -943,14 +1042,14 @@
goto Exit;
}
}
-
/* loop to next trial charcode */
if ( code >= 0xFFFFU )
break;
code++;
}
- return (FT_UInt)result;
+
+#endif /* !1 */
Exit:
*pchar_code = result;
@@ -1018,8 +1117,7 @@
p = table + 2;
length = TT_NEXT_USHORT( p );
- p = table + 6; /* skip language */
- (void) TT_NEXT_USHORT( p );
+ p = table + 8; /* skip language and start index */
count = TT_NEXT_USHORT( p );
if ( table + length > valid->limit || length < 10 + count * 2 )
@@ -1397,8 +1495,7 @@
FT_INVALID_TOO_SHORT;
length = TT_NEXT_ULONG( p );
- p = table + 12;
- (void) TT_NEXT_ULONG( p );
+ p = table + 16;
count = TT_NEXT_ULONG( p );
if ( table + length > valid->limit || length < 20 + count * 2 )
@@ -1464,9 +1561,7 @@
{
gindex = TT_NEXT_USHORT( p );
if ( gindex != 0 )
- {
break;
- }
char_code++;
}
@@ -1711,7 +1806,7 @@
if ( p + 4 > limit )
- return FT_Err_Invalid_Table;
+ return SFNT_Err_Invalid_Table;
/* only recognize format 0 */
if ( TT_NEXT_USHORT( p ) != 0 )
@@ -1719,7 +1814,7 @@
p -= 2;
FT_ERROR(( "tt_face_build_cmaps: unsupported `cmap' table format = %d\n",
TT_PEEK_USHORT( p ) ));
- return FT_Err_Invalid_Table;
+ return SFNT_Err_Invalid_Table;
}
num_cmaps = TT_NEXT_USHORT( p );
@@ -1739,7 +1834,7 @@
if ( offset && table + offset + 2 < limit )
{
FT_Byte* cmap = table + offset;
- FT_UInt format = TT_PEEK_USHORT( cmap );
+ volatile FT_UInt format = TT_PEEK_USHORT( cmap );
const TT_CMap_Class* volatile pclazz = tt_cmap_classes;
TT_CMap_Class clazz;
Index: ttload.c
===================================================================
RCS file: /cvs/xorg/xc/extras/freetype2/src/sfnt/ttload.c,v
retrieving revision 1.1.4.2
retrieving revision 1.1.4.3
diff -u -d -r1.1.4.2 -r1.1.4.3
--- a/ttload.c 5 Mar 2004 13:38:44 -0000 1.1.4.2
+++ b/ttload.c 15 Apr 2004 10:14:41 -0000 1.1.4.3
@@ -5,7 +5,7 @@
/* Load the basic TrueType tables, i.e., tables that can be either in */
/* TTF or OTF fonts (body). */
/* */
-/* Copyright 1996-2001, 2002 by */
+/* Copyright 1996-2001, 2002, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -15,7 +15,6 @@
/* understand and accept it fully. */
/* */
/***************************************************************************/
-/* $XFree86$ */
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
@@ -179,16 +178,12 @@
/* if 'num_tables' is 0, read the table count from the file */
if ( num_tables == 0 )
{
- FT_ULong format_tag;
-
if ( FT_STREAM_SEEK( offset ) ||
- FT_READ_ULONG ( format_tag ) ||
+ FT_STREAM_SKIP( 4 ) ||
FT_READ_USHORT( num_tables ) ||
FT_STREAM_SKIP( 6 ) )
goto Bad_Format;
- (void) format_tag;
-
if ( offset + 12 + num_tables*16 > stream->size )
goto Bad_Format;
}
@@ -214,13 +209,13 @@
has_head = 1;
- /* the table length should be 0x36, but certain font tools
- * make it 0x38, so we will just check that it is greater.
- *
- * note that according to the specification,
- * the table must be padded to 32-bit lengths, but this doesn't
- * apply to the value of its "Length" field !!
- */
+ /* The table length should be 0x36, but certain font tools
+ * make it 0x38, so we will just check that it is greater.
+ *
+ * Note that according to the specification,
+ * the table must be padded to 32-bit lengths, but this doesn't
+ * apply to the value of its "Length" field!
+ */
if ( table.Length < 0x36 ||
FT_STREAM_SEEK( table.Offset + 12 ) ||
FT_READ_ULONG( magic ) ||
@@ -239,7 +234,7 @@
return error;
Bad_Format:
- error = FT_Err_Unknown_File_Format;
+ error = SFNT_Err_Unknown_File_Format;
goto Exit;
}
@@ -841,16 +836,16 @@
{
#ifdef FT_CONFIG_OPTION_INCREMENTAL
- /* If this is an incrementally loaded font and there are */
- /* overriding metrics tolerate a missing 'hmtx' table. */
+ /* If this is an incrementally loaded font and there are */
+ /* overriding metrics tolerate a missing 'hmtx' table. */
if ( face->root.internal->incremental_interface &&
face->root.internal->incremental_interface->funcs->
- get_glyph_metrics )
+ get_glyph_metrics )
{
face->horizontal.number_Of_HMetrics = 0;
error = SFNT_Err_Ok;
goto Exit;
- }
+ }
#endif
FT_ERROR(( " no horizontal metrics in file!\n" ));
@@ -1780,6 +1775,7 @@
FT_Memory memory = stream->memory;
TT_Hdmx hdmx = &face->hdmx;
+ FT_Short num_records;
FT_Long num_glyphs;
FT_Long record_size;
@@ -1797,7 +1793,7 @@
goto Exit;
hdmx->version = FT_GET_USHORT();
- hdmx->num_records = FT_GET_SHORT();
+ num_records = FT_GET_SHORT();
record_size = FT_GET_LONG();
FT_FRAME_EXIT();
@@ -1806,9 +1802,10 @@
if ( hdmx->version != 0 )
goto Exit;
- if ( FT_NEW_ARRAY( hdmx->records, hdmx->num_records ) )
+ if ( FT_NEW_ARRAY( hdmx->records, num_records ) )
goto Exit;
+ hdmx->num_records = num_records;
num_glyphs = face->root.num_glyphs;
record_size -= num_glyphs + 2;
Index: ttpost.c
===================================================================
RCS file: /cvs/xorg/xc/extras/freetype2/src/sfnt/ttpost.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- a/ttpost.c 26 Nov 2003 22:48:28 -0000 1.1.4.1
+++ b/ttpost.c 15 Apr 2004 10:14:41 -0000 1.1.4.2
@@ -5,7 +5,7 @@
/* Postcript name table processing for TrueType and OpenType fonts */
/* (body). */
/* */
-/* Copyright 1996-2001, 2002 by */
+/* Copyright 1996-2001, 2002, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -50,7 +50,7 @@
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
-#include FT_INTERNAL_POSTSCRIPT_NAMES_H
+#include FT_SERVICE_POSTSCRIPT_CMAPS_H
#define MAC_NAME( x ) ( (FT_String*)psnames->macintosh_name( x ) )
@@ -441,7 +441,7 @@
FT_Fixed format;
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
- PSNames_Service psnames;
+ FT_Service_PsCMaps psnames;
#endif
@@ -452,7 +452,7 @@
return SFNT_Err_Invalid_Glyph_Index;
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
- psnames = (PSNames_Service)face->psnames;
+ psnames = (FT_Service_PsCMaps)face->psnames;
if ( !psnames )
return SFNT_Err_Unimplemented_Feature;
#endif
@@ -510,7 +510,7 @@
*PSname = MAC_NAME( idx );
}
}
-
+
/* nothing to do for format == 0x00030000L */
End:
Index: ttsbit.c
===================================================================
RCS file: /cvs/xorg/xc/extras/freetype2/src/sfnt/ttsbit.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- a/ttsbit.c 26 Nov 2003 22:48:28 -0000 1.1.4.1
+++ b/ttsbit.c 15 Apr 2004 10:14:42 -0000 1.1.4.2
@@ -4,7 +4,7 @@
/* */
/* TrueType and OpenType embedded bitmap support (body). */
/* */
-/* Copyright 1996-2001, 2002 by */
+/* Copyright 1996-2001, 2002, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -635,7 +635,7 @@
for ( i = 0; i < face->num_sbit_strikes; i++ )
{
- if ( ( face->sbit_strikes[i].y_ppem == y_ppem ) &&
+ if ( ( face->sbit_strikes[i].y_ppem == y_ppem ) &&
( ( x_ppem == 0 ) ||
( face->sbit_strikes[i].x_ppem == x_ppem ) ) )
{
@@ -1232,9 +1232,9 @@
if ( error )
goto Exit;
- /* this function is recursive. At the top-level call, we */
+ /* This function is recursive. At the top-level call, we */
/* compute the dimensions of the higher-level glyph to */
- /* allocate the final pixmap buffer */
+ /* allocate the final pixmap buffer. */
if ( depth == 0 )
{
FT_Long size;
@@ -1355,7 +1355,7 @@
y_offset + comp->y_offset,
stream,
&elem_metrics,
- depth+1 );
+ depth + 1 );
if ( error )
goto Fail_Memory;
}
- Previous message: [xorg-commit-diffs] xc/extras/freetype2/src/raster ftraster.c,
1.1.4.1, 1.1.4.2 ftrend1.c, 1.1.4.1, 1.1.4.2 rules.mk, 1.1, 1.1.4.1
- Next message: [xorg-commit-diffs] xc/extras/freetype2/src/smooth ftgrays.c,
1.1.4.1, 1.1.4.2 ftsmooth.c, 1.1.4.1, 1.1.4.2 rules.mk, 1.1, 1.1.4.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the xorg-commit-diffs
mailing list