⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftrandom.c

📁 linux控件xml 搭建apache支持php openssl
💻 C
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2005, 2007, 2008 by George Williams *//* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *//* modified by Werner Lemberg <wl@gnu.org>       *//* This file is now part of the FreeType library */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/wait.h>#include <unistd.h>#include <dirent.h>#include <math.h>#include <signal.h>#include <time.h>#include <ft2build.h>#include FT_FREETYPE_H#include FT_OUTLINE_H#define true     1#define false    0#define forever  for (;;)  static int    check_outlines = false;  static int    nohints        = false;  static int    rasterize      = false;  static char*  results_dir    = "results";#define GOOD_FONTS_DIR  "/home/wl/freetype-testfonts"  static char*  default_dir_list[] =  {    GOOD_FONTS_DIR,    NULL  };  static char*  default_ext_list[] =  {    "ttf",    "otf",    "ttc",    "cid",    "pfb",    "pfa",    "bdf",    "pcf",    "pfr",    "fon",    "otb",    "cff",    NULL  };  static int  error_count    = 1;  static int  error_fraction = 0;  static FT_F26Dot6  font_size = 12 * 64;  static struct fontlist  {    char*         name;    int           len;    unsigned int  isbinary: 1;    unsigned int  isascii: 1;    unsigned int  ishex: 1;  } *fontlist;  static int  fcnt;  static int  FT_MoveTo( const FT_Vector  *to,             void             *user )  {    return 0;  }  static int  FT_LineTo( const FT_Vector  *to,             void             *user )  {    return 0;  }  static int  FT_ConicTo( const FT_Vector  *_cp,              const FT_Vector  *to,              void             *user )  {    return 0;  }  static int  FT_CubicTo( const FT_Vector  *cp1,              const FT_Vector  *cp2,              const FT_Vector  *to,              void             *user )  {    return 0;  }  static FT_Outline_Funcs outlinefuncs =  {    FT_MoveTo,    FT_LineTo,    FT_ConicTo,    FT_CubicTo,    0, 0          /* No shift, no delta */  };  static void  TestFace( FT_Face  face )  {    int  gid;    int  load_flags = FT_LOAD_DEFAULT;    if ( check_outlines         &&         FT_IS_SCALABLE( face ) )      load_flags = FT_LOAD_NO_BITMAP;    if ( nohints )      load_flags |= FT_LOAD_NO_HINTING;    FT_Set_Char_Size( face, 0, font_size, 72, 72 );    for ( gid = 0; gid < face->num_glyphs; ++gid )    {      if ( check_outlines         &&           FT_IS_SCALABLE( face ) )      {        if ( !FT_Load_Glyph( face, gid, load_flags ) )          FT_Outline_Decompose( &face->glyph->outline, &outlinefuncs, NULL );      }      else        FT_Load_Glyph( face, gid, load_flags );      if ( rasterize )        FT_Render_Glyph( face->glyph, ft_render_mode_normal );    }    FT_Done_Face( face );  }  static void  ExecuteTest( char*  testfont )  {    FT_Library  context;    FT_Face     face;    int         i, num;    if ( FT_Init_FreeType( &context ) )    {      fprintf( stderr, "Can't initialize FreeType.\n" );      exit( 1 );    }    if ( FT_New_Face( context, testfont, 0, &face ) )    {      /* The font is erroneous, so if this fails that's ok. */      exit( 0 );    }    if ( face->num_faces == 1 )      TestFace( face );    else    {      num = face->num_faces;      FT_Done_Face( face );      for ( i = 0; i < num; ++i )      {        if ( !FT_New_Face( context, testfont, i, &face ) )          TestFace( face );      }    }    exit( 0 );  }  static int  extmatch( char*   filename,            char**  extensions )  {    int    i;    char*  pt;    if ( extensions == NULL )      return true;    pt = strrchr( filename, '.' );    if ( pt == NULL )      return false;    if ( pt < strrchr( filename, '/' ) )      return false;    for ( i = 0; extensions[i] != NULL; ++i )      if ( strcasecmp( pt + 1, extensions[i] ) == 0 ||           strcasecmp( pt,     extensions[i] ) == 0 )        return true;    return false;  }  static void  figurefiletype( struct fontlist*  item )  {    FILE*  foo;    item->isbinary = item->isascii = item->ishex = false;    foo = fopen( item->name, "rb" );    if ( foo != NULL )    {      /* Try to guess the file type from the first few characters... */      int  ch1 = getc( foo );      int  ch2 = getc( foo );      int  ch3 = getc( foo );      int  ch4 = getc( foo );      fclose( foo );      if ( ( ch1 == 0   && ch2 == 1   && ch3 == 0   && ch4 == 0   ) ||           ( ch1 == 'O' && ch2 == 'T' && ch3 == 'T' && ch4 == 'O' ) ||           ( ch1 == 't' && ch2 == 'r' && ch3 == 'u' && ch4 == 'e' ) ||           ( ch1 == 't' && ch2 == 't' && ch3 == 'c' && ch4 == 'f' ) )      {        /* ttf, otf, ttc files */        item->isbinary = true;      }      else if ( ch1 == 0x80 && ch2 == '\01' )      {        /* PFB header */        item->isbinary = true;      }      else if ( ch1 == '%' && ch2 == '!' )      {        /* Random PostScript */        if ( strstr( item->name, ".pfa" ) != NULL ||             strstr( item->name, ".PFA" ) != NULL )          item->ishex = true;        else          item->isascii = true;      }      else if ( ch1 == 1 && ch2 == 0 && ch3 == 4 )      {        /* Bare CFF */        item->isbinary = true;      }      else if ( ch1 == 'S' && ch2 == 'T' && ch3 == 'A' && ch4 == 'R' )      {        /* BDF */        item->ishex = true;      }      else if ( ch1 == 'P' && ch2 == 'F' && ch3 == 'R' && ch4 == '0' )      {        /* PFR */        item->isbinary = true;      }      else if ( ( ch1 == '\1' && ch2 == 'f' && ch3 == 'c' && ch4 == 'p' ) ||                ( ch1 == 'M'  && ch2 == 'Z' )                             )      {        /* Windows FON */        item->isbinary = true;      }      else      {        fprintf( stderr,                 "Can't recognize file type of `%s', assuming binary\n",                 item->name );        item->isbinary = true;      }    }    else    {      fprintf( stderr, "Can't open `%s' for typing the file.\n",               item->name );      item->isbinary = true;    }  }  static void  FindFonts( char**  fontdirs,             char**  extensions )  {    DIR*            examples;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -