forked from minhngoc25a/freetype2
156 lines
4.2 KiB
C
156 lines
4.2 KiB
C
/****************************************************************************/
|
|
/* */
|
|
/* 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 */
|