Commit 4308b7b1af2161a6de5e7a360eba1b5d97064e7e

Alexei Podtelezhnikov 2015-06-24T23:31:17

* src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.

diff --git a/ChangeLog b/ChangeLog
index 619b68e..b9d856a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-06-24  Alexei Podtelezhnikov <apodtele@gmail.com>
+
+	* src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
+
 2015-06-23  Werner Lemberg  <wl@gnu.org>
 
 	s/TYPEOF/FT_TYPEOF/ (#45376).
diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c
index 8655d0e..259c207 100644
--- a/src/bdf/bdflib.c
+++ b/src/bdf/bdflib.c
@@ -2346,30 +2346,21 @@
       /* Check for the bits per pixel field. */
       if ( p->list.used == 5 )
       {
-        unsigned short bitcount, i, shift;
+        unsigned short bpp;
 
 
-        p->font->bpp = (unsigned short)_bdf_atos( p->list.field[4], 0, 10 );
+        bpp = (unsigned short)_bdf_atos( p->list.field[4], 0, 10 );
 
-        /* Only values 1, 2, 4, 8 are allowed. */
-        shift = p->font->bpp;
-        bitcount = 0;
-        for ( i = 0; shift > 0; i++ )
-        {
-          if ( shift & 1 )
-            bitcount = i;
-          shift >>= 1;
-        }
-
-        shift = (unsigned short)( ( bitcount > 3 ) ? 8
-                                                   : ( 1U << bitcount ) );
+        /* Only values 1, 2, 4, 8 are allowed for greymap fonts. */
+        if ( bpp > 4 )
+          p->font->bpp = 8;
+        else if ( bpp > 2 )
+          p->font->bpp = 4;
+        else
+          p->font->bpp = bpp;
 
-        if ( p->font->bpp > shift || p->font->bpp != shift )
-        {
-          /* select next higher value */
-          p->font->bpp = (unsigned short)( shift << 1 );
+        if ( p->font->bpp != bpp )
           FT_TRACE2(( "_bdf_parse_start: " ACMSG11, p->font->bpp ));
-        }
       }
       else
         p->font->bpp = 1;