亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
色综合视频一区二区三区高清| 国产成人亚洲综合a∨婷婷| 日本成人在线一区| 成人网男人的天堂| 欧美一区二区福利视频| 亚洲欧洲av另类| 精品久久久久久久久久久久久久久久久| 亚洲国产中文字幕| 一区二区三区91| 欧美日韩国产区一| 毛片av一区二区三区| 国产亚洲一本大道中文在线| 99久久精品免费精品国产| 亚洲午夜一区二区| 久久久精品蜜桃| 欧美色图免费看| 国产精品白丝在线| 国产欧美日产一区| 精品影院一区二区久久久| 欧美日本在线观看| 亚洲国产精品久久人人爱 | 欧美综合久久久| 中文字幕在线观看一区| 国产精品123区| 久久品道一品道久久精品| 国产成人综合网站| 久久久蜜桃精品| 狠狠色伊人亚洲综合成人| 日韩欧美国产一区二区三区| 日韩成人精品视频| 91麻豆精品国产91久久久更新时间 | 夜夜精品视频一区二区| 91丨九色丨蝌蚪丨老版| 亚洲精品一二三四区| 不卡av在线免费观看| 中文字幕一区视频| 一本大道久久a久久综合婷婷| 亚洲欧美视频在线观看视频| 99麻豆久久久国产精品免费| 亚洲欧美日韩国产手机在线| 91高清视频免费看| 香蕉av福利精品导航| 日韩一区二区三区免费观看| 久久国内精品自在自线400部| 欧美成人vps| 大白屁股一区二区视频| 中文字幕一区二区三区精华液 | 欧美一区二区精品在线| 蜜桃av一区二区| 久久久精品影视| 91丨国产丨九色丨pron| 亚洲第一主播视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美日韩电影在线| 一本大道久久a久久精品综合| 91在线视频播放| 国产精品你懂的在线欣赏| 亚洲国产岛国毛片在线| 亚洲成人7777| 国产乱国产乱300精品| 国产成人在线视频播放| 亚洲免费视频成人| 玉足女爽爽91| 精品亚洲porn| 欧美国产1区2区| 91蜜桃网址入口| 天天色 色综合| 国产色婷婷亚洲99精品小说| 色婷婷国产精品| 美女被吸乳得到大胸91| 综合色天天鬼久久鬼色| 91精品国产综合久久久久久| 国产a精品视频| 偷拍日韩校园综合在线| 国产精品毛片久久久久久| 91麻豆精品国产综合久久久久久 | 国产在线精品一区二区不卡了 | 精品国产乱码久久久久久牛牛 | 亚洲人成小说网站色在线| 91精品国产色综合久久久蜜香臀| 国产不卡视频在线观看| 香蕉av福利精品导航| 综合久久国产九一剧情麻豆| 日韩一区国产二区欧美三区| 免费成人av在线播放| 日韩精品专区在线影院观看| 欧洲精品在线观看| 精品一区二区在线看| 亚洲一区影音先锋| 国产女人18水真多18精品一级做| 在线成人高清不卡| 色香蕉久久蜜桃| a级精品国产片在线观看| 国产综合久久久久影院| 日韩精品一二三四| 一区二区三区丝袜| 亚洲欧洲色图综合| 国产精品天干天干在观线| 精品处破学生在线二十三| 欧美日本视频在线| 欧美日韩免费电影| 91国产福利在线| 99久久免费精品| 成人高清免费在线播放| 韩国精品在线观看| 午夜视频一区二区| 亚洲网友自拍偷拍| 亚洲一区二区三区精品在线| 国产人成亚洲第一网站在线播放| 欧美一级一级性生活免费录像| 一本色道a无线码一区v| 成人av在线一区二区| 精品一区二区久久久| 99亚偷拍自图区亚洲| 人人超碰91尤物精品国产| 久久久精品免费观看| 色综合久久66| 国产成人午夜片在线观看高清观看| 久久久久久久综合色一本| 成人激情免费网站| 国产精品中文有码| 日韩国产在线观看| 久久99国产精品久久| 亚洲伦在线观看| 国产精品久久久久一区| 欧美激情一区在线观看| 中文字幕欧美日韩一区| 国产精品家庭影院| 中文字幕一区二区三区av| 亚洲四区在线观看| 亚洲男人的天堂av| 国产午夜精品福利| 中文字幕日本乱码精品影院| 亚洲精品国久久99热| 亚洲国产毛片aaaaa无费看| 亚洲国产成人91porn| 肉色丝袜一区二区| 久久国产精品色婷婷| 国产69精品久久久久毛片| 成人h动漫精品一区二区| 在线视频你懂得一区| 欧美日韩不卡视频| 欧美一区二区三区在线| 久久久不卡网国产精品二区| 中文一区二区在线观看| 一区二区三区四区激情| 青青草成人在线观看| 成人福利在线看| 欧美日韩1234| 欧美激情资源网| 亚洲电影在线播放| 国模套图日韩精品一区二区| 99re66热这里只有精品3直播 | 欧美自拍偷拍一区| 日韩欧美一二三| 国产精品免费久久| 五月天网站亚洲| 国产真实乱偷精品视频免| 91黄色激情网站| 久久这里只有精品首页| 国产精品区一区二区三| 国产欧美一区二区三区鸳鸯浴| 亚洲图片欧美视频| 成人性生交大片免费看视频在线| 色婷婷久久久综合中文字幕| 精品国产一二三| 亚洲国产一区视频| 国产福利精品一区二区| 欧美三级蜜桃2在线观看| 久久久久免费观看| 欧美aⅴ一区二区三区视频| 色综合中文字幕| 色播五月激情综合网| 在线亚洲精品福利网址导航| 欧美成人一区二区| 亚洲日本va午夜在线影院| 精品制服美女丁香| 欧美日韩国产a| 国产精品伦一区二区三级视频| 日本成人在线不卡视频| 欧美伊人久久久久久午夜久久久久| 久久奇米777| 激情五月婷婷综合网| 91福利在线观看| 国产精品久久久久久久蜜臀| 韩国午夜理伦三级不卡影院| 欧美精品日韩精品| 亚洲一二三区视频在线观看| 色综合中文综合网| 久久不见久久见免费视频1| 欧美亚洲丝袜传媒另类| 最新热久久免费视频| 国产成人综合亚洲91猫咪| 国产亚洲精品aa午夜观看| 日本不卡视频一二三区| 欧美日韩国产精选| 午夜精品一区二区三区电影天堂| 欧美亚男人的天堂| 亚洲1区2区3区4区| 欧美日韩大陆在线|