freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] master 9f3ae57: * src/ftcommon.c (FTDemo_Draw_Header):


From: Werner Lemberg
Subject: [freetype2-demos] master 9f3ae57: * src/ftcommon.c (FTDemo_Draw_Header): Handle invalid `size` objects.
Date: Tue, 3 Jan 2023 03:32:49 -0500 (EST)

branch: master
commit 9f3ae5797955b3261404e7d52ed1d69ba035cdbb
Author: Werner Lemberg <wl@gnu.org>
Commit: Werner Lemberg <wl@gnu.org>

    * src/ftcommon.c (FTDemo_Draw_Header): Handle invalid `size` objects.
---
 src/ftcommon.c | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/ftcommon.c b/src/ftcommon.c
index 622e20b..501f191 100644
--- a/src/ftcommon.c
+++ b/src/ftcommon.c
@@ -1186,9 +1186,14 @@
                        strbuf_value( buf ), display->fore_color );
 
     /* ppem, pt and dpi, instance */
-    ppem = FT_IS_SCALABLE( face ) ? FT_MulFix( face->units_per_EM,
-                                               face->size->metrics.y_scale )
-                                  : face->size->metrics.y_ppem * 64;
+    if ( face->size )
+    {
+      ppem = FT_IS_SCALABLE( face )
+             ? FT_MulFix( face->units_per_EM, face->size->metrics.y_scale )
+             : face->size->metrics.y_ppem * 64;
+    }
+    else
+      ppem = 0;
 
     strbuf_reset( buf );
     if ( res == 72 )
@@ -1205,8 +1210,13 @@
     grWriteCellString( display->bitmap, 0, line * HEADER_HEIGHT,
                        strbuf_value( buf ), display->fore_color );
 
-    if ( abs( ptsize * res / 64 - face->size->metrics.y_ppem * 72 ) > 36 ||
-         error_code                                                      )
+    /* The demo programs are mainly investigation tools.  Normal          */
+    /* applications don't need all the extra validity checks to display   */
+    /* something for invalid fonts; instead, they can simply reject them. */
+    if ( ( face->size                                      &&
+           abs( ptsize * res / 64
+                  - face->size->metrics.y_ppem * 72 ) > 36 ) ||
+         error_code                                          )
     {
       strbuf_reset( buf );
 



reply via email to

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