常州百度推广优化,哈尔滨seo排名优化公司价格,赤峰北京网站建设,盐城做网站的哪个公司好使用二进制字体需要将整个字体加载到存储器。 在某些情况下#xff0c;如果字体很大#xff0c;如大字号中文字体#xff0c;则这样做可能不可取。
字体缓存使应用能够从外部存储器只能加载显示字符串所需的字母。 这意味着整个字体无需保存到在可寻址闪存或RAM上#xff…使用二进制字体需要将整个字体加载到存储器。 在某些情况下如果字体很大如大字号中文字体则这样做可能不可取。
字体缓存使应用能够从外部存储器只能加载显示字符串所需的字母。 这意味着整个字体无需保存到在可寻址闪存或RAM上而是只需保存在更大的文件系统上。 字体文件阅读器
FileDataReader.hpp#ifndef FILEDATAREADER_HPP
#define FILEDATAREADER_HPP
#include fonts/FontCache.hpp
#include stdio.husing namespace touchgfx;class FileDataReader : public FontDataReader
{
public:virtual ~FileDataReader() { }virtual void open(){fp fopen(generated/fonts/bin/Font_verdana_20_4bpp.bin, rb);}virtual void close(){fclose(fp);}virtual void setPosition(uint32_t position){fseek(fp, position, SEEK_SET);}virtual void readData(void* out, uint32_t numberOfBytes){fread(out, numberOfBytes, 1, fp);}
private:FILE* fp;
};#endif // FRONTENDAPPLICATION_HPP创建FontCache、存储缓冲区和文件系统阅读器对象然后安装CachedFont
#include gui/common/FrontendApplication.hpp
#include BitmapDatabase.hpp
#include texts/TextKeysAndLanguages.hpp
#include texts/TypedTextDatabase.hpp
#include gui/common/FileDataReader.hpp
#include fonts/CachedFont.hpp
#include fonts/FontCache.hppuint8_t fontdata[5120];
FileDataReader reader;
FontCache fontCache;
CachedFont cachedFont; //Cached Font objectLOCATION_PRAGMA_NOLOAD(TouchGFX_Cache)
uint16_t Cache[1024 * 604] LOCATION_ATTRIBUTE_NOLOAD(TouchGFX_Cache);FrontendApplication::FrontendApplication(Model m, FrontendHeap heap): FrontendApplicationBase(m, heap)
{
#ifdef SIMULATORconst uint32_t cacheSize 0x300000; //3 MB, as exampleuint16_t* const cacheStartAddr (uint16_t*)malloc(cacheSize);Bitmap::setCache(cacheStartAddr, cacheSize, 4);
#elseBitmap::setCache(Cache, sizeof(Cache));
#endif//setup the font cache with buffer and size; and file reader objectfontCache.setMemory(fontdata, sizeof(fontdata));fontCache.setReader(reader);TypedText text TypedText(T___SINGLEUSE_2OJQ);fontCache.initializeCachedFont(text, cachedFont);//replace the linked in font in TouchGFX with cachedFontTypedTextDatabase::setFont(Typography::DEFAULT, cachedFont);Unicode::UnicodeChar* str const_castUnicode::UnicodeChar*(text.getText());fontCache.cacheString(text, str);
}运行模拟器