shithub: freetype+ttf2subf

Download patch

ref: 102bb83afddf6dcb60c0eee0621b9e92ee3c157e
parent: 26bd7a2c5d112143766d905de4346f738a2d4fb6
author: Werner Lemberg <[email protected]>
date: Tue Jun 10 00:57:19 EDT 2008

* src/base/ftobjs.c (open_face): Check `clazz->init_face' and
`clazz->done_face'.

Update documentation of FT_Driver_ClassRec.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-06-10  Werner Lemberg  <[email protected]>
+
+	* src/base/ftobjs.c (open_face): Check `clazz->init_face' and
+	`clazz->done_face'.
+
 2008-06-09  VaDiM  <[email protected]>
 
 	Support debugging on WinCE.  From Savannah patch #6536; this fixes
--- a/include/freetype/internal/ftdriver.h
+++ b/include/freetype/internal/ftdriver.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType font driver interface (specification).                      */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002, 2003, 2006 by                               */
+/*  Copyright 1996-2001, 2002, 2003, 2006, 2008 by                         */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -145,10 +145,6 @@
   /*    load_glyph       :: A function handle to load a glyph to a slot.   */
   /*                        This field is mandatory!                       */
   /*                                                                       */
-  /*    get_char_index   :: A function handle to return the glyph index of */
-  /*                        a given character for a given charmap.  This   */
-  /*                        field is mandatory!                            */
-  /*                                                                       */
   /*    get_kerning      :: A function handle to return the unscaled       */
   /*                        kerning for a given pair of glyphs.  Can be    */
   /*                        set to 0 if the format doesn't support         */
@@ -180,8 +176,8 @@
   /*                        to 0 if the scaling done in the base layer     */
   /*                        suffices.                                      */
   /* <Note>                                                                */
-  /*    Most function pointers, with the exception of `load_glyph' and     */
-  /*    `get_char_index' can be set to 0 to indicate a default behaviour.  */
+  /*    Most function pointers, with the exception of `load_glyph', can be */
+  /*    set to 0 to indicate a default behaviour.                          */
   /*                                                                       */
   typedef struct  FT_Driver_ClassRec_
   {
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -1068,11 +1068,12 @@
     }
 #endif
 
-    error = clazz->init_face( stream,
-                              face,
-                              (FT_Int)face_index,
-                              num_params,
-                              params );
+    if ( class->init_face )
+      error = clazz->init_face( stream,
+                                face,
+                                (FT_Int)face_index,
+                                num_params,
+                                params );
     if ( error )
       goto Fail;
 
@@ -1095,7 +1096,8 @@
     if ( error )
     {
       destroy_charmaps( face, memory );
-      clazz->done_face( face );
+      if ( clazz->done_face )
+        clazz->done_face( face );
       FT_FREE( internal );
       FT_FREE( face );
       *aface = 0;