⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t1driver.c

📁 Qt/Embedded是一个多平台的C++图形用户界面应用程序框架
💻 C
📖 第 1 页 / 共 2 页
字号:
         if (charcode < 256)         {           FT_UInt      code;           FT_Int       n;           const char*  glyph_name;                      code = psnames->adobe_std_encoding[charcode];           if (charmap->encoding == ft_encoding_adobe_expert)             code = psnames->adobe_expert_encoding[charcode];                      glyph_name = psnames->adobe_std_strings(code);           if (!glyph_name) break;                      for ( n = 0; n < face->type1.num_glyphs; n++ )           {             const char*  gname = face->type1.glyph_names[n];                          if ( gname && gname[0] == glyph_name[0] &&                  strcmp( gname, glyph_name ) == 0 )             {               result = n;               break;             }           }         }      }  Exit:          return result;  }  static  T1_Error   Init_Face( FT_Stream  stream,                        FT_Int     face_index,                        T1_Face    face )  {    T1_Error  error;        error = T1_Init_Face(stream, face_index, face);    if (!error)    {      FT_Face      root    = &face->root;      FT_CharMap   charmap = face->charmaprecs;      /* synthetize a Unicode charmap if there is support in the "psnames" */      /* module..                                                          */      if (face->psnames)      {        PSNames_Interface*  psnames = (PSNames_Interface*)face->psnames;        if (psnames->unicode_value)        {          error = psnames->build_unicodes( root->memory,                                           face->type1.num_glyphs,                                           (const char**)face->type1.glyph_names,                                           &face->unicode_map );          if (!error)          {            root->charmap        = charmap;            charmap->face        = (FT_Face)face;            charmap->encoding    = ft_encoding_unicode;            charmap->platform_id = 3;            charmap->encoding_id = 1;            charmap++;          }                    /* simply clear the error in case of failure (which really) */          /* means that out of memory or no unicode glyph names       */          error = 0;        }      }      /* now, support either the standard, expert, or custom encodings */      charmap->face        = (FT_Face)face;      charmap->platform_id = 7;  /* a new platform id for Adobe fonts ?? */            switch (face->type1.encoding_type)      {        case t1_encoding_standard:          charmap->encoding    = ft_encoding_adobe_standard;          charmap->encoding_id = 0;          break;                case t1_encoding_expert:          charmap->encoding    = ft_encoding_adobe_expert;          charmap->encoding_id = 1;          break;                default:          charmap->encoding    = ft_encoding_adobe_custom;          charmap->encoding_id = 2;          break;      }            root->charmaps = face->charmaps;      root->num_charmaps = charmap - face->charmaprecs + 1;      face->charmaps[0] = &face->charmaprecs[0];      face->charmaps[1] = &face->charmaprecs[1];    }    return error;  }  /******************************************************************/  /*                                                                */  /* <Struct> FT_DriverInterface                                    */  /*                                                                */  /* <Description>                                                  */  /*    A structure used to hold a font driver's basic interface    */  /*    used by the high-level parts of FreeType (or other apps)    */  /*                                                                */  /*    Most scalable drivers provide a specialized interface to    */  /*    access format-specific features. It can be retrieved with   */  /*    a call to the "get_format_interface", and should be defined */  /*    in each font driver header (e.g. ttdriver.h, t1driver.h,..) */  /*                                                                */  /*    All fields are function pointers ..                         */  /*                                                                */  /*                                                                */  /* <Fields>                                                       */  /*                                                                */  /*    new_engine ::                                               */  /*        used to create and initialise a new driver object       */  /*                                                                */  /*    done_engine ::                                              */  /*        used to finalise and destroy a given driver object      */  /*                                                                */  /*    get_format_interface ::                                     */  /*        return a typeless pointer to the format-specific        */  /*        driver interface.                                       */  /*                                                                */  /*    new_face ::                                                 */  /*        create a new face object from a resource                */  /*                                                                */  /*    done_face ::                                                */  /*        discards a face object, as well as all child objects    */  /*        ( sizes, charmaps, glyph slots )                        */  /*                                                                */  /*    get_face_properties ::                                      */  /*        return generic face properties                          */  /*                                                                */  /*    get_kerning ::                                              */  /*        return the kerning vector corresponding to a pair       */  /*        of glyphs, expressed in unscaled font units.            */  /*                                                                */  /*    new_size ::                                                 */  /*        create and initialise a new scalable size object.       */  /*                                                                */  /*    new_fixed_size ::                                           */  /*        create and initialise a new fixed-size object.          */  /*                                                                */  /*    done_size ::                                                */  /*        finalize a given face size object.                      */  /*                                                                */  /*    set_size_resolutions ::                                     */  /*        reset a scalable size object's output resolutions       */  /*                                                                */  /*    set_size_char_sizes ::                                      */  /*        reset a scalable size object's character size           */  /*                                                                */  /*    set_pixel_sizes ::                                          */  /*        reset a face size object's pixel dimensions. Applies    */  /*        to both scalable and fixed faces.                       */  /*                                                                */  /*    new_glyph_slot ::                                           */  /*        create and initialise a new glyph slot                  */  /*                                                                */  /*    done_glyph_slot ::                                          */  /*        discard a given glyph slot                              */  /*                                                                */  /*    load_glyph ::                                               */  /*        load a given glyph into a given slot                    */  /*                                                                */  /*    get_glyph_metrics ::                                        */  /*        return a loaded glyph's metrics.                        */  /*                                                                */  EXPORT_FUNC  const  FT_DriverInterface  t1z_driver_interface =  {    sizeof( FT_DriverRec ),    sizeof( T1_FaceRec ),    sizeof( T1_SizeRec ),    sizeof( T1_GlyphSlotRec ),        "type1",    100,    200,    0,   /* format interface */    (FTDriver_initDriver)           T1_Init_Driver,    (FTDriver_doneDriver)           T1_Done_Driver,#ifdef T1_CONFIG_OPTION_NO_AFM    (FTDriver_getInterface)         0,#else    (FTDriver_getInterface)         Get_Interface,#endif    (FTDriver_initFace)             Init_Face,    (FTDriver_doneFace)             T1_Done_Face,#ifdef T1_CONFIG_OPTION_NO_AFM        (FTDriver_getKerning)           0,#else    (FTDriver_getKerning)           Get_Kerning,#endif    (FTDriver_initSize)             T1_Init_Size,    (FTDriver_doneSize)             T1_Done_Size,    (FTDriver_setCharSizes)         Set_Char_Sizes,    (FTDriver_setPixelSizes)        Set_Pixel_Sizes,    (FTDriver_initGlyphSlot)        T1_Init_GlyphSlot,    (FTDriver_doneGlyphSlot)        T1_Done_GlyphSlot,    (FTDriver_loadGlyph)            T1_Load_Glyph,    (FTDriver_getCharIndex)         Get_Char_Index,  };  /******************************************************************/  /*                                                                */  /*  <Function> Get_FreeType_Driver_Interface                      */  /*                                                                */  /*  <Description>                                                 */  /*     This function is used when compiling the TrueType driver   */  /*     as a shared library (.DLL or .so). It will be used by the  */  /*     high-level library of FreeType to retrieve the address of  */  /*     the driver's generic interface.                            */  /*                                                                */  /*     It shouldn't be implemented in a static build, as each     */  /*     driver must have the same function as an exported entry    */  /*     point.                                                     */  /*                                                                */  /*  <Return>                                                      */  /*     address of TrueType's driver generic interface. The        */  /*     forma-specific interface can then be retrieved through     */  /*     the method interface->get_format_interface..               */  /*                                                                */#ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS    EXPORT_FUNC  FT_DriverInterface*  getDriverInterface( void )  {    return &t1_driver_interface;  }  #endif /* FT_CONFIG_OPTION_DYNAMIC_DRIVERS */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -