150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/***************************************************************************/
250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  ftfstype.c                                                             */
450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*    FreeType utility file to access FSType data (body).                  */
650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  Copyright 2008, 2009 by                                                */
850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
1050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  This file is part of the FreeType project, and may only be used,       */
1150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  modified, and distributed under the terms of the FreeType project      */
1250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
1350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  this file you indicate that you have read the license and              */
1450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  understand and accept it fully.                                        */
1550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
1650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/***************************************************************************/
1750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
1850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include <ft2build.h>
1950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include FT_TYPE1_TABLES_H
2050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include FT_TRUETYPE_TABLES_H
2150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include FT_INTERNAL_SERVICE_H
2250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include FT_SERVICE_POSTSCRIPT_INFO_H
2350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
2450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
2550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  /* documentation is in freetype.h */
2650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
2750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  FT_EXPORT_DEF( FT_UShort )
2850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  FT_Get_FSType_Flags( FT_Face  face )
2950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  {
3050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    TT_OS2*  os2;
3150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
3250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
3350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    /* first, try to get the fs_type directly from the font */
3450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    if ( face )
3550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    {
3650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      FT_Service_PsInfo  service = NULL;
3750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
3850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
3950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
4050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
4150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      if ( service && service->ps_get_font_extra )
4250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      {
4350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger        PS_FontExtraRec  extra;
4450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
4550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
4650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger        if ( !service->ps_get_font_extra( face, &extra ) &&
4750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger             extra.fs_type != 0                          )
4850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger          return extra.fs_type;
4950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      }
5050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    }
5150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
5250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    /* look at FSType before fsType for Type42 */
5350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
5450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, ft_sfnt_os2 ) ) != NULL &&
5550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger         os2->version != 0xFFFFU                                           )
5650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      return os2->fsType;
5750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
5850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    return 0;
5950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  }
6050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
6150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
6250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/* END */
63