From 8f09eb5ce0260aa17f93b2ccefb4bae347ca79fc Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Tue, 17 Jul 2018 21:45:24 +0200 Subject: [PATCH] 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. --- ChangeLog | 9 +++++++++ include/freetype/freetype.h | 3 ++- src/base/ftobjs.c | 5 +++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2ff61822d..8662cf929 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2018-07-17 Werner Lemberg + + 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 * 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; } }