freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] gsoc-anurag-2023-final 70313bde8 15/16: [dense] Add support


From: Werner Lemberg
Subject: [freetype2] gsoc-anurag-2023-final 70313bde8 15/16: [dense] Add support for preloading in ft_open_face_internal
Date: Mon, 9 Oct 2023 17:36:41 -0400 (EDT)

branch: gsoc-anurag-2023-final
commit 70313bde8157d72f38329978e5d3082f3c952620
Author: Anurag Thakur <anurag105csec21@bpitindia.edu.in>
Commit: Anurag Thakur <anurag105csec21@bpitindia.edu.in>

    [dense] Add support for preloading in ft_open_face_internal
---
 src/base/ftobjs.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 88f837768..b3abace90 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -1630,6 +1630,7 @@
       return FT_THROW( Invalid_Argument );
 
     args.flags    = FT_OPEN_PATHNAME;
+    args.size     = 0;
     args.pathname = (char*)pathname;
     args.stream   = NULL;
 
@@ -3083,6 +3084,33 @@ FT_Error ft_decompose_outline(FT_GlyphSlot* slot){
 
         face->size = size;
       }
+      if ( args->size > 0 )
+      {
+        face->glyph_array = (FT_GlyphSlot*)malloc(
+            face->driver->clazz->slot_object_size * face->num_glyphs );
+        error = FT_Set_Pixel_Sizes( face, 0, args->size );
+
+        for ( int gindex = 0; gindex < face->num_glyphs; gindex++ )
+        {
+          driver                = face->driver;
+          FT_Driver_Class clazz = driver->clazz;
+          memory                = driver->root.memory;
+
+          FT_ALLOC( face->glyph_array[gindex], clazz->slot_object_size );
+          
+          face->glyph_array[gindex]->face         = face;
+          face->glyph_array[gindex]->prel_shifted = 0;
+          face->glyph_array[gindex]->glyph_index  = gindex;
+          ft_glyphslot_init( face->glyph_array[gindex] );
+
+          face->glyph_array[gindex]->next = NULL;
+          *face->glyph                    = *face->glyph_array[gindex];
+
+          FT_Load_Glyph( face, gindex, FT_LOAD_NO_HINTING );
+
+          ft_decompose_outline( &face->glyph_array[gindex] );
+        }
+      }
     }
 
     /* some checks */



reply via email to

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