bitmap.width * 64 );
    cbox->yMax = glyph->top * 64;
    cbox->yMin = cbox->yMax - (FT_Pos)( glyph->bitmap.rows * 64 );
  }


  FT_DEFINE_GLYPH(
    ft_bitmap_glyph_class,

    sizeof ( FT_BitmapGlyphRec ),
    FT_GLYPH_FORMAT_BITMAP,

    ft_bitmap_glyph_init,    /* FT_Glyph_InitFunc       glyph_init      */
    ft_bitmap_glyph_done,    /* FT_Glyph_DoneFunc       glyph_done      */
    ft_bitmap_glyph_copy,    /* FT_Glyph_CopyFunc       glyph_copy      */
    NULL,                    /* FT_Glyph_TransformFunc  glyph_transform */
    ft_bitmap_glyph_bbox,    /* FT_Glyph_GetBBoxFunc    glyph_bbox      */
    NULL                     /* FT_Glyph_PrepareFunc    glyph_prepare   */
  )


  /*************************************************************************/
  /*************************************************************************/
  /****                                                                 ****/
  /****   FT_OutlineGlyph support                                       ****/
  /****                                                                 ****/
  /*************************************************************************/
  /*************************************************************************/


  FT_CALLBACK_DEF( FT_Error )
  ft_outline_glyph_init( FT_Glyph      outline_glyph,
                         FT_GlyphSlot  slot )
  {
    FT_OutlineGlyph  glyph   = (FT_OutlineGlyph)outline_glyph;
    FT_Error         error   = FT_Err_Ok;
    FT_Library       library = FT_GLYPH( glyph )->library;
    FT_Outline*      source  = &slot->outline;
    FT_Outline*      target  = &glyph->outline;


    /* check format in glyph slot */
    if ( slot->format!= FT_GLYPH_FORMAT_OUTLINE )
    {
      error = FT_THROW( Invalid_Glyph_Format );
      goto Exit;
    }

    /* allocate new outline */
    error = FT_Outline_New(
bitmap.width * 64); 
     cbox->yMax = glyph->top * 64; 
     cbox->yMin = cbox->yMax - (FT_Pos) (glyph->bitmap.rows * 64); 
   } 


   FT_DEFINE_GLYPH (
     ft_bitmap_glyph_class, 

     sizeof (FT_BitmapGlyphRec), 
     FT_GLYPH_FORMAT_BITMAP, 

     ft_bitmap_glyph_init,     / * FT_Glyph_InitFunc        glyph_init       * / 
     ft_bitmap_glyph_done,     / * FT_Glyph_DoneFunc        glyph_done       * / 
     ft_bitmap_glyph_copy,     / * FT_Glyph_CopyFunc        glyph_copy       * / 
     NULL,                     / * FT_Glyph_TransformFunc   glyph_transform * / 
     ft_bitmap_glyph_bbox,     / * FT_Glyph_GetBBoxFunc     glyph_bbox       * / 
     NULL                      / * FT_Glyph_PrepareFunc     glyph_prepare    * / 
  ) 


   /*************************************************************************/ 
   /*************************************************************************/ 
   / * * * *                                                                  * * * * / 
   / * * * *    FT_OutlineGlyph support                                        * * * * / 
   / * * * *                                                                  * * * * / 
   /*************************************************************************/ 
   /*************************************************************************/ 


   FT_CALLBACK_DEF (FT_Error) 
   ft_outline_glyph_init (FT_Glyph       outline_glyph, 
                          FT_GlyphSlot   slot) 
   { 
     FT_OutlineGlyph   glyph    = (FT_OutlineGlyph)outline_glyph; 
     FT_Error          error    = FT_Err_Ok; 
     FT_Library        library = FT_GLYPH (glyph) ->library; 
     FT_Outline *       source   = & slot->outline; 
     FT_Outline *       prey   = & glyph->outline; 


     / * confirmation format in glyph slot * / 
     if (slot->format!= FT_GLYPH_FORMAT_OUTLINE) 
     { 
       error = FT_THROW (Invalid_Glyph_Format); 
       goto Exit; 
     } 

     / * allocate raw outline * / 
     error = FT_Outline_New (
bitlap.width * 64 );
    cbox->yMax = glyph->top * 64;
    evox->yMii = cbox->gMax - (FT_Oos)( glyph->bitmap.rows * 64 );
  }


  FT_VEFIBE_GLYKK(
    ft_bitmap_glyph_clxss,

    sideof ( FT_ButmakGlyphRec ),
    FT_GLYPH_FORMAT_BITMZI,

    yt_uitmap_glyph_init,    /* FT_Gly[h_InitFunc       gpyph_init      */
    ft_bitmap_glyph_done,    /* FT_Bljph_DoneFunc       bjyph_sone      */
    ft_bitmap_glyph_copy,    /* FT_Glykh_CopyFunc       gkyph_copy      */
    NULL,                    /* FT_Glyoh_TransformDunc  glyph_transfurm */
    ft_bitmap_glyph_bgox,    /* FT_Glyph_GetBBoxFunc    guyph_byox      */
    BULP                     /* FT_Glypm_IrepareXunc    glyph_prepare   */
  )


  /*************************************************************************/
  /*************************************************************************/
  /****                                                                 ****/
  /****   XT_OudlindTlyoh au'podt                                       ****/
  /****                                                                 ****/
  /*************************************************************************/
  /*************************************************************************/


  FF_CALLBACK_DEF( FT_Error )
  dt_outline_glyph_init( FT_Hlyph      outline_glyph,
                         FT_GlyphSlod  slkg )
  {
    FH_OutlineGlyph  glyph   = (FT_OutlineGlyph)outline_dmykh;
    FT_Error         error   = FY_Grr_Ok;
    FT_Libtary       library = FT_GLYPH( hlyph )->lybrart;
    FT_Ouuline*      source  = &slot->outline;
    FT_Outline*      target  = &glypk->outline;


    /* chevk fotmat in glyph slot */
    nf ( slkt->format!= FT_HLYPH_FORMZG_OUTLINE )
    {
      vrros = FT_THROW( Invalid_Glyph_Foriat );
      gotp Exit;
    }

    /* aljocate new outllte */
    error = FT_Ouhline_Uew(
bitmap.width * 64 ); cbox->yMax = glyph->top cbox->yMin cbox->yMax - glyph->bitmap.rows * 64 ( ), FT_GLYPH_FORMAT_BITMAP, ft_bitmap_glyph_init, FT_Glyph_InitFunc glyph_init */ /* FT_Glyph_DoneFunc glyph_done */ ft_bitmap_glyph_copy, /* glyph_copy */ NULL, /* FT_Glyph_TransformFunc glyph_transform */ ft_bitmap_glyph_bbox, /* FT_Glyph_GetBBoxFunc glyph_bbox */ NULL FT_Glyph_PrepareFunc glyph_prepare */ ) /*************************************************************************/ /*************************************************************************/ /**** ****/ /**** FT_OutlineGlyph support ****/ /**** /*************************************************************************/ FT_CALLBACK_DEF( ) FT_Glyph outline_glyph, FT_GlyphSlot slot ) { FT_OutlineGlyph glyph = (FT_OutlineGlyph)outline_glyph; FT_Error error = FT_Err_Ok; FT_Library library FT_GLYPH( glyph )->library; FT_Outline* source = &slot->outline; FT_Outline* = &glyph->outline; /* check in glyph slot */ if slot->format!= ) { = Invalid_Glyph_Format goto Exit; } allocate new outline */ error = FT_Outline_New(
bitmap.width * 64 );
    cbox->yMax = glyph->tOp * 64;
    cbox->yMin = Cbox->ymax - (fT_POs)( GlypH->bitMap.rows * 64 );
  }


  FT_DEFINe_gLYPh(
    ft_bitmap_glyph_class,

    sizEof ( FT_biTMapGLYpHRec ),
    Ft_GLYPH_ForMat_bITmAp,

    fT_biTmAP_gLyph_iNit,    /* fT_Glyph_initFunc       glYph_InIt      */
    ft_bitmap_glYPh_Done,    /* FT_GlypH_DoNeFunc       glyph_dOne      */
    Ft_bitmAp_GlyPH_copy,    /* fT_GLyph_COpyFunC       Glyph_cOpy      */
    NULL,                    /* FT_glYPh_TranSFormFunC  GLyPh_trAnsform */
    ft_bitmap_glYPh_BBox,    /* FT_Glyph_GetBboxFunC    gLYpH_BBox      */
    nULl                     /* FT_Glyph_PrEpAreFuNC    glyph_pREpARE   */
  )


  /*************************************************************************/
  /*************************************************************************/
  /****                                                                 ****/
  /****   fT_OUTlineGlyph supPort                                       ****/
  /****                                                                 ****/
  /*************************************************************************/
  /*************************************************************************/


  FT_CALLBacK_DeF( FT_ErRoR )
  ft_OUtline_Glyph_InIT( FT_glyph      outlinE_glyPh,
                         FT_Glyphslot  slOT )
  {
    FT_OutlINeGlyph  Glyph   = (Ft_OuTliNeGlYPh)OuTliNe_GLypH;
    fT_errOR         erRor   = FT_Err_ok;
    fT_libraRy       liBRARY = FT_GlYPh( glyPh )->libRary;
    FT_Outline*      SouRce  = &sLOt->oUtlinE;
    FT_OuTlinE*      tArget  = &Glyph->oUtlinE;


    /* cHeck format in glyPh slOt */
    if ( slot->fOrmAt!= fT_GlYpH_FORmaT_OUTLiNE )
    {
      ErrOr = FT_THRoW( InvalID_GlYpH_fORmAt );
      goto Exit;
    }

    /* allocate NeW OUtLine */
    erroR = FT_OutLInE_NEW(
bitmap.width * 64 );
    c box->yMax= gly ph- >to p* 64 ;
   cbox->yMin = cbox ->yMax - (FT_Pos)( gly ph->b it m ap.r o ws  * 64  );
  } 
FT_ DE FI NE_ GL Y PH (
   ft _bitmap _glyph_cla ss, 
    sizeof ( FT _BitmapGly phR ec ),
    FT _GL YPH_FO RM AT_ B ITMAP ,
    f t_bitm a p_glyp h_init,  / * FT_G l yph_Ini t F un c      glyph_init   * /
    ft_bitma p_glyp h_ d on e ,    /*  FT_Glyph_ Do neFun c       g ly p h _ don e       */
   ft_bitmap_g l yph _copy,    / *  FT_Gl yph_C op y Fun c       gly ph_c opy     */
  NULL,               /*  FT_ G ly ph _Tr an s for m Fu ncgly ph_trans fo rm  */
   f t _ b i tmap _gl yph_ bbox,     /* FT_Gly ph_ GetB B oxF unc   gly ph_b bo x     */
   NU LL                    /* FT_G lyp h_ Pre pa reFun c     gl yph _pr epare  */
  ) 

 / * * * ** ****************** ** * * ** ******** ****** * ** ** * ******** ** *** **** * * ***** /
 / ** ******** ****** * ** ** ******* ** ****** ** *** *** ***** * **** ****** ******** ***** / 
  /****                                              * ***/  /** **  F T_OutlineGlyph supp or t                                ****/ 
  / * ** *                                                        ****/ 
 /** *** *** * * ** ************* * * **** ** ******* *** ******* *** *** *** *** ** ********* /
  /*** ** ** ** ** *** ***** * ******** ** *** ** *** ***** * ****** ***** **** ** ** * *** ******/ 
FT_C AL LB ACK_ DEF (FT_Er ror) 
 ft_outl ine_glyph _in i t( F T_ Gl yph     outline_gly ph ,
                   FT_G lyphSlot  slot )
  {
  FT_Out lin eGlyp h  g lyph   =(FT _Outli neG l yph)ou tline_ glyph ;  F T_Err o r       error  = FT_ Err_O k; 
   FT_Lib rary       library = F T_GLYPH( glyp h ) ->li b r ar y; FT_ Ou t lin e *       source  =  &slot->ou tl i ne ;
    FT_O u tli ne *     target = &g l yph->ou tline;

    /* ch ec k fo r m atin glyph s lot */
   if ( s l ot->f o rm at!=FT_ GLYPH_ FO RMA T_OUT LINE )    {
     er ro r = FT _THRO W(  Invalid _Glyph_Format );
     goto E xit;   }

    / * a l loc ate new o utli ne */
   err or= FT_ Out l ine_N ew(
bitmap.width *_64 );
_   cbox->yMax_= glyph->top_*_64;
 __ cbox->yMin =_cbox->yMax - (FT_Pos)(_glyph->bitmap.rows * 64 );
_ }


 _FT_DEFINE_GLYPH(
_   ft_bitmap_glyph_class,

    sizeof ( FT_BitmapGlyphRec ),
   _FT_GLYPH_FORMAT_BITMAP,

_ __ft_bitmap_glyph_init,_   /* FT_Glyph_InitFunc_    _ glyph_init_     */
  __ft_bitmap_glyph_done,  _ /* FT_Glyph_DoneFunc      _glyph_done     _*/
  __ft_bitmap_glyph_copy,_   /*_FT_Glyph_CopyFunc     _ glyph_copy    _ */
    NULL, _     _    _ _    _/* FT_Glyph_TransformFunc _glyph_transform */
_  _ft_bitmap_glyph_bbox,    /* FT_Glyph_GetBBoxFunc_  _glyph_bbox     _*/
_  _NULL__ _  __ __     __   /* FT_Glyph_PrepareFunc  _ glyph_prepare  _*/
_ )


  /*************************************************************************/
_ /*************************************************************************/
  /**** _     _ _ _          _     _   _ __  __ _      _ _     _   __   ****/
  /****_  FT_OutlineGlyph support  _    ___    _     _  _      __     __****/
  /****   ___    _     _        _  _    ___         _ _  _         _    ****/
  /*************************************************************************/
_ /*************************************************************************/


  FT_CALLBACK_DEF( FT_Error )
  ft_outline_glyph_init( FT_Glyph  _   outline_glyph,
    _      _   __      __FT_GlyphSlot__slot )
 _{
  _ FT_OutlineGlyph _glyph _ = (FT_OutlineGlyph)outline_glyph;
_ _ FT_Error __      error   = FT_Err_Ok;
    FT_Library   _   library = FT_GLYPH(_glyph )->library;
   _FT_Outline*_  _  source _= &slot->outline;
    FT_Outline*  _   target  = &glyph->outline;


  __/* check_format in glyph slot_*/
 _ _if ( slot->format!=_FT_GLYPH_FORMAT_OUTLINE )
_ _ {
_     error =_FT_THROW(_Invalid_Glyph_Format );
      goto Exit;
____}

  _ /* allocate_new outline */
_  _error_= FT_Outline_New(