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