From b5e57b041b1ee4a86e58b1f63ea1b95fd0b2a3d7 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Sat, 6 May 2023 16:41:13 +0200 Subject: [cid] Improve tracing messages; formatting. --- include/freetype/internal/ftdrv.h | 1 + src/cid/cidgload.c | 93 +++++++++++++++++++++------------------ src/cid/cidriver.c | 11 ++--- 3 files changed, 56 insertions(+), 49 deletions(-) diff --git a/include/freetype/internal/ftdrv.h b/include/freetype/internal/ftdrv.h index f78912ca0..9001c07ad 100644 --- a/include/freetype/internal/ftdrv.h +++ b/include/freetype/internal/ftdrv.h @@ -157,6 +157,7 @@ FT_BEGIN_HEADER * A handle to a function used to select a new fixed size. It is used * only if @FT_FACE_FLAG_FIXED_SIZES is set. Can be set to 0 if the * scaling done in the base layer suffices. + * * @note: * Most function pointers, with the exception of `load_glyph`, can be set * to 0 to indicate a default behaviour. diff --git a/src/cid/cidgload.c b/src/cid/cidgload.c index babaf957c..0e6a7ad6b 100644 --- a/src/cid/cidgload.c +++ b/src/cid/cidgload.c @@ -41,35 +41,36 @@ /* - * A helper function to compute FD number (fd_select), - * the offset to the head of the glyph data (off1), - * and the offset to the and of the glyph data (off2). + * A helper function to compute FD number (`fd_select`), the offset to the + * head of the glyph data (`off1`), and the offset to the and of the glyph + * data (`off2`). * - * The number how many times cid_get_offset() is invoked - * can be controlled by the number how many non-NULL - * arguments are given. If fd_select is non-NULL but - * off1 and off2 are NULL, cid_get_offset() is invoked - * only for fd_select, off1/off2 are not validated. + * The number how many times `cid_get_offset` is invoked can be controlled + * by the number of non-NULL arguments. If `fd_select` is non-NULL but + * `off1` and `off2` are NULL, `cid_get_offset` is invoked only for + * `fd_select`; `off1` and `off2` are not validated. * */ FT_LOCAL_DEF( FT_Error ) - cid_compute_fd_and_offsets( CID_Face face, - FT_UInt glyph_index, - FT_ULong* fd_select_p, - FT_ULong* off1_p, - FT_ULong* off2_p ) + cid_compute_fd_and_offsets( CID_Face face, + FT_UInt glyph_index, + FT_ULong* fd_select_p, + FT_ULong* off1_p, + FT_ULong* off2_p ) { - FT_Error error = FT_Err_Ok; - CID_FaceInfo cid = &face->cid; - FT_Stream stream = face->cid_stream; + FT_Error error = FT_Err_Ok; + + CID_FaceInfo cid = &face->cid; + FT_Stream stream = face->cid_stream; FT_UInt entry_len = cid->fd_bytes + cid->gd_bytes; - FT_Byte* p; - FT_Bool need_frame_exit = 0; - FT_ULong fd_select, off1, off2; + + FT_Byte* p; + FT_Bool need_frame_exit = 0; + FT_ULong fd_select, off1, off2; - /* For ordinary fonts read the CID font dictionary index */ - /* and charstring offset from the CIDMap. */ + /* For ordinary fonts, read the CID font dictionary index */ + /* and charstring offset from the CIDMap. */ if ( FT_STREAM_SEEK( cid->data_offset + cid->cidmap_offset + glyph_index * entry_len ) || @@ -78,20 +79,18 @@ need_frame_exit = 1; - p = (FT_Byte*)stream->cursor; + p = (FT_Byte*)stream->cursor; fd_select = cid_get_offset( &p, cid->fd_bytes ); off1 = cid_get_offset( &p, cid->gd_bytes ); - p += cid->fd_bytes; - off2 = cid_get_offset( &p, cid->gd_bytes ); + p += cid->fd_bytes; + off2 = cid_get_offset( &p, cid->gd_bytes ); - if (fd_select_p) + if ( fd_select_p ) *fd_select_p = fd_select; - - if (off1_p) + if ( off1_p ) *off1_p = off1; - - if (off2_p) + if ( off2_p ) *off2_p = off2; if ( fd_select >= cid->num_dicts ) @@ -101,36 +100,46 @@ * has no charstring to be rendered, similar to GID = 0xFFFF * in TrueType fonts. */ - if ( (cid->fd_bytes == 1 && fd_select == 0xFFU ) || - (cid->fd_bytes == 2 && fd_select == 0xFFFFU ) ) + if ( ( cid->fd_bytes == 1 && fd_select == 0xFFU ) || + ( cid->fd_bytes == 2 && fd_select == 0xFFFFU ) ) { - FT_TRACE1(( "cid_load_glyph: fail for glyph_index=%d, " - "FD number %ld is the max integer fitting into %d byte%s\n", - glyph_index, fd_select, cid->fd_bytes, - cid->fd_bytes == 1 ? "" : "s" )); + FT_TRACE1(( "cid_load_glyph: fail for glyph index %d:\n", + glyph_index )); + FT_TRACE1(( " FD number %ld is the maximum\n", + fd_select )); + FT_TRACE1(( " integer fitting into %d byte%s\n", + cid->fd_bytes, cid->fd_bytes == 1 ? "" : "s" )); } else { - FT_TRACE0(( "cid_load_glyph: fail for glyph_index=%d, " - "FD number %ld > number of dicts %d\n", - glyph_index, fd_select, cid->num_dicts )); + FT_TRACE0(( "cid_load_glyph: fail for glyph index %d:\n", + glyph_index )); + FT_TRACE0(( " FD number %ld is larger\n", + fd_select )); + FT_TRACE0(( " than number of dictionaries (%d)\n", + cid->num_dicts )); } + error = FT_THROW( Invalid_Offset ); goto Exit; } else if ( off2 > stream->size ) { - FT_TRACE0(( "cid_load_glyph: fail for glyph_index=%d, " - "end of the glyph data is beyond the data stream\n", + FT_TRACE0(( "cid_load_glyph: fail for glyph index %d:\n", glyph_index )); + FT_TRACE0(( " end of the glyph data\n" )); + FT_TRACE0(( " is beyond the data stream\n" )); + error = FT_THROW( Invalid_Offset ); goto Exit; } else if ( off1 > off2 ) { - FT_TRACE0(( "cid_load_glyph: fail for glyph_index=%d, " - "the end position of glyph data is set before the start position\n", + FT_TRACE0(( "cid_load_glyph: fail for glyph index %d:\n", glyph_index )); + FT_TRACE0(( " the end position of glyph data\n" )); + FT_TRACE0(( " is set before the start position\n" )); + error = FT_THROW( Invalid_Offset ); } diff --git a/src/cid/cidriver.c b/src/cid/cidriver.c index 10cb8c1fd..9669eb73e 100644 --- a/src/cid/cidriver.c +++ b/src/cid/cidriver.c @@ -153,16 +153,13 @@ /* - * Currently, FreeType does not support an incrementally- - * defined CID-keyed font that stores the glyph description - * data in /GlyphDirectory array or dictionary. - * Thus the font loaded by the incremental loading feature - * is not handled in here. + * Currently, FreeType does not support incrementally-defined, CID-keyed + * fonts that store the glyph description data in a `/GlyphDirectory` + * array or dictionary. Fonts loaded by the incremental loading feature + * are thus not handled here. */ error = cid_compute_fd_and_offsets( face, glyph_index, NULL, NULL, NULL ); - - if ( error ) *cid = 0; else -- cgit v1.2.1