freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] parthw-cleaned ab1f9b7 15/17: [gf] Define FT driver variable


From: Parth Wazurkar
Subject: [freetype2] parthw-cleaned ab1f9b7 15/17: [gf] Define FT driver variables with gftype values.
Date: Wed, 27 Jun 2018 11:53:56 -0400 (EDT)

branch: parthw-cleaned
commit ab1f9b7bd0e56e29d095e8616f3d242237a57604
Author: Parth Wazurkar <address@hidden>
Commit: Parth Wazurkar <address@hidden>

    [gf] Define FT driver variables with gftype values.
    
    * src/gf/gfdrivr.c : Define the FT driver variables
    in all the functions with gftype values from the font file.
---
 src/gf/gfdrivr.c | 127 +++++++++++++++++++++----------------------------------
 1 file changed, 48 insertions(+), 79 deletions(-)

diff --git a/src/gf/gfdrivr.c b/src/gf/gfdrivr.c
index 772c2b6..a60948f 100644
--- a/src/gf/gfdrivr.c
+++ b/src/gf/gfdrivr.c
@@ -140,8 +140,6 @@
     memory = FT_FACE_MEMORY( face );
 
     gf_free_font( face->gf_glyph );
-
-    FT_FREE( /*  */ );
   }
 
 
@@ -152,63 +150,48 @@
                  FT_Int         num_params,
                  FT_Parameter*  params )
   {
-    GF_Face   face   = (GF_Face)gfface;
-    FT_Error   error;
-    FT_Memory  memory = FT_FACE_MEMORY( face );
+    GF_Face     face   = (GF_Face)gfface;
+    FT_Error    error;
+    FT_Memory   memory = FT_FACE_MEMORY( face );
+    GF_Glyph    go;
 
+    face->gf_glyph = &go ;
     FT_UNUSED( num_params );
     FT_UNUSED( params );
 
     FT_TRACE2(( "GF driver\n" ));
 
     /* load font */
-    error = gf_load_font( stream, face );
-    if ( !error )
+    error = gf_load_font( stream, memory, &go );
+    if ( error )
       goto Exit;
 
-    if ( FT_ERR_EQ( error, Unknown_File_Format ) )
-    {
-      goto Exit
-    }
-
-    /* sanity check */
-    if ( !face-> /*  */ )
-    {
-      FT_TRACE2(( "/*  */" ));
-      error = FT_THROW( Invalid_File_Format );
-      goto Fail;
-    }
-
     /* we now need to fill the root FT_Face fields */
     /* with relevant information                   */
-    {
-      FT_Face   root = FT_FACE( face );
-      GF_Face   font = face->font;
-
-
-      root->face_index  = /*  */  ;
 
-      root->face_flags |= /*  */ ;
+    gfface->num_faces       = 1;
+    gfface->face_index      = 0;
+    gfface->face_flags |    = FT_FACE_FLAG_FIXED_SIZES | 
FT_FACE_FLAG_HORIZONTAL ;
+    gfface->family_name     = NULL;
+    gfface->num_glyphs      = (FT_Long)(go->code_max - go->code_min + 1 );
+    gfface->num_fixed_sizes = 1;
 
-      /* set up the `fixed_sizes' array */
-      if ( FT_NEW_ARRAY( root->available_sizes, 1 ) )
-        goto Fail;
-
-      root->num_fixed_sizes = 1;
+    if ( FT_NEW_ARRAY( gfface->available_sizes, 1 ) )
+      goto Exit;
 
       {
-        FT_Bitmap_Size*  bsize = root->available_sizes;
+        FT_Bitmap_Size*  bsize = gfface->available_sizes;
         FT_UShort        x_res, y_res;
 
-        bsize->width  = (FT_Short) /*  */ ;
-        bsize->height = (FT_Short) /*  */ ;
-        bsize->size   =            /*  */ ;
+        bsize->width  = (FT_Short) face->gf_glyph->font_bbx_w ;
+        bsize->height = (FT_Short) face->gf_glyph->font_bbx_h ;
+        bsize->size   = (FT_Short) face->gf_glyph->ds ; /* Preliminary to be 
checked for 26.6 fractional points*/
 
-        x_res = /*  */ ;
-        y_res = /*  */ ;
+        /*x_res =  ;  To be Checked for x_resolution and y_resolution
+        y_res =  ;*/
 
-        bsize->y_ppem = /*  */ ;
-        bsize->x_ppem = /*  */ ;
+        bsize->y_ppem = face->gf_glyph->font_bbx_yoff ;
+        bsize->x_ppem = face->gf_glyph->font_bbx_xoff ;
       }
 
       /* Charmaps */
@@ -219,35 +202,16 @@
 
         charmap.encoding    = FT_ENCODING_NONE;
         /* initial platform/encoding should indicate unset status? */
-        charmap.platform_id = TT_PLATFORM_APPLE_UNICODE;
+        charmap.platform_id = TT_PLATFORM_APPLE_UNICODE;  /*Preliminary */
         charmap.encoding_id = TT_APPLE_ID_DEFAULT;
         charmap.face        = root;
 
-        error = FT_CMap_New( gf_cmap_class, NULL, &charmap, NULL );
+        error = FT_CMap_New( &gf_cmap_class, NULL, &charmap, NULL );
 
         if ( error )
           goto Fail;
       }
 
-
-      /* reserve one slot for the .notdef glyph at index 0 */
-      root->num_glyphs = /*  */ ;
-
-      root->family_name = /*  */;
-      root->style_name  = /*  */;
-
-      if ( root->style_flags & FT_STYLE_FLAG_BOLD )
-      {
-        if ( root->style_flags & FT_STYLE_FLAG_ITALIC )
-          root->style_name = (char *)"Bold Italic";
-        else
-          root->style_name = (char *)"Bold";
-      }
-      else if ( root->style_flags & FT_STYLE_FLAG_ITALIC )
-        root->style_name = (char *)"Italic";
-    }
-    goto Exit;
-
   Fail:
     GF_Face_Done( gfface );
 
@@ -266,9 +230,9 @@
 
     FT_Select_Metrics( size->face, 0 );
 
-    size->metrics.ascender    =  /*  */  ;
-    size->metrics.descender   =  /*  */  ;
-    size->metrics.max_advance =  /*  */  ;
+    size->metrics.ascender    = face->gf_glyph->font_bbx_xoff    * 64;
+    size->metrics.descender   = face->gf_glyph->font_bbx_yoff    * 64;
+    size->metrics.max_advance = face->gf_glyph->font_bbx_w       * 64;
 
     return FT_Err_Ok;
 
@@ -295,7 +259,7 @@
       break;
 
     case FT_SIZE_REQUEST_TYPE_REAL_DIM:
-      if ( height == /*  */ )
+      if ( height == face->gf_glyph->font_bbx_h )  /* Preliminary */
         error = FT_Err_Ok;
       break;
 
@@ -341,33 +305,38 @@
 
     FT_TRACE1(( "GF_Glyph_Load: glyph index %d\n", glyph_index ));
 
+    #if 0
     if ( glyph_index > 0 )
-      glyph_index--;                           /* revert to real index */
+      glyph_index--;
     else
-      glyph_index = /*  */;                    /* the `.notdef' glyph  */
+      glyph_index = /*  */;
+    #endif
+
+    if ( glyph_index < 0 )
+      glyph_index = 0;
 
     /* slot, bitmap => freetype, glyph => gflib */
     glyph = gf->gf_glyph->bm_table[glyph_index];
 
-    bitmap->rows  = /*  */ ;
-    bitmap->width = /*  */ ;
-    bitmap->pitch = /*  */ ;     /* (In BDF) same as FT_Bitmap.pitch */
+    bitmap->rows  = bm.mv_y ; /* Prelimiary */
+    bitmap->width = bm.mv_x ; /* Prelimiary */
+    /* bitmap->pitch =  ; */
 
     /* note: we don't allocate a new array to hold the bitmap; */
     /*       we can simply point to it                         */
-    ft_glyphslot_set_bitmap( slot, glyph.bitmap );
+    ft_glyphslot_set_bitmap( slot, bm.bitmap );
 
     slot->format      = FT_GLYPH_FORMAT_BITMAP;
-    slot->bitmap_left = glyph.bbx.x_offset;
-    slot->bitmap_top  = glyph.bbx.ascent;
+    slot->bitmap_left = bm.off_x ; /* Prelimiary */
+    slot->bitmap_top  = bm.off_y ; /* Prelimiary */
 
-    slot->metrics.horiAdvance  = (FT_Pos) /*  */ ;
-    slot->metrics.horiBearingX = (FT_Pos) /*  */ ;
-    slot->metrics.horiBearingY = (FT_Pos) /*  */ ;
-    slot->metrics.width        = (FT_Pos) /*  */ ;
-    slot->metrics.height       = (FT_Pos) /*  */ ;
+    slot->metrics.horiAdvance  = (FT_Pos) bm.bbx_width - bm.off_x       ; /* 
Prelimiary */
+    slot->metrics.horiBearingX = (FT_Pos) bm.off_x                      ; /* 
Prelimiary */
+    slot->metrics.horiBearingY = (FT_Pos) bm.off_y                      ; /* 
Prelimiary */
+    slot->metrics.width        = (FT_Pos) ( bitmap->width * 64 )        ; /* 
Prelimiary */
+    slot->metrics.height       = (FT_Pos) ( bitmap->rows * 64 )         ; /* 
Prelimiary */
 
-    ft_synthesize_vertical_metrics( &slot->metrics, /*  */ );
+    ft_synthesize_vertical_metrics( &slot->metrics, bm.bbx_height * 64  );
 
   Exit:
     return error;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]