summaryrefslogtreecommitdiffstats
path: root/src/sfnt
diff options
context:
space:
mode:
authorEric Vannier <evannier@google.com>2012-03-22 16:08:33 -0700
committerGeremy Condra <gcondra@google.com>2012-04-20 14:53:55 -0700
commit41371e1e39c8528eb0c4bc40683c736e6683e60c (patch)
treeba563af45d79cd0832305fe3833919bb2475f186 /src/sfnt
parent27811904d8de0ce5591417812ca31163bf5aad60 (diff)
downloadandroid_external_freetype-41371e1e39c8528eb0c4bc40683c736e6683e60c.tar.gz
android_external_freetype-41371e1e39c8528eb0c4bc40683c736e6683e60c.tar.bz2
android_external_freetype-41371e1e39c8528eb0c4bc40683c736e6683e60c.zip
Update to freetype 2.4.9
This was done by applying the entire 2.4.9 except for the following exceptions: - files that were new, or were not present originally in the version of freetype we were using (meaning that they are present in 2.4.8, and in 2.4.9, but were never integrated into the Android tree because they are not used in the Android tree). - ftmodule.h: given that we support fewer modules than in upstream 2.4.9 (same as Android), the file was left unchanged (and there were no changes from the official 2.4.8 to 2.4.9 - ftoption.h: same reasons as ftmodule.h Change-Id: Id251f2cc5ca1c864f9a4cc0c67b94025ee3ccc4a
Diffstat (limited to 'src/sfnt')
-rw-r--r--src/sfnt/sfdriver.c25
-rw-r--r--src/sfnt/sferrors.h3
-rw-r--r--src/sfnt/sfntpic.c104
-rw-r--r--src/sfnt/sfntpic.h9
-rw-r--r--src/sfnt/sfobjs.c10
-rw-r--r--src/sfnt/ttcmap.c2
-rw-r--r--src/sfnt/ttcmap.h6
7 files changed, 115 insertions, 44 deletions
diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c
index 247aa67..847d83d 100644
--- a/src/sfnt/sfdriver.c
+++ b/src/sfnt/sfdriver.c
@@ -422,8 +422,19 @@
sfnt_get_interface( FT_Module module,
const char* module_interface )
{
- FT_UNUSED( module );
+ /* FT_SFNT_SERVICES_GET derefers `library' in PIC mode */
+#ifdef FT_CONFIG_OPTION_PIC
+ FT_Library library;
+
+ if ( !module )
+ return NULL;
+ library = module->library;
+ if ( !library )
+ return NULL;
+#else
+ FT_UNUSED( module );
+#endif
return ft_service_list_lookup( FT_SFNT_SERVICES_GET, module_interface );
}
@@ -556,14 +567,14 @@
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
-#define PUT_EMBEDDED_BITMAPS(a) a
+#define PUT_EMBEDDED_BITMAPS(a) a
#else
-#define PUT_EMBEDDED_BITMAPS(a) 0
+#define PUT_EMBEDDED_BITMAPS(a) 0
#endif
#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
-#define PUT_PS_NAMES(a) a
+#define PUT_PS_NAMES(a) a
#else
-#define PUT_PS_NAMES(a) 0
+#define PUT_PS_NAMES(a) 0
#endif
FT_DEFINE_SFNT_INTERFACE(sfnt_interface,
@@ -637,9 +648,9 @@
FT_DEFINE_MODULE(sfnt_module_class,
-
+
0, /* not a font driver or renderer */
- sizeof( FT_ModuleRec ),
+ sizeof ( FT_ModuleRec ),
"sfnt", /* driver name */
0x10000L, /* driver version 1.0 */
diff --git a/src/sfnt/sferrors.h b/src/sfnt/sferrors.h
index 27f90de..564a3fe 100644
--- a/src/sfnt/sferrors.h
+++ b/src/sfnt/sferrors.h
@@ -4,7 +4,7 @@
/* */
/* SFNT error codes (specification only). */
/* */
-/* Copyright 2001, 2004 by */
+/* Copyright 2001, 2004, 2012 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -29,6 +29,7 @@
#undef __FTERRORS_H__
+#undef FT_ERR_PREFIX
#define FT_ERR_PREFIX SFNT_Err_
#define FT_ERR_BASE FT_Mod_Err_SFNT
diff --git a/src/sfnt/sfntpic.c b/src/sfnt/sfntpic.c
index 53aca17..1372376 100644
--- a/src/sfnt/sfntpic.c
+++ b/src/sfnt/sfntpic.c
@@ -20,36 +20,73 @@
#include FT_FREETYPE_H
#include FT_INTERNAL_OBJECTS_H
#include "sfntpic.h"
+#include "sferrors.h"
#ifdef FT_CONFIG_OPTION_PIC
/* forward declaration of PIC init functions from sfdriver.c */
- FT_Error FT_Create_Class_sfnt_services( FT_Library, FT_ServiceDescRec**);
- void FT_Destroy_Class_sfnt_services( FT_Library, FT_ServiceDescRec*);
- void FT_Init_Class_sfnt_service_bdf( FT_Service_BDFRec*);
- void FT_Init_Class_sfnt_interface( FT_Library, SFNT_Interface*);
- void FT_Init_Class_sfnt_service_glyph_dict( FT_Library, FT_Service_GlyphDictRec*);
- void FT_Init_Class_sfnt_service_ps_name( FT_Library, FT_Service_PsFontNameRec*);
- void FT_Init_Class_tt_service_get_cmap_info( FT_Library, FT_Service_TTCMapsRec*);
- void FT_Init_Class_sfnt_service_sfnt_table( FT_Service_SFNT_TableRec*);
+ FT_Error
+ FT_Create_Class_sfnt_services( FT_Library library,
+ FT_ServiceDescRec** ouput_class );
+
+ void
+ FT_Destroy_Class_sfnt_services( FT_Library library,
+ FT_ServiceDescRec* clazz );
+
+ void
+ FT_Init_Class_sfnt_service_bdf( FT_Service_BDFRec* clazz );
+
+ void
+ FT_Init_Class_sfnt_interface( FT_Library library,
+ SFNT_Interface* clazz );
+
+ void
+ FT_Init_Class_sfnt_service_glyph_dict(
+ FT_Library library,
+ FT_Service_GlyphDictRec* clazz );
+
+ void
+ FT_Init_Class_sfnt_service_ps_name(
+ FT_Library library,
+ FT_Service_PsFontNameRec* clazz );
+
+ void
+ FT_Init_Class_tt_service_get_cmap_info(
+ FT_Library library,
+ FT_Service_TTCMapsRec* clazz );
+
+ void
+ FT_Init_Class_sfnt_service_sfnt_table(
+ FT_Service_SFNT_TableRec* clazz );
/* forward declaration of PIC init functions from ttcmap.c */
- FT_Error FT_Create_Class_tt_cmap_classes( FT_Library, TT_CMap_Class**);
- void FT_Destroy_Class_tt_cmap_classes( FT_Library, TT_CMap_Class*);
+ FT_Error
+ FT_Create_Class_tt_cmap_classes( FT_Library library,
+ TT_CMap_Class** output_class );
+
+ void
+ FT_Destroy_Class_tt_cmap_classes( FT_Library library,
+ TT_CMap_Class* clazz );
void
- sfnt_module_class_pic_free( FT_Library library )
+ sfnt_module_class_pic_free( FT_Library library )
{
- FT_PIC_Container* pic_container = &library->pic_container;
- FT_Memory memory = library->memory;
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+
+
if ( pic_container->sfnt )
{
- sfntModulePIC* container = (sfntModulePIC*)pic_container->sfnt;
- if(container->sfnt_services)
- FT_Destroy_Class_sfnt_services(library, container->sfnt_services);
+ sfntModulePIC* container = (sfntModulePIC*)pic_container->sfnt;
+
+
+ if ( container->sfnt_services )
+ FT_Destroy_Class_sfnt_services( library,
+ container->sfnt_services );
container->sfnt_services = NULL;
- if(container->tt_cmap_classes)
- FT_Destroy_Class_tt_cmap_classes(library, container->tt_cmap_classes);
+ if ( container->tt_cmap_classes )
+ FT_Destroy_Class_tt_cmap_classes( library,
+ container->tt_cmap_classes );
container->tt_cmap_classes = NULL;
FT_FREE( container );
pic_container->sfnt = NULL;
@@ -73,24 +110,31 @@
pic_container->sfnt = container;
/* initialize pointer table - this is how the module usually expects this data */
- error = FT_Create_Class_sfnt_services(library, &container->sfnt_services);
- if(error)
+ error = FT_Create_Class_sfnt_services( library,
+ &container->sfnt_services );
+ if ( error )
goto Exit;
- error = FT_Create_Class_tt_cmap_classes(library, &container->tt_cmap_classes);
- if(error)
+ error = FT_Create_Class_tt_cmap_classes( library,
+ &container->tt_cmap_classes );
+ if ( error )
goto Exit;
- FT_Init_Class_sfnt_service_glyph_dict(library, &container->sfnt_service_glyph_dict);
- FT_Init_Class_sfnt_service_ps_name(library, &container->sfnt_service_ps_name);
- FT_Init_Class_tt_service_get_cmap_info(library, &container->tt_service_get_cmap_info);
- FT_Init_Class_sfnt_service_sfnt_table(&container->sfnt_service_sfnt_table);
+
+ FT_Init_Class_sfnt_service_glyph_dict(
+ library, &container->sfnt_service_glyph_dict );
+ FT_Init_Class_sfnt_service_ps_name(
+ library, &container->sfnt_service_ps_name );
+ FT_Init_Class_tt_service_get_cmap_info(
+ library, &container->tt_service_get_cmap_info );
+ FT_Init_Class_sfnt_service_sfnt_table(
+ &container->sfnt_service_sfnt_table );
#ifdef TT_CONFIG_OPTION_BDF
- FT_Init_Class_sfnt_service_bdf(&container->sfnt_service_bdf);
+ FT_Init_Class_sfnt_service_bdf( &container->sfnt_service_bdf );
#endif
- FT_Init_Class_sfnt_interface(library, &container->sfnt_interface);
+ FT_Init_Class_sfnt_interface( library, &container->sfnt_interface );
Exit:
- if(error)
- sfnt_module_class_pic_free(library);
+ if ( error )
+ sfnt_module_class_pic_free( library );
return error;
}
diff --git a/src/sfnt/sfntpic.h b/src/sfnt/sfntpic.h
index 6943b42..f7993d1 100644
--- a/src/sfnt/sfntpic.h
+++ b/src/sfnt/sfntpic.h
@@ -19,7 +19,7 @@
#ifndef __SFNTPIC_H__
#define __SFNTPIC_H__
-
+
FT_BEGIN_HEADER
#include FT_INTERNAL_PIC_H
@@ -76,6 +76,13 @@ typedef struct sfntModulePIC_
#define FT_SFNT_SERVICE_BDF_GET (GET_PIC(library)->sfnt_service_bdf)
#define FT_SFNT_INTERFACE_GET (GET_PIC(library)->sfnt_interface)
+ /* see sfntpic.c for the implementation */
+ void
+ sfnt_module_class_pic_free( FT_Library library );
+
+ FT_Error
+ sfnt_module_class_pic_init( FT_Library library );
+
#endif /* FT_CONFIG_OPTION_PIC */
/* */
diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c
index 44471f6..d7be631 100644
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -376,7 +376,10 @@
tag != TTAG_true &&
tag != TTAG_typ1 &&
tag != 0x00020000UL )
+ {
+ FT_TRACE2(( " not a font using the SFNT container format\n" ));
return SFNT_Err_Unknown_File_Format;
+ }
face->ttc_header.tag = TTAG_ttcf;
@@ -452,7 +455,10 @@
{
sfnt = (SFNT_Service)FT_Get_Module_Interface( library, "sfnt" );
if ( !sfnt )
- return SFNT_Err_Invalid_File_Format;
+ {
+ FT_ERROR(( "sfnt_init_face: cannot access `sfnt' module\n" ));
+ return SFNT_Err_Missing_Module;
+ }
face->sfnt = sfnt;
face->goto_table = sfnt->goto_table;
@@ -460,6 +466,8 @@
FT_FACE_FIND_GLOBAL_SERVICE( face, face->psnames, POSTSCRIPT_CMAPS );
+ FT_TRACE2(( "SFNT driver\n" ));
+
error = sfnt_open_font( stream, face );
if ( error )
return error;
diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c
index 544750a..1dfd987 100644
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -3363,7 +3363,7 @@
return error;
/* the location of the class instances follows the array of pointers */
- recs = (TT_CMap_ClassRec*) (((char*)clazz)+(sizeof(*clazz)*(i+1)));
+ recs = (TT_CMap_ClassRec*) (((char*)clazz)+(sizeof(*clazz)*(i+1)));
i=0;
#undef TTCMAPCITEM
diff --git a/src/sfnt/ttcmap.h b/src/sfnt/ttcmap.h
index 15a4a21..94f7978 100644
--- a/src/sfnt/ttcmap.h
+++ b/src/sfnt/ttcmap.h
@@ -70,7 +70,7 @@ FT_BEGIN_HEADER
format_, validate_, get_cmap_info_ \
};
-#else /* FT_CONFIG_OPTION_PIC */
+#else /* FT_CONFIG_OPTION_PIC */
#define FT_DEFINE_TT_CMAP(class_, size_, init_, done_, char_index_, \
char_next_, char_var_index_, char_var_default_, variant_list_, \
@@ -92,9 +92,9 @@ FT_BEGIN_HEADER
clazz->format = format_; \
clazz->validate = validate_; \
clazz->get_cmap_info = get_cmap_info_; \
- }
+ }
-#endif /* FT_CONFIG_OPTION_PIC */
+#endif /* FT_CONFIG_OPTION_PIC */
typedef struct TT_ValidatorRec_
{