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

📄 t1driver.c

📁 Qt/Embedded是一个多平台的C++图形用户界面应用程序框架
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************* * *  t1driver.c * *    High-level Type1 driver interface for FreeType 2.0 * *  Copyright 1996-1998 by *  David Turner, Robert Wilhelm, and Werner Lemberg. * *  This file is part of the FreeType project, and may only be used, *  modified, and distributed under the terms of the FreeType project *  license, LICENSE.TXT.  By continuing to use, modify, or distribute  *  this file you indicate that you have read the license and *  understand and accept it fully. * ******************************************************************/#include <t1driver.h>#include <t1gload.h>#include <t1afm.h>#include <ftdebug.h>#include <ftstream.h>#include <psnames.h>#undef  FT_COMPONENT#define FT_COMPONENT  trace_t1driver#ifndef T1_CONFIG_OPTION_NO_AFM  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    Get_Interface                                                      */  /*                                                                       */  /* <Description>                                                         */  /*    Each driver can provide one or more extensions to the base         */  /*    FreeType API.  These can be used to access format specific         */  /*    features (e.g., all TrueType/OpenType resources share a common     */  /*    file structure and common tables which can be accessed through the */  /*    `sfnt' interface), or more simply generic ones (e.g., the          */  /*    `postscript names' interface which can be used to retrieve the     */  /*     PostScript name of a given glyph index).                          */  /*                                                                       */  /* <InOut>                                                               */  /*    driver    :: A handle to a driver object.                          */  /*                                                                       */  /* <Input>                                                               */  /*    interface :: A string designing the interface.  Examples are       */  /*                 `sfnt', `post_names', `charmaps', etc.                */  /*                                                                       */  /* <Return>                                                              */  /*    A typeless pointer to the extension's interface (normally a table  */  /*    of function pointers).  Returns NULL if the requested extension    */  /*    isn't available (i.e., wasn't compiled in the driver at build      */  /*    time).                                                             */  /*                                                                       */  static  FTDriver_Interface  Get_Interface( FT_Driver         driver,                                     const FT_String*  interface )  {    if ( strcmp( (const char*)interface, "attach_file" ) == 0 )      return (FTDriver_Interface)T1_Read_AFM;          return 0;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    Get_Kerning                                                        */  /*                                                                       */  /* <Description>                                                         */  /*    A driver method used to return the kerning vector between two      */  /*    glyphs of the same face.                                           */  /*                                                                       */  /* <Input>                                                               */  /*    face        :: A handle to the source face object.                 */  /*                                                                       */  /*    left_glyph  :: The index of the left glyph in the kern pair.       */  /*                                                                       */  /*    right_glyph :: The index of the right glyph in the kern pair.      */  /*                                                                       */  /* <Output>                                                              */  /*    kerning     :: The kerning vector.  This is in font units for      */  /*                   scalable formats, and in pixels for fixed-sizes     */  /*                   formats.                                            */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  /* <Note>                                                                */  /*    Only horizontal layouts (left-to-right & right-to-left) are        */  /*    supported by this function.  Other layouts, or more sophisticated  */  /*    kernings are out of scope of this method (the basic driver         */  /*    interface is meant to be simple).                                  */  /*                                                                       */  /*    They can be implemented by format-specific interfaces.             */  /*                                                                       */  static  T1_Error  Get_Kerning( T1_Face     face,                         T1_UInt     left_glyph,                         T1_UInt     right_glyph,                         T1_Vector*  kerning )  {    T1_AFM*  afm;        kerning->x = 0;    kerning->y = 0;    afm = (T1_AFM*)face->afm_data;    if (afm)      T1_Get_Kerning( afm, left_glyph, right_glyph, kerning );    return T1_Err_Ok;  }#endif  /******************************************************************/  /*                                                                */  /* <Function> Set_Char_Sizes                                      */  /*                                                                */  /* <Description>                                                  */  /*    A driver method used to reset a size's character sizes      */  /*    (horizontal and vertical) expressed in fractional points.   */  /*                                                                */  /* <Input>                                                        */  /*    size        :: handle to target size object                 */  /*    char_width  :: character width expressed in 26.6 points     */  /*    char_height :: character height expressed in 26.6 points    */  /*                                                                */  /* <Return>                                                       */  /*    FreeType error code. 0 means success                        */  /*                                                                */  static  T1_Error  Set_Char_Sizes( T1_Size      size,                            T1_F26Dot6   char_width,                            T1_F26Dot6   char_height,                            T1_UInt      horz_resolution,                            T1_UInt      vert_resolution )  {    UNUSED(char_width);    UNUSED(horz_resolution);    UNUSED(vert_resolution);    size->valid = FALSE;    return T1_Reset_Size( size );  }  /******************************************************************/  /*                                                                */  /* <Function> Set_Pixel_Sizes                                     */  /*                                                                */  /* <Description>                                                  */  /*    A driver method used to reset a size's character sizes      */  /*    (horizontal and vertical) expressed in integer pixels.      */  /*                                                                */  /* <Input>                                                        */  /*    size         :: handle to target size object                */  /*                                                                */  /*    pixel_width  :: character width expressed in 26.6 points    */  /*                                                                */  /*    pixel_height :: character height expressed in 26.6 points   */  /*                                                                */  /*    char_size    :: the corresponding character size in points  */  /*                    This value is only sent to the TrueType     */  /*                    bytecode interpreter, even though 99% of    */  /*                    glyph programs will simply ignore it. A     */  /*                    safe value there is the maximum of the      */  /*                    pixel width and height (multiplied by       */  /*                    64 to make it a 26.6 fixed float !)         */  /* <Return>                                                       */  /*    FreeType error code. 0 means success                        */  /*                                                                */  static  T1_Error  Set_Pixel_Sizes( T1_Size     size,                             T1_Int      pixel_width,                             T1_Int      pixel_height )  {    UNUSED(pixel_width);    UNUSED(pixel_height);    size->valid = FALSE;     return T1_Reset_Size(size);  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    Get_Char_Index                                                     */  /*                                                                       */  /* <Description>                                                         */  /*    Uses a charmap to return a given character code's glyph index.     */  /*                                                                       */  /* <Input>                                                               */  /*    charmap  :: A handle to the source charmap object.                 */  /*    charcode :: The character code.                                    */  /*                                                                       */  /* <Return>                                                              */  /*    Glyph index.  0 means `undefined character code'.                  */  /*                                                                       */  static  T1_UInt  Get_Char_Index( FT_CharMap  charmap,                           T1_Long     charcode )  {    T1_Face             face;    T1_UInt             result = 0;    PSNames_Interface*  psnames;    face = (T1_Face)charmap->face;    psnames = (PSNames_Interface*)face->psnames;    if (psnames)          switch (charmap->encoding)      {       /********************************************************************/       /*                                                                  */       /* Unicode encoding support                                         */       /*                                                                  */        case ft_encoding_unicode:          {            /* use the "psnames" module to synthetize the Unicode charmap */            result = psnames->lookup_unicode( &face->unicode_map,                                              (T1_ULong)charcode );            /* the function returns 0xFFFF when the Unicode charcode has */            /* no corresponding glyph..                                  */            if (result == 0xFFFF)              result = 0;            goto Exit;          }         /********************************************************************/       /*                                                                  */       /* Custom Type 1 encoding                                           */       /*                                                                  */        case ft_encoding_adobe_custom:          {            T1_Encoding*  encoding = &face->type1.encoding;            if (charcode >= encoding->code_first &&                charcode <= encoding->code_last)            {              result = encoding->char_index[charcode];            }            goto Exit;          }                 /********************************************************************/       /*                                                                  */       /* Adobe Standard & Expert encoding support                         */       /*                                                                  */       default:

⌨️ 快捷键说明

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