Add additional implementation files needed by Skia.

This adds the files that are need by Skia's
SkFontHost::GetAdvancedTypefaceMetrics.

bug: 5445861
Change-Id: Id0cc770476fcdf852557e8e4c4451f92e4a291d6
diff --git a/Android.mk b/Android.mk
index cc92b9f..51ae31b 100644
--- a/Android.mk
+++ b/Android.mk
@@ -16,9 +16,11 @@
 LOCAL_SRC_FILES:= \
 	src/base/ftbbox.c \
 	src/base/ftbitmap.c \
+	src/base/ftfstype.c \
 	src/base/ftglyph.c \
 	src/base/ftlcdfil.c \
 	src/base/ftstroke.c \
+	src/base/fttype1.c \
 	src/base/ftxf86.c \
 	src/base/ftbase.c \
 	src/base/ftsystem.c \
diff --git a/src/base/ftfstype.c b/src/base/ftfstype.c
new file mode 100644
index 0000000..0bf29c7
--- /dev/null
+++ b/src/base/ftfstype.c
@@ -0,0 +1,62 @@
+/***************************************************************************/

+/*                                                                         */

+/*  ftfstype.c                                                             */

+/*                                                                         */

+/*    FreeType utility file to access FSType data (body).                  */

+/*                                                                         */

+/*  Copyright 2008, 2009 by                                                */

+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */

+/*                                                                         */

+/*  This file is part of the FreeType project, and may only be used,       */

+/*  modified, and distributed under the terms of the FreeType project      */

+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */

+/*  this file you indicate that you have read the license and              */

+/*  understand and accept it fully.                                        */

+/*                                                                         */

+/***************************************************************************/

+

+#include <ft2build.h>

+#include FT_TYPE1_TABLES_H

+#include FT_TRUETYPE_TABLES_H

+#include FT_INTERNAL_SERVICE_H

+#include FT_SERVICE_POSTSCRIPT_INFO_H

+

+

+  /* documentation is in freetype.h */

+

+  FT_EXPORT_DEF( FT_UShort )

+  FT_Get_FSType_Flags( FT_Face  face )

+  {

+    TT_OS2*  os2;

+

+

+    /* first, try to get the fs_type directly from the font */

+    if ( face )

+    {

+      FT_Service_PsInfo  service = NULL;

+

+

+      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );

+

+      if ( service && service->ps_get_font_extra )

+      {

+        PS_FontExtraRec  extra;

+

+

+        if ( !service->ps_get_font_extra( face, &extra ) &&

+             extra.fs_type != 0                          )

+          return extra.fs_type;

+      }

+    }

+

+    /* look at FSType before fsType for Type42 */

+

+    if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, ft_sfnt_os2 ) ) != NULL &&

+         os2->version != 0xFFFFU                                           )

+      return os2->fsType;

+

+    return 0;

+  }

+

+

+/* END */

diff --git a/src/base/fttype1.c b/src/base/fttype1.c
new file mode 100644
index 0000000..8f1e102
--- /dev/null
+++ b/src/base/fttype1.c
@@ -0,0 +1,94 @@
+/***************************************************************************/

+/*                                                                         */

+/*  fttype1.c                                                              */

+/*                                                                         */

+/*    FreeType utility file for PS names support (body).                   */

+/*                                                                         */

+/*  Copyright 2002, 2003, 2004 by                                          */

+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */

+/*                                                                         */

+/*  This file is part of the FreeType project, and may only be used,       */

+/*  modified, and distributed under the terms of the FreeType project      */

+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */

+/*  this file you indicate that you have read the license and              */

+/*  understand and accept it fully.                                        */

+/*                                                                         */

+/***************************************************************************/

+

+

+#include <ft2build.h>

+#include FT_INTERNAL_OBJECTS_H

+#include FT_INTERNAL_SERVICE_H

+#include FT_SERVICE_POSTSCRIPT_INFO_H

+

+

+  /* documentation is in t1tables.h */

+

+  FT_EXPORT_DEF( FT_Error )

+  FT_Get_PS_Font_Info( FT_Face          face,

+                       PS_FontInfoRec*  afont_info )

+  {

+    FT_Error  error = FT_Err_Invalid_Argument;

+

+

+    if ( face )

+    {

+      FT_Service_PsInfo  service = NULL;

+

+

+      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );

+

+      if ( service && service->ps_get_font_info )

+        error = service->ps_get_font_info( face, afont_info );

+    }

+

+    return error;

+  }

+

+

+  /* documentation is in t1tables.h */

+

+  FT_EXPORT_DEF( FT_Int )

+  FT_Has_PS_Glyph_Names( FT_Face  face )

+  {

+    FT_Int             result  = 0;

+    FT_Service_PsInfo  service = NULL;

+

+

+    if ( face )

+    {

+      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );

+

+      if ( service && service->ps_has_glyph_names )

+        result = service->ps_has_glyph_names( face );

+    }

+

+    return result;

+  }

+

+

+  /* documentation is in t1tables.h */

+

+  FT_EXPORT_DEF( FT_Error )

+  FT_Get_PS_Font_Private( FT_Face         face,

+                          PS_PrivateRec*  afont_private )

+  {

+    FT_Error  error = FT_Err_Invalid_Argument;

+

+

+    if ( face )

+    {

+      FT_Service_PsInfo  service = NULL;

+

+

+      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );

+

+      if ( service && service->ps_get_font_private )

+        error = service->ps_get_font_private( face, afont_private );

+    }

+

+    return error;

+  }

+

+

+/* END */