494 {
498 FT_Service_PsCMaps psnames;
501 FT_Service_CFFLoad cffload;
506
507
509 "sfnt" );
511 {
512 FT_ERROR((
"cff_face_init: cannot access `sfnt' module\n" ));
515 }
516
518
520 "pshinter" );
521
523 "psaux" );
524 if ( !psaux )
525 {
526 FT_ERROR((
"cff_face_init: cannot access `psaux' module\n" ));
529 }
531
533
535
536
539
540
544 {
546 {
547 FT_TRACE2((
" not an OpenType/CFF font\n" ));
550 }
551
552
553 if ( face_index < 0 )
555
556 sfnt_format = 1;
557
558
559
562 {
563 pure_cff = 0;
564
565
570 }
571 else
572 {
573
577 }
578
579
580
583 {
584 cff2 = 1;
585 face->is_cff2 = cff2;
586 }
587
590
593 }
594 else
595 {
596
600 }
601
602
603 {
609
610
613
617 face_index,
620 pure_cff,
621 cff2 );
624
625
626
627 if ( face_index < 0 )
628 {
631 }
632
636
638
639
640
641
642
644
646
647
648
650 {
652 " cannot open CFF & CEF fonts\n"
653 " "
654 " without the `psnames' module\n" ));
657 }
658
659#ifdef FT_DEBUG_LEVEL_TRACE
660 {
663
664
666
667
669 {
673 }
674
675
676
677
678
680 {
685
686
688 for (
l = 0;
l < s1len;
l++ )
691 }
692
693
695 {
700
701
703 for (
l = 0;
l < s1len;
l++ )
706 }
707 }
708#endif
709
710#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
711 {
712 FT_Service_MultiMasters mm = (FT_Service_MultiMasters)
face->mm;
713 FT_Service_MetricsVariations
var = (FT_Service_MetricsVariations)
face->var;
714
716
717
719 mm &&
720 instance_index > 0 )
721 {
722 error = mm->set_instance( cffface, instance_index );
725
727 var->metrics_adjust( cffface );
728 }
729 }
730#endif
731
734
735
736
737
738
739
740
741
742
743
744 {
749
750
753
754 if (
temp != 0x10000L )
755 {
757
764 }
765
768 }
769
771 {
774
779
780
782 {
784
785
786
787
788
789 if (
top->has_font_matrix )
790 {
794 else
795 scaling = 1;
796
799 scaling );
802 scaling );
803
807 scaling );
808 }
809 }
810 else
811 {
814
816 }
817
821
824
825
826 if (
temp != 0x10000L )
827 {
829
836 }
837
840 }
841
842 if ( pure_cff )
843 {
844 char* style_name =
NULL;
845
846
847
849
850
853 else
855
856
859
862
864
867
872
877
878
880 {
882
883
887 }
888
890 {
893 (
FT_UInt)( face_index & 0xFFFF ) );
896 }
897
899 {
902 char* fullp = full;
904
905
906
907
908 if ( full && family )
909 {
910 while ( *fullp )
911 {
912
913 if ( *fullp == *family )
914 {
915 family++;
916 fullp++;
917 continue;
918 }
919
920
921 if ( *fullp == ' ' || *fullp == '-' )
922 {
923 fullp++;
924 continue;
925 }
926
927
928 if ( *family == ' ' || *family == '-' )
929 {
930 family++;
931 continue;
932 }
933
934 if ( !*family && *fullp )
935 {
936
937
938
939
941
942
944 }
945 break;
946 }
947 }
948 }
949 else
950 {
951 char *cid_font_name =
954
955
956
957 if ( cid_font_name )
959 }
960
961 if ( style_name )
963 else
964
966
967
968
969
970
974
975 if ( sfnt_format )
977
978
981
982
983#if 0
984
985 if (
face->kern_pairs )
987#endif
988
990
991
992
993
994
996
999
1000 {
1003
1004
1009 }
1010
1011
1016
1018 }
1019
1020#ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES
1021
1022
1025#endif
1026
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038 {
1043
1044
1046 {
1048
1049
1052 goto Skip_Unicode;
1053
1054
1056 goto Skip_Unicode;
1057 }
1058
1059
1060
1063
1064
1065 cmaprec.
face = cffface;
1068 cmaprec.
encoding = FT_ENCODING_UNICODE;
1069
1071
1079
1080
1083
1084 Skip_Unicode:
1086 {
1088
1089
1090 cmaprec.
face = cffface;
1092
1094 {
1096 cmaprec.
encoding = FT_ENCODING_ADOBE_STANDARD;
1097 clazz = &cff_cmap_encoding_class_rec;
1098 }
1100 {
1102 cmaprec.
encoding = FT_ENCODING_ADOBE_EXPERT;
1103 clazz = &cff_cmap_encoding_class_rec;
1104 }
1105 else
1106 {
1108 cmaprec.
encoding = FT_ENCODING_ADOBE_CUSTOM;
1109 clazz = &cff_cmap_encoding_class_rec;
1110 }
1111
1113 }
1114 }
1115 }
1116
1119 }
return cff_index_get_sid_string(cff, sid)
cff_font_load(FT_Library library, FT_Stream stream, FT_Int face_index, CFF_Font font, CFF_Face face, FT_Bool pure_cff, FT_Bool cff2)
cff_index_get_name(CFF_Font font, FT_UInt element)
static void remove_style(FT_String *family_name, const FT_String *style_name)
static FT_String * cff_strcpy(FT_Memory memory, const FT_String *source)
static void remove_subset_prefix(FT_String *name)
#define TT_MS_ID_UNICODE_CS
#define TT_PLATFORM_MICROSOFT
#define TT_PLATFORM_APPLE_UNICODE
#define FT_FACE_FLAG_KERNING
#define FT_FACE_FLAG_SFNT
#define FT_STYLE_FLAG_ITALIC
#define FT_FACE_FLAG_SCALABLE
#define FT_FACE_FLAG_HINTER
#define FT_HAS_MULTIPLE_MASTERS(face)
#define FT_FACE_FLAG_FIXED_WIDTH
FT_DivFix(FT_Long a, FT_Long b)
#define FT_FACE_FLAG_CID_KEYED
#define FT_FACE_FLAG_GLYPH_NAMES
#define FT_STYLE_FLAG_BOLD
#define FT_FACE_FLAG_HORIZONTAL
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_Vector_Transform_Scaled(FT_Vector *vector, const FT_Matrix *matrix, FT_Long scaling)
FT_Matrix_Multiply_Scaled(const FT_Matrix *a, FT_Matrix *b, FT_Long scaling)
#define FT_ERROR(varformat)
#define FT_TRACE2(varformat)
#define FT_TRACE4(varformat)
FT_CMap_New(FT_CMap_Class clazz, FT_Pointer init_data, FT_CharMap charmap, FT_CMap *acmap)
FT_Get_Module_Interface(FT_Library library, const char *mod_name)
#define FT_FACE_FIND_GLOBAL_SERVICE(face, ptr, id)
#define FT_STREAM_SEEK(position)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLdouble GLdouble GLdouble GLdouble top
GLenum const GLfloat * params
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
PSHinter_Interface * PSHinter_Service
struct PSAux_ServiceRec_ * PSAux_Service
FT_Fixed underline_position
FT_Fixed underline_thickness
FT_Service_PsCMaps psnames
CFF_SubFont subfonts[CFF_MAX_CID_FONTS]
CFF_IndexRec charstrings_index
FT_ULong string_pool_size
PSHinter_Service pshinter
CFF_FontRecDictRec font_dict
FT_Short underline_thickness
FT_Short underline_position
TT_Load_Table_Func load_cmap
TT_Init_Face_Func init_face
TT_Load_Face_Func load_face
T1_FIELD_DICT_FONTDICT family_name
#define TT_ADOBE_ID_EXPERT
#define TT_ADOBE_ID_STANDARD
#define TT_PLATFORM_ADOBE
#define TT_ADOBE_ID_CUSTOM