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

📄 gxvmort4.c

📁 奇趣公司比较新的qt/emd版本
💻 C
字号:
/***************************************************************************//*                                                                         *//*  gxvmort4.c                                                             *//*                                                                         *//*    TrueTypeGX/AAT mort table validation                                 *//*    body for type4 (Non-Contextual Glyph Substitution) subtable.         *//*                                                                         *//*  Copyright 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K.,       *//*  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.                                        *//*                                                                         *//***************************************************************************//***************************************************************************//*                                                                         *//* gxvalid is derived from both gxlayout module and otvalid module.        *//* Development of gxlayout is supported by the Information-technology      *//* Promotion Agency(IPA), Japan.                                           *//*                                                                         *//***************************************************************************/#include "gxvmort.h"  /*************************************************************************/  /*                                                                       */  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */  /* messages during execution.                                            */  /*                                                                       */#undef  FT_COMPONENT#define FT_COMPONENT  trace_gxvmort  static void  gxv_mort_subtable_type4_lookupval_validate( FT_UShort            glyph,                                              GXV_LookupValueDesc  value,                                              GXV_Validator        valid )  {    FT_UNUSED( glyph );    gxv_glyphid_validate( value.u, valid );  }  /*    +===============+ --------+    | lookup header |         |    +===============+         |    | BinSrchHeader |         |    +===============+         |    | lastGlyph[0]  |         |    +---------------+         |    | firstGlyph[0] |         |    head of lookup table    +---------------+         |             +    | offset[0]     |    ->   |          offset            [byte]    +===============+         |             +    | lastGlyph[1]  |         | (glyphID - firstGlyph) * 2 [byte]    +---------------+         |    | firstGlyph[1] |         |    +---------------+         |    | offset[1]     |         |    +===============+         |                              |     ....                     |                              |    16bit value array         |    +===============+         |    |     value     | <-------+     ....  */  static GXV_LookupValueDesc  gxv_mort_subtable_type4_lookupfmt4_transit(    FT_UShort            relative_gindex,    GXV_LookupValueDesc  base_value,    FT_Bytes             lookuptbl_limit,    GXV_Validator        valid )  {    FT_Bytes             p;    FT_Bytes             limit;    FT_UShort            offset;    GXV_LookupValueDesc  value;    /* XXX: check range? */    offset = (FT_UShort)( base_value.u +                          relative_gindex * sizeof ( FT_UShort ) );    p     = valid->lookuptbl_head + offset;    limit = lookuptbl_limit;    GXV_LIMIT_CHECK( 2 );    value.u = FT_NEXT_USHORT( p );    return value;  }  FT_LOCAL_DEF( void )  gxv_mort_subtable_type4_validate( FT_Bytes       table,                                    FT_Bytes       limit,                                    GXV_Validator  valid )  {    FT_Bytes  p = table;    GXV_NAME_ENTER( "mort chain subtable type4 "                    "(Non-Contextual Glyph Substitution)" );    valid->lookupval_sign   = GXV_LOOKUPVALUE_UNSIGNED;    valid->lookupval_func   = gxv_mort_subtable_type4_lookupval_validate;    valid->lookupfmt4_trans = gxv_mort_subtable_type4_lookupfmt4_transit;    gxv_LookupTable_validate( p, limit, valid );    GXV_EXIT;  }/* END */

⌨️ 快捷键说明

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