Hello community, here is the log from the commit of package freetype2 for openSUSE:Factory checked in at Thu Apr 1 03:04:18 CEST 2010. -------- --- freetype2/freetype2.changes 2009-12-14 20:13:01.000000000 +0100 +++ /mounts/work_src_done/STABLE/freetype2/freetype2.changes 2010-03-31 17:08:59.000000000 +0200 @@ -1,0 +2,11 @@ +Wed Mar 31 14:45:27 UTC 2010 - coolo@novell.com + +- update to version 2.3.12: + brings considerable improvements for b/w rasterizing of hinted + TrueType fonts at small sizes, see NEWS for more details +- fixed build without sysvinit in the build system +- disable no longer compiling patch that should be upstream or dead +- split out shared library policy package +- remove old patches + +------------------------------------------------------------------- @@ -24 +35 @@ -- updated to version 2.3.9: +- updated to version 2.3.8: @@ -26 +37 @@ - http://www.freetype.org/index2.html#release-freetype-2.3.9 + http://www.freetype.org/index2.html#release-freetype-2.3.8 --- freetype2/ft2demos.changes 2009-07-27 15:45:38.000000000 +0200 +++ /mounts/work_src_done/STABLE/freetype2/ft2demos.changes 2010-03-31 17:08:59.000000000 +0200 @@ -1,0 +2,7 @@ +Wed Mar 31 15:08:24 UTC 2010 - coolo@novell.com + +- update to version 2.3.12: + brings considerable improvements for b/w rasterizing of hinted + TrueType fonts at small sizes, see NEWS for more details + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- bnc485889-overflow1.patch bnc485889-overflow2.patch bnc485889-overflow3.patch bnc485889-overflow4.patch bugzilla-159166-reduce-embolden-distance.patch freetype-2.3.9.tar.bz2 freetype-doc-2.3.9.tar.bz2 ft2demos-2.3.9.tar.bz2 revert-fix-bytecode.patch New: ---- freetype-2.3.12.tar.bz2 freetype-doc-2.3.12.tar.bz2 ft2demos-2.3.12.tar.bz2 use_unix.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ freetype2.spec ++++++ --- /var/tmp/diff_new_pack.s4AJ92/_old 2010-04-01 03:03:37.000000000 +0200 +++ /var/tmp/diff_new_pack.s4AJ92/_new 2010-04-01 03:03:37.000000000 +0200 @@ -1,7 +1,7 @@ # -# spec file for package freetype2 (Version 2.3.9) +# spec file for package freetype2 (Version 2.3.12) # -# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -28,8 +28,8 @@ Obsoletes: freetype2-64bit %endif # -Version: 2.3.9 -Release: 3 +Version: 2.3.12 +Release: 1 Url: http://www.freetype.org Summary: A TrueType Font Library # CVS repository: @@ -43,29 +43,25 @@ Source3: baselibs.conf Patch3: freetype2-bitmap-foundry.patch Patch4: ft2-stream-compat.diff -Patch5: revert-fix-bytecode.patch -Patch8: bugzilla-159166-reduce-embolden-distance.patch Patch9: fix-build.patch Patch308961: bugzilla-308961-cmex-workaround.patch -Patch11: bnc485889-overflow1.patch -Patch12: bnc485889-overflow2.patch -Patch13: bnc485889-overflow3.patch -Patch14: bnc485889-overflow4.patch Patch100: freetype2-bc.patch Patch200: freetype2-subpixel.patch +Patch201: use_unix.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build %description This library features TrueType fonts for open source projects. This version also contains an autohinter for producing improved output. +%package -n libfreetype6 +License: Freetype License (BSD-like). See http://freetype.sourceforge.net/FTL.TXT +Summary: A TrueType Font Library +Group: System/Libraries - -Authors: --------- - David Turner <david.turner@freetype.org> - Robert Wilhelm <robert.wilhelm@freetype.org> - Werner Lemberg <werner.lemberg@freetype.org> +%description -n libfreetype6 +This library features TrueType fonts for open source projects. This +version also contains an autohinter for producing improved output. %package devel License: GPLv2+ ; Freetype License (BSD-like). See http://freetype.sourceforge.net/FTL.TXT @@ -85,14 +81,6 @@ It also contains a small tutorial for using that library. - - -Authors: --------- - David Turner <david.turner@freetype.org> - Robert Wilhelm <robert.wilhelm@freetype.org> - Werner Lemberg <werner.lemberg@freetype.org> - %prep # The byte code interpreter is compiled in by default # because of the following option. @@ -105,33 +93,29 @@ %define enable_bytecode_interpreter 1 %define enable_subpixel_rendering 0 %setup -q -n freetype-%{version} -a 1 -%patch3 -p 1 -b .bitmap-foundry +# Patch does still apply but no longer compiles and it's unclear +# to me who still needs it - it used to work around qt3 bug afair +##%patch3 -p 1 -b .bitmap-foundry %patch4 -p 1 -b .ft2-stream-compat -#%patch5 -p 1 #%patch8 -p 1 %patch9 -p 1 %patch308961 -p 1 -%patch11 -p 1 -%patch12 -p 1 -%patch13 -p 1 -%patch14 -p 1 %if %{enable_bytecode_interpreter} %patch100 -p 1 -b .bytecode %endif %if %{enable_subpixel_rendering} %patch200 -p 1 -b .subpixel %endif +%patch201 -p1 pushd docs tar xf $RPM_SOURCE_DIR/freetype-doc-reference.tar.bz2 popd find . -name CVS -type d | xargs rm -rf find . -name ".cvsignore" | xargs rm -f cp /usr/share/automake*/config.{guess,sub} builds/unix +rm docs/reference/.gitignore %build -%if %suse_version > 1110 -sh ./autogen.sh -%endif export CFLAGS="$RPM_OPT_FLAGS -g -fno-strict-aliasing" %ifarch arm export CFLAGS="$CFLAGS -std=gnu99" @@ -152,15 +136,18 @@ %clean -%post -p /sbin/ldconfig +%post -n libfreetype6 -p /sbin/ldconfig -%postun -p /sbin/ldconfig +%postun -n libfreetype6 -p /sbin/ldconfig + +%files -n libfreetype6 +%defattr(-,root,root) +%{_libdir}/libfreetype.so.* %files %defattr(-,root,root) %doc ChangeLog README %doc docs/* -%{_libdir}/libfreetype.so.* %files devel %defattr(-,root,root) ++++++ ft2demos.spec ++++++ --- /var/tmp/diff_new_pack.s4AJ92/_old 2010-04-01 03:03:37.000000000 +0200 +++ /var/tmp/diff_new_pack.s4AJ92/_new 2010-04-01 03:03:38.000000000 +0200 @@ -1,7 +1,7 @@ # -# spec file for package ft2demos (Version 2.3.9) +# spec file for package ft2demos (Version 2.3.12) # -# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -23,11 +23,9 @@ License: GPLv2+ Group: Productivity/Publishing/Other AutoReqProv: on -%if %suse_version > 1000 Supplements: fonts-config -%endif -Version: 2.3.9 -Release: 3 +Version: 2.3.12 +Release: 1 %define freetype_version %{version} Url: http://www.freetype.org Summary: Freetype2 Utilities and Demo Programs @@ -41,33 +39,19 @@ Source1: http://savannah.nongnu.org/download/freetype/ft2demos-%{version}.tar.bz2 # pregenerated to avoid build-dependence on python: Source2: freetype-doc-reference.tar.bz2 -Patch3: freetype2-bitmap-foundry.patch Patch4: ft2-stream-compat.diff -Patch5: revert-fix-bytecode.patch -Patch8: bugzilla-159166-reduce-embolden-distance.patch Patch9: fix-build.patch Patch308961: bugzilla-308961-cmex-workaround.patch -Patch11: bnc485889-overflow1.patch -Patch12: bnc485889-overflow2.patch -Patch13: bnc485889-overflow3.patch -Patch14: bnc485889-overflow4.patch Patch50: ft2demos-build-testname.patch Patch100: freetype2-bc.patch Patch101: ft2demos-bc.patch Patch200: freetype2-subpixel.patch +Patch201: use_unix.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Freetype2 utilities and demo programs. - - -Authors: --------- - David Turner <david.turner@freetype.org> - Robert Wilhelm <robert.wilhelm@freetype.org> - Werner Lemberg <werner.lemberg@freetype.org> - %prep # The byte code interpreter is compiled in by default # because of the following option. @@ -80,16 +64,11 @@ %define enable_bytecode_interpreter 1 %define enable_subpixel_rendering 0%{?opensuse_bs} %setup -n freetype-%{freetype_version} -b 1 -%patch3 -p 1 -b .bitmap-foundry %patch4 -p 1 -b .ft2-stream-compat #%patch5 -p 1 #%patch8 -p 1 %patch9 -p 1 %patch308961 -p 1 -%patch11 -p 1 -%patch12 -p 1 -%patch13 -p 1 -%patch14 -p 1 pushd ../ft2demos-%{version} %patch50 -p 1 popd @@ -102,6 +81,7 @@ %if %{enable_subpixel_rendering} %patch200 -p 1 -b .subpixel %endif +%patch201 -p1 pushd docs tar xf $RPM_SOURCE_DIR/freetype-doc-reference.tar.bz2 popd @@ -110,9 +90,6 @@ cp /usr/share/automake*/config.{guess,sub} builds/unix %build -%if %suse_version > 1110 -sh ./autogen.sh -%endif export CFLAGS="$RPM_OPT_FLAGS -g -fno-strict-aliasing " ln -s /usr/bin/libtool ./builds/unix/libtool make setup CFG="--prefix=/usr --libdir=%{_libdir} --with-zlib" @@ -134,7 +111,7 @@ #make prefix=$RPM_BUILD_ROOT/usr libdir=$RPM_BUILD_ROOT/%{_libdir} install mkdir -p $RPM_BUILD_ROOT%{_bindir} pushd ../ft2demos-%{version}/bin/.libs - install -m 755 ft* testname $RPM_BUILD_ROOT%{_bindir} + install -m 755 ft* $RPM_BUILD_ROOT%{_bindir} popd %clean @@ -142,6 +119,5 @@ %files %defattr(-,root,root) %{_bindir}/ft* -%{_bindir}/testname %changelog ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.s4AJ92/_old 2010-04-01 03:03:38.000000000 +0200 +++ /var/tmp/diff_new_pack.s4AJ92/_new 2010-04-01 03:03:38.000000000 +0200 @@ -1,3 +1,3 @@ -freetype2 +libfreetype6 freetype2-devel requires "zlib-devel-<targettype>" ++++++ bugzilla-308961-cmex-workaround.patch ++++++ --- /var/tmp/diff_new_pack.s4AJ92/_old 2010-04-01 03:03:38.000000000 +0200 +++ /var/tmp/diff_new_pack.s4AJ92/_new 2010-04-01 03:03:38.000000000 +0200 @@ -1,8 +1,8 @@ -Index: freetype-2.3.5/src/base/ftobjs.c +Index: freetype-2.3.12/src/base/ftobjs.c =================================================================== ---- freetype-2.3.5.orig/src/base/ftobjs.c -+++ freetype-2.3.5/src/base/ftobjs.c -@@ -1820,6 +1820,11 @@ +--- freetype-2.3.12.orig/src/base/ftobjs.c 2010-01-23 13:44:16.000000000 +0100 ++++ freetype-2.3.12/src/base/ftobjs.c 2010-03-31 16:23:42.000000000 +0200 +@@ -2103,6 +2103,11 @@ if ( FT_IS_SCALABLE( face ) ) { ++++++ fix-build.patch ++++++ --- /var/tmp/diff_new_pack.s4AJ92/_old 2010-04-01 03:03:38.000000000 +0200 +++ /var/tmp/diff_new_pack.s4AJ92/_new 2010-04-01 03:03:38.000000000 +0200 @@ -1,8 +1,8 @@ -Index: freetype-2.3.9/autogen.sh +Index: freetype-2.3.12/autogen.sh =================================================================== ---- freetype-2.3.9.orig/autogen.sh -+++ freetype-2.3.9/autogen.sh -@@ -149,7 +149,7 @@ sed -e "s;@VERSION@;$freetype_major$free +--- freetype-2.3.12.orig/autogen.sh 2010-02-13 07:54:14.000000000 +0100 ++++ freetype-2.3.12/autogen.sh 2010-03-31 16:23:42.000000000 +0200 +@@ -150,7 +150,7 @@ sed -e "s;@VERSION@;$freetype_major$free < configure.raw > configure.ac run aclocal -I . --force @@ -11,11 +11,11 @@ run autoconf --force chmod +x mkinstalldirs -Index: freetype-2.3.9/builds/unix/configure.raw +Index: freetype-2.3.12/builds/unix/configure.raw =================================================================== ---- freetype-2.3.9.orig/builds/unix/configure.raw -+++ freetype-2.3.9/builds/unix/configure.raw -@@ -635,7 +635,7 @@ AC_SUBST([FT2_EXTRA_LIBS]) +--- freetype-2.3.12.orig/builds/unix/configure.raw 2010-02-13 07:55:07.000000000 +0100 ++++ freetype-2.3.12/builds/unix/configure.raw 2010-03-31 16:23:42.000000000 +0200 +@@ -650,7 +650,7 @@ AC_SUBST([FT2_EXTRA_LIBS]) AC_SUBST([SYSTEM_ZLIB]) ++++++ freetype-2.3.9.tar.bz2 -> freetype-2.3.12.tar.bz2 ++++++ ++++ 48184 lines of diff (skipped) ++++++ freetype-doc-2.3.9.tar.bz2 -> freetype-doc-2.3.12.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetype-2.3.9/docs/tutorial/example3.cpp new/freetype-2.3.12/docs/tutorial/example3.cpp --- old/freetype-2.3.9/docs/tutorial/example3.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/freetype-2.3.12/docs/tutorial/example3.cpp 2009-09-12 22:43:08.000000000 +0200 @@ -0,0 +1,181 @@ +// example3.cpp + +// This file demonstrates how to use FreeType's stand-alone renderer, +// both in B/W and 5-levels gray mode. +// +// Copy the files ftraster.c, ftimage.h, and ftmisc.h into the same +// directory as this file, then say +// +// g++ -D_STANDALONE_ \ +// -DFT_RASTER_OPTION_ANTI_ALIASING \ +// -o example3 example3.cpp +// +// You need FreeType version 2.3.10 or newer. +// +// Written Sep. 2009 by Werner Lemberg, +// based on code contributed by Erik M�ller. +// +// Public domain. + +#include "ftraster.c" +#include <fstream> + +// Define an acorn-like shape to test with. +struct Vec2 +{ + Vec2(float a, float b) : x(a), y(b) { } + + float x, y; +}; + +static Vec2 k_shape[] = +{ Vec2(-3, -18), Vec2(0, -12), Vec2(6, -10), Vec2(12, -6), Vec2(12, -4), + Vec2(11, -4), Vec2(10, -5), Vec2(10, 1), Vec2(9, 6), Vec2(7, 10), + Vec2(5, 12), Vec2(4, 15), Vec2(3, 14), Vec2(1, 13), Vec2(-1, 13), + Vec2(-5, 11), Vec2(-8, 8), Vec2(-11, 2), Vec2(-11, -2), Vec2(-14, 0), + Vec2(-14, -2), Vec2(-11, -7), Vec2(-9, -9), Vec2(-8, -9), Vec2(-5, -12), + Vec2(-5, -14), Vec2(-7, -15), Vec2(-8, -14), Vec2(-9, -15), Vec2(-9, -17), + Vec2(-7, -17), Vec2(-6, -18) +}; + +void* +MY_Alloc_Func(FT_Memory memory, + long size) +{ + return malloc(size); +} + +void +MY_Free_Func(FT_Memory memory, + void *block) +{ + free(block); +} + +void* +MY_Realloc_Func(FT_Memory memory, + long cur_size, + long new_size, + void* block) +{ + return realloc(block, new_size); +} + + +FT_Memory mem; + + +// Render a shape and dump it out as out-mono.pbm (b/w) and +// out-gray.pgm (grayscale). +int +main() +{ + // Set up the memory management. + mem = new FT_MemoryRec; + mem->alloc = MY_Alloc_Func; + mem->free = MY_Free_Func; + mem->realloc = MY_Realloc_Func; + + + // Build an outline manually. + FT_Outline_ outline; + outline.n_contours = 1; + outline.n_points = sizeof (k_shape) / sizeof (Vec2); + outline.points = new FT_Vector[outline.n_points]; + for (int i = 0; i < outline.n_points; ++i) + { + FT_Vector v; + // Offset it to fit in the image and scale it up 10 times. + v.x = (20 + k_shape[i].x) * 10 * 64; + v.y = (20 + k_shape[i].y) * 10 * 64; + outline.points[i] = v; + } + outline.tags = new char[outline.n_points]; + for (int i = 0; i < outline.n_points; ++i) + outline.tags[i] = 1; + outline.contours = new short[outline.n_contours]; + outline.contours[0] = outline.n_points - 1; + outline.flags = 0; + + + const int width = 500; + const int rows = 400; + + // 1 bit per pixel. + const int pitch_mono = (width + 7) >> 3; + // 8 bits per pixel; must be a multiple of four. + const int pitch_gray = (width + 3) & -4; + + + FT_Bitmap bmp; + FT_Raster raster; + FT_Raster_Params params; + + + // Allocate a chunk of memory for the render pool. + const int kRenderPoolSize = 1024 * 1024; + unsigned char *renderPool = new unsigned char[kRenderPoolSize]; + + + // Set up a bitmap. + bmp.buffer = new unsigned char[rows * pitch_mono]; + memset(bmp.buffer, 0, rows * pitch_mono); + bmp.width = width; + bmp.rows = rows; + bmp.pitch = pitch_mono; + bmp.pixel_mode = FT_PIXEL_MODE_MONO; + + // Set up the necessary raster parameters. + memset(¶ms, 0, sizeof (params)); + params.source = &outline; + params.target = &bmp; + + // Initialize the rasterer and get it to render into the bitmap. + ft_standard_raster.raster_new(mem, &raster); + ft_standard_raster.raster_reset(raster, renderPool, kRenderPoolSize); + ft_standard_raster.raster_render(raster, ¶ms); + + // Dump out the raw image data (in PBM format). + std::ofstream out_mono("out-mono.pbm", std::ios::binary); + out_mono << "P4 " << width << " " << rows << "\n"; + out_mono.write((const char *)bmp.buffer, rows * pitch_mono); + + delete[] bmp.buffer; + + + // Set up a pixmap. + bmp.buffer = new unsigned char[rows * pitch_gray]; + memset(bmp.buffer, 0, rows * pitch_gray); + bmp.width = width; + bmp.rows = rows; + bmp.pitch = pitch_gray; + bmp.pixel_mode = FT_PIXEL_MODE_GRAY; + bmp.num_grays = 16; + + // Set up the necessary raster parameters. + memset(¶ms, 0, sizeof (params)); + params.source = &outline; + params.target = &bmp; + params.flags = FT_RASTER_FLAG_AA; + + // Initialize the rasterer and get it to render into the pixmap. + ft_standard_raster.raster_new(mem, &raster); + ft_standard_raster.raster_reset(raster, renderPool, kRenderPoolSize); + ft_standard_raster.raster_render(raster, ¶ms); + + // Dump out the raw image data (in PBM format). + std::ofstream out_gray("out-gray.pgm", std::ios::binary); + out_gray << "P5 " << width << " " << rows << " 255\n"; + out_gray.write((const char *)bmp.buffer, rows * pitch_gray); + + + // Cleanup. + delete[] renderPool; + delete[] bmp.buffer; + delete[] outline.points; + delete[] outline.tags; + delete[] outline.contours; + delete mem; + + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetype-2.3.9/docs/tutorial/step1.html new/freetype-2.3.12/docs/tutorial/step1.html --- old/freetype-2.3.9/docs/tutorial/step1.html 2007-08-08 20:13:38.000000000 +0200 +++ new/freetype-2.3.12/docs/tutorial/step1.html 2009-10-19 11:50:22.000000000 +0200 @@ -483,6 +483,13 @@ </li> <li> + <p>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 character widths and heights.</p> + </li> + + <li> <p>The horizontal and vertical device resolutions are expressed in <em>dots-per-inch</em>, or <em>dpi</em>. Normal values are 72 or 96 dpi for display devices like the screen. The resolution @@ -491,13 +498,6 @@ </li> <li> - <p>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 character widths and heights.</p> - </li> - - <li> <p>A value of 0 for the horizontal resolution means ‘same as vertical resolution’, a value of 0 for the vertical resolution means ‘same as horizontal @@ -574,15 +574,19 @@ glyph_index = FT_Get_Char_Index( face, charcode ); </div> - <p>This will look the glyph index corresponding to the given + <p>This will look up the glyph index corresponding to the given <tt>charcode</tt> in the charmap that is currently selected for the - face. If no charmap was selected, the function simply returns the + face. You should use the UTF-32 representation form of Unicode; for + example, if you want to load character U+1F028, use value 0x1F028 as + the value for <tt>charcode</tt>. + + <p>If no charmap was selected, the function simply returns the charcode.</p> <p>Note that this is one of the rare FreeType functions that do not return an error code. However, when a given character code has no glyph image in the face, the value 0 is returned. By convention, - it always correspond to a special glyph image called the <em>missing + it always corresponds to a special glyph image called the <em>missing glyph</em>, which is commonly displayed as a box or a space.</p> <h4> @@ -1094,7 +1098,7 @@ <a href="step2.html">FreeType 2 Tutorial Step 2</a> </h3> -<p><font size=-3>Last update: 08-Aug-2007</font></p> +<p><font size=-3>Last update: 19-Oct-2009</font></p> </body> </html> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetype-2.3.9/docs/tutorial/step2.html new/freetype-2.3.12/docs/tutorial/step2.html --- old/freetype-2.3.9/docs/tutorial/step2.html 2009-03-07 09:41:58.000000000 +0100 +++ new/freetype-2.3.12/docs/tutorial/step2.html 2009-11-19 17:15:27.000000000 +0100 @@ -780,13 +780,20 @@ horizontal direction in nearly all cases except really extreme ones.</p> - <p>Not all font formats contain kerning information. Instead, they - sometimes rely on an additional file that contains various glyph - metrics, including kerning, but no glyph images. A good example is - the Type 1 format where glyph images are stored in a file with - extension <tt>.pfa</tt> or <tt>.pfb</tt>, and where kerning metrics - can be found in an additional file with extension <tt>.afm</tt> or - <tt>.pfm</tt>.</p> + <p>Not all font formats contain kerning information, and not all + kerning formats are supported by FreeType; in particular, for TrueType + fonts, the API can only access kerning via the ‘kern’ + table; <b>OpenType kerning via the ‘GPOS’ table is not + supported.</b> You need a higher-level library like <a + href="http://www.pango.org">Pango</a> or <a + href="http://www.icu-project.org">ICU</a> to handle that.</p> + + <p>Sometimes, the font file is associated with an additional file that + contains various glyph metrics, including kerning, but no glyph + images. A good example is the Type 1 format where glyph images + are stored in a file with extension <tt>.pfa</tt> or <tt>.pfb</tt>, + and where kerning metrics can be found in a file with extension + <tt>.afm</tt> or <tt>.pfm</tt>.</p> <p>FreeType 2 allows you to deal with this, by providing the <a href="../reference/ft2-base_interface.html#FT_Attach_File"> @@ -914,7 +921,7 @@ FT_Get_Kerning( face, previous, glyph_index, - ft_kerning_mode_default, &delta ); + FT_KERNING_DEFAULT, &delta ); pen_x += delta.x >> 6; } @@ -943,7 +950,7 @@ <li> <p>As kerning is determined from glyph indices, we need to - explicitly convert our character codes into a glyph indices, then + explicitly convert our character codes into glyph indices, then later call <tt>FT_Load_Glyph</tt> instead of <tt>FT_Load_Char</tt>.</p> </li> @@ -1170,7 +1177,7 @@ <p>We call <tt>FT_Glyph_To_Bitmap</tt> with the <tt>destroy</tt> parameter set to 0 (false), in order to avoid destroying the original glyph image. The new glyph bitmap is accessed through - <tt>image</tt> after the call and is typecasted to + <tt>image</tt> after the call and is typecast to <tt>FT_BitmapGlyph</tt>.</p> </li> @@ -1223,7 +1230,7 @@ </div> <p>We also translate each glyph image directly after it is loaded to - its position on the baseline at load time. As we will see, this as + its position on the baseline at load time. As we will see, this has several advantages. Our glyph sequence loader thus becomes:</p> <div class="pre"> @@ -1651,6 +1658,11 @@ service on top of FreeType 2, and you could possibly stop here if you want.</p> + <p>The demo programs in the ‘ft2demos’ bundle (especially + ‘ftview’) are a kind of reference implementation, and are a + good resource to turn to for answers. They also show how to use + additional features, such as the glyph stroker and cache.</p> + <p>The next section will deal with FreeType 2 internals (like modules, vector outlines, font drivers, renderers), as well as a few font format specific issues (mainly, how to access certain TrueType or @@ -1664,7 +1676,7 @@ <a href="step3.html">FreeType 2 Tutorial Step 3</a> </h3> -<p><font size=-3>Last update: 07-Mar-2009</font></p> +<p><font size=-3>Last update: 19-Nov-2009</font></p> </body> </html> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetype-2.3.9/docs/tutorial/step3.html new/freetype-2.3.12/docs/tutorial/step3.html --- old/freetype-2.3.9/docs/tutorial/step3.html 2009-03-07 09:45:05.000000000 +0100 +++ new/freetype-2.3.12/docs/tutorial/step3.html 2009-09-21 08:21:31.000000000 +0200 @@ -75,12 +75,20 @@ dictionaries and TrueType tables</li> </ul> - <p>None of these items have been written yet. However, <a - href="mailto:erik@timetrap.se">Erik M�ller</a> contributed a very nice C++ + <p>None of these items have been written yet.</p> + + <h2> + Examples + </h2> + + <a href="mailto:erik@timetrap.se">Erik M�ller</a> contributed a very nice C++ example which shows renderer callbacks in action to draw a coloured glyph - with a differently coloured outline.</p> + with a differently coloured outline. The source code can be found <a + href="example2.cpp">here</a>.</p> - <p>The source code can be found <a href="example2.cpp">here</a>.</p> + <p><a href="example3.cpp">Another example</a> demonstrates how to use + FreeType's stand-alone rasterizer, <tt>ftraster.c</tt>, both in B/W and + 5-levels gray mode. You need files from FreeType version 2.3.10 or newer. </td></tr> </table> @@ -90,7 +98,7 @@ <a href="step1.html">FreeType 2 Tutorial Step 1</a> </h3> -<p><font size=-3>Last update: 07-Mar-2009</font></p> +<p><font size=-3>Last update: 21-Sep-2009</font></p> </body> </html> ++++++ freetype2-bc.patch ++++++ --- /var/tmp/diff_new_pack.s4AJ92/_old 2010-04-01 03:03:39.000000000 +0200 +++ /var/tmp/diff_new_pack.s4AJ92/_new 2010-04-01 03:03:39.000000000 +0200 @@ -1,7 +1,8 @@ -diff -ru freetype-2.1.10.orig/include/freetype/config/ftoption.h freetype-2.1.10/include/freetype/config/ftoption.h ---- freetype-2.1.10.orig/include/freetype/config/ftoption.h 2005-06-06 17:37:53.000000000 +0200 -+++ freetype-2.1.10/include/freetype/config/ftoption.h 2005-07-19 16:25:31.000000000 +0200 -@@ -436,7 +436,7 @@ +Index: freetype-2.3.12/include/freetype/config/ftoption.h +=================================================================== +--- freetype-2.3.12.orig/include/freetype/config/ftoption.h 2010-02-09 15:40:56.000000000 +0100 ++++ freetype-2.3.12/include/freetype/config/ftoption.h 2010-03-31 16:23:42.000000000 +0200 +@@ -497,7 +497,7 @@ FT_BEGIN_HEADER /* Do not #undef this macro here, since the build system might */ /* define it for certain configurations only. */ /* */ @@ -10,4 +11,3 @@ /*************************************************************************/ -freetype-2.1.10/include/freetype/configだけに発見: ftoption.h.~1~ ++++++ freetype2-bitmap-foundry.patch ++++++ --- /var/tmp/diff_new_pack.s4AJ92/_old 2010-04-01 03:03:39.000000000 +0200 +++ /var/tmp/diff_new_pack.s4AJ92/_new 2010-04-01 03:03:39.000000000 +0200 @@ -1,7 +1,8 @@ -diff -ru freetype-2.3.4.orig/src/pcf/pcfread.c freetype-2.3.4/src/pcf/pcfread.c ---- freetype-2.3.4.orig/src/pcf/pcfread.c 2007-04-10 15:45:54.000000000 +0200 -+++ freetype-2.3.4/src/pcf/pcfread.c 2007-04-10 16:24:58.000000000 +0200 -@@ -1164,8 +1164,34 @@ +Index: freetype-2.3.12/src/pcf/pcfread.c +=================================================================== +--- freetype-2.3.12.orig/src/pcf/pcfread.c 2009-10-10 19:32:28.000000000 +0200 ++++ freetype-2.3.12/src/pcf/pcfread.c 2010-03-31 16:23:42.000000000 +0200 +@@ -1171,8 +1171,34 @@ THE SOFTWARE. prop = pcf_find_property( face, "FAMILY_NAME" ); if ( prop && prop->isString ) { ++++++ ft2-stream-compat.diff ++++++ --- /var/tmp/diff_new_pack.s4AJ92/_old 2010-04-01 03:03:39.000000000 +0200 +++ /var/tmp/diff_new_pack.s4AJ92/_new 2010-04-01 03:03:39.000000000 +0200 @@ -1,7 +1,7 @@ -Index: freetype-2.3.9/src/base/ftstream.c +Index: freetype-2.3.12/src/base/ftstream.c =================================================================== ---- freetype-2.3.9.orig/src/base/ftstream.c -+++ freetype-2.3.9/src/base/ftstream.c +--- freetype-2.3.12.orig/src/base/ftstream.c 2009-08-03 19:51:40.000000000 +0200 ++++ freetype-2.3.12/src/base/ftstream.c 2010-03-31 16:23:42.000000000 +0200 @@ -44,6 +44,17 @@ stream->close = 0; } @@ -20,7 +20,7 @@ FT_BASE_DEF( void ) FT_Stream_Close( FT_Stream stream ) -@@ -84,6 +95,8 @@ +@@ -87,6 +98,8 @@ return error; } @@ -29,7 +29,7 @@ FT_BASE_DEF( FT_Error ) FT_Stream_Skip( FT_Stream stream, -@@ -95,6 +108,8 @@ +@@ -98,6 +111,8 @@ return FT_Stream_Seek( stream, (FT_ULong)( stream->pos + distance ) ); } @@ -38,7 +38,7 @@ FT_BASE_DEF( FT_Long ) FT_Stream_Pos( FT_Stream stream ) -@@ -111,6 +126,8 @@ +@@ -114,6 +129,8 @@ return FT_Stream_ReadAt( stream, stream->pos, buffer, count ); } @@ -47,7 +47,7 @@ FT_BASE_DEF( FT_Error ) FT_Stream_ReadAt( FT_Stream stream, -@@ -184,6 +201,8 @@ +@@ -188,6 +205,8 @@ return read_bytes; } @@ -56,7 +56,7 @@ FT_BASE_DEF( FT_Error ) FT_Stream_ExtractFrame( FT_Stream stream, -@@ -206,7 +225,9 @@ +@@ -210,7 +229,9 @@ return error; } @@ -67,7 +67,7 @@ FT_BASE_DEF( void ) FT_Stream_ReleaseFrame( FT_Stream stream, FT_Byte** pbytes ) -@@ -225,6 +246,8 @@ +@@ -229,6 +250,8 @@ *pbytes = 0; } @@ -76,7 +76,7 @@ FT_BASE_DEF( FT_Error ) FT_Stream_EnterFrame( FT_Stream stream, -@@ -291,6 +314,8 @@ +@@ -295,6 +318,8 @@ return error; } @@ -85,7 +85,7 @@ FT_BASE_DEF( void ) FT_Stream_ExitFrame( FT_Stream stream ) -@@ -321,6 +346,8 @@ +@@ -325,6 +350,8 @@ stream->limit = 0; } @@ -94,7 +94,7 @@ FT_BASE_DEF( FT_Char ) FT_Stream_GetChar( FT_Stream stream ) -@@ -337,6 +364,8 @@ +@@ -341,6 +368,8 @@ return result; } @@ -103,7 +103,7 @@ FT_BASE_DEF( FT_Short ) FT_Stream_GetShort( FT_Stream stream ) -@@ -356,6 +385,8 @@ +@@ -360,6 +389,8 @@ return result; } @@ -112,7 +112,7 @@ FT_BASE_DEF( FT_Short ) FT_Stream_GetShortLE( FT_Stream stream ) -@@ -375,6 +406,8 @@ +@@ -379,6 +410,8 @@ return result; } @@ -121,7 +121,7 @@ FT_BASE_DEF( FT_Long ) FT_Stream_GetOffset( FT_Stream stream ) -@@ -393,6 +426,8 @@ +@@ -397,6 +430,8 @@ return result; } @@ -130,7 +130,7 @@ FT_BASE_DEF( FT_Long ) FT_Stream_GetLong( FT_Stream stream ) -@@ -411,6 +446,8 @@ +@@ -415,6 +450,8 @@ return result; } @@ -139,7 +139,7 @@ FT_BASE_DEF( FT_Long ) FT_Stream_GetLongLE( FT_Stream stream ) -@@ -429,6 +466,8 @@ +@@ -433,6 +470,8 @@ return result; } @@ -148,7 +148,7 @@ FT_BASE_DEF( FT_Char ) FT_Stream_ReadChar( FT_Stream stream, -@@ -465,6 +504,8 @@ +@@ -470,6 +509,8 @@ return 0; } @@ -157,7 +157,7 @@ FT_BASE_DEF( FT_Short ) FT_Stream_ReadShort( FT_Stream stream, -@@ -512,6 +553,9 @@ +@@ -517,6 +558,9 @@ return 0; } @@ -167,7 +167,7 @@ FT_BASE_DEF( FT_Short ) FT_Stream_ReadShortLE( FT_Stream stream, -@@ -559,6 +603,8 @@ +@@ -564,6 +608,8 @@ return 0; } @@ -176,7 +176,7 @@ FT_BASE_DEF( FT_Long ) FT_Stream_ReadOffset( FT_Stream stream, -@@ -606,6 +652,8 @@ +@@ -611,6 +657,8 @@ return 0; } @@ -185,7 +185,7 @@ FT_BASE_DEF( FT_Long ) FT_Stream_ReadLong( FT_Stream stream, -@@ -652,6 +700,8 @@ +@@ -658,6 +706,8 @@ return 0; } @@ -194,7 +194,7 @@ FT_BASE_DEF( FT_Long ) FT_Stream_ReadLongLE( FT_Stream stream, -@@ -699,6 +749,9 @@ +@@ -705,6 +755,9 @@ return 0; } @@ -204,7 +204,7 @@ FT_BASE_DEF( FT_Error ) FT_Stream_ReadFields( FT_Stream stream, -@@ -842,5 +895,6 @@ +@@ -848,5 +901,6 @@ return error; } ++++++ ft2demos-2.3.9.tar.bz2 -> ft2demos-2.3.12.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2demos-2.3.9/ChangeLog new/ft2demos-2.3.12/ChangeLog --- old/ft2demos-2.3.9/ChangeLog 2009-03-12 10:54:50.000000000 +0100 +++ new/ft2demos-2.3.12/ChangeLog 2010-02-11 16:39:13.000000000 +0100 @@ -1,3 +1,85 @@ +2010-02-11 Werner Lemberg <wl@gnu.org> + + * Version 2.3.12 released. + ========================== + + + Tag sources with `VER-2-3-12'. + + * README: Updated. + +2009-10-10 Werner Lemberg <wl@gnu.org> + + * Version 2.3.11 released. + ========================== + + + Tag sources with `VER-2-3-11'. + + * README: Updated. + +2009-10-06 Werner Lemberg <wl@gnu.org> + + * Version 2.3.10 released. + ========================== + + + Tag sources with `VER-2-3-10'. + + * README: Updated. + + * Makefile (major, minor, patch): Fix regexp to allow more + than a single digit. + (dist): We now use git. + +2009-07-30 Boris Letocha <b.letocha@gmc.net> + + [graph] Fix rendering on Windows. + + * graph/win32/grwin32.c (gr_win32_surface_refresh_rectangle): + Handle `gr_pixel_mode_gray' correctly. + +2009-06-17 Werner Lemberg <wl@gnu.org> + + Reduce number of automatically compiled programs. + Many GNU/Linux distributions install those programs, and most of + them are completely useless or very specialized. + + * Makefile (LINK): Define. + (EXES): Reduce list to retain only generally useful programs. + (ftsbit): Comment out. Program doesn't compile (but may be useful). + (ttdebug.o): Make it compile again. + +2009-06-17 Werner Lemberg <wl@gnu.org> + + * Makefile: Handle `EXTRAFLAGS' for platform `unixdev' also. + +2009-04-30 Werner Lemberg <wl@gnu.org> + + ftview: Make slant and boldness controllable. + + Keys `e' and `E' adjust emboldening, keys `s' and `S' the slant. + + * src/ftview.c (status): Add `bold_factor' and `slant' members. + (Render_Slanted): Use `status.slant'. + (Render_Embolden): Copy code from `FT_GlyphSlot_Embolden' and use + `status.bold_factor'. + (event_bold_change, event_slant_change): New functions. + (Process_Event): Handle keys `s', `S', `e', and `E'. + (event_help): Updated. + +2009-04-26 Werner Lemberg <wl@gnu.org> + + * graph/grblit.c (blit_lcd8_to_24): Fix typo. + Reported by suyu@cooee.cn. + +2009-04-22 Werner Lemberg <wl@gnu.org> + + Fix crash in ftgrid. + + * src/ftgrid.c (grid_status_draw_outline): Handle return value of + FT_Load_Glyph. + 2009-03-12 Werner Lemberg <wl@gnu.org> * Version 2.3.9 released. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2demos-2.3.9/Makefile new/ft2demos-2.3.12/Makefile --- old/ft2demos-2.3.9/Makefile 2007-06-16 11:24:00.000000000 +0200 +++ new/ft2demos-2.3.12/Makefile 2009-10-07 09:57:21.000000000 +0200 @@ -161,6 +161,9 @@ endif endif + LINK = $(LINK_CMD) \ + $(LINK_ITEMS) \ + $(LINK_LIBS) LINK_COMMON = $(LINK_CMD) \ $(LINK_ITEMS) $(subst /,$(COMPILER_SEP),$(COMMON_OBJ)) \ $(LINK_LIBS) @@ -242,14 +245,34 @@ endif + #################################################################### + # + # POSIX TERMIOS: Do not define if you use OLD U*ix like 4.2BSD. + # + ifeq ($(PLATFORM),unix) + EXTRAFLAGS = $DUNIX $DHAVE_POSIX_TERMIOS + endif + + ifeq ($(PLATFORM),unixdev) + EXTRAFLAGS = $DUNIX $DHAVE_POSIX_TERMIOS + endif + + ################################################################### # # The list of demonstration programs to build. # - EXES := ftlint ftmemchk ftdump testname fttimer ftbench ftchkwd ftpatchk + EXES := ftbench \ + ftdump \ + ftlint # Comment out the next line if you don't have a graphics subsystem. - EXES += ftview ftmulti ftstring ftgamma ftgrid ftdiff + EXES += ftdiff \ + ftgamma \ + ftgrid \ + ftmulti \ + ftstring \ + ftview # ftvalid requires ftgxval.c and ftotval.c # @@ -259,12 +282,18 @@ endif endif - # Only uncomment the following lines if the truetype driver was - # compiled with TT_CONFIG_OPTION_BYTECODE_INTERPRETER defined. + # The following programs are not compiled automatically; either comment + # out the affected line or use the program name as a Makefile target. # - # ifneq ($(findstring $(PLATFORM),os2 unix win32),) - # EXES += ttdebug - # endif + # Note that ttdebug only works if the FreeType's `truetype' driver has + # been compiled with TT_CONFIG_OPTION_BYTECODE_INTERPRETER defined. + # + # EXES += ftchkwd + # EXES += ftmemchk + # EXES += ftpatchk + # EXES += fttimer + # EXES += testname + # EXES += ttdebug exes: $(EXES:%=$(BIN_DIR_2)/%$E) @@ -320,6 +349,9 @@ $(OBJ_DIR_2)/testname.$(SO): $(SRC_DIR)/testname.c $(COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) +# $(OBJ_DIR_2)/ftsbit.$(SO): $(SRC_DIR)/ftsbit.c +# $(COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) + # We simplify the dependencies on the graphics library by using # $(GRAPH_LIB) directly. @@ -345,10 +377,6 @@ $T$(subst /,$(COMPILER_SEP),$@ $<) -# $(OBJ_DIR_2)/ftsbit.$(SO): $(SRC_DIR)/ftsbit.c $(GRAPH_LIB) -# $(COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - #################################################################### # # Special rule to compile the `ftdump' program as it includes @@ -403,18 +431,10 @@ # the TrueType source path and needs extra flags for correct keyboard # handling on Unix. - # POSIX TERMIOS: Do not define if you use OLD U*ix like 4.2BSD. - # - # detect a Unix system - # - ifeq ($(PLATFORM),unix) - EXTRAFLAGS = $DUNIX $DHAVE_POSIX_TERMIOS - endif - $(OBJ_DIR_2)/ttdebug.$(SO): $(SRC_DIR)/ttdebug.c $(COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) \ $I$(subst /,$(COMPILER_SEP),$(TOP_DIR)/src/truetype) \ - $(EXTRAFLAGS) + $(EXTRAFLAGS) $DFT2_BUILD_LIBRARY #################################################################### @@ -452,8 +472,8 @@ $(BIN_DIR_2)/fttry$E: $(OBJ_DIR_2)/fttry.$(SO) $(FTLIB) $(LINK) - $(BIN_DIR_2)/ftsbit$E: $(OBJ_DIR_2)/ftsbit.$(SO) $(FTLIB) - $(LINK) +# $(BIN_DIR_2)/ftsbit$E: $(OBJ_DIR_2)/ftsbit.$(SO) $(FTLIB) +# $(LINK) $(BIN_DIR_2)/t1dump$E: $(OBJ_DIR_2)/t1dump.$(SO) $(FTLIB) $(LINK) @@ -502,9 +522,9 @@ ifneq ($(findstring distx,$(MAKECMDGOALS)x),) FT_H := ../freetype2/include/freetype/freetype.h - major := $(shell sed -n 's/.*FREETYPE_MAJOR.*\([0-9]\+\)/\1/p' < $(FT_H)) - minor := $(shell sed -n 's/.*FREETYPE_MINOR.*\([0-9]\+\)/\1/p' < $(FT_H)) - patch := $(shell sed -n 's/.*FREETYPE_PATCH.*\([0-9]\+\)/\1/p' < $(FT_H)) + major := $(shell sed -n 's/.*FREETYPE_MAJOR[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H)) + minor := $(shell sed -n 's/.*FREETYPE_MINOR[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H)) + patch := $(shell sed -n 's/.*FREETYPE_PATCH[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H)) version := $(major).$(minor).$(patch) winversion := $(major)$(minor)$(patch) @@ -516,14 +536,14 @@ rm -f ft2demos-$(version).tar.bz2 rm -f ftdmo$(winversion).zip - for d in `find . -wholename '*/CVS' -prune \ + for d in `find . -wholename '*/.git' -prune \ -o -type f \ -o -print` ; do \ mkdir -p tmp/$$d ; \ done ; currdir=`pwd` ; \ - for f in `find . -wholename '*/CVS' -prune \ + for f in `find . -wholename '*/.git' -prune \ -o -name .cvsignore \ -o -type d \ -o -print` ; do \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2demos-2.3.9/README new/ft2demos-2.3.12/README --- old/ft2demos-2.3.9/README 2009-03-12 10:54:38.000000000 +0100 +++ new/ft2demos-2.3.12/README 2010-02-11 16:39:33.000000000 +0100 @@ -8,8 +8,8 @@ downloaded one of the stable FreeType 2 source packages from our server, you most probably have to rename its directory, for example: - mv freetype-2.3.9 freetype2 on Unix - rename freetype-2.3.9 freetype2 on Windows + mv freetype-2.3.12 freetype2 on Unix + rename freetype-2.3.12 freetype2 on Windows WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2demos-2.3.9/graph/grblit.c new/ft2demos-2.3.12/graph/grblit.c --- old/ft2demos-2.3.9/graph/grblit.c 2007-02-06 11:52:48.000000000 +0100 +++ new/ft2demos-2.3.12/graph/grblit.c 2009-04-26 14:00:12.000000000 +0200 @@ -2,7 +2,7 @@ /* */ /* The FreeType project -- a free and portable quality TrueType renderer. */ /* */ -/* Copyright 1996-1999, 2000, 2001, 2002 by */ +/* Copyright 1996-1999, 2000, 2001, 2002, 2009 by */ /* D. Turner, R.Wilhelm, and W. Lemberg */ /* */ /* grblit.c: Support for blitting of bitmaps with various depth. */ @@ -1395,7 +1395,7 @@ dg = _write[1]; dg += (sg-dg)*val1 >> 8; - db = _write[1]; + db = _write[2]; db += (sb-db)*val2 >> 8; _write[0] = dr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2demos-2.3.9/graph/win32/grwin32.c new/ft2demos-2.3.12/graph/win32/grwin32.c --- old/ft2demos-2.3.9/graph/win32/grwin32.c 2007-04-02 21:11:02.000000000 +0200 +++ new/ft2demos-2.3.12/graph/win32/grwin32.c 2009-07-30 16:53:21.000000000 +0200 @@ -191,10 +191,11 @@ /* now, perform the blit */ row_bytes = surface->root.bitmap.pitch; - if (row_bytes < 0) row_bytes = -row_bytes; + 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; + if ( row_bytes * 8 != pbmi->bmiHeader.biWidth * pbmi->bmiHeader.biBitCount ) + pbmi->bmiHeader.biWidth = row_bytes * 8 / pbmi->bmiHeader.biBitCount; #ifdef SWIZZLE { @@ -219,27 +220,45 @@ int height = bitmap->rows; int width = bitmap->width; - if (read_pitch < 0) - read_line -= (height-1)*read_pitch; + if ( read_pitch < 0 ) + read_line -= ( height - 1 ) * read_pitch; - if (write_pitch < 0) - write_line -= (height-1)*write_pitch; + if ( write_pitch < 0 ) + write_line -= ( height - 1 ) * write_pitch; - for ( ; height > 0; height-- ) + if ( bitmap->mode == gr_pixel_mode_gray ) { - unsigned char* read = read_line; - unsigned char* read_limit = read + 3*width; - unsigned char* write = write_line; - - for ( ; read < read_limit; read += 3, write += 3 ) + for ( ; height > 0; height-- ) { - write[0] = read[2]; - write[1] = read[1]; - write[2] = read[0]; + unsigned char* read = read_line; + unsigned char* read_limit = read + width; + unsigned char* write = write_line; + + for ( ; read < read_limit; read++, write++ ) + *write = *read; + + read_line += read_pitch; + write_line += write_pitch; } + } + else + { + for ( ; height > 0; height-- ) + { + unsigned char* read = read_line; + unsigned char* read_limit = read + 3 * width; + unsigned char* write = write_line; + + for ( ; read < read_limit; read += 3, write += 3 ) + { + write[0] = read[2]; + write[1] = read[1]; + write[2] = read[0]; + } - read_line += read_pitch; - write_line += write_pitch; + read_line += read_pitch; + write_line += write_pitch; + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2demos-2.3.9/src/ftgrid.c new/ft2demos-2.3.12/src/ftgrid.c --- old/ft2demos-2.3.9/src/ftgrid.c 2009-03-11 06:42:57.000000000 +0100 +++ new/ft2demos-2.3.12/src/ftgrid.c 2009-04-30 18:15:21.000000000 +0200 @@ -400,8 +400,9 @@ _af_debug_disable_horz_hints = !st->do_horz_hints; _af_debug_disable_vert_hints = !st->do_vert_hints; - FT_Load_Glyph( size->face, st->Num, - handle->load_flags | FT_LOAD_NO_BITMAP ); + if ( FT_Load_Glyph( size->face, st->Num, + handle->load_flags | FT_LOAD_NO_BITMAP ) ) + return; slot = size->face->glyph; if ( slot->format == FT_GLYPH_FORMAT_OUTLINE ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2demos-2.3.9/src/ftview.c new/ft2demos-2.3.12/src/ftview.c --- old/ft2demos-2.3.9/src/ftview.c 2009-03-04 00:06:59.000000000 +0100 +++ new/ft2demos-2.3.12/src/ftview.c 2009-04-30 20:08:25.000000000 +0200 @@ -33,23 +33,24 @@ #ifdef CEIL #undef CEIL #endif -#define CEIL( x ) ( ( (x) + 63 ) >> 6 ) +#define CEIL( x ) ( ( (x) + 63 ) >> 6 ) -#define INIT_SIZE( size, start_x, start_y, step_x, step_y, x, y ) \ - do { \ - start_x = 4; \ - start_y = CEIL( size->metrics.height ) + 2 * HEADER_HEIGHT; \ - step_x = CEIL( size->metrics.max_advance ); \ - step_y = CEIL( size->metrics.height ) + 4; \ - \ - x = start_x; \ - y = start_y; \ +#define INIT_SIZE( size, start_x, start_y, step_x, step_y, x, y ) \ + do { \ + start_x = 4; \ + start_y = CEIL( size->metrics.height ) + 2 * HEADER_HEIGHT; \ + step_x = CEIL( size->metrics.max_advance ); \ + step_y = CEIL( size->metrics.height ) + 4; \ + \ + x = start_x; \ + y = start_y; \ } while ( 0 ) -#define X_TOO_LONG( x, size, display) \ - ( ( x ) + ( ( size )->metrics.max_advance >> 6 ) > ( display )->bitmap->width ) -#define Y_TOO_LONG( y, size, display) \ - ( ( y ) >= ( display )->bitmap->rows ) +#define X_TOO_LONG( x, size, display ) \ + ( (x) + ( (size)->metrics.max_advance >> 6 ) > \ + (display)->bitmap->width ) +#define Y_TOO_LONG( y, size, display ) \ + ( (y) >= (display)->bitmap->rows ) #ifdef _WIN32 #define snprintf _snprintf @@ -75,6 +76,8 @@ int ptsize; /* current point size, 26.6 format */ int lcd_mode; double gamma; + double bold_factor; + double slant; int debug; int trace_level; @@ -86,7 +89,9 @@ int Fail; int preload; - } status = { RENDER_MODE_ALL, FT_ENCODING_NONE, 72, 48, -1, 1.0, 0, 0, 0, 0, 0, NULL, { 0 }, 0, 0 }; + } status = { RENDER_MODE_ALL, FT_ENCODING_NONE, 72, 48, -1, + 1.0, 0.04, 0.22, + 0, 0, 0, 0, 0, NULL, { 0 }, 0, 0 }; static FTDemo_Display* display; @@ -94,15 +99,15 @@ static const unsigned char* Text = (unsigned char*) - "The quick brown fox jumps over the lazy dog 0123456789 " - "\342\352\356\373\364\344\353\357\366\374\377\340\371\351\350\347 " - "~\"\'(-`_^@)=+\260 ABCDEFGHIJKLMNOPQRSTUVWXYZ " - "$\243^\250*\265\371%!\247:/;.,?<>"; + "The quick brown fox jumps over the lazy dog 0123456789" + " \342\352\356\373\364\344\353\357\366\374\377\340\371\351\350\347" + " ~\"\'(-`_^@)=+\260 ABCDEFGHIJKLMNOPQRSTUVWXYZ" + " $\243^\250*\265\371%!\247:/;.,?<>"; static void - Fatal( const char* message ) + Fatal( const char* message ) { FTDemo_Display_Done( display ); FTDemo_Done( handle ); @@ -160,6 +165,7 @@ { FT_Glyph glyph; + error = FT_Get_Glyph( slot, &glyph ); if ( error ) goto Next; @@ -187,7 +193,7 @@ } else { -Next: + Next: status.Fail++; } @@ -253,14 +259,10 @@ /* */ /* outline' shear outline */ /* */ - /* Shear angle is 12 degrees, so: */ - /* */ - /* k = tan(12) = 0.2126 */ - /* */ /***************************************************************/ shear.xx = 1 << 16; - shear.xy = (FT_Fixed)( 0.2126f * ( 1 << 16 ) ); + shear.xy = (FT_Fixed)( status.slant * ( 1 << 16 ) ); shear.yx = 0; shear.yy = 1 << 16; @@ -295,9 +297,9 @@ Render_Embolden( int num_indices, int first_index ) { - int start_x, start_y, step_x, step_y, x, y; - int i; - FT_Size size; + int start_x, start_y, step_x, step_y, x, y; + int i; + FT_Size size; error = FTDemo_Get_Size( handle, &size ); @@ -314,8 +316,8 @@ while ( i < num_indices ) { - int gindex; - FT_Face face = size->face; + int gindex; + FT_Face face = size->face; if ( handle->encoding == FT_ENCODING_NONE ) @@ -326,12 +328,67 @@ error = FT_Load_Glyph( face, gindex, handle->load_flags ); if ( !error ) { - FT_GlyphSlot_Embolden( face->glyph ); + /* this is essentially the code of function */ + /* `FT_GlyphSlot_Embolden' */ - error = FTDemo_Draw_Slot( handle, display, face->glyph, &x, &y ); + FT_GlyphSlot slot = face->glyph; + FT_Library library = slot->library; + FT_Pos xstr, ystr; + + + if ( slot->format != FT_GLYPH_FORMAT_OUTLINE && + slot->format != FT_GLYPH_FORMAT_BITMAP ) + goto Next; + + xstr = FT_MulFix( face->units_per_EM, + face->size->metrics.y_scale ); + xstr = (FT_Fixed)( xstr * status.bold_factor ); + ystr = xstr; + + if ( slot->format == FT_GLYPH_FORMAT_OUTLINE ) + { + error = FT_Outline_Embolden( &slot->outline, xstr ); + /* ignore error */ + + xstr = xstr * 2; + ystr = xstr; + } + else if ( slot->format == FT_GLYPH_FORMAT_BITMAP ) + { + /* round to full pixels */ + xstr &= ~63; + ystr &= ~63; + + error = FT_GlyphSlot_Own_Bitmap( slot ); + if ( error ) + goto Next; + + error = FT_Bitmap_Embolden( library, &slot->bitmap, xstr, ystr ); + if ( error ) + goto Next; + } + + if ( slot->advance.x ) + slot->advance.x += xstr; + + if ( slot->advance.y ) + slot->advance.y += ystr; + + slot->metrics.width += xstr; + slot->metrics.height += ystr; + slot->metrics.horiBearingY += ystr; + slot->metrics.horiAdvance += xstr; + slot->metrics.vertBearingX -= xstr / 2; + slot->metrics.vertBearingY += ystr; + slot->metrics.vertAdvance += ystr; + + if ( slot->format == FT_GLYPH_FORMAT_BITMAP ) + slot->bitmap_top += ystr >> 6; + + error = FTDemo_Draw_Slot( handle, display, slot, &x, &y ); if ( error ) - status.Fail++; + goto Next; else if ( X_TOO_LONG( x, size, display ) ) { x = start_x; @@ -342,6 +399,7 @@ } } else + Next: status.Fail++; i++; @@ -355,9 +413,9 @@ Render_All( int num_indices, int first_index ) { - int start_x, start_y, step_x, step_y, x, y; - int i; - FT_Size size; + int start_x, start_y, step_x, step_y, x, y; + int i; + FT_Size size; error = FTDemo_Get_Size( handle, &size ); @@ -440,6 +498,7 @@ FT_UInt gindex; int ch; + ch = utf8_next( &p, pEnd ); if ( ch < 0 ) break; @@ -475,35 +534,34 @@ static FT_Error Render_Waterfall( int first_size ) { - int start_x, start_y, step_x, step_y, x, y; - int pt_size, max_size = 100000; - FT_Size size; - FT_Face face; + int start_x, start_y, step_x, step_y, x, y; + int pt_size, max_size = 100000; + FT_Size size; + FT_Face face; unsigned char text[256]; const unsigned char* p; + error = FTC_Manager_LookupFace( handle->cache_manager, + handle->scaler.face_id, &face ); + if ( error ) { - error = FTC_Manager_LookupFace( handle->cache_manager, - handle->scaler.face_id, &face ); - if ( error ) - { - /* can't access the font file. do not render anything */ - fprintf( stderr, "can't access font file %p\n", (void*)handle->scaler.face_id ); - return 0; - } + /* can't access the font file: do not render anything */ + fprintf( stderr, "can't access font file %p\n", + (void*)handle->scaler.face_id ); + return 0; + } - if ( !FT_IS_SCALABLE( face ) ) - { - int i; + if ( !FT_IS_SCALABLE( face ) ) + { + int i; - max_size = 0; - for ( i = 0; i < face->num_fixed_sizes; i++ ) - if ( face->available_sizes[i].height >= max_size/64 ) - max_size = face->available_sizes[i].height*64; - } + max_size = 0; + for ( i = 0; i < face->num_fixed_sizes; i++ ) + if ( face->available_sizes[i].height >= max_size / 64 ) + max_size = face->available_sizes[i].height * 64; } start_x = 4; @@ -512,8 +570,8 @@ for ( pt_size = first_size; pt_size < max_size; pt_size += 64 ) { sprintf( (char*)text, - "%g: the quick brown fox jumps over the lazy dog " - "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", pt_size/64.0 ); + "%g: the quick brown fox jumps over the lazy dog" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", pt_size / 64.0 ); p = text; @@ -599,6 +657,9 @@ grWriteln( " space : toggle rendering mode" ); grWriteln( " 1-6 : select rendering mode" ); grLn(); + grWriteln( " e, E : adjust emboldening" ); + grWriteln( " s, S : adjust slanting" ); + grLn(); grWriteln( " G : show gamma ramp" ); grWriteln( " g : increase gamma by 0.1" ); grWriteln( " v : decrease gamma by 0.1" ); @@ -637,8 +698,8 @@ int xside = 10; int levels = 17; int gammas = 30; - int x_0 = (display->bitmap->width - levels*xside)/2; - int y_0 = (display->bitmap->rows - gammas*(yside+1))/2; + int x_0 = ( display->bitmap->width - levels * xside ) / 2; + int y_0 = ( display->bitmap->rows - gammas * ( yside + 1 ) ) / 2; int pitch = display->bitmap->pitch; @@ -648,18 +709,21 @@ if ( pitch < 0 ) pitch = -pitch; - memset( display->bitmap->buffer, 100, pitch*display->bitmap->rows ); + memset( display->bitmap->buffer, 100, pitch * display->bitmap->rows ); - grWriteCellString( display->bitmap, 0, 0, "Gamma grid", display->fore_color ); + grWriteCellString( display->bitmap, 0, 0, "Gamma grid", + display->fore_color ); for ( g = 1; g <= gammas; g += 1 ) { - double ggamma = g / 10.0; - char temp[6]; - int y = y_0 + ( yside + 1 ) * ( g - 1 ); - int nx, ny; + double ggamma = g / 10.0; + char temp[6]; + int y = y_0 + ( yside + 1 ) * ( g - 1 ); + int nx, ny; + + unsigned char* line = display->bitmap->buffer + + y * display->bitmap->pitch; - unsigned char* line = display->bitmap->buffer + y * display->bitmap->pitch; if ( display->bitmap->pitch < 0 ) line -= display->bitmap->pitch * ( display->bitmap->rows - 1 ); @@ -676,24 +740,25 @@ { unsigned char* dst = line; + for ( nx = 0; nx < levels; nx++, dst += 3 * xside ) { - double p = nx/(double)(levels - 1); + double p = nx / (double)( levels - 1 ); int gm = (int)( 255.0 * pow( p, ggamma ) ); + memset( dst, gm, xside * 3 ); } } } - grRefreshSurface( display->surface ); grListenSurface( display->surface, gr_event_key, &dummy_event ); } static void - event_gamma_change( double delta ) + event_gamma_change( double delta ) { status.gamma += delta; @@ -712,23 +777,57 @@ static void - event_size_change( int delta ) + event_bold_change( double delta ) + { + status.bold_factor += delta; + + if ( status.bold_factor > 0.1 ) + status.bold_factor = 0.1; + else if ( status.bold_factor < -0.1 ) + status.bold_factor = -0.1; + + sprintf( status.header_buffer, "embolding factor changed to %.3f", + status.bold_factor ); + + status.header = status.header_buffer; + } + + + static void + event_slant_change( double delta ) + { + status.slant += delta; + + if ( status.slant > 1.0 ) + status.slant = 1.0; + else if ( status.slant < -1.0 ) + status.slant = -1.0; + + sprintf( status.header_buffer, "slanting changed to %.3f", + status.slant ); + + status.header = status.header_buffer; + } + + + static void + event_size_change( int delta ) { status.ptsize += delta; - if ( status.ptsize < 64*1 ) - status.ptsize = 1*64; - else if ( status.ptsize > MAXPTSIZE*64 ) - status.ptsize = MAXPTSIZE*64; + if ( status.ptsize < 64 * 1 ) + status.ptsize = 1 * 64; + else if ( status.ptsize > MAXPTSIZE * 64 ) + status.ptsize = MAXPTSIZE * 64; FTDemo_Set_Current_Charsize( handle, status.ptsize, status.res ); } static void - event_index_change( int delta ) + event_index_change( int delta ) { - int num_indices = handle->current_font->num_indices; + int num_indices = handle->current_font->num_indices; status.Num += delta; @@ -741,7 +840,7 @@ static void - event_render_mode_change( int delta ) + event_render_mode_change( int delta ) { if ( delta ) @@ -779,11 +878,11 @@ static void event_font_change( int delta ) { - int num_indices; + int num_indices; if ( status.font_index + delta >= handle->num_fonts || - status.font_index + delta < 0 ) + status.font_index + delta < 0 ) return; status.font_index += delta; @@ -804,6 +903,7 @@ { int ret = 0; + if ( event->key >= '1' && event->key < '1' + N_RENDER_MODES ) { status.render_mode = event->key - '1'; @@ -836,8 +936,8 @@ case grKEY( 'b' ): handle->use_sbits = !handle->use_sbits; status.header = handle->use_sbits - ? (char *)"embedded bitmaps are now used when available" - : (char *)"embedded bitmaps are now ignored"; + ? (char *)"now using embedded bitmaps (if available)" + : (char *)"now ignoring embedded bitmaps"; FTDemo_Update_Current_Flags( handle ); break; @@ -882,22 +982,22 @@ switch ( handle->lcd_mode ) { case LCD_MODE_AA: - status.header = (char *)"normal anti-aliased rendering on"; + status.header = (char *)"use normal anti-aliased rendering"; break; case LCD_MODE_LIGHT: - status.header = (char *)"light anti-aliased rendering on"; + status.header = (char *)"use light anti-aliased rendering"; break; case LCD_MODE_RGB: - status.header = (char *)"horizontal LCD-optimized rendering on (RGB)"; + status.header = (char *)"use horizontal LCD-optimized rendering (RGB)"; break; case LCD_MODE_BGR: - status.header = (char *)"horizontal LCD-optimized rendering on (BGR)"; + status.header = (char *)"use horizontal LCD-optimized rendering (BGR)"; break; case LCD_MODE_VRGB: - status.header = (char *)"vertical LCD-optimized rendering on (RGB)"; + status.header = (char *)"use vertical LCD-optimized rendering (RGB)"; break; case LCD_MODE_VBGR: - status.header = (char *)"vertical LCD-optimized rendering on (BGR)"; + status.header = (char *)"use vertical LCD-optimized rendering (BGR)"; break; } @@ -912,6 +1012,22 @@ event_gamma_grid(); break; + case grKEY( 's' ): + event_slant_change( 0.02 ); + break; + + case grKEY( 'S' ): + event_slant_change( -0.02 ); + break; + + case grKEY( 'e' ): + event_bold_change( 0.002 ); + break; + + case grKEY( 'E' ): + event_bold_change( -0.002 ); + break; + case grKEY( 'g' ): event_gamma_change( 0.1 ); break; @@ -951,7 +1067,7 @@ static void - write_header( FT_Error error_code ) + write_header( FT_Error error_code ) { FT_Face face; const char* basename; @@ -970,31 +1086,35 @@ switch ( error_code ) { case FT_Err_Ok: - sprintf( status.header_buffer, "%s %s (file `%s')", face->family_name, - face->style_name, basename ); + sprintf( status.header_buffer, "%s %s (file `%s')", + face->family_name, face->style_name, basename ); break; case FT_Err_Invalid_Pixel_Size: - sprintf( status.header_buffer, "Invalid pixel size (file `%s')", basename ); + sprintf( status.header_buffer, "Invalid pixel size (file `%s')", + basename ); break; case FT_Err_Invalid_PPem: - sprintf( status.header_buffer, "Invalid ppem value (file `%s')", basename ); + sprintf( status.header_buffer, "Invalid ppem value (file `%s')", + basename ); break; default: - sprintf( status.header_buffer, "File `%s': error 0x%04x", basename, - (FT_UShort)error_code ); + sprintf( status.header_buffer, "File `%s': error 0x%04x", + basename, (FT_UShort)error_code ); break; } status.header = status.header_buffer; } - grWriteCellString( display->bitmap, 0, 0, status.header, display->fore_color ); + grWriteCellString( display->bitmap, 0, 0, + status.header, display->fore_color ); - format = ( status.encoding != FT_ENCODING_NONE ) + format = status.encoding != FT_ENCODING_NONE ? "at %g points, first char code = 0x%x" : "at %g points, first glyph index = %d"; - snprintf( status.header_buffer, 256, format, status.ptsize/64.0, status.Num ); + snprintf( status.header_buffer, 256, format, + status.ptsize / 64.0, status.Num ); if ( FT_HAS_GLYPH_NAMES( face ) ) { @@ -1016,14 +1136,15 @@ gindex = FTDemo_Get_Index( handle, status.Num ); strcpy( p, format ); - if ( FT_Get_Glyph_Name( face, gindex, p + format_len, size - format_len ) ) + if ( FT_Get_Glyph_Name( face, gindex, + p + format_len, size - format_len ) ) *p = '\0'; } } status.header = status.header_buffer; - grWriteCellString( display->bitmap, 0, HEADER_HEIGHT, status.header_buffer, - display->fore_color ); + grWriteCellString( display->bitmap, 0, HEADER_HEIGHT, + status.header_buffer, display->fore_color ); grRefreshSurface( display->surface ); } @@ -1162,15 +1283,15 @@ #if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 && FREETYPE_PATCH <= 8 if ( status.debug ) { -# ifdef FT_DEBUG_LEVEL_TRACE +#ifdef FT_DEBUG_LEVEL_TRACE FT_SetTraceLevel( trace_any, (FT_Byte)status.trace_level ); -# else +#else status.trace_level = 0; -# endif +#endif } #elif 0 - /* "setenv/putenv" is not ANSI and I don't want to mess */ - /* with this portability issue right now.. */ + /* `setenv' and `putenv' is not ANSI and I don't want to mess */ + /* with this portability issue right now... */ if ( status.debug ) { char temp[32]; @@ -1200,7 +1321,8 @@ memset( display->fore_color.chroma, 0, 4 ); memset( display->back_color.chroma, 0xff, 4 ); - grSetTitle( display->surface, "FreeType Glyph Viewer - press F1 for help" ); + grSetTitle( display->surface, + "FreeType Glyph Viewer - press F1 for help" ); status.Fail = 0; @@ -1218,19 +1340,23 @@ switch ( status.render_mode ) { case RENDER_MODE_ALL: - error = Render_All( handle->current_font->num_indices, status.Num ); + error = Render_All( handle->current_font->num_indices, + status.Num ); break; case RENDER_MODE_EMBOLDEN: - error = Render_Embolden( handle->current_font->num_indices, status.Num ); + error = Render_Embolden( handle->current_font->num_indices, + status.Num ); break; case RENDER_MODE_SLANTED: - error = Render_Slanted( handle->current_font->num_indices, status.Num ); + error = Render_Slanted( handle->current_font->num_indices, + status.Num ); break; case RENDER_MODE_STROKE: - error = Render_Stroke( handle->current_font->num_indices, status.Num ); + error = Render_Stroke( handle->current_font->num_indices, + status.Num ); break; case RENDER_MODE_TEXT: ++++++ use_unix.diff ++++++ Index: freetype-2.3.12/builds/toplevel.mk =================================================================== --- freetype-2.3.12.orig/builds/toplevel.mk 2010-03-31 16:24:31.000000000 +0200 +++ freetype-2.3.12/builds/toplevel.mk 2010-03-31 16:31:02.000000000 +0200 @@ -120,7 +120,7 @@ ifdef check_platform # # Note: This test is duplicated in `builds/unix/detect.mk'. # - is_unix := $(strip $(wildcard /sbin/init) \ + is_unix := $(strip $(wildcard /bin/ls) \ $(wildcard /usr/sbin/init) \ $(wildcard /hurd/auth)) ifneq ($(is_unix),) Index: freetype-2.3.12/builds/unix/detect.mk =================================================================== --- freetype-2.3.12.orig/builds/unix/detect.mk 2009-03-14 14:45:26.000000000 +0100 +++ freetype-2.3.12/builds/unix/detect.mk 2010-03-31 16:31:16.000000000 +0200 @@ -18,7 +18,7 @@ ifeq ($(PLATFORM),ansi) # Note: this test is duplicated in "builds/toplevel.mk". # - is_unix := $(strip $(wildcard /sbin/init) \ + is_unix := $(strip $(wildcard /bin/ls) \ $(wildcard /usr/sbin/init) \ $(wildcard /hurd/auth)) ifneq ($(is_unix),) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org