亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pfrobjs.c

?? 智能設備中PDF閱讀器的源碼!用于windows mobile2003或者WM5以上
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************/
/*                                                                         */
/*  pfrobjs.c                                                              */
/*                                                                         */
/*    FreeType PFR object methods (body).                                  */
/*                                                                         */
/*  Copyright 2002, 2003, 2004, 2005, 2006 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 "pfrobjs.h"
#include "pfrload.h"
#include "pfrgload.h"
#include "pfrcmap.h"
#include "pfrsbit.h"
#include FT_OUTLINE_H
#include FT_INTERNAL_DEBUG_H

#include "pfrerror.h"

#undef  FT_COMPONENT
#define FT_COMPONENT  trace_pfr


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                     FACE OBJECT METHODS                       *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL_DEF( void )
  pfr_face_done( FT_Face  pfrface )     /* PFR_Face */
  {
    PFR_Face   face   = (PFR_Face)pfrface;
    FT_Memory  memory = pfrface->driver->root.memory;


    /* we don't want dangling pointers */
    pfrface->family_name = NULL;
    pfrface->style_name  = NULL;

    /* finalize the physical font record */
    pfr_phy_font_done( &face->phy_font, FT_FACE_MEMORY( face ) );

    /* no need to finalize the logical font or the header */
    FT_FREE( pfrface->available_sizes );
  }


  FT_LOCAL_DEF( FT_Error )
  pfr_face_init( FT_Stream      stream,
                 FT_Face        pfrface,
                 FT_Int         face_index,
                 FT_Int         num_params,
                 FT_Parameter*  params )
  {
    PFR_Face  face = (PFR_Face)pfrface;
    FT_Error  error;

    FT_UNUSED( num_params );
    FT_UNUSED( params );


    /* load the header and check it */
    error = pfr_header_load( &face->header, stream );
    if ( error )
      goto Exit;

    if ( !pfr_header_check( &face->header ) )
    {
      FT_TRACE4(( "pfr_face_init: not a valid PFR font\n" ));
      error = PFR_Err_Unknown_File_Format;
      goto Exit;
    }

    /* check face index */
    {
      FT_UInt  num_faces;


      error = pfr_log_font_count( stream,
                                  face->header.log_dir_offset,
                                  &num_faces );
      if ( error )
        goto Exit;

      pfrface->num_faces = num_faces;
    }

    if ( face_index < 0 )
      goto Exit;

    if ( face_index >= pfrface->num_faces )
    {
      FT_ERROR(( "pfr_face_init: invalid face index\n" ));
      error = PFR_Err_Invalid_Argument;
      goto Exit;
    }

    /* load the face */
    error = pfr_log_font_load(
               &face->log_font, stream, face_index,
               face->header.log_dir_offset,
               FT_BOOL( face->header.phy_font_max_size_high != 0 ) );
    if ( error )
      goto Exit;

    /* now load the physical font descriptor */
    error = pfr_phy_font_load( &face->phy_font, stream,
                               face->log_font.phys_offset,
                               face->log_font.phys_size );
    if ( error )
      goto Exit;

    /* now, set-up all root face fields */
    {
      PFR_PhyFont  phy_font = &face->phy_font;


      pfrface->face_index = face_index;
      pfrface->num_glyphs = phy_font->num_chars;
      pfrface->face_flags = FT_FACE_FLAG_SCALABLE;

      if ( (phy_font->flags & PFR_PHY_PROPORTIONAL) == 0 )
        pfrface->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;

      if ( phy_font->flags & PFR_PHY_VERTICAL )
        pfrface->face_flags |= FT_FACE_FLAG_VERTICAL;
      else
        pfrface->face_flags |= FT_FACE_FLAG_HORIZONTAL;

      if ( phy_font->num_strikes > 0 )
        pfrface->face_flags |= FT_FACE_FLAG_FIXED_SIZES;

      if ( phy_font->num_kern_pairs > 0 )
        pfrface->face_flags |= FT_FACE_FLAG_KERNING;

      /* If no family name was found in the "undocumented" auxiliary
       * data, use the font ID instead.  This sucks but is better than
       * nothing.
       */
      pfrface->family_name = phy_font->family_name;
      if ( pfrface->family_name == NULL )
        pfrface->family_name = phy_font->font_id;

      /* note that the style name can be NULL in certain PFR fonts,
       * probably meaning "Regular"
       */
      pfrface->style_name = phy_font->style_name;

      pfrface->num_fixed_sizes = 0;
      pfrface->available_sizes = 0;

      pfrface->bbox         = phy_font->bbox;
      pfrface->units_per_EM = (FT_UShort)phy_font->outline_resolution;
      pfrface->ascender     = (FT_Short) phy_font->bbox.yMax;
      pfrface->descender    = (FT_Short) phy_font->bbox.yMin;

      pfrface->height = (FT_Short)( ( pfrface->units_per_EM * 12 ) / 10 );
      if ( pfrface->height < pfrface->ascender - pfrface->descender )
        pfrface->height = (FT_Short)(pfrface->ascender - pfrface->descender);

      if ( phy_font->num_strikes > 0 )
      {
        FT_UInt          n, count = phy_font->num_strikes;
        FT_Bitmap_Size*  size;
        PFR_Strike       strike;
        FT_Memory        memory = pfrface->stream->memory;


        if ( FT_NEW_ARRAY( pfrface->available_sizes, count ) )
          goto Exit;

        size   = pfrface->available_sizes;
        strike = phy_font->strikes;
        for ( n = 0; n < count; n++, size++, strike++ )
        {
          size->height = (FT_UShort)strike->y_ppm;
          size->width  = (FT_UShort)strike->x_ppm;
          size->size   = strike->y_ppm << 6;
          size->x_ppem = strike->x_ppm << 6;
          size->y_ppem = strike->y_ppm << 6;
        }
        pfrface->num_fixed_sizes = count;
      }

      /* now compute maximum advance width */
      if ( ( phy_font->flags & PFR_PHY_PROPORTIONAL ) == 0 )
        pfrface->max_advance_width = (FT_Short)phy_font->standard_advance;
      else
      {
        FT_Int    max = 0;
        FT_UInt   count = phy_font->num_chars;
        PFR_Char  gchar = phy_font->chars;


        for ( ; count > 0; count--, gchar++ )
        {
          if ( max < gchar->advance )
            max = gchar->advance;
        }

        pfrface->max_advance_width = (FT_Short)max;
      }

      pfrface->max_advance_height = pfrface->height;

      pfrface->underline_position  = (FT_Short)( -pfrface->units_per_EM / 10 );
      pfrface->underline_thickness = (FT_Short)(  pfrface->units_per_EM / 30 );

      /* create charmap */
      {
        FT_CharMapRec  charmap;


        charmap.face        = pfrface;
        charmap.platform_id = 3;
        charmap.encoding_id = 1;
        charmap.encoding    = FT_ENCODING_UNICODE;

        FT_CMap_New( &pfr_cmap_class_rec, NULL, &charmap, NULL );

#if 0
        /* Select default charmap */
        if ( pfrface->num_charmaps )
          pfrface->charmap = pfrface->charmaps[0];
#endif
      }

      /* check whether we've loaded any kerning pairs */
      if ( phy_font->num_kern_pairs )
        pfrface->face_flags |= FT_FACE_FLAG_KERNING;
    }

  Exit:
    return error;
  }


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                    SLOT OBJECT METHOD                         *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL_DEF( FT_Error )
  pfr_slot_init( FT_GlyphSlot  pfrslot )        /* PFR_Slot */
  {
    PFR_Slot        slot   = (PFR_Slot)pfrslot;
    FT_GlyphLoader  loader = pfrslot->internal->loader;


    pfr_glyph_init( &slot->glyph, loader );

    return 0;
  }


  FT_LOCAL_DEF( void )
  pfr_slot_done( FT_GlyphSlot  pfrslot )        /* PFR_Slot */
  {
    PFR_Slot  slot = (PFR_Slot)pfrslot;


    pfr_glyph_done( &slot->glyph );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色在线| 日韩精品高清不卡| 青青草97国产精品免费观看| 国产在线观看免费一区| 在线观看视频一区二区欧美日韩| 久久久久久亚洲综合影院红桃| 亚洲第一会所有码转帖| 成人白浆超碰人人人人| 欧美高清性hdvideosex| 亚洲免费观看高清完整版在线 | 久草中文综合在线| 51精品久久久久久久蜜臀| 秋霞午夜鲁丝一区二区老狼| 国产精品天天看| 成人午夜电影久久影院| 亚洲综合在线五月| 国产精品久久久久久户外露出| 中文字幕亚洲精品在线观看| 精品国产电影一区二区| 天涯成人国产亚洲精品一区av| 成人动漫一区二区在线| 久久香蕉国产线看观看99| 婷婷丁香激情综合| 欧洲日韩一区二区三区| 亚洲日本韩国一区| 色婷婷综合视频在线观看| 国产精品区一区二区三| 国产成人av网站| 国产日韩欧美a| 韩国理伦片一区二区三区在线播放| 91精品国产综合久久久久久久久久 | 亚洲色图一区二区| 成人高清视频在线观看| 中文av一区二区| 波多野洁衣一区| 国产精品不卡一区| 色激情天天射综合网| 亚洲一区二区三区在线看| 欧美亚洲另类激情小说| 亚洲一二三四在线观看| 欧美日韩激情一区二区三区| 亚洲成av人影院| 69p69国产精品| 精品一区二区三区日韩| 国产区在线观看成人精品| av不卡在线播放| 一区二区三区日本| 欧美一卡2卡3卡4卡| 国产一区二区不卡老阿姨| 久久久五月婷婷| 99在线精品视频| 亚洲一区二区三区四区中文字幕| 91精品啪在线观看国产60岁| 狠狠网亚洲精品| 亚洲成人综合在线| 又紧又大又爽精品一区二区| 色婷婷综合在线| 日韩欧美美女一区二区三区| 亚洲丝袜精品丝袜在线| 香蕉加勒比综合久久| 日本伊人色综合网| 91在线无精精品入口| 在线观看精品一区| 欧美国产成人精品| 久久爱另类一区二区小说| 欧美国产97人人爽人人喊| 一区二区三区四区激情| 日韩欧美一区二区视频| 国产**成人网毛片九色| 亚洲午夜在线视频| 精品国产乱码久久久久久蜜臀| va亚洲va日韩不卡在线观看| 日韩成人av影视| 国产精品色哟哟| 欧美一区二区三区四区久久| 大陆成人av片| 久久国内精品视频| 一区二区免费在线播放| 久久亚区不卡日本| 欧美人妇做爰xxxⅹ性高电影| 国产丶欧美丶日本不卡视频| 亚洲一区二区不卡免费| 国产日韩精品一区二区三区在线| 欧美吻胸吃奶大尺度电影| 粉嫩高潮美女一区二区三区 | 国产精品一区二区三区网站| 亚洲欧美日韩国产综合在线| 久久在线观看免费| 正在播放一区二区| 91美女片黄在线观看| 国产福利一区二区三区视频在线 | 国产成人8x视频一区二区| 日韩在线一二三区| 亚洲精品中文字幕乱码三区| 国产亚洲成aⅴ人片在线观看| 91精品国产免费| 欧美四级电影在线观看| 色哟哟欧美精品| 972aa.com艺术欧美| 国产激情视频一区二区在线观看| 乱一区二区av| 免费成人性网站| 免费久久精品视频| 日韩精品电影一区亚洲| 亚洲福利电影网| 亚洲va韩国va欧美va| 亚洲一区二区中文在线| 日韩黄色一级片| 亚洲在线成人精品| 福利91精品一区二区三区| 国产精品国产a| 精品国产亚洲在线| 欧美日韩在线播放三区四区| 蜜臀精品一区二区三区在线观看| 久久一区二区三区国产精品| av网站免费线看精品| 久久91精品国产91久久小草 | 欧美日韩一级片在线观看| 精品亚洲成a人| 日韩av一级电影| 日韩成人精品在线观看| 免费高清在线视频一区·| 日本不卡在线视频| 九九精品视频在线看| 国模无码大尺度一区二区三区| 日韩1区2区3区| 韩国女主播一区| 高清不卡在线观看| 91蝌蚪porny| 欧美日韩在线播| 日韩精品一区二区三区视频在线观看 | 性欧美疯狂xxxxbbbb| 婷婷丁香久久五月婷婷| 久久er99精品| 国产99一区视频免费 | 国产一区二区三区精品欧美日韩一区二区三区 | 不卡的av电影| 欧美日韩日日夜夜| 日韩一二在线观看| 欧美国产亚洲另类动漫| 一区二区在线免费观看| 亚洲风情在线资源站| 国产综合色在线| 一本色道久久综合精品竹菊| 欧美精品久久久久久久久老牛影院| 精品国产免费视频| 最新不卡av在线| 日韩精品国产欧美| www.亚洲人| 欧美一区二区三区免费大片| 久久久久久**毛片大全| 亚洲综合一区在线| 奇米精品一区二区三区在线观看一| 国产精品一二三| 91精彩视频在线| 欧美—级在线免费片| 午夜激情一区二区三区| 国产成人亚洲综合a∨婷婷图片 | 成人黄色网址在线观看| 91精品蜜臀在线一区尤物| 国产欧美一区二区三区沐欲| 亚洲sss视频在线视频| 国产成人av资源| 日韩一区二区视频| 亚洲欧美日韩一区| 国精产品一区一区三区mba视频| 在线免费观看日本欧美| 国产欧美日韩不卡免费| 日本一不卡视频| 91福利在线导航| 中文字幕制服丝袜一区二区三区 | 亚洲成人在线免费| 91免费国产在线| 久久久噜噜噜久噜久久综合| 亚洲国产精品久久一线不卡| 99re这里只有精品首页| 精品国产乱码久久久久久1区2区| 午夜日韩在线电影| 91福利精品视频| ...av二区三区久久精品| 国产精品一二三四| 日韩欧美综合在线| 日韩中文欧美在线| 欧美丝袜丝nylons| 亚洲综合免费观看高清完整版 | 国产成人午夜电影网| 欧美一区二区三区免费| 亚洲第四色夜色| 欧美色图天堂网| 亚洲欧洲日本在线| aaa亚洲精品| **性色生活片久久毛片| 成人国产免费视频| 国产精品色哟哟网站| 国产精品一区二区三区99| 精品国产露脸精彩对白| 极品美女销魂一区二区三区 | 国产呦萝稀缺另类资源| 亚洲精品在线免费观看视频| 久草中文综合在线|