亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式系統(tǒng)下的矢量漢字顯示技術(shù)

        2023-04-29 00:00:00張曉明
        無線互聯(lián)科技 2023年17期

        摘要:嵌入式系統(tǒng)下的漢字顯示一直是軟件開發(fā)的難點(diǎn),由于一般只支持點(diǎn)陣漢字,并支持矢量漢字,已經(jīng)不能滿足綜合模塊化航電架構(gòu)下大屏顯示和觸摸控制的要求。文章通過分析基于貝塞爾曲線顯示矢量漢字的原理,綜合比較選擇插值補(bǔ)償系數(shù),結(jié)合具體實(shí)例進(jìn)行了測(cè)試驗(yàn)證。結(jié)果表明,采用該方法能夠?qū)崿F(xiàn)包括宋體、黑體等各種字體和字號(hào)的高質(zhì)量顯示,對(duì)漢字旋轉(zhuǎn)、縮放變換后顯示效果不失真,滿足了大屏觸控模式下對(duì)漢字縮放的顯示要求。

        關(guān)鍵詞:嵌入式系統(tǒng);點(diǎn)陣漢字;矢量漢字;貝塞爾曲線;漢字輪廓

        中圖分類號(hào):TP311.5文獻(xiàn)標(biāo)志碼:A

        0 引言

        嵌入式系統(tǒng)由于資源有限,大多只支持點(diǎn)陣漢字,不支持矢量漢字 [1]。點(diǎn)陣字庫采用.c文件方式儲(chǔ)存信息,每個(gè)字信息都包含在一個(gè)數(shù)據(jù)結(jié)構(gòu)中,其中包含了字體的所有點(diǎn)信息,字體顯示時(shí)根據(jù)寬高將點(diǎn)信息直接送入顯存顯示。這種方式的字體實(shí)現(xiàn)簡(jiǎn)單、顯示速度快。

        隨著綜合模塊化航電(Integrated Modular Av-ionics,IMA)架構(gòu)的發(fā)展[2],大屏顯示和觸摸控制已成為主流,不僅要求畫面中漢字能清晰顯示,更提出了自由旋轉(zhuǎn)和縮放的新要求。目前,傳統(tǒng)的基于點(diǎn)陣漢字的實(shí)現(xiàn)方法存在一些局限性,點(diǎn)陣漢字每種字體和字號(hào)均需對(duì)應(yīng)的字庫文件,如顯示宋體(16×16、24×24、32×32)、黑體(16×16、24×24、32×32)就需要6個(gè)不同的字庫文件,維護(hù)管理十分麻煩;點(diǎn)陣漢字顯示畫面進(jìn)行旋轉(zhuǎn)和縮放變換時(shí),漢字產(chǎn)生模糊失真,效果不佳。為適應(yīng)大屏觸摸控制下對(duì)漢字的顯示要求,本文摒棄了傳統(tǒng)的基于點(diǎn)陣的漢字顯示方式,提出一種基于貝塞爾曲線的矢量漢字顯示方法。

        1 貝塞爾曲線顯示漢字原理

        1.1 獲取漢字輪廓

        矢量字體中的每一個(gè)字形是通過數(shù)學(xué)曲線來描述的,它包含了字形邊界上的關(guān)鍵點(diǎn),連續(xù)的導(dǎo)數(shù)信息等,矢量字體主要包括Type1、TrueType、OpenType和CFF等格式,采用幾何學(xué)中的二次/三次貝塞爾樣條曲線及直線來描述字體的外形輪廓。由于每個(gè)字符的輪廓信息是根據(jù)字形索引來存放的,而字形索引又通過字符的Unicode編碼來獲取,所以首先需要先設(shè)置字符的編碼格式,假如某些嵌入式系統(tǒng)的默認(rèn)的字符編碼是GBK,因此還需要將GBK轉(zhuǎn)換為Unicode,然后通過Unicode編碼值來獲取字形索引,最后就可以在字庫文件中得到字符的輪廓數(shù)據(jù)。

        1.2 漢字輪廓分析

        漢字輪廓的貝塞爾曲線由起始點(diǎn)、終止點(diǎn)和控制點(diǎn)組成,描述如下:

        (1)FT_CURVE_TAG_ON:點(diǎn)在貝塞爾曲線上,為起始點(diǎn)或終止點(diǎn),其他的點(diǎn)為OFF點(diǎn),表明該點(diǎn)不在貝塞爾曲線上,為貝塞爾曲線的控制點(diǎn)。

        (2)FT_CURVE_TAG_CONIC:二次貝塞爾曲線控制點(diǎn),一條二次貝塞爾曲線由一個(gè)起始點(diǎn)、一個(gè)終止點(diǎn)和一個(gè)控制點(diǎn)確定,如圖1所示。

        (3)FT_CURVE_TAG_CUBIC:三次貝塞爾曲線控制點(diǎn),一條三次貝塞爾曲線由一個(gè)起始點(diǎn)、一個(gè)終止點(diǎn)和兩個(gè)控制點(diǎn)確定,如圖2所示。

        漢字輪廓的貝塞爾曲線插值補(bǔ)償按以下3種情況進(jìn)行處理。

        (1)輪廓線的點(diǎn)為FT_CURVE_TAG_ON,僅將該點(diǎn)記錄至錨點(diǎn)集,相當(dāng)于一次貝塞爾曲線(即線段),不用作插值處理。

        (2)輪廓線的點(diǎn)為FT_CURVE_TAG_CONIC:計(jì)算并更新起始點(diǎn)和終止點(diǎn),分為以下兩種情況:若該控制點(diǎn)已經(jīng)是輪廓線的第一個(gè)點(diǎn),則起始點(diǎn)為輪廓線的最后一個(gè)點(diǎn),否則為錨點(diǎn)集的上一個(gè)點(diǎn)。若該控制點(diǎn)為輪廓線的最后一個(gè)點(diǎn),則終止點(diǎn)為錨點(diǎn)集第一個(gè)點(diǎn),否則為輪廓線下一個(gè)點(diǎn)。

        進(jìn)行二次貝塞爾曲線插值,分為以下兩種情況:若輪廓線下一個(gè)點(diǎn)為FT_CURVE_TAG_ON,起始點(diǎn)和終止點(diǎn)按(1)條處理,然后進(jìn)行二次貝塞爾插值補(bǔ)償;若輪廓線下一個(gè)點(diǎn)仍為FT_CURVE_TAG_CONIC,則終止點(diǎn)為該2個(gè)控制點(diǎn)的中值,然后進(jìn)行二次貝塞爾曲線插值補(bǔ)償。

        二次貝塞爾曲線插值公式為:

        B(t)=(1-t)2P0+2t(1-t)P1+t2P2,t∈[0,1];

        其中:P0為起始點(diǎn),P1為控制點(diǎn),P2為終止點(diǎn),t為補(bǔ)償系數(shù),一般取0.2。

        (3)輪廓線點(diǎn)為FT_CURVE_TAG_CUBIC:將該控制點(diǎn)作為第一個(gè)控制點(diǎn),計(jì)算并更新起始點(diǎn)和終止點(diǎn),分為以下幾種情況:若該控制點(diǎn)已經(jīng)是輪廓線的第一個(gè)點(diǎn),則起始點(diǎn)為輪廓線的最后一個(gè)點(diǎn),否則為錨點(diǎn)集的上一個(gè)點(diǎn);若該控制點(diǎn)為輪廓線倒數(shù)第二個(gè)點(diǎn),第二個(gè)控制點(diǎn)為最后一個(gè)點(diǎn),終止點(diǎn)為錨點(diǎn)集第一個(gè)點(diǎn),否則為輪廓線下一個(gè)點(diǎn);其他情況皆無效。

        本研究進(jìn)行3次貝塞爾曲線插值;3次貝塞爾曲線插值公式為:

        B(t)=(1-t)3P0+3t(1-t)2P1+3(1-t)t2P2+(1-t)3P3,t∈[0,1];

        其中:P0為起始點(diǎn),P1為控制點(diǎn)1,P2為控制點(diǎn)2,P3為終止點(diǎn),t為補(bǔ)償系數(shù),一般取0.2。

        第17期2023年9月無線互聯(lián)科技·研究創(chuàng)新No.17September,2023

        第17期2023年9月無線互聯(lián)科技·研究創(chuàng)新No.17September,2023

        1.3 顯示矢量漢字

        循環(huán)逐個(gè)分析漢字串的每一個(gè)漢字,將漢字轉(zhuǎn)為相應(yīng)的Unicode編碼值。在矢量字體的字形索引庫中進(jìn)行索引查找,獲得字形輪廓數(shù)據(jù)集。根據(jù)實(shí)際縮放或旋轉(zhuǎn)需要,對(duì)漢字輪廓數(shù)據(jù)集進(jìn)行相應(yīng)的旋轉(zhuǎn)、縮放等變換,然后遍歷輪廓數(shù)據(jù)集中的每條封閉的輪廓線,對(duì)輪廓線的起始點(diǎn)、終止點(diǎn)、控制點(diǎn)進(jìn)行不同的處理,進(jìn)行貝塞爾一次/二次/三次插值補(bǔ)償。對(duì)補(bǔ)償后的輪廓線進(jìn)行柵格化處理[3],將可能存在的凹邊形分解為多個(gè)凸邊形,直至遍歷完所有的輪廓數(shù)據(jù)集,最后調(diào)用GDI或 OpenGL等圖形接口將已柵格化的數(shù)據(jù)進(jìn)行渲染[4-5],完成漢字的顯示,詳細(xì)處理流程如圖3所示。

        2 實(shí)例分析

        2.1 測(cè)試環(huán)境

        采用定制設(shè)計(jì)的顯示處理板進(jìn)行測(cè)試驗(yàn)證。其中,CPU為ARM Cortex-M4嵌入式處理器,顯示設(shè)備為10寸觸摸控制屏。

        2.2 測(cè)試結(jié)果

        2.2.1 漢字輪廓顯示

        以漢字“航”為例,分別以宋體和黑體且貝塞爾插值系數(shù)t取1.0、0.5和0.2按本方法進(jìn)行測(cè)試驗(yàn)證,測(cè)試驗(yàn)證結(jié)果如圖4所示。

        其中黑色線、藍(lán)色線和紅色線分別描述了漢字輪廓線中線段和二/三次貝塞爾曲線分布及插值情況,分析可見,貝塞爾插值系數(shù)取1.0和0.5時(shí),漢字輪廓過渡不平滑,顯示效果差。貝塞爾插值系數(shù)取0.2時(shí),漢字輪廓平滑,顯示效果滿足要求,而如果取值更小時(shí),平滑效果改良不明顯,計(jì)算量反而大幅增加。

        2.2.2 縮放及旋轉(zhuǎn)顯示

        按本方法對(duì)漢字“航”宋體正常顯示(字號(hào)20,t=0.2)進(jìn)行縮放及旋轉(zhuǎn)測(cè)試,縮放及旋轉(zhuǎn)測(cè)試結(jié)果如圖5所示。

        分析可見,本方法通過貝塞爾曲線的矢量數(shù)據(jù)變換,完成漢字的顯示、旋轉(zhuǎn)和縮放,其顯示效果不會(huì)發(fā)生任何模糊和失真。

        2.2.3 傳統(tǒng)顯示漢字與本方法顯示漢字對(duì)比

        使用ARM Cortex-M4圖形接口進(jìn)行渲染后的漢字效果如圖6所示。

        分析可見,傳統(tǒng)方法對(duì)漢字進(jìn)行旋轉(zhuǎn)和縮放必然模糊失真,如進(jìn)一步縮放,效果將完全模糊根本不可辨認(rèn);而本方法對(duì)漢字進(jìn)行任意旋轉(zhuǎn)、縮放均能保持良好、平滑的顯示效果。

        3 結(jié)語

        嵌入式系統(tǒng)由于資源有限,一般只支持點(diǎn)陣漢字,不支持矢量漢字,本文提出了一種基于貝塞爾曲線的矢量漢字顯示方法。該方法首先分析了矢量漢字的顯示原理,在矢量字體文件中通過漢字編碼值獲取輪廓線,然后基于貝塞爾曲線進(jìn)行插值補(bǔ)償,插值補(bǔ)償系數(shù)根據(jù)插值計(jì)算量和顯示效果綜合權(quán)衡取值,最后在基于ARM Cortex-M4嵌入式處理器的顯示處理板上進(jìn)行了測(cè)試驗(yàn)證。結(jié)果表明,該方法能夠?qū)崿F(xiàn)包括宋體、黑體等各種字體和字號(hào)的高質(zhì)量顯示,無需反復(fù)生成字庫文件;對(duì)漢字進(jìn)行任意次旋轉(zhuǎn)、縮放變換后,漢字顯示效果不失真、不模糊,滿足了綜合模塊化航電架構(gòu)下大屏觸摸控制的顯示要求,該矢量漢字顯示方法不僅適用于STM32、ARM等嵌入式裸機(jī)系統(tǒng),同樣適用于VxWorks、FreeRTOS、QNX、uClinux等主流嵌入式操作系統(tǒng)。

        參考文獻(xiàn)

        [1]凌云鋒.VxWorks5.5平臺(tái)下矢量字體顯示的實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011(7):203-206.

        [2]楊軍祥,楊濤,李成文,等.綜合模塊化航空電子核心系統(tǒng)技術(shù)研究[J].航空計(jì)算技術(shù),2017(3):106-110.

        [3]陳振杰,周琛,李飛雪,等.矢量多邊形柵格化算法快速并行化方法研究[J].遙感信息,2014(5):3-8.

        [4]王汐,蔣林,張敏.GDI函數(shù)硬件加速器設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2014(5):44-47.

        [5]侯冬曼,陳武喝,馬佳洪.基于OpenGL的虛擬仿真實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2019(6):89-92.

        Vector Chinese character display technology in embedded system

        ZhangXiaoming

        (AVIC Xi’an Aircraft Insdustry Group Co., Ltd., Xi’an 710089, China)

        Abstract:The display of Chinese characters in embedded system has always been a difficult point in software development. Because it generally only supports dot matrix Chinese characters and vector Chinese characters, it can no longer meet the requirements of large-screen display and touch control under the integrated modular avionics architecture. In this paper, the principle of displaying vector Chinese characters based on Bezier curve is analyzed, and the interpolation compensation coefficient is comprehensively compared and selected. Combined with specific examples, the results show that this method can realize high-quality display of various fonts and font sizes, including Song Ti and Bold, and the display effect is not distorted after Chinese characters are rotated and scaled, which meets the display requirements of Chinese characters in large-screen touch mode.

        Key words: embedded system; dot matrix Chinese characters; vector Chinese characters; bessel curve; Chinese character outline

        国产精品∧v在线观看| 最好的99精品色视频大全在线| 精品亚洲一区二区三区在线播放| 天堂资源中文网| 亚洲日韩av无码中文字幕美国| 国产午夜无码视频免费网站| 久久麻豆精亚洲av品国产蜜臀| 成人影院视频在线免费观看| 亚洲熟妇av日韩熟妇在线 | 亚洲日韩精品无码专区网址| 久久久久久久久888| 国产自在自线午夜精品视频在| 女同舌吻互慰一区二区| 风韵少妇性饥渴推油按摩视频| www国产精品内射熟女| 国产精品国产午夜免费福利看| 一个人午夜观看在线中文字幕| 日本成本人片视频免费| 国产精品成人免费视频网站京东| 999久久久免费精品国产牛牛| 激情视频在线观看好大| 亚洲中文字幕久久精品无码a| 亚洲色偷偷色噜噜狠狠99| 久久精品国产一区二区涩涩| 最新日本人妻中文字幕| 日韩精品无码中文字幕电影| 久久国产热精品波多野结衣av | 国产麻豆极品高清另类| 男女18禁啪啪无遮挡激烈网站| 亚洲欧洲巨乳清纯| 国产成人精品aaaa视频一区| 日本免费一区二区在线看片| 让少妇高潮无乱码高清在线观看| 最新国产三级| 亚洲精品一区二区视频| 亚洲av日韩一区二区| 亚洲第一av导航av尤物| 日本口爆吞精在线视频| av在线入口一区二区| 国产精品女同一区二区久| 国产成人一区二区三区乱|