freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] GSoC-2019-moazin 1ab8251 06/32: Support OT-SVG fonts with CF


From: Moazin Khatti
Subject: [freetype2] GSoC-2019-moazin 1ab8251 06/32: Support OT-SVG fonts with CFF outlines
Date: Thu, 11 Jul 2019 05:10:03 -0400 (EDT)

branch: GSoC-2019-moazin
commit 1ab8251ff12103fdd1adf91b792082a4275aaba5
Author: Moazin Khatti <address@hidden>
Commit: Moazin Khatti <address@hidden>

    Support OT-SVG fonts with CFF outlines
---
 include/freetype/internal/cffotypes.h |  3 +++
 src/cff/cffgload.c                    | 15 +++++++++++++++
 src/truetype/ttgload.c                | 26 ++++++++------------------
 3 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/include/freetype/internal/cffotypes.h 
b/include/freetype/internal/cffotypes.h
index b26893e..aaf0668 100644
--- a/include/freetype/internal/cffotypes.h
+++ b/include/freetype/internal/cffotypes.h
@@ -61,6 +61,9 @@ FT_BEGIN_HEADER
   {
     FT_GlyphSlotRec  root;
 
+    FT_Byte*          svg_document;
+    FT_ULong          svg_document_length;
+
     FT_Bool  hint;
     FT_Bool  scaled;
 
diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c
index 36aa7d1..4db7797 100644
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -347,6 +347,21 @@
     if ( load_flags & FT_LOAD_SBITS_ONLY )
       return FT_THROW( Invalid_Argument );
 
+    /* OpenType SVG Support Over here */
+    if ( ( load_flags & FT_LOAD_COLOR ) && 
+         ( ((TT_Face)glyph->root.face)->svg ) )
+    {
+      SFNT_Service  sfnt = (SFNT_Service)(((TT_Face)glyph->root.face)->sfnt);
+      error = sfnt->load_svg_doc( &(glyph->root), glyph_index );
+      if( error == FT_Err_Ok )
+      {
+        glyph->root.format = FT_GLYPH_FORMAT_SVG;
+        return error;
+      }
+    }
+
+    /* OpenType SVG Support End */
+
     /* if we have a CID subfont, use its matrix (which has already */
     /* been multiplied with the root matrix)                       */
 
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index 6b2bb69..57baf88 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -2440,23 +2440,6 @@
 #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
 
   static FT_Error
-  load_svg_glyph( TT_GlyphSlot glyph,
-                  FT_ULong     glyph_index ) 
-  {
-    FT_Error      error;
-    TT_Face       face;
-    SFNT_Service  sfnt;
-    FT_Byte*      doc_list;
-
-    face = (TT_Face)(glyph->root).face;
-    sfnt = (SFNT_Service)face->sfnt;
-    
-    error = sfnt->load_svg_doc( (FT_GlyphSlot)glyph, glyph_index );
-    return error;
-  }
-
-
-  static FT_Error
   tt_loader_init( TT_Loader     loader,
                   TT_Size       size,
                   TT_GlyphSlot  glyph,
@@ -2798,6 +2781,7 @@
   {
     FT_Error      error;
     TT_LoaderRec  loader;
+    SFNT_Service  sfnt;
     FT_GlyphSlot  glyph = (FT_GlyphSlot)glyph_;
 
     FT_TRACE1(( "TT_Load_Glyph: glyph index %d\n", glyph_index ));
@@ -2905,7 +2889,13 @@
     /* OT-SVG part here */
     if ( ( load_flags & FT_LOAD_COLOR ) && ( ((TT_Face)glyph->face)->svg ) )
     {
-      error = load_svg_glyph( glyph_, glyph_index );
+      sfnt = (SFNT_Service)((TT_Face)glyph->face)->sfnt;
+      error = sfnt->load_svg_doc( glyph, glyph_index );
+      if( error == FT_Err_Ok )
+      {
+        glyph->format = FT_GLYPH_FORMAT_SVG;
+        return error;
+      }
     }
 
     if ( load_flags & FT_LOAD_SBITS_ONLY )



reply via email to

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