[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] master 8b76eaf: * src/tools/ftfuzzer/ftfuzzer.cc: Handle fix
From: |
Werner LEMBERG |
Subject: |
[freetype2] master 8b76eaf: * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211). |
Date: |
Thu, 15 Oct 2015 16:28:55 +0000 |
branch: master
commit 8b76eaf092f2b100f9a111c429d2c71c0a76fe91
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>
* src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).
---
ChangeLog | 5 +++
src/tools/ftfuzzer/ftfuzzer.cc | 73 ++++++++++++++++++++++++---------------
2 files changed, 50 insertions(+), 28 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index ef51026..0edd845 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-15 Bungeman <address@hidden>
+ Werner Lemberg <address@hidden>
+
+ * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).
+
2015-10-15 Werner Lemberg <address@hidden>
[base] Compute MD5 checksums only if explicitly requested.
diff --git a/src/tools/ftfuzzer/ftfuzzer.cc b/src/tools/ftfuzzer/ftfuzzer.cc
index c4f5977..e5ab293 100644
--- a/src/tools/ftfuzzer/ftfuzzer.cc
+++ b/src/tools/ftfuzzer/ftfuzzer.cc
@@ -131,42 +131,59 @@ using namespace std;
&face ) )
continue;
- // set up 20pt at 72dpi as an arbitrary size
- FT_Set_Char_Size( face, 20, 20, 72, 72 );
-
- // test MM interface only for a face without a selected instance
- if ( instance_index == 0 )
- setIntermediateAxis( face );
-
- // loop over all glyphs
- for ( unsigned int glyph_index = 0;
- glyph_index < (unsigned int)face->num_glyphs;
- glyph_index++ )
+ // loop over all bitmap stroke sizes
+ // and an arbitrary size for outlines
+ for ( long fixed_sizes_index = 0;
+ fixed_sizes_index < face->num_fixed_sizes + 1;
+ fixed_sizes_index++ )
{
- if ( FT_Load_Glyph( face, glyph_index, load_flags ) )
- continue;
-
- // Rendering is the most expensive and the least interesting part.
- //
- // if ( FT_Render_Glyph( face->glyph, render_mode) )
- // continue;
- // FT_GlyphSlot_Embolden( face->glyph );
+ FT_Int32 flags = load_flags;
+
+ if ( !fixed_sizes_index )
+ {
+ // set up 20pt at 72dpi as an arbitrary size
+ FT_Set_Char_Size( face, 20, 20, 72, 72 );
+ flags |= FT_LOAD_NO_BITMAP;
+ }
+ else
+ {
+ FT_Select_Size( face, fixed_sizes_index - 1 );
+ flags |= FT_LOAD_COLOR;
+ }
+
+ // test MM interface only for a face without a selected instance
+ if ( instance_index == 0 )
+ setIntermediateAxis( face );
+
+ // loop over all glyphs
+ for ( unsigned int glyph_index = 0;
+ glyph_index < (unsigned int)face->num_glyphs;
+ glyph_index++ )
+ {
+ if ( FT_Load_Glyph( face, glyph_index, flags ) )
+ continue;
+
+ // Rendering is the most expensive and the least interesting part.
+ //
+ // if ( FT_Render_Glyph( face->glyph, render_mode) )
+ // continue;
+ // FT_GlyphSlot_Embolden( face->glyph );
#if 0
- FT_Glyph glyph;
- if ( !FT_Get_Glyph( face->glyph, &glyph ) )
- FT_Done_Glyph( glyph );
+ FT_Glyph glyph;
+ if ( !FT_Get_Glyph( face->glyph, &glyph ) )
+ FT_Done_Glyph( glyph );
- FT_Outline* outline = &face->glyph->outline;
- FT_Matrix rot30 = { 0xDDB4, -0x8000, 0x8000, 0xDDB4 };
+ FT_Outline* outline = &face->glyph->outline;
+ FT_Matrix rot30 = { 0xDDB4, -0x8000, 0x8000, 0xDDB4 };
- FT_Outline_Transform( outline, &rot30 );
+ FT_Outline_Transform( outline, &rot30 );
- FT_BBox bbox;
- FT_Outline_Get_BBox( outline, &bbox );
+ FT_BBox bbox;
+ FT_Outline_Get_BBox( outline, &bbox );
#endif
+ }
}
-
FT_Done_Face( face );
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] master 8b76eaf: * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).,
Werner LEMBERG <=