[cff] Handle underline position and thickness as integers.

This is done for consistency with Type 1 fonts.

* include/freetype/internal/cfftypes.h (CFF_FontRecDic): Change
the variable types.
* include/cff/cfftoken.h (CFF_FontRecDic): Change the parsing macros.
* src/cff/cffobjs.c (cff_face_init), src/cff/cffload.c (cff_subfont_load),
src/cff/cffdrivr.c (cff_ps_get_font_info): Update users.
diff --git a/include/freetype/internal/cfftypes.h b/include/freetype/internal/cfftypes.h
index 62335db..754122f 100644
--- a/include/freetype/internal/cfftypes.h
+++ b/include/freetype/internal/cfftypes.h
@@ -191,8 +191,8 @@
     FT_UInt    weight;
     FT_Bool    is_fixed_pitch;
     FT_Fixed   italic_angle;
-    FT_Fixed   underline_position;
-    FT_Fixed   underline_thickness;
+    FT_Short   underline_position;
+    FT_UShort  underline_thickness;
     FT_Int     paint_type;
     FT_Int     charstring_type;
     FT_Matrix  font_matrix;
diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c
index 9095732..44ff44a 100644
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -456,10 +456,8 @@
                                                          dict->weight );
       font_info->italic_angle        = dict->italic_angle;
       font_info->is_fixed_pitch      = dict->is_fixed_pitch;
-      font_info->underline_position  =
-                           (FT_Short)( dict->underline_position >> 16 );
-      font_info->underline_thickness =
-                          (FT_UShort)( dict->underline_thickness >> 16 );
+      font_info->underline_position  = dict->underline_position;
+      font_info->underline_thickness = dict->underline_thickness;
 
       cff->font_info = font_info;
     }
diff --git a/src/cff/cffload.c b/src/cff/cffload.c
index 326f885..39d662e 100644
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -2014,8 +2014,8 @@
     /* set defaults */
     FT_ZERO( top );
 
-    top->underline_position  = -( 100L << 16 );
-    top->underline_thickness = 50L << 16;
+    top->underline_position  = -100;
+    top->underline_thickness = 50;
     top->charstring_type     = 2;
     top->font_matrix.xx      = 0x10000L;
     top->font_matrix.yy      = 0x10000L;
diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
index 1aeb908..9e00943 100644
--- a/src/cff/cffobjs.c
+++ b/src/cff/cffobjs.c
@@ -846,10 +846,8 @@
           cffface->height = (FT_Short)( cffface->ascender -
                                         cffface->descender );
 
-        cffface->underline_position  =
-          (FT_Short)( dict->underline_position >> 16 );
-        cffface->underline_thickness =
-          (FT_Short)( dict->underline_thickness >> 16 );
+        cffface->underline_position  = (FT_Short)dict->underline_position;
+        cffface->underline_thickness = (FT_Short)dict->underline_thickness;
 
         /* retrieve font family & style name */
         if ( dict->family_name )
diff --git a/src/cff/cfftoken.h b/src/cff/cfftoken.h
index cc5aaa2..a7ee1cb 100644
--- a/src/cff/cfftoken.h
+++ b/src/cff/cfftoken.h
@@ -30,8 +30,8 @@
   CFF_FIELD_STRING  ( 4,     weight,              "Weight" )
   CFF_FIELD_BOOL    ( 0x101, is_fixed_pitch,      "isFixedPitch" )
   CFF_FIELD_FIXED   ( 0x102, italic_angle,        "ItalicAngle" )
-  CFF_FIELD_FIXED   ( 0x103, underline_position,  "UnderlinePosition" )
-  CFF_FIELD_FIXED   ( 0x104, underline_thickness, "UnderlineThickness" )
+  CFF_FIELD_NUM     ( 0x103, underline_position,  "UnderlinePosition" )
+  CFF_FIELD_NUM     ( 0x104, underline_thickness, "UnderlineThickness" )
   CFF_FIELD_NUM     ( 0x105, paint_type,          "PaintType" )
   CFF_FIELD_NUM     ( 0x106, charstring_type,     "CharstringType" )
   CFF_FIELD_CALLBACK( 0x107, font_matrix,         "FontMatrix" )