768 {
774
776
779
780
782
788
794
795 if ( face_index < 0 )
797
800
801 if (
parser->binary_length )
802 {
803 if (
parser->binary_length >
804 face->root.stream->size -
parser->data_offset )
805 {
806 FT_TRACE0((
"cid_face_open: adjusting length of binary data\n"
807 " (from %d to %d bytes)\n",
809 face->root.stream->size -
parser->data_offset ));
810 parser->binary_length =
face->root.stream->size -
812 }
813
814
821
824 cid->data_offset = 0;
825 }
826 else
827 {
828 *
face->cid_stream = *
face->root.stream;
829 cid->data_offset = loader.parser.data_offset;
830 }
831
832
833
834 if (
cid->fd_bytes < 0 ||
cid->gd_bytes < 1 )
835 {
837 " Invalid `FDBytes' or `GDBytes' value\n" ));
840 }
841
842
843 if (
cid->fd_bytes > 4 ||
cid->gd_bytes > 4 )
844 {
846 " Values of `FDBytes' or `GDBytes' larger than 4\n"
847 " "
848 " are not supported\n" ));
851 }
852
853 binary_length =
face->cid_stream->size -
cid->data_offset;
855
856 for (
n = 0;
n <
cid->num_dicts;
n++ )
857 {
859
860
861
864 {
866 " setting unlikely BlueShift value %d to default (7)\n",
869 }
870
873 {
875 " setting unlikely BlueFuzz value %d to default (1)\n",
878 }
879
882 {
883 FT_ERROR((
"cid_face_open: Invalid `SDBytes' value\n" ));
886 }
887
889 {
891 " Values of `SDBytes' larger than 4"
892 " are not supported\n" ));
895 }
896
898 {
899 FT_ERROR((
"cid_face_open: Invalid `SubrMapOffset' value\n" ));
902 }
903
904
909 {
910 FT_ERROR((
"cid_face_open: Invalid `SubrCount' value\n" ));
913 }
914 }
915
916 if (
cid->cidmap_offset > binary_length )
917 {
918 FT_ERROR((
"cid_face_open: Invalid `CIDMapOffset' value\n" ));
921 }
922
923 if ( entry_len &&
925 ( binary_length -
cid->cidmap_offset ) / entry_len )
926 {
927 FT_ERROR((
"cid_face_open: Invalid `CIDCount' value\n" ));
930 }
931
932
934
938 }
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)
static FT_Error cid_parse_dict(CID_Face face, CID_Loader *loader, FT_Byte *base, FT_ULong size)
FT_BEGIN_HEADER struct CID_Loader_ CID_Loader
cid_parser_new(CID_Parser *parser, FT_Stream stream, FT_Memory memory, PSAux_Service psaux)
FT_BEGIN_HEADER struct CID_Parser_ CID_Parser
#define FT_TRACE0(varformat)
#define FT_ERROR(varformat)
#define FT_TRACE2(varformat)
#define FT_SET_ERROR(expression)
#define FT_ALLOC(ptr, size)
FT_Stream_OpenMemory(FT_Stream stream, const FT_Byte *base, FT_ULong size)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
GLenum GLuint GLint GLenum face
static char memory[1024 *256]
PS_PrivateRec private_dict