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

📄 t42objs.c

📁 奇趣公司比较新的qt/emd版本
💻 C
📖 第 1 页 / 共 2 页
字号:
        FT_CMap_Class    clazz;        charmap.face = root;        /* first of all, try to synthetize a Unicode charmap */        charmap.platform_id = 3;        charmap.encoding_id = 1;        charmap.encoding    = FT_ENCODING_UNICODE;        FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL );        /* now, generate an Adobe Standard encoding when appropriate */        charmap.platform_id = 7;        clazz               = NULL;        switch ( type1->encoding_type )        {        case T1_ENCODING_TYPE_STANDARD:          charmap.encoding    = FT_ENCODING_ADOBE_STANDARD;          charmap.encoding_id = 0;          clazz               = cmap_classes->standard;          break;        case T1_ENCODING_TYPE_EXPERT:          charmap.encoding    = FT_ENCODING_ADOBE_EXPERT;          charmap.encoding_id = 1;          clazz               = cmap_classes->expert;          break;        case T1_ENCODING_TYPE_ARRAY:          charmap.encoding    = FT_ENCODING_ADOBE_CUSTOM;          charmap.encoding_id = 2;          clazz               = cmap_classes->custom;          break;        case T1_ENCODING_TYPE_ISOLATIN1:          charmap.encoding    = FT_ENCODING_ADOBE_LATIN_1;          charmap.encoding_id = 3;          clazz               = cmap_classes->unicode;          break;        default:          ;        }        if ( clazz )          FT_CMap_New( clazz, NULL, &charmap, NULL );#if 0        /* Select default charmap */        if ( root->num_charmaps )          root->charmap = root->charmaps[0];#endif      }    }  Exit:    return error;  }  FT_LOCAL_DEF( void )  T42_Face_Done( T42_Face  face )  {    T1_Font      type1;    PS_FontInfo  info;    FT_Memory    memory;    if ( face )    {      type1  = &face->type1;      info   = &type1->font_info;      memory = face->root.memory;      /* delete internal ttf face prior to freeing face->ttf_data */      if ( face->ttf_face )        FT_Done_Face( face->ttf_face );      /* release font info strings */      FT_FREE( info->version );      FT_FREE( info->notice );      FT_FREE( info->full_name );      FT_FREE( info->family_name );      FT_FREE( info->weight );      /* release top dictionary */      FT_FREE( type1->charstrings_len );      FT_FREE( type1->charstrings );      FT_FREE( type1->glyph_names );      FT_FREE( type1->charstrings_block );      FT_FREE( type1->glyph_names_block );      FT_FREE( type1->encoding.char_index );      FT_FREE( type1->encoding.char_name );      FT_FREE( type1->font_name );      FT_FREE( face->ttf_data );#if 0      /* release afm data if present */      if ( face->afm_data )        T1_Done_AFM( memory, (T1_AFM*)face->afm_data );#endif      /* release unicode map, if any */      FT_FREE( face->unicode_map.maps );      face->unicode_map.num_maps = 0;      face->root.family_name = 0;      face->root.style_name  = 0;    }  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    T42_Driver_Init                                                    */  /*                                                                       */  /* <Description>                                                         */  /*    Initializes a given Type 42 driver object.                         */  /*                                                                       */  /* <Input>                                                               */  /*    driver :: A handle to the target driver object.                    */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  T42_Driver_Init( T42_Driver  driver )  {    FT_Module  ttmodule;    ttmodule = FT_Get_Module( FT_MODULE(driver)->library, "truetype" );    driver->ttclazz = (FT_Driver_Class)ttmodule->clazz;    return T42_Err_Ok;  }  FT_LOCAL_DEF( void )  T42_Driver_Done( T42_Driver  driver )  {    FT_UNUSED( driver );  }  FT_LOCAL_DEF( FT_Error )  T42_Size_Init( T42_Size  size )  {    FT_Face   face = size->root.face;    T42_Face  t42face = (T42_Face)face;    FT_Size   ttsize;    FT_Error  error   = T42_Err_Ok;    error = FT_New_Size( t42face->ttf_face, &ttsize );    size->ttsize = ttsize;    FT_Activate_Size( ttsize );    return error;  }  FT_LOCAL_DEF( FT_Error )  T42_Size_Request( T42_Size         size,                    FT_Size_Request  req )  {    T42_Face  face = (T42_Face)size->root.face;    FT_Error  error;    FT_Activate_Size( size->ttsize );    error = FT_Request_Size( face->ttf_face, req );    if ( !error )      ( (FT_Size)size )->metrics = face->ttf_face->size->metrics;    return error;  }  FT_LOCAL_DEF( FT_Error )  T42_Size_Select( T42_Size  size,                   FT_ULong  strike_index )  {    T42_Face  face = (T42_Face)size->root.face;    FT_Error  error;    FT_Activate_Size( size->ttsize );    error = FT_Select_Size( face->ttf_face, strike_index );    if ( !error )      ( (FT_Size)size )->metrics = face->ttf_face->size->metrics;    return error;  }  FT_LOCAL_DEF( void )  T42_Size_Done( T42_Size  size )  {    FT_Face      face    = size->root.face;    T42_Face     t42face = (T42_Face)face;    FT_ListNode  node;    node = FT_List_Find( &t42face->ttf_face->sizes_list, size->ttsize );    if ( node )    {      FT_Done_Size( size->ttsize );      size->ttsize = NULL;    }  }  FT_LOCAL_DEF( FT_Error )  T42_GlyphSlot_Init( T42_GlyphSlot  slot )  {    FT_Face       face    = slot->root.face;    T42_Face      t42face = (T42_Face)face;    FT_GlyphSlot  ttslot;    FT_Error      error   = T42_Err_Ok;    if ( face->glyph == NULL )    {      /* First glyph slot for this face */      slot->ttslot = t42face->ttf_face->glyph;    }    else    {      error = FT_New_GlyphSlot( t42face->ttf_face, &ttslot );      slot->ttslot = ttslot;    }    return error;  }  FT_LOCAL_DEF( void )  T42_GlyphSlot_Done( T42_GlyphSlot slot )  {    FT_Done_GlyphSlot( slot->ttslot );  }  static void  t42_glyphslot_clear( FT_GlyphSlot  slot )  {    /* free bitmap if needed */    ft_glyphslot_free_bitmap( slot );    /* clear all public fields in the glyph slot */    FT_ZERO( &slot->metrics );    FT_ZERO( &slot->outline );    FT_ZERO( &slot->bitmap );    slot->bitmap_left   = 0;    slot->bitmap_top    = 0;    slot->num_subglyphs = 0;    slot->subglyphs     = 0;    slot->control_data  = 0;    slot->control_len   = 0;    slot->other         = 0;    slot->format        = FT_GLYPH_FORMAT_NONE;    slot->linearHoriAdvance = 0;    slot->linearVertAdvance = 0;  }  FT_LOCAL_DEF( FT_Error )  T42_GlyphSlot_Load( FT_GlyphSlot  glyph,                      FT_Size       size,                      FT_UInt       glyph_index,                      FT_Int32      load_flags )  {    FT_Error         error;    T42_GlyphSlot    t42slot = (T42_GlyphSlot)glyph;    T42_Size         t42size = (T42_Size)size;    FT_Driver_Class  ttclazz = ((T42_Driver)glyph->face->driver)->ttclazz;    t42_glyphslot_clear( t42slot->ttslot );    error = ttclazz->load_glyph( t42slot->ttslot,                                 t42size->ttsize,                                 glyph_index,                                 load_flags | FT_LOAD_NO_BITMAP );    if ( !error )    {      glyph->metrics = t42slot->ttslot->metrics;      glyph->linearHoriAdvance = t42slot->ttslot->linearHoriAdvance;      glyph->linearVertAdvance = t42slot->ttslot->linearVertAdvance;      glyph->format  = t42slot->ttslot->format;      glyph->outline = t42slot->ttslot->outline;      glyph->bitmap      = t42slot->ttslot->bitmap;      glyph->bitmap_left = t42slot->ttslot->bitmap_left;      glyph->bitmap_top  = t42slot->ttslot->bitmap_top;      glyph->num_subglyphs = t42slot->ttslot->num_subglyphs;      glyph->subglyphs     = t42slot->ttslot->subglyphs;      glyph->control_data  = t42slot->ttslot->control_data;      glyph->control_len   = t42slot->ttslot->control_len;    }    return error;  }/* END */

⌨️ 快捷键说明

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