summaryrefslogtreecommitdiffstats
path: root/print
diff options
context:
space:
mode:
Diffstat (limited to 'print')
-rw-r--r--print/freetype2/Makefile66
-rw-r--r--print/freetype2/distinfo3
-rw-r--r--print/freetype2/files/patch-aa14
-rw-r--r--print/freetype2/files/patch-builds::unix::configure13
-rw-r--r--print/freetype2/files/patch-builds::unix::freetype-config.in17
-rw-r--r--print/freetype2/files/patch-src_pcf_pcfdrivr.c50
-rw-r--r--print/freetype2/files/patch-src_pcf_pcfread.c455
-rw-r--r--print/freetype2/pkg-descr10
-rw-r--r--print/freetype2/pkg-plist53
9 files changed, 681 insertions, 0 deletions
diff --git a/print/freetype2/Makefile b/print/freetype2/Makefile
new file mode 100644
index 000000000..e6cb9f8bc
--- /dev/null
+++ b/print/freetype2/Makefile
@@ -0,0 +1,66 @@
+# New ports collection makefile for: freetype
+# Date created: January 24, 1998
+# Whom: jseger@FreeBSD.org
+#
+# $FreeBSD: ports/print/freetype2/Makefile,v 1.72 2006/05/16 05:07:44 mezz Exp $
+#
+
+PORTNAME= freetype2
+PORTVERSION= 2.2.1
+CATEGORIES= print
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:S,%SUBDIR%,freetype,} \
+ http://sunsite.cnlab-switch.ch/ftp/mirror/freetype/%SUBDIR%/ \
+ http://www.funet.fi/pub/mirrors/ftp.freetype.org/%SUBDIR%/ \
+ http://ftp.sunet.se/pub/text-processing/freetype/%SUBDIR%/ \
+ ${MASTER_SITE_RINGSERVER:S,%SUBDIR%,graphics/freetype/&,} \
+ ftp://ftp.freetype.org/freetype/%SUBDIR%/
+MASTER_SITE_SUBDIR= ${PORTNAME}
+DISTNAME= ${PORTNAME:S/2//}-${PORTVERSION}
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= A free and portable TrueType font rendering engine
+
+USE_BZIP2= yes
+USE_GMAKE= yes
+MAKE_ENV= TOP=""
+INSTALLS_SHLIB= yes
+GNU_CONFIGURE= yes
+USE_GNOME= gnometarget pkgconfig
+LIBTOOLFILES= builds/unix/configure
+CONFIGURE_ARGS= --disable-nls
+CONFIGURE_WRKSRC= ${WRKSRC}/builds/unix
+
+.if !defined(WITHOUT_TTF_BYTECODE_ENABLED)
+CFLAGS+= -DTT_CONFIG_OPTION_BYTECODE_INTERPRETER
+.endif
+
+.if defined(WITH_CJK)
+#PATCH_SITES+= http://lwj-hinet.myweb.hinet.net/ \
+ ftp://local-distfiles.freebsd.org.cn/pub/china-ports/hamigua/ \
+ http://bsdchat.com/dist/firefly-cjk-patchset/
+#PATCHFILES+= cjk-freetype-2.1.10-20051219.patch.gz
+#PATCH_DIST_STRIP+= -p1
+.endif
+
+pre-everything::
+.if !defined(WITHOUT_TTF_BYTECODE_ENABLED)
+ @${ECHO_MSG}
+ @${ECHO_MSG} "You may want not to compile a bytecode interpreter into the"
+ @${ECHO_MSG} "TrueType driver. Without this you will only compile the code"
+ @${ECHO_MSG} "necessary to load TrueType glyphs without hinting."
+ @${ECHO_MSG}
+ @${ECHO_MSG} "Hit Ctrl-C now and use \"make WITHOUT_TTF_BYTECODE_ENABLED=yes\""
+ @${ECHO_MSG}
+ @${ECHO_MSG} "Note that there are important patent issues related to the"
+ @${ECHO_MSG} "use of the interpreter."
+ @${ECHO_MSG}
+.endif
+
+pre-patch:
+ @${REINPLACE_CMD} -e 's|[(]libdir[)]/pkgconfig|(prefix)/libdata/pkgconfig|g' \
+ ${WRKSRC}/builds/unix/install.mk
+
+post-configure:
+ @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} setup)
+
+.include <bsd.port.mk>
diff --git a/print/freetype2/distinfo b/print/freetype2/distinfo
new file mode 100644
index 000000000..208832af0
--- /dev/null
+++ b/print/freetype2/distinfo
@@ -0,0 +1,3 @@
+MD5 (freetype-2.2.1.tar.bz2) = 5b2f827082c544392a7701f7423f0781
+SHA256 (freetype-2.2.1.tar.bz2) = 0e8eb40392752b306d3a3de21f9fa479d53c17bd774b8051771cb258e162e006
+SIZE (freetype-2.2.1.tar.bz2) = 1212258
diff --git a/print/freetype2/files/patch-aa b/print/freetype2/files/patch-aa
new file mode 100644
index 000000000..87863d444
--- /dev/null
+++ b/print/freetype2/files/patch-aa
@@ -0,0 +1,14 @@
+--- builds/unix/detect.mk.orig Tue Aug 22 17:53:59 2006
++++ builds/unix/detect.mk Tue Aug 22 17:54:09 2006
+@@ -78,9 +78,9 @@ ifeq ($(PLATFORM),unix)
+ ifdef must_configure
+ ifneq ($(have_Makefile),)
+ # we are building FT2 not in the src tree
+- $(TOP_DIR)/builds/unix/configure $(CFG)
++# $(TOP_DIR)/builds/unix/configure $(CFG)
+ else
+- cd builds/unix; ./configure $(CFG)
++# cd builds/unix; ./configure $(CFG)
+ endif
+ endif
+
diff --git a/print/freetype2/files/patch-builds::unix::configure b/print/freetype2/files/patch-builds::unix::configure
new file mode 100644
index 000000000..f9bc13eef
--- /dev/null
+++ b/print/freetype2/files/patch-builds::unix::configure
@@ -0,0 +1,13 @@
+
+$FreeBSD: ports/print/freetype2/files/patch-builds::unix::configure,v 1.3 2005/03/10 00:52:03 marcus Exp $
+
+--- builds/unix/configure.orig Mon Apr 22 19:50:27 2002
++++ builds/unix/configure Fri Jun 21 15:48:06 2002
+@@ -8654,6 +8654,7 @@
+
+ # This can be used to rebuild libtool when needed
+ LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
++$ac_aux_dir/ltconfig $LIBTOOL_DEPS
+
+ # Always use our own libtool.
+ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
diff --git a/print/freetype2/files/patch-builds::unix::freetype-config.in b/print/freetype2/files/patch-builds::unix::freetype-config.in
new file mode 100644
index 000000000..ca50202de
--- /dev/null
+++ b/print/freetype2/files/patch-builds::unix::freetype-config.in
@@ -0,0 +1,17 @@
+--- builds/unix/freetype-config.in.orig Sun Jan 9 21:18:15 2005
++++ builds/unix/freetype-config.in Sun Jan 9 21:18:57 2005
+@@ -105,12 +105,8 @@
+ fi
+
+ if test "$echo_cflags" = "yes" ; then
+- cflags="-I$includedir/freetype2"
+- if test "$includedir" != "/usr/include" ; then
+- echo $cflags -I$includedir
+- else
+- echo $cflags
+- fi
++ cflags="-I@includedir@/freetype2 -I@includedir@"
++ echo $cflags
+ fi
+
+ if test "$echo_libs" = "yes" ; then
diff --git a/print/freetype2/files/patch-src_pcf_pcfdrivr.c b/print/freetype2/files/patch-src_pcf_pcfdrivr.c
new file mode 100644
index 000000000..01758d8a9
--- /dev/null
+++ b/print/freetype2/files/patch-src_pcf_pcfdrivr.c
@@ -0,0 +1,50 @@
+--- src/pcf/pcfdrivr.c.orig 2006-02-17 07:40:36.000000000 +0100
++++ src/pcf/pcfdrivr.c
+@@ -203,19 +203,23 @@ THE SOFTWARE.
+
+ /* free properties */
+ {
+- PCF_Property prop = face->properties;
++ PCF_Property prop;
+ FT_Int i;
+
+
+- for ( i = 0; i < face->nprops; i++ )
++ if ( face->properties )
+ {
+- prop = &face->properties[i];
++ for ( i = 0; i < face->nprops; i++ )
++ {
++ prop = &face->properties[i];
+
+- FT_FREE( prop->name );
+- if ( prop->isString )
+- FT_FREE( prop->value.atom );
++ if ( prop ) {
++ FT_FREE( prop->name );
++ if ( prop->isString )
++ FT_FREE( prop->value.atom );
++ }
++ }
+ }
+-
+ FT_FREE( face->properties );
+ }
+
+@@ -258,6 +262,8 @@ THE SOFTWARE.
+ FT_Error error2;
+
+
++ PCF_Face_Done( pcfface );
++
+ /* this didn't work, try gzip support! */
+ error2 = FT_Stream_OpenGzip( &face->gzip_stream, stream );
+ if ( FT_ERROR_BASE( error2 ) == FT_Err_Unimplemented_Feature )
+@@ -357,6 +363,7 @@ THE SOFTWARE.
+
+ Fail:
+ FT_TRACE2(( "[not a valid PCF file]\n" ));
++ PCF_Face_Done( pcfface );
+ error = PCF_Err_Unknown_File_Format; /* error */
+ goto Exit;
+ }
diff --git a/print/freetype2/files/patch-src_pcf_pcfread.c b/print/freetype2/files/patch-src_pcf_pcfread.c
new file mode 100644
index 000000000..c9117f206
--- /dev/null
+++ b/print/freetype2/files/patch-src_pcf_pcfread.c
@@ -0,0 +1,455 @@
+--- src/pcf/pcfread.c.orig 2006-01-23 17:35:18.000000000 +0100
++++ src/pcf/pcfread.c
+@@ -102,7 +102,8 @@ THE SOFTWARE.
+ return PCF_Err_Cannot_Open_Resource;
+
+ if ( toc->version != PCF_FILE_VERSION ||
+- toc->count > FT_ARRAY_MAX( face->toc.tables ) )
++ toc->count > FT_ARRAY_MAX( face->toc.tables ) ||
++ toc->count == 0 )
+ return PCF_Err_Invalid_File_Format;
+
+ if ( FT_NEW_ARRAY( face->toc.tables, toc->count ) )
+@@ -116,6 +117,41 @@ THE SOFTWARE.
+ tables++;
+ }
+
++ /* Sort tables and check for overlaps. Because they are almost */
++ /* always ordered already, an in-place bubble sort with simultaneous */
++ /* boundary checking seems appropriate. */
++ tables = face->toc.tables;
++
++ for ( n = 0; n < toc->count - 1; n++ )
++ {
++ FT_UInt i, have_change;
++
++
++ have_change = 0;
++
++ for ( i = 0; i < toc->count - 1 - n; i++ )
++ {
++ PCF_TableRec tmp;
++
++
++ if ( tables[i].offset > tables[i + 1].offset )
++ {
++ tmp = tables[i];
++ tables[i] = tables[i + 1];
++ tables[i + 1] = tmp;
++
++ have_change = 1;
++ }
++
++ if ( ( tables[i].size > tables[i + 1].offset ) ||
++ ( tables[i].offset > tables[i + 1].offset - tables[i].size ) )
++ return PCF_Err_Invalid_Offset;
++ }
++
++ if ( !have_change )
++ break;
++ }
++
+ #if defined( FT_DEBUG_LEVEL_TRACE )
+
+ {
+@@ -130,7 +166,8 @@ THE SOFTWARE.
+ tables = face->toc.tables;
+ for ( i = 0; i < toc->count; i++ )
+ {
+- for( j = 0; j < sizeof ( tableNames ) / sizeof ( tableNames[0] ); j++ )
++ for ( j = 0; j < sizeof ( tableNames ) / sizeof ( tableNames[0] );
++ j++ )
+ if ( tables[i].type == (FT_UInt)( 1 << j ) )
+ name = tableNames[j];
+
+@@ -153,13 +190,15 @@ THE SOFTWARE.
+ }
+
+
++#define PCF_METRIC_SIZE 12
++
+ static
+ const FT_Frame_Field pcf_metric_header[] =
+ {
+ #undef FT_STRUCTURE
+ #define FT_STRUCTURE PCF_MetricRec
+
+- FT_FRAME_START( 12 ),
++ FT_FRAME_START( PCF_METRIC_SIZE ),
+ FT_FRAME_SHORT_LE( leftSideBearing ),
+ FT_FRAME_SHORT_LE( rightSideBearing ),
+ FT_FRAME_SHORT_LE( characterWidth ),
+@@ -176,7 +215,7 @@ THE SOFTWARE.
+ #undef FT_STRUCTURE
+ #define FT_STRUCTURE PCF_MetricRec
+
+- FT_FRAME_START( 12 ),
++ FT_FRAME_START( PCF_METRIC_SIZE ),
+ FT_FRAME_SHORT( leftSideBearing ),
+ FT_FRAME_SHORT( rightSideBearing ),
+ FT_FRAME_SHORT( characterWidth ),
+@@ -187,13 +226,15 @@ THE SOFTWARE.
+ };
+
+
++#define PCF_COMPRESSED_METRIC_SIZE 5
++
+ static
+ const FT_Frame_Field pcf_compressed_metric_header[] =
+ {
+ #undef FT_STRUCTURE
+ #define FT_STRUCTURE PCF_Compressed_MetricRec
+
+- FT_FRAME_START( 5 ),
++ FT_FRAME_START( PCF_COMPRESSED_METRIC_SIZE ),
+ FT_FRAME_BYTE( leftSideBearing ),
+ FT_FRAME_BYTE( rightSideBearing ),
+ FT_FRAME_BYTE( characterWidth ),
+@@ -221,7 +262,7 @@ THE SOFTWARE.
+ ? pcf_metric_msb_header
+ : pcf_metric_header;
+
+- /* the following sets 'error' but doesn't return in case of failure */
++ /* the following sets `error' but doesn't return in case of failure */
+ (void)FT_STREAM_READ_FIELDS( fields, metric );
+ }
+ else
+@@ -261,17 +302,19 @@ THE SOFTWARE.
+ for ( i = 0; i < ntables; i++ )
+ if ( tables[i].type == type )
+ {
+- if ( stream->pos > tables[i].offset ) {
++ if ( stream->pos > tables[i].offset )
++ {
+ error = PCF_Err_Invalid_Stream_Skip;
+ goto Fail;
+ }
+
+- if ( FT_STREAM_SKIP( tables[i].offset - stream->pos ) ) {
++ if ( FT_STREAM_SKIP( tables[i].offset - stream->pos ) )
++ {
+ error = PCF_Err_Invalid_Stream_Skip;
+ goto Fail;
+ }
+
+- *asize = tables[i].size; /* unused - to be removed */
++ *asize = tables[i].size;
+ *aformat = tables[i].format;
+
+ return PCF_Err_Ok;
+@@ -298,13 +341,15 @@ THE SOFTWARE.
+ }
+
+
++#define PCF_PROPERTY_SIZE 9
++
+ static
+ const FT_Frame_Field pcf_property_header[] =
+ {
+ #undef FT_STRUCTURE
+ #define FT_STRUCTURE PCF_ParsePropertyRec
+
+- FT_FRAME_START( 9 ),
++ FT_FRAME_START( PCF_PROPERTY_SIZE ),
+ FT_FRAME_LONG_LE( name ),
+ FT_FRAME_BYTE ( isString ),
+ FT_FRAME_LONG_LE( value ),
+@@ -318,7 +363,7 @@ THE SOFTWARE.
+ #undef FT_STRUCTURE
+ #define FT_STRUCTURE PCF_ParsePropertyRec
+
+- FT_FRAME_START( 9 ),
++ FT_FRAME_START( PCF_PROPERTY_SIZE ),
+ FT_FRAME_LONG( name ),
+ FT_FRAME_BYTE( isString ),
+ FT_FRAME_LONG( value ),
+@@ -353,8 +398,8 @@ THE SOFTWARE.
+ PCF_Face face )
+ {
+ PCF_ParseProperty props = 0;
+- PCF_Property properties = 0;
+- FT_Int nprops, i;
++ PCF_Property properties;
++ FT_UInt nprops, i;
+ FT_ULong format, size;
+ FT_Error error;
+ FT_Memory memory = FT_FACE(face)->memory;
+@@ -390,6 +435,15 @@ THE SOFTWARE.
+
+ FT_TRACE4(( " nprop = %d\n", nprops ));
+
++ /* rough estimate */
++ if ( nprops > size / PCF_PROPERTY_SIZE )
++ {
++ error = PCF_Err_Invalid_Table;
++ goto Bail;
++ }
++
++ face->nprops = nprops;
++
+ if ( FT_NEW_ARRAY( props, nprops ) )
+ goto Bail;
+
+@@ -427,6 +481,13 @@ THE SOFTWARE.
+
+ FT_TRACE4(( " string_size = %ld\n", string_size ));
+
++ /* rough estimate */
++ if ( string_size > size - nprops * PCF_PROPERTY_SIZE )
++ {
++ error = PCF_Err_Invalid_Table;
++ goto Bail;
++ }
++
+ if ( FT_NEW_ARRAY( strings, string_size ) )
+ goto Bail;
+
+@@ -437,13 +498,24 @@ THE SOFTWARE.
+ if ( FT_NEW_ARRAY( properties, nprops ) )
+ goto Bail;
+
++ face->properties = properties;
++
+ for ( i = 0; i < nprops; i++ )
+ {
+- /* XXX: make atom */
++ FT_Long name_offset = props[i].name;
++
++
++ if ( ( name_offset < 0 ) ||
++ ( (FT_ULong)name_offset > string_size ) )
++ {
++ error = PCF_Err_Invalid_Offset;
++ goto Bail;
++ }
++
+ if ( FT_NEW_ARRAY( properties[i].name,
+- ft_strlen( strings + props[i].name ) + 1 ) )
++ ft_strlen( strings + name_offset ) + 1 ) )
+ goto Bail;
+- ft_strcpy( properties[i].name, strings + props[i].name );
++ ft_strcpy( properties[i].name, strings + name_offset );
+
+ FT_TRACE4(( " %s:", properties[i].name ));
+
+@@ -451,8 +523,18 @@ THE SOFTWARE.
+
+ if ( props[i].isString )
+ {
++ FT_Long value_offset = props[i].value;
++
++
++ if ( ( value_offset < 0 ) ||
++ ( (FT_ULong)value_offset > string_size ) )
++ {
++ error = PCF_Err_Invalid_Offset;
++ goto Bail;
++ }
++
+ if ( FT_NEW_ARRAY( properties[i].value.atom,
+- ft_strlen( strings + props[i].value ) + 1 ) )
++ ft_strlen( strings + value_offset ) + 1 ) )
+ goto Bail;
+ ft_strcpy( properties[i].value.atom, strings + props[i].value );
+
+@@ -466,14 +548,8 @@ THE SOFTWARE.
+ }
+ }
+
+- face->properties = properties;
+- face->nprops = nprops;
+-
+- FT_FREE( props );
+- FT_FREE( strings );
+-
+- return PCF_Err_Ok;
+-
++ error = PCF_Err_Ok;
++
+ Bail:
+ FT_FREE( props );
+ FT_FREE( strings );
+@@ -488,11 +564,9 @@ THE SOFTWARE.
+ {
+ FT_Error error = PCF_Err_Ok;
+ FT_Memory memory = FT_FACE(face)->memory;
+- FT_ULong format = 0;
+- FT_ULong size = 0;
++ FT_ULong format, size;
+ PCF_Metric metrics = 0;
+- int i;
+- int nmetrics = -1;
++ FT_ULong nmetrics, i;
+
+
+ error = pcf_seek_to_table_type( stream,
+@@ -504,7 +578,8 @@ THE SOFTWARE.
+ if ( error )
+ return error;
+
+- error = FT_READ_ULONG_LE( format );
++ if ( FT_READ_ULONG_LE( format ) )
++ goto Bail;
+
+ if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) &&
+ !PCF_FORMAT_MATCH( format, PCF_COMPRESSED_METRICS ) )
+@@ -524,16 +599,30 @@ THE SOFTWARE.
+ else
+ (void)FT_READ_USHORT_LE( nmetrics );
+ }
+- if ( error || nmetrics == -1 )
++ if ( error )
+ return PCF_Err_Invalid_File_Format;
+
+ face->nmetrics = nmetrics;
+
++ FT_TRACE4(( "pcf_get_metrics:\n" ));
++
++ FT_TRACE4(( " number of metrics: %d\n", nmetrics ));
++
++ /* rough estimate */
++ if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )
++ {
++ if ( nmetrics > size / PCF_METRIC_SIZE )
++ return PCF_Err_Invalid_Table;
++ }
++ else
++ {
++ if ( nmetrics > size / PCF_COMPRESSED_METRIC_SIZE )
++ return PCF_Err_Invalid_Table;
++ }
++
+ if ( FT_NEW_ARRAY( face->metrics, nmetrics ) )
+ return PCF_Err_Out_Of_Memory;
+
+- FT_TRACE4(( "pcf_get_metrics:\n" ));
+-
+ metrics = face->metrics;
+ for ( i = 0; i < nmetrics; i++ )
+ {
+@@ -541,7 +630,7 @@ THE SOFTWARE.
+
+ metrics[i].bits = 0;
+
+- FT_TRACE4(( " idx %d: width=%d, "
++ FT_TRACE5(( " idx %d: width=%d, "
+ "lsb=%d, rsb=%d, ascent=%d, descent=%d, swidth=%d\n",
+ i,
+ ( metrics + i )->characterWidth,
+@@ -557,6 +646,8 @@ THE SOFTWARE.
+
+ if ( error )
+ FT_FREE( face->metrics );
++
++ Bail:
+ return error;
+ }
+
+@@ -597,14 +688,16 @@ THE SOFTWARE.
+ if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )
+ return PCF_Err_Invalid_File_Format;
+
++ FT_TRACE4(( "pcf_get_bitmaps:\n" ));
++
++ FT_TRACE4(( " number of bitmaps: %d\n", nbitmaps ));
++
+ if ( nbitmaps != face->nmetrics )
+ return PCF_Err_Invalid_File_Format;
+
+ if ( FT_NEW_ARRAY( offsets, nbitmaps ) )
+ return error;
+
+- FT_TRACE4(( "pcf_get_bitmaps:\n" ));
+-
+ for ( i = 0; i < nbitmaps; i++ )
+ {
+ if ( PCF_BYTE_ORDER( format ) == MSBFirst )
+@@ -612,7 +705,7 @@ THE SOFTWARE.
+ else
+ (void)FT_READ_LONG_LE( offsets[i] );
+
+- FT_TRACE4(( " bitmap %d: offset %ld (0x%lX)\n",
++ FT_TRACE5(( " bitmap %d: offset %ld (0x%lX)\n",
+ i, offsets[i], offsets[i] ));
+ }
+ if ( error )
+@@ -640,15 +733,22 @@ THE SOFTWARE.
+ FT_UNUSED( sizebitmaps ); /* only used for debugging */
+
+ for ( i = 0; i < nbitmaps; i++ )
+- face->metrics[i].bits = stream->pos + offsets[i];
++ {
++ /* rough estimate */
++ if ( ( offsets[i] < 0 ) ||
++ ( (FT_ULong)offsets[i] > size ) )
++ {
++ FT_ERROR(( "pcf_get_bitmaps:"));
++ FT_ERROR(( " invalid offset to bitmap data of glyph %d\n", i ));
++ }
++ else
++ face->metrics[i].bits = stream->pos + offsets[i];
++ }
+
+ face->bitmapsFormat = format;
+
+- FT_FREE ( offsets );
+- return error;
+-
+ Bail:
+- FT_FREE ( offsets );
++ FT_FREE( offsets );
+ return error;
+ }
+
+@@ -734,7 +834,7 @@ THE SOFTWARE.
+
+ tmpEncoding[j].glyph = (FT_Short)encodingOffset;
+
+- FT_TRACE4(( " code %d (0x%04X): idx %d\n",
++ FT_TRACE5(( " code %d (0x%04X): idx %d\n",
+ tmpEncoding[j].enc, tmpEncoding[j].enc,
+ tmpEncoding[j].glyph ));
+
+@@ -828,7 +928,8 @@ THE SOFTWARE.
+ if ( error )
+ goto Bail;
+
+- error = FT_READ_ULONG_LE( format );
++ if ( FT_READ_ULONG_LE( format ) )
++ goto Bail;
+
+ if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) &&
+ !PCF_FORMAT_MATCH( format, PCF_ACCEL_W_INKBOUNDS ) )
+@@ -876,7 +977,6 @@ THE SOFTWARE.
+ accel->ink_minbounds = accel->minbounds; /* I'm not sure about this */
+ accel->ink_maxbounds = accel->maxbounds;
+ }
+- return error;
+
+ Bail:
+ return error;
+@@ -1082,11 +1182,12 @@ THE SOFTWARE.
+ else
+ root->family_name = NULL;
+
+- /* Note: We shift all glyph indices by +1 since we must
++ /*
++ * Note: We shift all glyph indices by +1 since we must
+ * respect the convention that glyph 0 always corresponds
+- * to the "missing glyph".
++ * to the `missing glyph'.
+ *
+- * This implies bumping the number of "available" glyphs by 1.
++ * This implies bumping the number of `available' glyphs by 1.
+ */
+ root->num_glyphs = face->nmetrics + 1;
+
+@@ -1171,7 +1272,7 @@ THE SOFTWARE.
+ Exit:
+ if ( error )
+ {
+- /* this is done to respect the behaviour of the original */
++ /* This is done to respect the behaviour of the original */
+ /* PCF font driver. */
+ error = PCF_Err_Invalid_File_Format;
+ }
diff --git a/print/freetype2/pkg-descr b/print/freetype2/pkg-descr
new file mode 100644
index 000000000..538d9a8f8
--- /dev/null
+++ b/print/freetype2/pkg-descr
@@ -0,0 +1,10 @@
+This includes some tools that are in FreeType 1's contrib directory.
+
+ttf2pfb: Converting TrueType fonts to the Postscript Type 1 format.
+ttf2pk: A simple conversion tool to bring TrueType quality to the
+ TeX world.
+ttf2bdf: Produce bitmapped fonts from TrueType files for your X11
+ applications.
+ttfbanner: make posters using a TrueType font
+
+WWW: http://freetype.sourceforge.net/freetype1/projects.html
diff --git a/print/freetype2/pkg-plist b/print/freetype2/pkg-plist
new file mode 100644
index 000000000..1be8c7350
--- /dev/null
+++ b/print/freetype2/pkg-plist
@@ -0,0 +1,53 @@
+bin/freetype-config
+include/freetype2/freetype/config/ftconfig.h
+include/freetype2/freetype/config/ftheader.h
+include/freetype2/freetype/config/ftmodule.h
+include/freetype2/freetype/config/ftoption.h
+include/freetype2/freetype/config/ftstdlib.h
+include/freetype2/freetype/freetype.h
+include/freetype2/freetype/ftbbox.h
+include/freetype2/freetype/ftbdf.h
+include/freetype2/freetype/ftbitmap.h
+include/freetype2/freetype/ftcache.h
+include/freetype2/freetype/ftchapters.h
+include/freetype2/freetype/fterrdef.h
+include/freetype2/freetype/fterrors.h
+include/freetype2/freetype/ftglyph.h
+include/freetype2/freetype/ftgxval.h
+include/freetype2/freetype/ftgzip.h
+include/freetype2/freetype/ftimage.h
+include/freetype2/freetype/ftincrem.h
+include/freetype2/freetype/ftlist.h
+include/freetype2/freetype/ftlzw.h
+include/freetype2/freetype/ftmac.h
+include/freetype2/freetype/ftmm.h
+include/freetype2/freetype/ftmodapi.h
+include/freetype2/freetype/ftmoderr.h
+include/freetype2/freetype/ftotval.h
+include/freetype2/freetype/ftoutln.h
+include/freetype2/freetype/ftpfr.h
+include/freetype2/freetype/ftrender.h
+include/freetype2/freetype/ftsizes.h
+include/freetype2/freetype/ftsnames.h
+include/freetype2/freetype/ftstroke.h
+include/freetype2/freetype/ftsynth.h
+include/freetype2/freetype/ftsystem.h
+include/freetype2/freetype/fttrigon.h
+include/freetype2/freetype/fttypes.h
+include/freetype2/freetype/ftwinfnt.h
+include/freetype2/freetype/ftxf86.h
+include/freetype2/freetype/t1tables.h
+include/freetype2/freetype/ttnameid.h
+include/freetype2/freetype/tttables.h
+include/freetype2/freetype/tttags.h
+include/freetype2/freetype/ttunpat.h
+include/ft2build.h
+lib/libfreetype.a
+lib/libfreetype.la
+lib/libfreetype.so
+lib/libfreetype.so.9
+libdata/pkgconfig/freetype2.pc
+share/aclocal/freetype2.m4
+@dirrm include/freetype2/freetype/config
+@dirrm include/freetype2/freetype
+@dirrm include/freetype2