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

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

?? pcfdrivr.c

?? 智能設備中PDF閱讀器的源碼!用于windows mobile2003或者WM5以上
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*  pcfdrivr.c

    FreeType font driver for pcf files

    Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 by
    Francesco Zappa Nardelli

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/


#include <ft2build.h>

#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_INTERNAL_OBJECTS_H
#include FT_GZIP_H
#include FT_LZW_H
#include FT_ERRORS_H
#include FT_BDF_H

#include "pcf.h"
#include "pcfdrivr.h"
#include "pcfread.h"

#include "pcferror.h"
#include "pcfutil.h"

#undef  FT_COMPONENT
#define FT_COMPONENT  trace_pcfread

#include FT_SERVICE_BDF_H
#include FT_SERVICE_XFREE86_NAME_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_pcfdriver


  typedef struct  PCF_CMapRec_
  {
    FT_CMapRec    root;
    FT_UInt       num_encodings;
    PCF_Encoding  encodings;

  } PCF_CMapRec, *PCF_CMap;


  FT_CALLBACK_DEF( FT_Error )
  pcf_cmap_init( FT_CMap     pcfcmap,   /* PCF_CMap */
                 FT_Pointer  init_data )
  {
    PCF_CMap  cmap = (PCF_CMap)pcfcmap;
    PCF_Face  face = (PCF_Face)FT_CMAP_FACE( pcfcmap );

    FT_UNUSED( init_data );


    cmap->num_encodings = (FT_UInt)face->nencodings;
    cmap->encodings     = face->encodings;

    return PCF_Err_Ok;
  }


  FT_CALLBACK_DEF( void )
  pcf_cmap_done( FT_CMap  pcfcmap )         /* PCF_CMap */
  {
    PCF_CMap  cmap = (PCF_CMap)pcfcmap;


    cmap->encodings     = NULL;
    cmap->num_encodings = 0;
  }


  FT_CALLBACK_DEF( FT_UInt )
  pcf_cmap_char_index( FT_CMap    pcfcmap,  /* PCF_CMap */
                       FT_UInt32  charcode )
  {
    PCF_CMap      cmap      = (PCF_CMap)pcfcmap;
    PCF_Encoding  encodings = cmap->encodings;
    FT_UInt       min, max, mid;
    FT_UInt       result    = 0;


    min = 0;
    max = cmap->num_encodings;

    while ( min < max )
    {
      FT_UInt32  code;


      mid  = ( min + max ) >> 1;
      code = encodings[mid].enc;

      if ( charcode == code )
      {
        result = encodings[mid].glyph + 1;
        break;
      }

      if ( charcode < code )
        max = mid;
      else
        min = mid + 1;
    }

    return result;
  }


  FT_CALLBACK_DEF( FT_UInt )
  pcf_cmap_char_next( FT_CMap    pcfcmap,   /* PCF_CMap */
                      FT_UInt32  *acharcode )
  {
    PCF_CMap      cmap      = (PCF_CMap)pcfcmap;
    PCF_Encoding  encodings = cmap->encodings;
    FT_UInt       min, max, mid;
    FT_UInt32     charcode  = *acharcode + 1;
    FT_UInt       result    = 0;


    min = 0;
    max = cmap->num_encodings;

    while ( min < max )
    {
      FT_UInt32  code;


      mid  = ( min + max ) >> 1;
      code = encodings[mid].enc;

      if ( charcode == code )
      {
        result = encodings[mid].glyph + 1;
        goto Exit;
      }

      if ( charcode < code )
        max = mid;
      else
        min = mid + 1;
    }

    charcode = 0;
    if ( min < cmap->num_encodings )
    {
      charcode = encodings[min].enc;
      result   = encodings[min].glyph + 1;
    }

  Exit:
    *acharcode = charcode;
    return result;
  }


  FT_CALLBACK_TABLE_DEF
  const FT_CMap_ClassRec  pcf_cmap_class =
  {
    sizeof ( PCF_CMapRec ),
    pcf_cmap_init,
    pcf_cmap_done,
    pcf_cmap_char_index,
    pcf_cmap_char_next
  };


  FT_CALLBACK_DEF( void )
  PCF_Face_Done( FT_Face  pcfface )         /* PCF_Face */
  {
    PCF_Face   face   = (PCF_Face)pcfface;
    FT_Memory  memory = FT_FACE_MEMORY( face );


    FT_FREE( face->encodings );
    FT_FREE( face->metrics );

    /* free properties */
    {
      PCF_Property  prop = face->properties;
      FT_Int        i;


      for ( i = 0; i < face->nprops; i++ )
      {
        prop = &face->properties[i];

        FT_FREE( prop->name );
        if ( prop->isString )
          FT_FREE( prop->value.atom );
      }

      FT_FREE( face->properties );
    }

    FT_FREE( face->toc.tables );
    FT_FREE( pcfface->family_name );
    FT_FREE( pcfface->style_name );
    FT_FREE( pcfface->available_sizes );
    FT_FREE( face->charset_encoding );
    FT_FREE( face->charset_registry );

    FT_TRACE4(( "PCF_Face_Done: done face\n" ));

    /* close gzip/LZW stream if any */
    if ( pcfface->stream == &face->gzip_stream )
    {
      FT_Stream_Close( &face->gzip_stream );
      pcfface->stream = face->gzip_source;
    }
  }


  FT_CALLBACK_DEF( FT_Error )
  PCF_Face_Init( FT_Stream      stream,
                 FT_Face        pcfface,        /* PCF_Face */
                 FT_Int         face_index,
                 FT_Int         num_params,
                 FT_Parameter*  params )
  {
    PCF_Face  face  = (PCF_Face)pcfface;
    FT_Error  error = PCF_Err_Ok;

    FT_UNUSED( num_params );
    FT_UNUSED( params );
    FT_UNUSED( face_index );


    error = pcf_load_font( stream, face );
    if ( error )
    {
      FT_Error  error2;


      /* this didn't work, try gzip support! */
      error2 = FT_Stream_OpenGzip( &face->gzip_stream, stream );
      if ( FT_ERROR_BASE( error2 ) == FT_Err_Unimplemented_Feature )
        goto Fail;

      error = error2;
      if ( error )
      {
        FT_Error  error3;


        /* this didn't work, try LZW support! */
        error3 = FT_Stream_OpenLZW( &face->gzip_stream, stream );
        if ( FT_ERROR_BASE( error3 ) == FT_Err_Unimplemented_Feature )
          goto Fail;

        error = error3;
        if ( error )
          goto Fail;

        face->gzip_source = stream;
        pcfface->stream   = &face->gzip_stream;

        stream = pcfface->stream;

        error = pcf_load_font( stream, face );
        if ( error )
          goto Fail;
      }
      else
      {
        face->gzip_source = stream;
        pcfface->stream   = &face->gzip_stream;

        stream = pcfface->stream;

        error = pcf_load_font( stream, face );
        if ( error )
          goto Fail;
      }
    }

    /* set up charmap */
    {
      FT_String  *charset_registry = face->charset_registry;
      FT_String  *charset_encoding = face->charset_encoding;
      FT_Bool     unicode_charmap  = 0;


      if ( charset_registry && charset_encoding )
      {
        char*  s = charset_registry;


        /* Uh, oh, compare first letters manually to avoid dependency
           on locales. */
        if ( ( s[0] == 'i' || s[0] == 'I' ) &&
             ( s[1] == 's' || s[1] == 'S' ) &&
             ( s[2] == 'o' || s[2] == 'O' ) )
        {
          s += 3;
          if ( !ft_strcmp( s, "10646" )                      ||
               ( !ft_strcmp( s, "8859" ) &&
                 !ft_strcmp( face->charset_encoding, "1" ) ) )
          unicode_charmap = 1;
        }
      }

      {
        FT_CharMapRec  charmap;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩色在线观看| 国产精品亚洲成人| 国产福利91精品| 欧美偷拍一区二区| 亚洲欧美日韩国产中文在线| 免费三级欧美电影| 欧美网站大全在线观看| 中文字幕中文字幕在线一区| 日韩国产精品久久| 色综合久久天天综合网| 国产视频一区二区三区在线观看 | 欧美色图12p| 国产精品久久夜| 国产一区二区中文字幕| 51精品视频一区二区三区| 亚洲码国产岛国毛片在线| 成人免费毛片app| 精品嫩草影院久久| 美女爽到高潮91| 欧美一区二区视频网站| 亚洲成人免费影院| 欧美日韩国产乱码电影| 亚洲欧美成人一区二区三区| 波多野结衣在线一区| 久久久精品免费观看| 国内精品嫩模私拍在线| 精品少妇一区二区三区| 美日韩黄色大片| 日韩一区二区三区四区五区六区| 亚洲成人动漫在线免费观看| 欧美日韩精品一区二区| 一区二区高清在线| 91久久人澡人人添人人爽欧美| 亚洲色图在线视频| 色成人在线视频| 亚洲成av人片一区二区三区| 欧美日韩精品综合在线| 日日夜夜一区二区| 欧美一区二区三区免费大片| 日本sm残虐另类| 国产亚洲欧美色| 成人性生交大合| 亚洲乱码国产乱码精品精98午夜| 91色porny蝌蚪| 午夜激情一区二区| 欧美α欧美αv大片| 精品一区二区三区久久| 久久久精品日韩欧美| av一本久道久久综合久久鬼色| 中文字幕在线不卡国产视频| 色狠狠色噜噜噜综合网| 日韩av在线发布| 久久精品视频在线免费观看| 成人v精品蜜桃久久一区| 一区二区在线免费| 91精品国产高清一区二区三区蜜臀| 捆绑变态av一区二区三区| 国产日韩欧美精品一区| 91免费国产在线| 日韩av网站在线观看| 国产色爱av资源综合区| 在线观看91视频| 精品一区二区免费在线观看| 国产精品看片你懂得| 7777精品久久久大香线蕉| 国产在线精品一区二区三区不卡| 秋霞成人午夜伦在线观看| 久久久国产精品麻豆| jlzzjlzz亚洲日本少妇| 五月激情综合婷婷| 国产精品色哟哟网站| 欧美天堂亚洲电影院在线播放| 免费精品视频最新在线| 亚洲视频1区2区| 久久久影视传媒| 欧美影视一区二区三区| 国产aⅴ综合色| 日韩激情中文字幕| 日韩久久一区二区| 国产亚洲污的网站| 9191久久久久久久久久久| 99久久精品情趣| 激情欧美一区二区三区在线观看| 亚洲欧美日韩中文字幕一区二区三区| 欧美一级欧美一级在线播放| 91小视频免费看| 国产成都精品91一区二区三| 老司机精品视频在线| 亚洲国产wwwccc36天堂| 中文字幕一区二区三| 欧美精品一区二区三区蜜桃| 欧美性感一区二区三区| 99re这里都是精品| 成人性生交大片免费看中文| 激情国产一区二区| 秋霞午夜av一区二区三区 | 国产女同互慰高潮91漫画| 51精品国自产在线| 欧美特级限制片免费在线观看| 成人毛片视频在线观看| 国产成人久久精品77777最新版本| 日本欧美在线看| 日韩精品电影在线| 亚洲h动漫在线| 亚洲大型综合色站| 性感美女久久精品| 亚洲国产视频在线| 亚洲成人中文在线| 亚洲成人在线网站| 亚洲地区一二三色| 亚洲大片免费看| 天堂影院一区二区| 视频精品一区二区| 日本午夜精品一区二区三区电影 | 欧美日韩精品欧美日韩精品 | www.亚洲免费av| 成人av电影在线观看| 大白屁股一区二区视频| 国产成人av一区二区三区在线观看| 国产在线不卡视频| 国产不卡高清在线观看视频| 成人一区二区在线观看| 不卡视频在线看| 色系网站成人免费| 欧美色图一区二区三区| 欧美性猛片aaaaaaa做受| 91精品国产品国语在线不卡 | 欧美另类高清zo欧美| 91精品国产高清一区二区三区蜜臀 | 7777精品伊人久久久大香线蕉经典版下载 | 7777精品伊人久久久大香线蕉经典版下载 | 国产夜色精品一区二区av| 国产精品伦一区二区三级视频| 中文字幕av一区二区三区| 中文字幕一区二区视频| 亚洲成人资源网| 国产高清在线观看免费不卡| 91麻豆免费看片| 欧美一区日韩一区| 中文天堂在线一区| 天堂蜜桃一区二区三区| 国产乱国产乱300精品| 91影院在线免费观看| 欧美日韩国产一级二级| 久久久不卡网国产精品二区| 亚洲精品视频观看| 麻豆免费看一区二区三区| 成人美女在线观看| 欧美日韩精品一二三区| www国产精品av| 亚洲综合在线五月| 激情图区综合网| 欧美性xxxxx极品少妇| 26uuu久久综合| 亚洲午夜久久久久中文字幕久| 久久电影国产免费久久电影| 91一区二区在线| 久久精品欧美日韩精品| 亚洲成人777| av在线一区二区三区| 欧美一级日韩不卡播放免费| 亚洲人成精品久久久久久| 国内不卡的二区三区中文字幕 | 不卡的av在线| 精品成人佐山爱一区二区| 亚洲精品亚洲人成人网| 国产乱妇无码大片在线观看| 91精品国产综合久久香蕉的特点 | 久久综合色一综合色88| 五月开心婷婷久久| 91香蕉视频污| 国产精品欧美久久久久一区二区| 麻豆91精品视频| 欧美色电影在线| 亚洲欧美日韩国产综合在线| 国产高清精品在线| 欧美精品一区二区三区高清aⅴ| 亚洲国产精品久久艾草纯爱| 99精品欧美一区二区三区综合在线| 久久亚洲影视婷婷| 久久不见久久见免费视频1| 欧美怡红院视频| 亚洲一区视频在线观看视频| 9i看片成人免费高清| 久久久精品中文字幕麻豆发布| 久久99精品久久久| 日韩视频一区二区三区在线播放| 亚洲啪啪综合av一区二区三区| 不卡一区二区三区四区| 国产精品久久精品日日| 国产成人精品亚洲午夜麻豆| 久久一夜天堂av一区二区三区| 久久爱另类一区二区小说| 欧美电影免费观看高清完整版在线 | 日韩一区二区免费高清| 图片区日韩欧美亚洲| 欧美日韩高清影院| 亚洲123区在线观看| 91精品国产aⅴ一区二区| 日韩经典中文字幕一区|