Package: libfreetype6
Version: 2.3.11-1.1
Severity: normal

Hi, 

FT_Render_Glyph() return "invalid outline" at x86_64 architecture.
so I can't display some OpenType fonts correctly.

This bug can be reproduced by the following method:
 
  $ ftview -f 7000 -r 72 78 /usr/share/fonts/opentype/ipafont/ipamp.ttf
    - Press "a" turn off anti-alias, some glyph vanish.
    - Press "q" for quilt
  Execution completed successfully. 
  Fails = 3

I find patch fixed this bug in package of VineLinux.

# But I can't see this pactch correct behaver...

Regards,
---
Youhei SASAKI <[email protected]>
              <[email protected]>
GPG fingerprint:
  4096/RSA: 66A4 EA70 4FE2 4055 8D6A C2E6 9394 F354 891D 7E07
  1024/DSA: 8BF1 ABFE 00D2 526D 6822 2AC6 13E0 381D AEE9 95F4


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.34 (SMP w/4 CPU cores)
Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libfreetype6 depends on:
ii  libc6                   2.11.1-1         Embedded GNU C Library: Shared lib
ii  zlib1g                  1:1.2.3.4.dfsg-3 compression library - runtime

libfreetype6 recommends no packages.

libfreetype6 suggests no packages.

-- no debconf information

diff -up freetype-2.3.11/src/raster/ftraster.c.invalid_outline 
freetype-2.3.11/src/raster/ftraster.c
--- freetype-2.3.11/src/raster/ftraster.c.invalid_outline       2009-09-13 
05:31:16.000000000 +0900
+++ freetype-2.3.11/src/raster/ftraster.c       2009-10-13 19:47:28.000000000 
+0900
@@ -301,8 +301,8 @@
   typedef unsigned int    UInt;
   typedef short           Short;
   typedef unsigned short  UShort, *PUShort;
-  typedef long            Long, *PLong;
-  typedef unsigned long   ULong;
+  typedef int            Long, *PLong;
+  typedef unsigned int   ULong;
 
   typedef unsigned char   Byte, *PByte;
   typedef char            Bool;
@@ -310,7 +310,7 @@
 
   typedef union  Alignment_
   {
-    long    l;
+    int    l;
     void*   p;
     void  (*f)(void);
 
@@ -354,8 +354,8 @@
                              /* Bit 3: profile orientation (up/down)     */
                              /* Bit 4: is top profile?                   */
                              /* Bit 5: is bottom profile?                */
-    long        height;      /* profile's height in scanlines            */
-    long        start;       /* profile's starting scanline              */
+    int         height;      /* profile's height in scanlines            */
+    int         start;       /* profile's starting scanline              */
 
     unsigned    countL;      /* number of lines to step before this      */
                              /* profile becomes drawable                 */
@@ -379,7 +379,7 @@
 
 
 #define AlignProfileSize \
-  ( ( sizeof ( TProfile ) + sizeof ( Alignment ) - 1 ) / sizeof ( long ) )
+  ( ( sizeof ( TProfile ) + sizeof ( Alignment ) - 1 ) / sizeof ( int ) )
 
 
 #ifdef FT_STATIC_RASTER
@@ -545,7 +545,7 @@
   typedef struct  TRaster_
   {
     char*    buffer;
-    long     buffer_size;
+    int      buffer_size;
     void*    memory;
     PWorker  worker;
     Byte     grays[5];
@@ -3438,7 +3438,7 @@
   static void
   ft_black_reset( PRaster  raster,
                   char*    pool_base,
-                  long     pool_size )
+                  int     pool_size )
   {
     if ( raster )
     {
@@ -3464,7 +3464,7 @@
 
   static void
   ft_black_set_mode( PRaster        raster,
-                     unsigned long  mode,
+                     unsigned int  mode,
                      const char*    palette )
   {
 #ifdef FT_RASTER_OPTION_ANTI_ALIASING

Reply via email to