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

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

?? cache.txt

?? Trolltech公司發布的基于C++圖形開發環境
?? TXT
字號:
               The FreeType 2 cache sub-system explained                        (c) 2000 David Turner            -----------------------------------------------Introduction :--------------  this document describes the caching sub-system that comes  with the FreeType library, version 2.0. Note that unlike  the rest of the library, this code is still in beta stage  and might still suffer slight changes in the future.  Its basic design shouldn't evolve though and is explained  in this paper.I. Requirements and Design Goals:---------------------------------  The FT2 cache sub-system was designed to implement caching  of glyph images. However, it is extremely flexible and can  be easily extended to cache other kind of data like metrics,  character maps, coverage tables, etc..II. Base Concepts:------------------ 1. The cache manager object:   at the heart of the caching sub-system is a single object   called the "cache manager". It is used to deal with FT_Face   and FT_Size objects, as well as to manager a LRU list of   abstract "cache nodes".   a. caching FT_Face and FT_Size objects:     each FT_Face object created by FreeType 2 can take from     a few hundred bytes to several tens of kilobytes, depending     on the original font's file format as well as its content.     there is no easy way to compute the size of a given FT_Face     object, so it's always a good idea to assume that it is     large and to want to limit the number of live face objects     as much as possible.     similarly, each FT_Face can have one or more FT_Size childs,     whose byte size depends heavily on the font format.     the first purpose of the cache manager is to provide a     small cache for FT_Face and FT_Size objects. Basically,     an application can use it as follows:       - each font face is described to the cache manager         through a typeless pointer, called a FTC_FaceID.         the cache manager itself doesn't interpret or use         the value of FTC_FaceIDs directly. Rather, it passes         them to a user-provided function called a         "face requester". see the defintion of the         FTC_Face_Requester type in <freetype/ftcache.h>         for details..         the face requester is in charge of translating a given         face into into a real new FT_Face object that is         returned to the cache manager. The latter will keep         the face object alive as long as it needs to.         the face requester is unique and must be passed         to the function named FTC_Manager_New used to         create/initialise a new cache manager.       - to lookup a given FT_Face, call the function         FTC_Manager_Lookup_Face as in the following code:              FTC_Manager_Lookup_Face( manager,                                       face_id,                                       &face );         if the corresponding FT_Face object is kept in         the cache manager's list, it will be returned         directly. Otherwise, this function will call         the user-provided face requester to create         a new FT_Face object, add it to the manager's         list to finally return it.         FT_Face objects are always destroyed by the cache         manager. An application that uses the cache         sub-system should never call FT_Done_Face !!       - to lookup a given FT_Size and FT_Face, call the         function FTC_Manager_Lookup_Size, as in:              FTC_Manager_Lookup_Size( manager,                                       ftc_font,                                       &face,                                       &size );         where "ftc_font" is a pointer to a FTC_Font descriptor         (a structure containing a FTC_FaceIDs and character          dimensions corresponding to the desired FT_Size).         note that the function returns both a FT_Face and         a FT_Size object. You don't need to call         FTC_Manager_Lookup_Face before it !!         also note that returned FT_Size objects are always         destroyed by the cache manager. A client application         that uses it should never call FT_Done_Size !!     the big advantage of using FTC_FaceIDs is that is     makes the caching sub-system completely independent     of the way font files are installed / listed / managed     in your application. In most implementations, a FTC_FaceID     is really a pointer to an application-specific structure     that describe the source font file + face index.    b - manage a MRU list of abstract "cache nodes":     the second role of the cache manager is to hold and manager     a list of abstract "cache nodes". The list is always sorted     in most-recently-used order. The manager always ensure that     the total size of nodes in memory doesn't over-reach a     certain threshold, by eliminating "old" nodes when     necessary.     the cache manager doesn't know much about the cache nodes:       - it knows how to move them in its list       - it knows how to destroy them when they're too old       - it knows how to "size" them (i.e. compute their byte         size in memory) 2. Cache objects:   the cache manager doesn't create new cache nodes however, this   is the charge of what are called "cache objects".   Basically, each cache object is in charge of managing cache   nodes of a certain type. Its role is to:     - provide a simple description of its cache nodes to the       manager (i.e. through a FTC_CacheNode_Class structure)     - provide a high-level API that can be called by client       applications to lookup cache nodes of the corresponding       type.       this function usually creates new nodes when they're not       available yet.     - also, and even though this is completely transparent to       the applications and the cache manager, each cache object       manages "node sets", where each set contains cache nodes       usually correspond to the same font face + font size.   For example, the cache sub-system currently comes with two   distinct cache classes:     - a FTC_Image_Cache, which is used to cache FT_Glyph images       (with one FT_Glyph per cache node).     - a FTC_SBit_Cache, which is used to cache small glyph bitmaps       ("sbit" means "embedded bitmaps" in digital typography).   the small bitmaps glyph is useful because storing one glyph   image per cache node isn't memory efficient when the data   associated to each node is very small. Indeed, each cache   node has a minimal size of 20 bytes, which is huge when   your data is an 8x8 monochrome bitmap :-)   Hence, a FTC_SBit_Cache is capable of storing several   contiguous sbits in a single cache node, resulting in much   higher cached glyphs / total cache size.   an application can lookup a FT_Glyph image with a FTC_Image_Cache   by calling:        error = FTC_Image_Cache_Lookup( image_cache,                                        ftc_font,                                        glyph_index,                                        &ft_glyph );   or a FTC_SBit (small bitmap descriptor) by calling:       error = FTC_SBit_Cache_Lookup( sbit_cache,                                      ftc_font,                                      glyph_index,                                      &ftc_sbit );III. Extending the cache sub-system: It is possible to extend the current cache sub-system by providing your own cache class and register it in the cache manager. That might be useful to cache other kind of data in the sub-system, like glyph metrics (without images),    To do it, you'll need to read the cache sub-system public header files rather heavily :-) Fortunately, they're pretty well commented and should guide you to your goal. Note that the cache sub-system already provides two "abstract cache" classes that can be re-used by your own implementation: 1. The abstract "FTC_GlyphCache" class:   this code is used to implement an abstract "glyph cache",   i.e. one that simply maps one glyph data per cache node.   it is sub-classed by FTC_Image_Cache, whose implementation   only consists in simple code to store a FT_Glyph in each   cache node.   you could sub-class it in your application to store glyph   images in a different format, for example.   see the files <freetype/cache/ftcglyph.h> and   "src/cache/ftcglyph.h" for details. 2. The abstract "FTC_ChunkCache" class:   this code is used to implement an abstract "glyph chunk cache".   it's very similar to a FTC_GlyphCache, except that it is capable   of storing several glyph-specific elements per cache node.   it is sub-classed by FTC_SBit_Cache, whose implementation   only consists in code to store a FTC_SBitRec record in each   node element.   you could sub-class it in your application to store small   glyph data, like metrics, glyph names, wathever.   see the files <freetype/cache/ftcchunk.h> and   "src/cache/ftcchunk.h" for details..  Note that the two abstract caches are rather complex because  they use "glyph sets". Each glyph set corresponds to a single  font face + font size combination. both caches are also  glyph-specific, though it is perfectly possible to use  broader selection criterion, here are a few examples:    - caching language coverage maps corresponding to      a given font face + language combination    - caching charmaps, layout tables, and other global      data..    - caching (font_face + font_size) specific "latin1"      ascender + descender  as you can see, a lot is possible with this design :-)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频色一区| 亚洲大尺度视频在线观看| 久久精品国产免费看久久精品| 欧美午夜精品久久久久久孕妇| 亚洲色欲色欲www| 91丨九色丨尤物| 亚洲激情五月婷婷| 欧美这里有精品| 亚洲成人动漫在线观看| 69堂成人精品免费视频| 免费的成人av| 国产肉丝袜一区二区| voyeur盗摄精品| 一区二区三区产品免费精品久久75| 一本色道a无线码一区v| 午夜精品一区在线观看| 日韩欧美在线不卡| 国产精品88av| 亚洲日本在线视频观看| 欧美视频一区在线观看| 免费高清在线一区| 国产精品网曝门| 在线观看不卡一区| 日本人妖一区二区| 日本一二三不卡| 日本乱人伦一区| 日韩成人一级大片| 欧美国产一区二区| 在线观看免费一区| 国产在线播放一区三区四| 国产精品欧美久久久久无广告| 在线观看www91| 精品一区二区久久久| 国产精品美女久久久久久久久久久| 在线亚洲精品福利网址导航| 日韩电影在线一区二区三区| 国产亚洲欧美色| 色婷婷一区二区三区四区| 秋霞影院一区二区| 亚洲品质自拍视频| 欧美xxxx老人做受| 日本道色综合久久| 国产一区二区影院| 亚洲在线中文字幕| 久久久一区二区| 在线成人午夜影院| 北条麻妃国产九九精品视频| 日本午夜一本久久久综合| 国产精品久久久久婷婷| 日韩一级免费观看| 色综合中文综合网| 亚洲h在线观看| 国产视频一区不卡| 91精品国产综合久久婷婷香蕉| www.欧美色图| 国产精品一区二区x88av| 亚洲h动漫在线| 一区二区三区不卡在线观看| 国产视频不卡一区| 欧美α欧美αv大片| 欧美人体做爰大胆视频| 色婷婷av一区| 成av人片一区二区| 国产一区二区三区四区在线观看| 午夜精品福利一区二区三区蜜桃| 亚洲欧洲美洲综合色网| 国产视频一区在线播放| www激情久久| 欧美videofree性高清杂交| 欧美精品一卡两卡| 欧美四级电影网| 欧美制服丝袜第一页| 色先锋aa成人| 91亚洲国产成人精品一区二三| 成人综合在线观看| 国产精品18久久久久久久久| 激情综合五月天| 久久99久久精品| 蜜桃91丨九色丨蝌蚪91桃色| 午夜精品久久久久久久久久| 亚洲高清免费一级二级三级| 亚洲一区二区三区小说| 亚洲综合在线免费观看| 亚洲综合一区二区精品导航| 亚洲精品久久久蜜桃| 一区二区三区精品在线| 亚洲激情欧美激情| 亚洲成人av免费| 日本成人在线电影网| 青青青伊人色综合久久| 日韩中文字幕91| 人人狠狠综合久久亚洲| 精品一区二区av| 国产精品系列在线播放| 国产成人啪午夜精品网站男同| 国产成人av福利| 成人激情校园春色| 91蝌蚪porny| 欧美日韩第一区日日骚| 欧美岛国在线观看| 国产精品污网站| 亚洲一区二区在线视频| 日本最新不卡在线| 国产成人自拍在线| 91搞黄在线观看| 亚洲手机成人高清视频| 亚洲男人的天堂av| 亚洲动漫第一页| 裸体在线国模精品偷拍| 国产v日产∨综合v精品视频| av电影一区二区| 91麻豆精品91久久久久同性| 久久综合网色—综合色88| 国产精品久久久久影院老司| 亚洲国产欧美另类丝袜| 麻豆成人91精品二区三区| av毛片久久久久**hd| 欧美日韩精品高清| 久久影院电视剧免费观看| 亚洲乱码国产乱码精品精可以看| 日韩成人av影视| 丁香另类激情小说| 欧美精品久久99| 中文字幕 久热精品 视频在线| 亚洲一区二区视频| 国产成人免费视| 欧美日韩黄色一区二区| 国产目拍亚洲精品99久久精品| 香蕉久久夜色精品国产使用方法| 国产麻豆视频一区二区| 欧美日韩一区精品| 欧美韩国一区二区| 青青草原综合久久大伊人精品优势| 99麻豆久久久国产精品免费优播| 欧美一级专区免费大片| 亚洲精品国产品国语在线app| 韩日精品视频一区| 欧美色爱综合网| 中文字幕中文字幕在线一区| 美女www一区二区| 欧洲人成人精品| 中文字幕第一区第二区| 久久精品国产免费| 8v天堂国产在线一区二区| ...xxx性欧美| 国产麻豆欧美日韩一区| 欧美精品丝袜中出| 亚洲另类春色国产| 成人性生交大片免费看中文网站| 日韩欧美专区在线| 亚洲sss视频在线视频| 一本到高清视频免费精品| 久久久精品国产免费观看同学| 欧美a一区二区| 欧美日韩一级视频| 亚洲精品视频免费看| 国产成人午夜视频| 久久综合久色欧美综合狠狠| 日韩精品一级中文字幕精品视频免费观看| 91同城在线观看| 自拍偷拍欧美精品| 成人不卡免费av| 日本一区二区三区免费乱视频| 紧缚捆绑精品一区二区| 日韩欧美视频一区| 免费在线欧美视频| 51午夜精品国产| 午夜视频一区二区三区| 欧美日韩一级二级三级| 一区二区三区欧美视频| 99精品国产99久久久久久白柏| 国产日韩影视精品| 国产精选一区二区三区| 97成人超碰视| 亚洲视频一二三区| 色婷婷av一区二区| 亚洲成人综合网站| 欧美一区在线视频| 美女精品自拍一二三四| www欧美成人18+| 成人免费观看男女羞羞视频| 国产精品久久一卡二卡| 99久久免费精品| 一区二区三区中文免费| 色偷偷成人一区二区三区91| 大桥未久av一区二区三区中文| 久久久国产午夜精品| 成人性生交大合| 亚洲欧美日韩系列| 欧美日韩一区 二区 三区 久久精品| 午夜欧美视频在线观看| 欧美一区二区三区视频免费| 麻豆国产一区二区| 国产日韩av一区二区| av亚洲产国偷v产偷v自拍| 亚洲午夜久久久久久久久电影网 | 国产一区二区三区最好精华液| 久久久激情视频| 色视频一区二区| 久久69国产一区二区蜜臀|