0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

矢量字庫(kù)的用途及在VxWorks5.5平臺(tái)如何實(shí)現(xiàn)矢量字體顯示

電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2018-11-02 08:15 ? 次閱讀

1 VxWorks5.5點(diǎn)陣字庫(kù)的局限性

VxWorks5.5 是美國(guó)風(fēng)河公司開(kāi)發(fā)的嵌入式操作系統(tǒng),圖形系統(tǒng)采用WindML3.0,支持點(diǎn)陣字顯示,不支持矢量字體顯示。點(diǎn)陣字采用內(nèi)存模式加載,使用前需要將字體庫(kù)先加載到內(nèi)存,再通過(guò)WindML 圖形接口實(shí)現(xiàn)點(diǎn)陣字顯示。點(diǎn)陣字庫(kù)采用。c 文件方式儲(chǔ)存信息,每個(gè)字信息都包含在一個(gè)數(shù)據(jù)結(jié)構(gòu)中,其中包含了字體的所有點(diǎn)信息,字體顯示時(shí)只要根據(jù)字的寬高將點(diǎn)信息直接送入顯存顯示。這種方式的字體實(shí)現(xiàn)簡(jiǎn)單、顯示速度快,但是一個(gè)字體文件只包含一種字體、一個(gè)大小的信息,使用具有一定的局限性。

隨著嵌入式軟件的不斷發(fā)展,在設(shè)計(jì)象嵌入式瀏覽器這樣的人機(jī)界面的軟件時(shí),發(fā)現(xiàn)點(diǎn)陣字庫(kù)已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足設(shè)計(jì)要求,嵌入式瀏覽器對(duì)字體的需求是根據(jù)網(wǎng)頁(yè)內(nèi)容來(lái)決定的,在網(wǎng)頁(yè)上任何類型,任何大小的字體都可能出現(xiàn),點(diǎn)陣字庫(kù)要將所有字體類型,每種字體的所有大小都包括是不可能的,這種局限性大大降低了瀏覽器的顯示效果。TrueType 字庫(kù)引入到VxWorks5.5 系統(tǒng)下,有效的解決了字體的問(wèn)題,所有Windows 下的TrueType 字庫(kù)都可以在VxWorks5.5 系統(tǒng)直接使用,資源非常豐富,能滿足嵌入式系統(tǒng)對(duì)字庫(kù)的新需求。

2 TrueType字庫(kù)原理及FreeType字體引擎

TrueType 是Apple 公司和Microsoft 公司合作開(kāi)發(fā)的頁(yè)面描述語(yǔ)言(簡(jiǎn)稱TTF),采用了直線和二次貝賽爾曲線來(lái)描述字符的輪廓,結(jié)合了光柵技術(shù)和矢量技術(shù)的優(yōu)點(diǎn),克服了以往所有點(diǎn)陣字體、矢量字體和向量輪廓字體的缺點(diǎn),字體可以任意放大、縮小、旋轉(zhuǎn)和變形而不會(huì)影響輸出質(zhì)量,提供了真正的設(shè)備無(wú)關(guān)性,二次貝賽爾曲線既能保證輪廓曲線的光滑性,又有利于提高字形還原的速度。如下圖1 所示。

矢量字庫(kù)的用途及在VxWorks5.5平臺(tái)如何實(shí)現(xiàn)矢量字體顯示

圖1 TrueType 字體輪廓圖

FreeType 是一個(gè)完全免費(fèi)的、高品質(zhì)的可移植的字體引擎,它提供同一的接口訪問(wèn)多種字體格式,包括TrueType,openType,CID,CFF 等。支持單色位圖,反走樣位圖的渲染,F(xiàn)reeType 庫(kù)是高度模塊化的程序庫(kù),它使用ANSI C 開(kāi)發(fā),但采用面向?qū)ο蟮乃枷?,F(xiàn)reeType 用戶可以靈活地對(duì)它進(jìn)行裁剪。

3 VxWorks5.5下矢量字庫(kù)的實(shí)現(xiàn)

VxWorks5.5 下矢量字庫(kù)采用開(kāi)放源代碼的Freetype 庫(kù)和Windows 下的TrueType 字庫(kù)結(jié)合實(shí)現(xiàn),通過(guò)WindML 圖形系統(tǒng)將矢量字應(yīng)用到VxWorks5.5系統(tǒng)中。矢量字使用前先初始化WindML 圖形系統(tǒng),再初始化矢量字庫(kù),并將矢量字庫(kù)的接口函數(shù)掛接到圖形系統(tǒng)下,在應(yīng)用矢量字庫(kù)時(shí)只需調(diào)用WindML 接口函數(shù),調(diào)用方式和點(diǎn)陣字庫(kù)一致,實(shí)現(xiàn)了與WindML的無(wú)縫掛接。TrueType 字庫(kù)根據(jù)加載方式不同分為動(dòng)態(tài)加載和靜態(tài)加載兩種方式,動(dòng)態(tài)加載方式是將TrueType 字庫(kù)拷貝到目標(biāo)機(jī)硬盤,根據(jù)應(yīng)用程序的設(shè)計(jì)要求在程序運(yùn)行時(shí)動(dòng)態(tài)加載字庫(kù);靜態(tài)加載方式是將TrueType 字庫(kù)在系統(tǒng)啟動(dòng)時(shí)便加載到目標(biāo)機(jī)內(nèi)存,應(yīng)用程序可以直接調(diào)用字庫(kù)信息。動(dòng)態(tài)加載方式優(yōu)點(diǎn)在于節(jié)省內(nèi)存和加載靈活,缺點(diǎn)在于不同字體切換時(shí)消耗的時(shí)間長(zhǎng),不適合需字體的頻繁切換的應(yīng)用程序;靜態(tài)加載方式優(yōu)點(diǎn)在于不同字體切換時(shí)消耗的時(shí)間短,適合需字體的頻繁切換的應(yīng)用程序,缺點(diǎn)在于內(nèi)存消耗大,加載不靈活。

3.1 矢量字體的初始化

矢量字庫(kù)的初始化主要有矢量字體設(shè)備創(chuàng)建和矢量字體設(shè)備注冊(cè)兩部分組成。先創(chuàng)建矢量字體設(shè)備,如果創(chuàng)建成功則將矢量字體設(shè)備注冊(cè)到系統(tǒng)中,如果創(chuàng)建不成功則退出程序。

矢量字體設(shè)備創(chuàng)建函數(shù)UGL_FONT_DRIVER*uglFT2FontDriverCreate(UGL_UGI_DRIVER*pDriver,UGL_FT2_FONT_DRV_CFG *pFT2FontConfig),參數(shù)pDriver 為圖形系統(tǒng)設(shè)備號(hào),取值graphicsDevID 為WindML 初始化時(shí)創(chuàng)建的圖形系統(tǒng)設(shè)備號(hào);參數(shù)pFT2FontConfig 為字體配置結(jié)構(gòu),根據(jù)字體加載的方式不同參數(shù)也不同,具體見(jiàn)3.4 章節(jié);返回值ft_fontDevID為矢量字體設(shè)備號(hào)。

設(shè)備注冊(cè)函數(shù)UGL_STATE uglRegistryAdd(UGL_UINT32 type, UGL_UINT32 data, UGL_UINT32id, char *name),參數(shù)type 為矢量字體設(shè)備類型,需定義一個(gè)新設(shè)備類型UGL_FONT_ENGINE_FTTYPE,取值為13;參數(shù)data 為圖形系統(tǒng)設(shè)備ID,取值(UGL_UINT32)graphicsDevID;參數(shù)id 為矢量字體設(shè)備號(hào),取值(UGL_UINT32) ft_fontDevID;參數(shù)name取值0.

3.2 字體單雙字節(jié)編碼轉(zhuǎn)換

字符編碼根據(jù)長(zhǎng)度分為單字節(jié)和雙字節(jié)兩種編碼方式,單字節(jié)編碼包括英文字母、數(shù)字和特殊字符等,雙字節(jié)編碼包括漢字和自定義字符等。

WindML 字體顯示分雙字節(jié)顯示和單字節(jié)顯示兩種方式,雙字節(jié)顯示是兩個(gè)字節(jié)作為字體編碼對(duì)字庫(kù)進(jìn)行查詢,找到字符位圖并顯示;單字節(jié)顯示是單個(gè)字節(jié)作為字體編碼對(duì)字庫(kù)進(jìn)行查詢,找到字符位圖并顯示。當(dāng)英文字符顯示時(shí),可以使用單字節(jié)顯示或雙字節(jié)顯示,當(dāng)中文字符顯示或中英文混合字符顯示時(shí)必須使用雙字節(jié)顯示。

VxWorks 下字體采用GB2312 編碼,中文字符編碼的每個(gè)字節(jié)都大于0x80,英文字符編碼都小于0x80,在進(jìn)行雙字節(jié)顯示時(shí),需要將單字節(jié)字符轉(zhuǎn)換成雙字節(jié)字符。在字符轉(zhuǎn)換時(shí),先獲取整個(gè)字符串長(zhǎng)度,再判斷每個(gè)字節(jié)是否大于0x80,如果小于0x80,則將單字節(jié)擴(kuò)展成雙字節(jié);如果大于0x80,則將這個(gè)字節(jié)與后個(gè)字節(jié)組合成一個(gè)雙字節(jié);計(jì)算雙字節(jié)數(shù)并返回,如上圖2 所示。

矢量字庫(kù)的用途及在VxWorks5.5平臺(tái)如何實(shí)現(xiàn)矢量字體顯示

圖2 單字節(jié)字符轉(zhuǎn)換成雙字節(jié)字符。

3.3 字體編碼轉(zhuǎn)換

VxWorks5.5 下漢字采用GB2312 編碼, 而FreeType 在處理漢字時(shí)只能識(shí)別Unicode 編碼,在處理漢字前需要將GB2312 編碼先轉(zhuǎn)換成Unicode 編碼,GB2312 與Unicode 的編碼轉(zhuǎn)換表采用二維數(shù)組保存數(shù)據(jù),共有7000 多組對(duì)應(yīng)項(xiàng),如果采用遍歷數(shù)組的方式來(lái)進(jìn)行編碼轉(zhuǎn)換,那么平均每個(gè)漢字編碼轉(zhuǎn)換需要做3000 多次的編碼比較,這非常影響漢字的處理速度。

為了提高編碼轉(zhuǎn)換的處理速度,編碼轉(zhuǎn)換時(shí)采用折半查找方式來(lái)實(shí)現(xiàn),使用折半查找需要先將GB2312編碼從小到大排列,每個(gè)GB2312 編碼對(duì)應(yīng)一個(gè)Unicode 編碼。在使用折半查找時(shí),先取first=0 end=數(shù)組長(zhǎng)度,然后(first+end)/2 得到一個(gè)中間編號(hào),再通過(guò)中間編號(hào)獲取相應(yīng)的GB2312 編碼和顯示漢字編碼比較大小,如果中間值大,則將first=0 end=中間編碼組合再進(jìn)行折半查找;如果中間值小,則將first=中間編碼 end=數(shù)組長(zhǎng)度 組合再進(jìn)行折半查找;如果相等,則將GB2312 編碼對(duì)應(yīng)的Unicode 編碼提交程序處理。

使用折半查找一個(gè)漢字最多只需查找13 次,大大提高了漢字Unicode 編碼的查找速度,加速了漢字顯示。

3.4 字庫(kù)加載

字體庫(kù)加載方式分動(dòng)態(tài)和靜態(tài)兩種,兩者之間互有優(yōu)缺點(diǎn),可根據(jù)用戶的不同需求自主選擇加載方式。

3.4.1 字庫(kù)動(dòng)態(tài)加載

字庫(kù)動(dòng)態(tài)加載方式是將windows 下的TrueType 字體庫(kù)文件(*.ttf,*.ttc)拷貝到目標(biāo)機(jī)目錄下,根據(jù)用戶需求在程序執(zhí)行過(guò)程中動(dòng)態(tài)加載字庫(kù)。動(dòng)態(tài)加載的實(shí)現(xiàn)方法:先聲明兩個(gè)結(jié)構(gòu)變量。

1) UGL_FT2_FONT_DRV_CFG ft_font_cfg;

2) UGL_FT2_FONT_PATH_DESC FontPathDesc;

接著設(shè)置FontPathDesc 信息, FontPathDesc.PFontSearchPath="/ata0a/ttf/"; FontPathDesc.filter="*.ttf";pFontSearchPath 為字體文件搜索路徑,filter 為文件過(guò)濾器。再設(shè)置ft_font_cfg 信息,ft_font_cfg.numFontPathDesc=1;ft_font_cfg.pFontPathDesc=&FontPathDesc;ft_font_cfg.defaultCharset=FT_ENCODING_UNICODE;numFontPathDesc 為字體搜索路徑的個(gè)數(shù),pFontPathDesc 為搜索路徑,defaultCharset 為設(shè)置矢量字體的編碼模式。最后按照3.1 章節(jié)對(duì)矢量字庫(kù)進(jìn)行初始化。

3.4.2 字庫(kù)靜態(tài)加載

字體庫(kù)靜態(tài)加載方式是將windows 下的TrueType字體庫(kù)文件(*.ttf,*.ttc)編譯生成一個(gè)。o 文件,并在應(yīng)用程序執(zhí)行前先加載到內(nèi)存。靜態(tài)加載的實(shí)現(xiàn)方法:

在編譯生成。o 字庫(kù)文件前, 先確定需要加載的TrueType 字體庫(kù)文件,例如需要將f:/font/目錄下的simsun.ttc,simkai.ttf 文件編譯生成一個(gè)。o 文件,先創(chuàng)建一個(gè)udft2cfg.s 文件,將需要編譯的字庫(kù)信息填入文件,再使用編譯命令ccpentium -mtune=pentium –march=pentium -O2 -nostdlib -fno-builtin -fno-defer -pop-DCPU=PENTIUM -DTOOL_FAMILY=gnu -D_WRS_KERNEL-DVXWORKS -xassembler-with-cpp -g -c udft2cfg.o udft2cfg.s 編譯字體文件,生成udft2cfg.o 文件。

靜態(tài)加載方式在矢量字體初始化時(shí)所用的字體結(jié)構(gòu)信息與動(dòng)態(tài)加載有一些區(qū)別,靜態(tài)加載所用字體信息已經(jīng)明確,在初始化時(shí)需要將字體信息在結(jié)構(gòu)中描述清楚,結(jié)構(gòu)UGL_FT2_FONT_MEMBUF_DESC 描述字體名稱、起始地址,終止地址,并掛接到結(jié)構(gòu)UGL_FT2_FONT_DRV_CFG 下,最后按照3.1 章節(jié)對(duì)矢量字體進(jìn)行初始化。

3.5 矢量字體的粗、斜體實(shí)現(xiàn)

矢量字體顯示方式包括正體、粗體、斜體、和粗斜體四種方式,F(xiàn)reeType 字體引擎已經(jīng)實(shí)現(xiàn)了對(duì)各種顯示方式的支持,但要在VxWorks5.5 上支持粗、斜體,需要修改udft2fnt.c 和uglfont2.c 的部分代碼。udft2fnt.c修改代碼如下:

1) 在UGL_FT2_FONT 結(jié)構(gòu)中增加兩個(gè)結(jié)構(gòu)變量,UGL_SIZE weightsize; UGL_SIZE italicsize;

2) 在uglFT2FontCreate 函數(shù)中,去除三個(gè)條件pFontDef->weight >=pFT2FontDesc->header.weight.min&& pFontDef->weight <= pFT2FontDesc-> header.weight.max && pFontDef->italic == pFT2FontDesc->header. Italic;增加字體結(jié)構(gòu)變量weightsize,italicsize的賦值,pFT2Font->weightsize = pFontDef->weight;pFT2Font->italicsize=pFontDef->italic;

3) 在uglFT2FontInfo 函數(shù)中,增加粗體、斜體信息的設(shè)置和獲取代碼,

case UGL_FONT_WEIGHT_SET: pFT2Font->weightsize = *((UGL_SIZE *)pInfo);break;

case UGL_FONT_WEIGHT_GET: (*(UGL_SIZE*)pInfo) = pFT2Font->weightsize;

status = UGL_STATUS_OK;break;

case UGL_FONT_SLANT_ANGLE_SET: pFT2

Font->italicsize = *((UGL_SIZE *)pInfo);break;

case UGL_FONT_ SLANT_ANGLE _GET:(*(UGL_SIZE *)pInfo) = pFT2Font->italicsize;

status = UGL_STATUS_OK;break;

4) 在ft2DrawStringImageCache 函數(shù)中,增加矢量字體在斜體時(shí)的矩陣值;增加矢量字體在粗、斜體時(shí)字體位圖索引的獲取。因?yàn)槭噶孔煮w在粗、斜體時(shí)矩陣值和位圖索引號(hào)的獲取和正體有些差異,所以在處理時(shí)需和正體分開(kāi)處理。

5) 在ft2DrawStringSmallBitmaps 函數(shù)中,增加矢量字體在斜體時(shí)的矩陣值;因?yàn)槭噶孔煮w在粗、斜體時(shí)使用ft2GetGlyphIndex 函數(shù)不能正確獲取位圖索引,修改為FT_Get_Char_Index 來(lái)獲取位圖索引;增加在粗、斜體時(shí)的矢量字體位圖的處理。

uglfont2.c 修改代碼如下:

修改uglConstructFontDef 函數(shù),增加斜體信息賦值,pFontDefinition->italic = pFontDescriptor-> italic.

去除語(yǔ)句pFontDefinition->weight = (pListArray[matchIndex].fontDesc.weight.min + pListArray[matchIndex].fontDesc.weight.max)/2;,使用語(yǔ)句pFontDefinition->weight = (pFontDescriptor-> weight.min +pFontDescriptor->weight.max)/2;替換。

4 結(jié)論

矢量字庫(kù)已應(yīng)用于嵌入式瀏覽器、嵌入式閱讀器等多個(gè)軟件開(kāi)發(fā)項(xiàng)目,實(shí)際工程應(yīng)用表明,矢量字體的切換速度、顯示速度都能滿足應(yīng)用要求,并且字體大小的無(wú)級(jí)縮放、粗斜體顯示、以及旋轉(zhuǎn)顯示等效果能使人機(jī)界面更加友好,使用更加便捷。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5046

    文章

    18821

    瀏覽量

    298631
  • 人機(jī)界面
    +關(guān)注

    關(guān)注

    5

    文章

    521

    瀏覽量

    43982
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1007

    瀏覽量

    34980
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

     專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款矢量字庫(kù)2、適用于MTK平臺(tái)的平滑點(diǎn)陣字庫(kù)3、適用于各種手機(jī)
    發(fā)表于 06-22 10:22

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 07-22 10:28

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 07-22 10:28

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 07-29 15:15

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 08-05 10:45

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 08-07 10:08

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 08-07 10:08

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 08-07 10:09

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 08-12 09:53

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 08-25 10:56

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)

    專業(yè)提供適用于MTK平臺(tái)矢量引擎、矢量字庫(kù)、輸入法(支持多國(guó)語(yǔ)言)專業(yè)提供以下產(chǎn)品:1、適用于MTK平臺(tái)矢量引擎及多款
    發(fā)表于 03-29 14:23

    矢量字庫(kù)移植測(cè)試的相關(guān)資料推薦

    單片機(jī)移植矢量字庫(kù),并測(cè)試運(yùn)行速度
    發(fā)表于 01-10 07:15

    矢量字庫(kù)嵌入式機(jī)頂盒中的應(yīng)用

    介紹嵌入式數(shù)字衛(wèi)星接收機(jī)的字符顯示原理。提出一種提取Windows矢量字庫(kù)信息以及將其轉(zhuǎn)換為點(diǎn)陣字庫(kù)格式的方法。給出主要模塊的流程圖和VC程序實(shí)現(xiàn)。
    發(fā)表于 05-16 14:47 ?18次下載

    英創(chuàng)信息技術(shù)EM9280矢量字庫(kù)應(yīng)用簡(jiǎn)介

    1、簡(jiǎn)述 使用矢量字庫(kù)的好處是可靈活選擇顯示字體以及字體大小,便于客戶進(jìn)行用戶界面的設(shè)計(jì)。一般來(lái)說(shuō)一個(gè)矢量字庫(kù)文件包含一組字形,每個(gè)字形可
    的頭像 發(fā)表于 01-16 09:41 ?1257次閱讀
    英創(chuàng)信息技術(shù)EM9280<b class='flag-5'>矢量字庫(kù)</b>應(yīng)用簡(jiǎn)介

    單片機(jī)巧用Windows矢量字庫(kù)

    1 引 言  單片機(jī)控制的LED、LCD顯示屏均涉及到各種字體的漢字顯示。建立單片機(jī)漢字字庫(kù)的傳統(tǒng)方法有使用硬件字庫(kù)或者使用UCDOS的點(diǎn)陣
    發(fā)表于 11-11 15:06 ?6次下載
    單片機(jī)巧用Windows<b class='flag-5'>矢量字庫(kù)</b>