# _without_bytecode - without TT bytecode interpreter
# (patents pending in USA, Japan...)
#
-Summary: Truetype font rasterizer
-Summary(pl): Rasteryzer fontów Truetype
+Summary: TrueType font rasterizer
+Summary(pl): Rasteryzer fontów TrueType
Name: freetype
-Version: 2.0.6
-Release: 2
+Version: 2.0.9
+Release: 1
License: GPL or FTL
Group: Libraries
Source0: ftp://ftp.freetype.org/freetype/freetype2/%{name}-%{version}.tar.bz2
Source1: ftp://ftp.freetype.org/freetype/freetype2/ftdocs-%{version}.tar.bz2
+Source2: ftp://ftp.freetype.org/freetype/freetype2/ft2demos-%{version}.tar.bz2
Patch0: %{name}2-DESTDIR.patch
-Patch1: %{name}2-gsf-segv.patch
-Patch2: %{name}2-bytecode.patch
+Patch1: %{name}2-bytecode.patch
URL: http://www.freetype.org/
BuildRequires: SysVinit
+BuildRequires: XFree86-devel
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Obsoletes: freetype2
+%define _xbindir /usr/X11R6/bin
+
%description
The FreeType engine is a free and portable TrueType font rendering
engine. It has been developed to provide TrueType support to a great
with it is extremely easy, as demo-ed by the test programs.
%description -l pl
-FreeType jest bibliotek± s³u¿±c± do rasteryzacji fontów TrueType. Kody
-¼ród³owe napisane s± w ANSI C oraz PASCAL'u.
+FreeType jest bibliotek± s³u¿±c± do rasteryzacji fontów TrueType. Jest
+to jedynie biblioteka, a nie serwer fontów, chocia¿ zosta³a ona
+zaprojektowana do u¿ywania tak¿e w takich serwerach. Nie jest to te¿
+kompletna biblioteka do rasteryzacji tekstu. Jej celem jest tylko
+odczytywanie i zarz±dzanie plikami z fontami oraz wczytywanie i
+wykonywanie hintingu i rasteryzacji poszczególnych glifów. Mo¿e byæ
+tak¿e uwa¿ana za "sterownik TrueType" dla bibliotek wy¿szego poziomu,
+jednak u¿ycie samej biblioteki FreeType do rasteryzacji jest bardzo
+proste, co mo¿na zobaczyæ w programach demonstracyjnych.
%package devel
Summary: Header files and development documentation
Group: Development/Libraries
Requires: %{name} = %{version}
Obsoletes: freetype2-devel
-Obsoletes: freetype2-static
%description devel
-This package includes the header files documentations and libraries
-necessary to develop applications that use freetype.
+This package includes the header files and documentation necessary
+to develop applications that use FreeType.
%description devel -l pl
-Pakiet ten zawiera pliki nag³ówkowe oraz biblioteki niezbêdne przy
-kompilowaniu programów wykorzystuj±cych bibliotekê freetype.
+Pakiet ten zawiera pliki nag³ówkowe oraz dokumentacjê potrzebne przy
+tworzeniu programów wykorzystuj±cych bibliotekê FreeType.
%package static
-Summary: Freetype static libraries
-Summary(pl): Biblioteki statyczne freetype
+Summary: FreeType static libraries
+Summary(pl): Biblioteki statyczne FreeType
Group: Development/Libraries
Requires: %{name}-devel = %{version}
Obsoletes: freetype2-static
%description static
-Static freetype libraries.
+Static FreeType libraries.
%description static -l pl
-Biblioteki statyczne freetype.
+Biblioteki statyczne FreeType.
+
+%package demos
+Summary: FreeType demo programs
+Summary(pl): Programy demonstracyjne FreeType
+Group: X11/Applications
+Requires: %{name} = %{version}
+
+%description demos
+Demonstration programs for FreeType library.
+
+%description demos -l pl
+Programy demonstracyjne do biblioteki FreeType.
%prep
-%setup -q -b1
+%setup -q -b1 -a2
%patch0 -p1
-%patch1 -p1
-%{!?_without_bytecode:%patch2 -p1}
+%{!?_without_bytecode:%patch1 -p1}
%build
CFLAGS="%{rpmcflags}" %{__make} setup CFG="--prefix=%{_prefix}"
%{__make}
+%{__make} TOP="`pwd`" -C ft2demos-*
+
%install
rm -rf $RPM_BUILD_ROOT
%{__make} install \
DESTDIR="$RPM_BUILD_ROOT"
+# demos
+install -d $RPM_BUILD_ROOT{%{_bindir},%{_xbindir}}
+install ft2demos-*/bin/.libs/ft{multi,timer,view} $RPM_BUILD_ROOT%{_xbindir}
+install ft2demos-*/bin/.libs/ft{dump,lint,memchk} $RPM_BUILD_ROOT%{_bindir}
+install ft2demos-*/bin/.libs/testnames $RPM_BUILD_ROOT%{_bindir}/fttestnames
+
gzip -9nf docs/{BUGS,CHANGES,FTL.txt,PATENTS,license.txt,TODO,modules.txt}
%clean
%files devel
%defattr(644,root,root,755)
%doc docs/*.html docs/{design,freetype2,glyphs,reference,tutorial}
-%attr(755,root,root) %{_bindir}/*
+%attr(755,root,root) %{_bindir}/freetype-config
%attr(755,root,root) %{_libdir}/lib*.so
%attr(755,root,root) %{_libdir}/lib*.la
%{_includedir}/freetype2
%files static
%defattr(644,root,root,755)
%{_libdir}/lib*.a
+
+%files demos
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/ft*
+%attr(755,root,root) %{_xbindir}/ft*
+++ /dev/null
---- freetype-2.0.4/src/type1/t1load.c.orig Tue Jun 19 10:28:23 2001
-+++ freetype-2.0.4/src/type1/t1load.c Sat Jun 30 00:00:25 2001
-@@ -73,7 +73,7 @@
-
- #include <string.h> /* for strncmp(), strcmp() */
- #include <ctype.h> /* for isalnum() */
--
-+#include <stdlib.h>
-
- /*************************************************************************/
- /* */
-@@ -1116,7 +1116,7 @@
- for ( n = 0; n < loader->num_subrs; n++ )
- {
- FT_Int index, size;
-- FT_Byte* base;
-+ FT_Byte* base, *temp;
-
-
- /* If the next token isn't `dup', we are also done. This */
-@@ -1150,12 +1149,18 @@
- /* */
- if ( face->type1.private_dict.lenIV >= 0 )
- {
-- psaux->t1_decrypt( base, size, 4330 );
-+ /* decrypt writes to base - make temporary copy */
-+ if ( (temp=malloc( size )) == NULL )
-+ return;
-+ MEM_Copy( temp, base, size );
-+ psaux->t1_decrypt( temp, size, 4330 );
- size -= face->type1.private_dict.lenIV;
- base += face->type1.private_dict.lenIV;
-+ error = T1_Add_Table( table, index, temp+4, size );
-+ free( temp );
- }
--
-+ else
- error = T1_Add_Table( table, index, base, size );
- if ( error )
- goto Fail;
- }
-@@ -1179,7 +1183,7 @@
-
- PSAux_Interface* psaux = (PSAux_Interface*)face->psaux;
-
-- FT_Byte* cur;
-+ FT_Byte* cur, *temp;
- FT_Byte* limit = parser->root.limit;
- FT_Int n;
- FT_UInt notdef_index = 0;
-@@ -1282,12 +1286,18 @@
-
- if ( face->type1.private_dict.lenIV >= 0 )
- {
-- psaux->t1_decrypt( base, size, 4330 );
-+ /* decrypt writes to base - make temporary copy */
-+ if ( (temp = malloc( size )) == NULL )
-+ return;
-+ MEM_Copy( temp, base, size );
-+ psaux->t1_decrypt( temp, size, 4330 );
- size -= face->type1.private_dict.lenIV;
- base += face->type1.private_dict.lenIV;
-+ error = T1_Add_Table( code_table, n, temp+4, size );
-+ free( temp );
- }
--
-+ else
- error = T1_Add_Table( code_table, n, base, size );
- if ( error )
- goto Fail;
-