freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] undefined_scale a97787419: Draft: [base] Undefined scale mea


From: Werner Lemberg
Subject: [freetype2] undefined_scale a97787419: Draft: [base] Undefined scale means no scale.
Date: Tue, 18 Jan 2022 22:48:44 -0500 (EST)

branch: undefined_scale
commit a97787419dfa600484e0da8a5089ea0df7825901
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    Draft: [base] Undefined scale means no scale.
    
    It might be surprising that FreeType does not have default ppem and
    the size has to be set explicitly or face undefined behavior with
    undefined variables and errors. This offers an alternative to
    missing or zero scale by simply setting FT_LOAD_NO_SCALE.
    
    This is alternative to !132 and discussed in
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43708
    
    * src/base/ftobjs.c (FT_Load_Glyph): Deal with zero scale.
---
 src/base/ftobjs.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 18de2f7d4..4f5e7d439 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -858,6 +858,11 @@
     library = driver->root.library;
     hinter  = library->auto_hinter;
 
+    /* undefined scale means no scale */
+    if ( face->size->metrics.x_ppem == 0 ||
+         face->size->metrics.y_ppem == 0 )
+      load_flags |= FT_LOAD_NO_SCALE;
+
     /* resolve load flags dependencies */
 
     if ( load_flags & FT_LOAD_NO_RECURSE )



reply via email to

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