]> git.wh0rd.org - fontconfig.git/commitdiff
Get rid of the use of freetype internal headers in fcfreetype.c, since
authorPatrick Lam <plam@MIT.EDU>
Sat, 19 Nov 2005 22:32:13 +0000 (22:32 +0000)
committerPatrick Lam <plam@MIT.EDU>
Sat, 19 Nov 2005 22:32:13 +0000 (22:32 +0000)
    those headers will go away with freetype 2.2. Replace with public
    domain ftglue code from pango. Note that the patch removes some extra
    error checking in FT_Get_BDF_Property() and comments out the skipping
    of empty pcf fonts.
reviewed by: plam

ChangeLog
src/Makefile.am
src/fcfreetype.c

index c14d063e8bf05c8cbe1539cbb1a6275dceb085aa..a350daa2714ea814b40ac97e8fc5163c51917764 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2005-11-19  Matthias Clasen  <mclasen@redhat.com>
+       reviewed by: plam
+
+       * src/Makefile.am:
+       * src/fcfreetype.c (FcGetPixelSize, FcFreeTypeQuery, GetScriptTags,
+                           FcFontCapabilities):
+
+       Get rid of the use of freetype internal headers in fcfreetype.c,
+       since those headers will go away with freetype 2.2.  Replace with
+       public domain ftglue code from pango.  Note that the patch removes
+       some extra error checking in FT_Get_BDF_Property() and comments
+       out the skipping of empty pcf fonts.
+
 2005-11-19  Jinghua Luo  <sunmoon1997@gmail.com>
        reviewed by: plam
 
index 274a4b65217e749f4121f49ab91fa775c729d4d1..2ba99458bb4787d717bf239fcda833c833c7b2dc 100644 (file)
@@ -95,7 +95,9 @@ libfontconfig_la_SOURCES = \
        fcname.c \
        fcpat.c \
        fcstr.c \
-       fcxml.c
+       fcxml.c \
+       ftglue.h \
+       ftglue.c
 
 lib_LTLIBRARIES = libfontconfig.la
 
index 46dc5a41455b613c6bacd8fd620dc66fb5d8d79e..8cdc647c2cd6fd419049ec3b4e94cd3246e933dc 100644 (file)
 #include "fcint.h"
 #include <ft2build.h>
 #include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
 #include FT_TRUETYPE_TABLES_H
 #include FT_SFNT_NAMES_H
 #include FT_TRUETYPE_IDS_H
 #include FT_TYPE1_TABLES_H
-#include FT_INTERNAL_STREAM_H
-#include FT_INTERNAL_SFNT_H
-#include FT_INTERNAL_TRUETYPE_TYPES_H
 #if HAVE_FT_GET_X11_FONT_FORMAT
 #include FT_XFREE86_H
 #endif
-
 #if HAVE_FT_GET_BDF_PROPERTY
 #include FT_BDF_H
 #include FT_MODULE_H
-#define HAS_BDF_PROPERTY(f) ((f) && (f)->driver && \
-                            (f)->driver->root.clazz->get_interface)
-#define MY_Get_BDF_Property(f,n,p) (HAS_BDF_PROPERTY(f) ? \
-                                   FT_Get_BDF_Property(f,n,p) : \
-                                   FT_Err_Invalid_Argument)
 #endif
 
+#include "ftglue.h"
+
 #if !HAVE_FT_GET_BDF_PROPERTY
 #warning "No FT_Get_BDF_Property: Please install freetype 2.1.4 or later"
 #endif
@@ -963,7 +955,7 @@ FcGetPixelSize (FT_Face face, int i)
        BDF_PropertyRec prop;
        int             rc;
 
-       rc = MY_Get_BDF_Property (face, "PIXEL_SIZE", &prop);
+       rc = FT_Get_BDF_Property (face, "PIXEL_SIZE", &prop);
        if (rc == 0 && prop.type == BDF_PROPERTY_TYPE_INTEGER)
            return (double) prop.u.integer;
     }
@@ -1442,14 +1434,14 @@ FcFreeTypeQuery (const FcChar8  *file,
     {
        int             rc;
        BDF_PropertyRec prop;
-       rc = MY_Get_BDF_Property(face, "FOUNDRY", &prop);
+       rc = FT_Get_BDF_Property(face, "FOUNDRY", &prop);
        if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_ATOM)
            foundry = (FcChar8 *) prop.u.atom;
     }
 
     if (width == -1)
     {
-       if (MY_Get_BDF_Property(face, "RELATIVE_SETWIDTH", &prop) == 0 &&
+       if (FT_Get_BDF_Property(face, "RELATIVE_SETWIDTH", &prop) == 0 &&
            (prop.type == BDF_PROPERTY_TYPE_INTEGER ||
             prop.type == BDF_PROPERTY_TYPE_CARDINAL))
        {
@@ -1472,7 +1464,7 @@ FcFreeTypeQuery (const FcChar8    *file,
            }
        }
        if (width == -1 &&
-           MY_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
+           FT_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
            prop.type == BDF_PROPERTY_TYPE_ATOM)
        {
            width = FcIsWidth ((FcChar8 *) prop.u.atom);
@@ -1552,7 +1544,7 @@ FcFreeTypeQuery (const FcChar8    *file,
 #if HAVE_FT_GET_BDF_PROPERTY
     /* For PCF fonts, override the computed spacing with the one from
        the property */
-    if(MY_Get_BDF_Property(face, "SPACING", &prop) == 0 &&
+    if(FT_Get_BDF_Property(face, "SPACING", &prop) == 0 &&
        prop.type == BDF_PROPERTY_TYPE_ATOM) {
         if(!strcmp(prop.u.atom, "c") || !strcmp(prop.u.atom, "C"))
             spacing = FC_CHARCELL;
@@ -1563,6 +1555,7 @@ FcFreeTypeQuery (const FcChar8    *file,
     }
 #endif
 
+#if 0
     /*
      * Skip over PCF fonts that have no encoded characters; they're
      * usually just Unicode fonts transcoded to some legacy encoding
@@ -1572,6 +1565,7 @@ FcFreeTypeQuery (const FcChar8    *file,
        if (!strcmp(FT_MODULE_CLASS(&face->driver->root)->module_name, "pcf"))
            goto bail2;
     }
+#endif
 
     if (!FcPatternAddCharSet (pat, FC_CHARSET, cs))
        goto bail2;
@@ -1606,7 +1600,7 @@ FcFreeTypeQuery (const FcChar8    *file,
             int value;
             BDF_PropertyRec prop;
 
-            rc = MY_Get_BDF_Property(face, "POINT_SIZE", &prop);
+            rc = FT_Get_BDF_Property(face, "POINT_SIZE", &prop);
             if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_INTEGER)
                 value = prop.u.integer;
             else if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_CARDINAL)
@@ -1616,7 +1610,7 @@ FcFreeTypeQuery (const FcChar8    *file,
             if(!FcPatternAddDouble(pat, FC_SIZE, value / 10.0))
                 goto nevermind;
 
-            rc = MY_Get_BDF_Property(face, "RESOLUTION_Y", &prop);
+            rc = FT_Get_BDF_Property(face, "RESOLUTION_Y", &prop);
             if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_INTEGER)
                 value = prop.u.integer;
             else if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_CARDINAL)
@@ -2734,7 +2728,6 @@ static FT_Error
 GetScriptTags(FT_Face face, FT_ULong tabletag, FT_ULong **stags, FT_UShort *script_count)
 {
     FT_ULong         cur_offset, new_offset, base_offset;
-    TT_Face          tt_face = (TT_Face)face;
     FT_Stream  stream = face->stream;
     FT_Error   error;
     FT_UShort          n, p;
@@ -2743,51 +2736,53 @@ GetScriptTags(FT_Face face, FT_ULong tabletag, FT_ULong **stags, FT_UShort *scri
     if ( !stream )
        return TT_Err_Invalid_Face_Handle;
 
-    if (( error = tt_face->goto_table( tt_face, tabletag, stream, 0 ) ))
+    if (( error = ftglue_face_goto_table( face, tabletag, stream ) ))
        return error;
 
-    base_offset = FT_STREAM_POS();
+    base_offset = ftglue_stream_pos ( stream );
 
     /* skip version */
 
-    if ( FT_STREAM_SEEK( base_offset + 4L ) || FT_FRAME_ENTER( 2L ) )
+    if ( ftglue_stream_seek ( stream, base_offset + 4L ) || ftglue_stream_frame_enter( stream, 2L ) )
        return error;
 
-    new_offset = FT_GET_USHORT() + base_offset;
+    new_offset = ((FT_UShort)ftglue_stream_get_short ( stream )) + base_offset;
 
-    FT_FRAME_EXIT();
+    ftglue_stream_frame_exit( stream );
 
-    cur_offset = FT_STREAM_POS();
+    cur_offset = ftglue_stream_pos( stream );
 
-    if ( FT_STREAM_SEEK( new_offset ) != TT_Err_Ok )
+    if ( ftglue_stream_seek( stream, new_offset ) != TT_Err_Ok )
        return error;
 
-    base_offset = FT_STREAM_POS();
+    base_offset = ftglue_stream_pos( stream );
 
-    if ( FT_FRAME_ENTER( 2L ) )
+    if ( ftglue_stream_frame_enter( stream, 2L ) )
        return error;
 
-    *script_count = FT_GET_USHORT();
+    *script_count = ((FT_UShort)ftglue_stream_get_short ( stream ));
+
+    ftglue_stream_frame_exit( stream );
 
-    FT_FRAME_EXIT();
+    *stags = ftglue_alloc(memory, *script_count * sizeof( FT_ULong ), &error);
 
-    if ( FT_SET_ERROR (FT_MEM_ALLOC_ARRAY( *stags, *script_count, FT_ULong )) )
+    if (error)
        return error;
 
     p = 0;
     for ( n = 0; n < *script_count; n++ )
     {
-       if ( FT_FRAME_ENTER( 6L ) )
+        if ( ftglue_stream_frame_enter( stream, 6L ) )
            goto Fail;
 
-       (*stags)[p] = FT_GET_ULONG();
-       new_offset = FT_GET_USHORT() + base_offset;
+       (*stags)[p] = ((FT_ULong)ftglue_stream_get_long ( stream ));
+       new_offset = ((FT_UShort)ftglue_stream_get_short ( stream )) + base_offset;
 
-       FT_FRAME_EXIT();
+        ftglue_stream_frame_exit( stream );
 
-       cur_offset = FT_STREAM_POS();
+       cur_offset = ftglue_stream_pos( stream );
 
-       if ( FT_STREAM_SEEK( new_offset ) )
+       if ( ftglue_stream_seek( stream, new_offset ) )
            goto Fail;
 
        if ( error == TT_Err_Ok )
@@ -2795,7 +2790,7 @@ GetScriptTags(FT_Face face, FT_ULong tabletag, FT_ULong **stags, FT_UShort *scri
        else if ( error != TTO_Err_Empty_Script )
            goto Fail;
 
-       (void)FT_STREAM_SEEK( cur_offset );
+       (void)ftglue_stream_seek( stream, cur_offset );
     }
 
     if (!p)
@@ -2811,7 +2806,7 @@ GetScriptTags(FT_Face face, FT_ULong tabletag, FT_ULong **stags, FT_UShort *scri
 
 Fail:
     *script_count = 0;
-    FT_FREE( *stags );
+    ftglue_free( memory, *stags );
     return error;
 }
 
@@ -2868,7 +2863,7 @@ FcFontCapabilities(FT_Face face)
     if (FcDebug () & FC_DBG_SCANV)
        printf("complex features in this font: %s\n", complex);
 bail:
-    FT_FREE(gsubtags);
-    FT_FREE(gpostags);
+    ftglue_free(memory, gsubtags);
+    ftglue_free(memory, gpostags);
     return complex;
 }