亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩欧美国产1| 夜夜亚洲天天久久| 亚洲免费av高清| 国产在线视频不卡二| 欧美最猛黑人xxxxx猛交| 国产三级欧美三级| 蜜桃传媒麻豆第一区在线观看| 91麻豆免费视频| 国产亚洲欧美激情| 日韩黄色小视频| 欧美亚洲高清一区| 亚洲精品视频在线观看免费| 国产成人av一区二区三区在线观看| 欧美乱妇15p| 亚欧色一区w666天堂| 91麻豆高清视频| 中文字幕一区av| 国产.精品.日韩.另类.中文.在线.播放| 欧美人与禽zozo性伦| 亚洲一级二级三级| 91成人国产精品| 中文字幕亚洲综合久久菠萝蜜| 国产麻豆91精品| 国产色一区二区| 成人免费三级在线| 国产精品蜜臀在线观看| 国产1区2区3区精品美女| 国产亚洲一区二区三区在线观看 | 亚洲欧美一区二区三区极速播放| 捆绑调教美女网站视频一区| 99久久久精品免费观看国产蜜| 欧美性xxxxx极品少妇| 一区二区在线看| 91久久精品一区二区| 一区二区三区视频在线看| 日本韩国视频一区二区| 亚洲成人午夜电影| 91精品国产综合久久福利软件 | 国产日韩欧美激情| 中文字幕国产一区| 91精品国产免费久久综合| 精品久久久久香蕉网| 精品一二三四区| 国产亚洲短视频| 成人av在线电影| 亚洲综合精品久久| 日韩亚洲欧美在线| 高清不卡一二三区| 一区二区三区免费网站| 欧美伦理视频网站| 国产一区二区三区日韩| 成人免费在线视频| 欧美日韩aaaaa| 国产综合成人久久大片91| 国产欧美精品在线观看| 欧美色爱综合网| 免费观看久久久4p| 国产精品午夜春色av| 一本色道久久综合亚洲aⅴ蜜桃| 五月婷婷激情综合| 欧美国产乱子伦| 欧美美女直播网站| 风间由美一区二区av101| 亚洲自拍与偷拍| 久久一区二区三区国产精品| 色哦色哦哦色天天综合| 亚洲一区在线看| 欧美三级电影在线观看| 国产一区二区中文字幕| 国产精品欧美久久久久无广告| 91麻豆国产在线观看| 精品一区二区三区久久| 亚洲色图一区二区| 在线精品视频免费观看| 亚洲国产一区二区a毛片| 国产免费观看久久| 欧美一区二区三区系列电影| av在线免费不卡| 精品在线亚洲视频| 亚洲成人先锋电影| 国产精品乱人伦| 欧美肥大bbwbbw高潮| 粉嫩久久99精品久久久久久夜| 免费人成在线不卡| 亚洲一区二区视频在线| 中文天堂在线一区| 久久综合一区二区| 91精品国产色综合久久不卡蜜臀 | 日韩精品一级二级| 国产精品久久久久久福利一牛影视 | 一本一道综合狠狠老| 国产原创一区二区三区| 亚洲1区2区3区视频| 亚洲视频你懂的| 国产精品无圣光一区二区| 精品国产乱码91久久久久久网站| 777午夜精品视频在线播放| 91农村精品一区二区在线| 福利一区二区在线| 国产精品一区在线| 国产精品资源在线观看| 狠狠久久亚洲欧美| 日韩va亚洲va欧美va久久| 亚洲电影视频在线| 亚洲自拍都市欧美小说| 亚洲欧美视频在线观看视频| 亚洲欧洲一区二区三区| 国产精品福利电影一区二区三区四区| 久久综合色婷婷| 久久综合九色欧美综合狠狠| 精品噜噜噜噜久久久久久久久试看 | av亚洲精华国产精华精华| 成人亚洲一区二区一| 成人免费毛片嘿嘿连载视频| 成人a级免费电影| 97久久超碰精品国产| 99久久久久免费精品国产| 91视频com| 欧美体内she精高潮| 欧美日韩精品电影| 日韩欧美www| 久久精品一区二区三区av| 国产日韩欧美制服另类| 国产精品蜜臀av| 一个色综合av| 香蕉影视欧美成人| 美女mm1313爽爽久久久蜜臀| 韩国一区二区三区| 国产在线精品一区二区夜色| 国产成人免费视频网站| 色综合婷婷久久| 欧美久久一区二区| 欧美精品一区二区久久婷婷| 国产欧美一区视频| 一区二区三区在线看| 亚洲高清视频中文字幕| 久久国产免费看| 国产精品中文有码| 色哟哟亚洲精品| 日韩欧美国产午夜精品| 国产三级一区二区| 亚洲成人av电影在线| 国产一区二区中文字幕| 日本韩国欧美一区| 欧美精品精品一区| 久久久久9999亚洲精品| 亚洲美女屁股眼交| 久久精品国产**网站演员| 成人av在线观| 欧美三区在线视频| 亚洲国产岛国毛片在线| 婷婷六月综合亚洲| www.色综合.com| 欧美精品自拍偷拍| 欧美国产日韩精品免费观看| 天天综合天天做天天综合| 国产精品123区| 欧美系列在线观看| 国产日产欧美一区| 亚洲靠逼com| 麻豆精品视频在线观看视频| 成人免费三级在线| 欧美电视剧免费全集观看| 国产精品久久久久桃色tv| 亚洲高清中文字幕| 91免费精品国自产拍在线不卡| 欧美一级在线观看| 国产精品成人一区二区三区夜夜夜| 午夜激情综合网| 色视频欧美一区二区三区| 久久久综合精品| 六月丁香综合在线视频| 精品婷婷伊人一区三区三| 成人av在线影院| 精品国产区一区| 亚洲国产日日夜夜| 一本大道久久精品懂色aⅴ| 亚洲精品一区二区三区香蕉| 免费看黄色91| 欧美日韩一区在线| 亚洲精品欧美二区三区中文字幕| 午夜精品久久久久久| 欧美性高清videossexo| 亚洲欧洲av在线| 99久久99久久精品免费观看| 国产亚洲一区字幕| 精品一区二区在线看| 欧美成人video| 免费观看30秒视频久久| 日韩一区二区免费在线电影 | 久久精品人人做人人爽人人| 精品一区二区三区影院在线午夜 | 在线观看一区二区视频| 中文字幕永久在线不卡| 成人av综合在线| 国产精品欧美一区喷水| 波多野结衣中文一区| 国产精品国产三级国产aⅴ入口| av午夜精品一区二区三区| 国产精品成人在线观看|