Index: src/cff/cffobjs.c |
diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c |
index 6ad0e508974bf8c408dc1291c7006f1e4539f952..dd750d104168e51512b1dd48d8ccd9ed19ff5035 100644 |
--- a/src/cff/cffobjs.c |
+++ b/src/cff/cffobjs.c |
@@ -4,7 +4,7 @@ |
/* */ |
/* OpenType objects manager (body). */ |
/* */ |
-/* Copyright 1996-2012 by */ |
+/* Copyright 1996-2013 by */ |
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
/* */ |
/* This file is part of the FreeType project, and may only be used, */ |
@@ -17,6 +17,7 @@ |
#include <ft2build.h> |
+ |
#include FT_INTERNAL_DEBUG_H |
#include FT_INTERNAL_CALC_H |
#include FT_INTERNAL_STREAM_H |
@@ -24,12 +25,15 @@ |
#include FT_TRUETYPE_IDS_H |
#include FT_TRUETYPE_TAGS_H |
#include FT_INTERNAL_SFNT_H |
+#include FT_CFF_DRIVER_H |
+ |
#include "cffobjs.h" |
#include "cffload.h" |
#include "cffcmap.h" |
-#include "cfferrs.h" |
#include "cffpic.h" |
+#include "cfferrs.h" |
+ |
/*************************************************************************/ |
/* */ |
@@ -153,7 +157,7 @@ |
cff_size_init( FT_Size cffsize ) /* CFF_Size */ |
{ |
CFF_Size size = (CFF_Size)cffsize; |
- FT_Error error = CFF_Err_Ok; |
+ FT_Error error = FT_Err_Ok; |
PSH_Globals_Funcs funcs = cff_size_get_globals_funcs( size ); |
@@ -253,7 +257,7 @@ |
} |
} |
- return CFF_Err_Ok; |
+ return FT_Err_Ok; |
} |
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ |
@@ -325,7 +329,7 @@ |
} |
} |
- return CFF_Err_Ok; |
+ return FT_Err_Ok; |
} |
@@ -367,7 +371,7 @@ |
} |
} |
- return CFF_Err_Ok; |
+ return FT_Err_Ok; |
} |
@@ -401,7 +405,7 @@ |
remove_subset_prefix( FT_String* name ) |
{ |
FT_Int32 idx = 0; |
- FT_Int32 length = strlen( name ) + 1; |
+ FT_Int32 length = (FT_Int32)strlen( name ) + 1; |
FT_Bool continue_search = 1; |
@@ -438,8 +442,8 @@ |
FT_Int32 family_name_length, style_name_length; |
- family_name_length = strlen( family_name ); |
- style_name_length = strlen( style_name ); |
+ family_name_length = (FT_Int32)strlen( family_name ); |
+ style_name_length = (FT_Int32)strlen( style_name ); |
if ( family_name_length > style_name_length ) |
{ |
@@ -496,7 +500,7 @@ |
if ( !sfnt ) |
{ |
FT_ERROR(( "cff_face_init: cannot access `sfnt' module\n" )); |
- error = CFF_Err_Missing_Module; |
+ error = FT_THROW( Missing_Module ); |
goto Exit; |
} |
@@ -518,21 +522,13 @@ |
if ( face->format_tag != TTAG_OTTO ) /* `OTTO'; OpenType/CFF font */ |
{ |
FT_TRACE2(( " not an OpenType/CFF font\n" )); |
- error = CFF_Err_Unknown_File_Format; |
+ error = FT_THROW( Unknown_File_Format ); |
goto Exit; |
} |
/* if we are performing a simple font format check, exit immediately */ |
if ( face_index < 0 ) |
- return CFF_Err_Ok; |
- |
- /* UNDOCUMENTED! A CFF in an SFNT can have only a single font. */ |
- if ( face_index > 0 ) |
- { |
- FT_ERROR(( "cff_face_init: invalid face index\n" )); |
- error = CFF_Err_Invalid_Argument; |
- goto Exit; |
- } |
+ return FT_Err_Ok; |
sfnt_format = 1; |
@@ -544,7 +540,8 @@ |
pure_cff = 0; |
/* load font directory */ |
- error = sfnt->load_face( stream, face, 0, num_params, params ); |
+ error = sfnt->load_face( stream, face, face_index, |
+ num_params, params ); |
if ( error ) |
goto Exit; |
} |
@@ -554,10 +551,6 @@ |
error = sfnt->load_cmap( face, stream ); |
if ( error ) |
goto Exit; |
- |
- /* XXX: we don't load the GPOS table, as OpenType Layout */ |
- /* support will be added later to a layout library on top of */ |
- /* FreeType 2 */ |
} |
/* now load the CFF part of the file */ |
@@ -570,7 +563,7 @@ |
/* rewind to start of file; we are going to load a pure-CFF font */ |
if ( FT_STREAM_SEEK( 0 ) ) |
goto Exit; |
- error = CFF_Err_Ok; |
+ error = FT_Err_Ok; |
} |
/* now load and parse the CFF table in the file */ |
@@ -611,7 +604,7 @@ |
" cannot open CFF & CEF fonts\n" |
" " |
" without the `PSNames' module\n" )); |
- error = CFF_Err_Missing_Module; |
+ error = FT_THROW( Missing_Module ); |
goto Exit; |
} |
@@ -968,9 +961,10 @@ |
nn = (FT_UInt)cffface->num_charmaps; |
- error = FT_CMap_New( &FT_CFF_CMAP_UNICODE_CLASS_REC_GET, NULL, |
+ error = FT_CMap_New( &CFF_CMAP_UNICODE_CLASS_REC_GET, NULL, |
&cmaprec, NULL ); |
- if ( error && FT_Err_No_Unicode_Glyph_Name != error ) |
+ if ( error && |
+ FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) ) |
goto Exit; |
error = FT_Err_Ok; |
@@ -1000,19 +994,19 @@ |
{ |
cmaprec.encoding_id = TT_ADOBE_ID_STANDARD; |
cmaprec.encoding = FT_ENCODING_ADOBE_STANDARD; |
- clazz = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET; |
+ clazz = &CFF_CMAP_ENCODING_CLASS_REC_GET; |
} |
else if ( encoding->offset == 1 ) |
{ |
cmaprec.encoding_id = TT_ADOBE_ID_EXPERT; |
cmaprec.encoding = FT_ENCODING_ADOBE_EXPERT; |
- clazz = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET; |
+ clazz = &CFF_CMAP_ENCODING_CLASS_REC_GET; |
} |
else |
{ |
cmaprec.encoding_id = TT_ADOBE_ID_CUSTOM; |
cmaprec.encoding = FT_ENCODING_ADOBE_CUSTOM; |
- clazz = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET; |
+ clazz = &CFF_CMAP_ENCODING_CLASS_REC_GET; |
} |
error = FT_CMap_New( clazz, NULL, &cmaprec, NULL ); |
@@ -1056,16 +1050,25 @@ |
FT_LOCAL_DEF( FT_Error ) |
- cff_driver_init( FT_Module module ) |
+ cff_driver_init( FT_Module module ) /* CFF_Driver */ |
{ |
- FT_UNUSED( module ); |
+ CFF_Driver driver = (CFF_Driver)module; |
+ |
+ |
+ /* set default property values */ |
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE |
+ driver->hinting_engine = FT_CFF_HINTING_FREETYPE; |
+#else |
+ driver->hinting_engine = FT_CFF_HINTING_ADOBE; |
+#endif |
+ driver->no_stem_darkening = FALSE; |
- return CFF_Err_Ok; |
+ return FT_Err_Ok; |
} |
FT_LOCAL_DEF( void ) |
- cff_driver_done( FT_Module module ) |
+ cff_driver_done( FT_Module module ) /* CFF_Driver */ |
{ |
FT_UNUSED( module ); |
} |