diff --git a/ChangeLog b/ChangeLog index 2ff61822d..8662cf929 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2018-07-17 Werner Lemberg <wl@gnu.org> + + Allow FT_ENCODING_NONE for `FT_Select_Charmap'. + + This is a valid encoding tag for BDF, PCF, and Windows FNT, and + there is no reason to disallow it for these formats. + + * src/base/ftobjs.c (FT_Select_Charmap): Implement it. + 2018-07-17 Werner Lemberg <wl@gnu.org> * src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar'. diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h index b47b0e4b6..92a4b44f3 100644 --- a/include/freetype/freetype.h +++ b/include/freetype/freetype.h @@ -642,7 +642,8 @@ FT_BEGIN_HEADER * * @values: * FT_ENCODING_NONE :: - * The encoding value~0 is reserved. + * The encoding value~0 is reserved for all formats except BDF, PCF, + * and Windows FNT; see below for more information. * * FT_ENCODING_UNICODE :: * The Unicode character set. This value covers all versions of diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 4f237e23e..dfae22f4b 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -3480,7 +3480,8 @@ if ( !face ) return FT_THROW( Invalid_Face_Handle ); - if ( encoding == FT_ENCODING_NONE ) + /* FT_ENCODING_NONE is a valid encoding for BDF, PCF, and Windows FNT */ + if ( encoding == FT_ENCODING_NONE && !face->num_charmaps ) return FT_THROW( Invalid_Argument ); /* FT_ENCODING_UNICODE is special. We try to find the `best' Unicode */ @@ -3501,7 +3502,7 @@ if ( cur[0]->encoding == encoding ) { face->charmap = cur[0]; - return 0; + return FT_Err_Ok; } }