blob: 1dd878eb53b55929ef7cef1c4009114c075dd62f [file] [log] [blame]
/****************************************************************************/
/* */
/* The FreeType project -- a free and portable quality TrueType renderer. */
/* */
/* Copyright 1996-1998 by */
/* D. Turner, R.Wilhelm, and W. Lemberg */
/* */
/* ftlint: a simple TrueType instruction tester. */
/* */
/* NOTE: This is just a test program that is used to show off and */
/* debug the current engine. */
/* */
/****************************************************************************/
#include "freetype.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define gettext( x ) ( x )
FT_Error error;
FT_Library library;
FT_Face face;
unsigned int num_glyphs;
int ptsize;
int Fail;
int Num;
static void Usage( char* name )
{
printf( "fttry: simple TrueType instruction tester -- part of the FreeType project\n" );
printf( "--------------------------------------------------------------------------\n" );
printf( "\n" );
printf( "Usage: %s ppem glyph fontname [fontname2..]\n\n", name );
printf( " or %s -u glyph fontname [fontname2..]\n", name );
printf( " to load an unscaled glyph\n\n" );
exit( 1 );
}
static void Panic( const char* message )
{
fprintf( stderr, "%s\n error code = 0x%04x\n", message, error );
exit(1);
}
int main( int argc, char** argv )
{
int i, file_index, glyph_index;
char filename[128 + 4];
char alt_filename[128 + 4];
char* execname;
char* fname;
int load_unscaled = 0;
execname = argv[0];
if ( argc < 3 )
Usage( execname );
if ( argv[1][0] == '-' &&
argv[1][1] == 'u' )
{
load_unscaled = 1;
}
else
{
if ( sscanf( argv[1], "%d", &ptsize ) != 1 )
Usage( execname );
}
argc--;
argv++;
if ( sscanf( argv[1], "%d", &glyph_index ) != 1 )
Usage( execname );
error = FT_Init_FreeType( &library );
if (error) Panic( "Could not create library object" );
/* Now check all files */
for ( file_index = 2; file_index < argc; file_index++ )
{
fname = argv[file_index];
i = strlen( fname );
while ( i > 0 && fname[i] != '\\' && fname[i] != '/' )
{
if ( fname[i] == '.' )
i = 0;
i--;
}
filename[128] = '\0';
alt_filename[128] = '\0';
strncpy( filename, fname, 128 );
strncpy( alt_filename, fname, 128 );
if ( i >= 0 )
{
strncpy( filename + strlen( filename ), ".ttf", 4 );
strncpy( alt_filename + strlen( alt_filename ), ".ttc", 4 );
}
i = strlen( filename );
fname = filename;
while ( i >= 0 )
if ( filename[i] == '/' || filename[i] == '\\' )
{
fname = filename + i + 1;
i = -1;
}
else
i--;
printf( "%s: ", fname );
/* Load face */
error = FT_New_Face( library, filename, 0, &face );
if (error) Panic( "Could not create face object" );
num_glyphs = face->num_glyphs;
error = FT_Set_Char_Size( face, ptsize << 6, 0, 0, 0 );
if (error) Panic( "Could not set character size" );
error = FT_Load_Glyph( face,
glyph_index,
load_unscaled ? FT_LOAD_NO_SCALE
: FT_LOAD_DEFAULT );
if ( error == 0 )
printf( "OK.\n" );
else
printf( "Fail with error 0x%04x\n", error );
FT_Done_Face( face );
}
FT_Done_FreeType(library);
exit( 0 ); /* for safety reasons */
return 0; /* never reached */
}
/* End */