/**************************************************************************** * * cidload.c * * CID-keyed Type1 font loader (body). * * Copyright (C) 1996-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * */ #include <ft2build.h> #include <freetype/internal/ftdebug.h> #include FT_CONFIG_CONFIG_H #include <freetype/ftmm.h> #include <freetype/internal/t1types.h> #include <freetype/internal/psaux.h> #include "cidload.h" #include "ciderrs.h" /************************************************************************** * * The macro FT_COMPONENT is used in trace mode. It is an implicit * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log * messages during execution. */ #undef FT_COMPONENT #define FT_COMPONENT … /* read a single offset */ FT_LOCAL_DEF( FT_ULong ) cid_get_offset( FT_Byte* *start, FT_UInt offsize ) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** TYPE 1 SYMBOL PARSING *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ static FT_Error cid_load_keyword( CID_Face face, CID_Loader* loader, const T1_Field keyword ) { … } FT_CALLBACK_DEF( void ) cid_parse_font_matrix( FT_Face face, /* CID_Face */ void* parser_ ) { … } FT_CALLBACK_DEF( void ) parse_fd_array( FT_Face face, /* CID_Face */ void* parser_ ) { … } /* By mistake, `expansion_factor' appears both in PS_PrivateRec */ /* and CID_FaceDictRec (both are public header files and can't */ /* be thus changed). We simply copy the value. */ FT_CALLBACK_DEF( void ) parse_expansion_factor( FT_Face face, /* CID_Face */ void* parser_ ) { … } /* By mistake, `CID_FaceDictRec' doesn't contain a field for the */ /* `FontName' keyword. FreeType doesn't need it, but it is nice */ /* to catch it for producing better trace output. */ FT_CALLBACK_DEF( void ) parse_font_name( FT_Face face, /* CID_Face */ void* parser_ ) { … } static const T1_FieldRec cid_field_records[] = …; static FT_Error cid_parse_dict( CID_Face face, CID_Loader* loader, FT_Byte* base, FT_ULong size ) { … } /* read the subrmap and the subrs of each font dict */ static FT_Error cid_read_subrs( CID_Face face ) { … } static void cid_init_loader( CID_Loader* loader, CID_Face face ) { … } static void cid_done_loader( CID_Loader* loader ) { … } static FT_Error cid_hex_to_binary( FT_Byte* data, FT_ULong data_len, FT_ULong offset, CID_Face face, FT_ULong* data_written ) { … } FT_LOCAL_DEF( FT_Error ) cid_face_open( CID_Face face, FT_Int face_index ) { … } /* END */