From fed59b7cc2294cb4020993a9761d1abc9bfdd6f2 Mon Sep 17 00:00:00 2001 From: David Turner Date: Wed, 17 Jul 2002 22:51:06 +0000 Subject: [PATCH] * src/sfnt/ttload.c (TT_Load_SFNT_Header): fixed a recent bug that prevented OpenType fonts to be recognized by FreeType --- ChangeLog | 8 ++++++-- src/base/ftobjs.c | 20 ++++++++++++++++++++ src/bdf/bdfdrivr.c | 2 ++ src/pcf/pcfdriver.c | 2 ++ src/pfr/pfrobjs.c | 6 ++++-- src/sfnt/sfobjs.c | 2 ++ src/sfnt/ttload.c | 6 +----- src/type1/t1objs.c | 2 ++ src/type42/t42objs.c | 2 ++ 9 files changed, 41 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 964002be5..484fe3a88 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,8 +8,12 @@ src/base/ftobjs.c, src/bdf/bdfdrivr.c, src/cff/cffobjs.c, src/pcf/pcfdrivr.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h, src/sfnt/ttload.c, src/type1/t1objs.c, - src/type42/t42objs.c, src/winfonts/winfnt.c: code cleanup, - FT_CONFIG_OPTION_USE_CMAPS is now the default + src/type42/t42objs.c, src/type42/t42objs.h, src/type42/t42drivr.c, + src/winfonts/winfnt.c: code cleanup, FT_CONFIG_OPTION_USE_CMAPS is now + the default + + * src/sfnt/ttload.c (TT_Load_SFNT_Header): fixed a recent bug that prevented + OpenType fonts to be recognized by FreeType 2002-07-11 David Turner diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index d5fb51846..752c53296 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -733,6 +733,26 @@ if ( error ) goto Fail; + /* select Unicode charmap by default */ + { + FT_Int nn; + FT_CharMap unicmap = NULL, cmap; + + for ( nn = 0; nn < face->num_charmaps; nn++ ) + { + cmap = face->charmaps[nn]; + + if ( cmap->encoding == ft_encoding_unicode ) + { + unicmap = cmap; + break; + } + } + + if ( unicmap != NULL ) + face->charmap = unicmap; + } + *aface = face; Fail: diff --git a/src/bdf/bdfdrivr.c b/src/bdf/bdfdrivr.c index 5af8e3ad6..377343224 100644 --- a/src/bdf/bdfdrivr.c +++ b/src/bdf/bdfdrivr.c @@ -411,9 +411,11 @@ THE SOFTWARE. error = FT_CMap_New( &bdf_cmap_class, NULL, &charmap, NULL ); +#if 0 /* Select default charmap */ if (root->num_charmaps) root->charmap = root->charmaps[0]; +#endif } goto Exit; diff --git a/src/pcf/pcfdriver.c b/src/pcf/pcfdriver.c index cc6cb91af..812e2be13 100644 --- a/src/pcf/pcfdriver.c +++ b/src/pcf/pcfdriver.c @@ -266,9 +266,11 @@ THE SOFTWARE. error = FT_CMap_New( &pcf_cmap_class, NULL, &charmap, NULL ); +#if 0 /* Select default charmap */ if (face->root.num_charmaps) face->root.charmap = face->root.charmaps[0]; +#endif } } diff --git a/src/pfr/pfrobjs.c b/src/pfr/pfrobjs.c index 69fb7e149..3134e414b 100644 --- a/src/pfr/pfrobjs.c +++ b/src/pfr/pfrobjs.c @@ -167,18 +167,20 @@ /* create charmap */ { FT_CharMapRec charmap; - + charmap.face = root; charmap.platform_id = 3; charmap.encoding_id = 1; charmap.encoding = ft_encoding_unicode; - + FT_CMap_New( &pfr_cmap_class_rec, NULL, &charmap, NULL ); +#if 0 /* Select default charmap */ if (root->num_charmaps) root->charmap = root->charmaps[0]; +#endif } /* check whether we've loaded any kerning pairs */ diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c index 3b55d633d..cf7f5ba38 100644 --- a/src/sfnt/sfobjs.c +++ b/src/sfnt/sfobjs.c @@ -595,12 +595,14 @@ charmap->encoding = sfnt_find_encoding( charmap->platform_id, charmap->encoding_id ); +#if 0 if ( root->charmap == NULL && charmap->encoding == ft_encoding_unicode ) { /* set 'root->charmap' to the first Unicode encoding we find */ root->charmap = charmap; } +#endif } } diff --git a/src/sfnt/ttload.c b/src/sfnt/ttload.c index 6fe6b3c37..fc167f7e7 100644 --- a/src/sfnt/ttload.c +++ b/src/sfnt/ttload.c @@ -228,7 +228,7 @@ /*************************************************************************/ /* */ /* */ - /* TT_Load_SFNT_HeaderRec */ + /* TT_Load_SFNT_Header */ /* */ /* */ /* Loads the header of a SFNT font file. Supports collections. */ @@ -345,9 +345,6 @@ goto Exit; } - if ( format_tag != 0x10000UL && format_tag != 0x74727565UL ) - goto Bad_Format; - /* the format tag was read, now check the rest of the header */ sfnt->format_tag = format_tag; sfnt->offset = offset; @@ -359,7 +356,6 @@ error = sfnt_dir_check( stream, offset, sfnt->num_tables ); if ( error ) { - Bad_Format: FT_TRACE2(( "TT_Load_SFNT_Header: file is not SFNT!\n" )); error = SFNT_Err_Unknown_File_Format; } diff --git a/src/type1/t1objs.c b/src/type1/t1objs.c index 64863dee1..51131ff1a 100644 --- a/src/type1/t1objs.c +++ b/src/type1/t1objs.c @@ -484,9 +484,11 @@ if ( clazz ) FT_CMap_New( clazz, NULL, &charmap, NULL ); +#if 0 /* Select default charmap */ if (root->num_charmaps) root->charmap = root->charmaps[0]; +#endif } } diff --git a/src/type42/t42objs.c b/src/type42/t42objs.c index 3669d242f..ae1d5420e 100644 --- a/src/type42/t42objs.c +++ b/src/type42/t42objs.c @@ -337,9 +337,11 @@ if ( clazz ) FT_CMap_New( clazz, NULL, &charmap, NULL ); +#if 0 /* Select default charmap */ if (root->num_charmaps) root->charmap = root->charmaps[0]; +#endif } } Exit: