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

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

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

【AWTK使用經(jīng)驗(yàn)】如何在AWTK顯示阿拉伯文本

ZLG致遠(yuǎn)電子 ? 2024-09-12 08:07 ? 次閱讀

AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架。AWTK使用經(jīng)驗(yàn)系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何播放視頻或攝像頭畫面?如何播放序列幀動(dòng)畫?這些都會(huì)在系列文章進(jìn)行解答。

本篇文章將簡(jiǎn)單介紹阿拉伯文本相關(guān)整形與排序規(guī)則,接著介紹在AWStudio設(shè)置阿拉伯語言翻譯的步驟。


阿拉伯文本整形規(guī)則

一般GUI顯示英文或者中文時(shí),內(nèi)存中存儲(chǔ)的字符串和我們?nèi)搜劭吹降淖址且粯拥模坏前⒗谋颈容^特殊,內(nèi)存中的字符串需要經(jīng)過幾個(gè)步驟處理(主要是整形與文本方向排序),最終才形成成我們?nèi)搜劭吹降淖址?br />關(guān)于阿拉伯文本整形可以分為5種,下面將簡(jiǎn)單介紹這幾種類型的整形。1、字母位置不同,如在開頭或結(jié)尾可能會(huì)導(dǎo)致不一樣的變形:0ff2a2cc-709b-11ef-bb4b-92fbcf53809c.png

圖1字母位置變形(Shaper)

2、字母會(huì)受到前后字母影響而變形,如下圖兩個(gè)字符會(huì)結(jié)合形成第三個(gè)字符:

0ffbc280-709b-11ef-bb4b-92fbcf53809c.png?

圖2連寫變形(Ligature)

3、元音符號(hào)和字母會(huì)有組合的特性,如下圖,一個(gè)字母與一個(gè)元音符號(hào)會(huì)有位移結(jié)合的變形:

100ad536-709b-11ef-bb4b-92fbcf53809c.png?

圖3元音符號(hào)變形(Diacritics)

4、有時(shí)候?yàn)榱嗣烙^的視覺效果會(huì)將字母延長(zhǎng)湊成一整行的長(zhǎng)度,這種是字母延長(zhǎng)變形:

10208700-709b-11ef-bb4b-92fbcf53809c.png?

圖4字母延長(zhǎng)變形(Kashida)

5、字母之間插入連接符號(hào)會(huì)影響變形:

102bbad0-709b-11ef-bb4b-92fbcf53809c.png?

圖5字母插入連接符號(hào)變形(Tatwell)

阿拉伯文本雙向排序

Unicode不同類型字符的方向?qū)傩?/strong>

Unicode字符可以分為強(qiáng)字符、弱字符和中性字符,不同類型的字符具有不同的方向性特征:

1、強(qiáng)字符:英文、漢字、阿拉伯字母等,它們方向性都是確定的,比如英文屬于從左到右的LTR字符,阿拉伯屬于從右到左的RTL字符,它們可能影響前后字符的方向性;

2、弱字符:數(shù)字和數(shù)字相關(guān)的符號(hào),它們方向性是確定的,但是對(duì)前后字符不會(huì)產(chǎn)生影響;

3、中性字符:大部分標(biāo)點(diǎn)符號(hào)和空格,它們方向是不確定的,由上下文bidi屬性決定其方向。

AWTK支持阿拉伯文本的哪些規(guī)則

由于阿拉伯文本整形規(guī)則和排序規(guī)則比較復(fù)雜,AWTK內(nèi)部調(diào)用了bidi算法對(duì)阿拉伯文本進(jìn)行排序并做簡(jiǎn)單的變形,bidi算法支持文本雙向排序算法,在整形規(guī)則上暫時(shí)只支持字母位置變形和連寫變形,不支持元音符號(hào)變形。

如何在AWTK使用阿拉伯語言

如果想在AWTK正確使用阿拉伯語言,可以參考以下步驟:

下載阿拉伯語言字庫(kù)

AWStudio新建工程的默認(rèn)字庫(kù)是不支持顯示阿拉伯文本的,因此需要先找到支持阿拉伯文本字庫(kù)文件。字庫(kù)文件可以在相關(guān)字體下載網(wǎng)站搜索并下載,或者從awtk資源目錄拷貝自帶的阿拉伯語言字庫(kù)文件:

awtk/design/default/fonts/trado.ttf導(dǎo)入阿拉伯語言字庫(kù)到工程準(zhǔn)備好字庫(kù)文件后,可以使用AWStudio將字庫(kù)文件導(dǎo)入到自己的項(xiàng)目工程。在AWStudio資源瀏覽器選擇“字體”,點(diǎn)擊右上角加號(hào)選擇字庫(kù)文件并導(dǎo)入。10415ce6-709b-11ef-bb4b-92fbcf53809c.png?

圖6使用AWStudio導(dǎo)入字庫(kù)文件

在AWStudio設(shè)置阿拉伯語言翻譯文本

AWStudio支持給工程設(shè)置多國(guó)語言翻譯并實(shí)時(shí)切換的功能,點(diǎn)擊AWStudio上方菜單欄的“翻譯”按鈕進(jìn)入多語言翻譯設(shè)置頁(yè)面,頁(yè)面操作步驟如下:1、點(diǎn)擊界面右下角添加語言按鈕;2、在對(duì)話框選擇要添加的語言、國(guó)家或地區(qū),比如阿拉伯語言選擇“Arabic”;3、點(diǎn)擊對(duì)話框確定按鈕;4、在對(duì)應(yīng)語言框輸入翻譯后的文本內(nèi)容。(如果顯示異??赡苁亲煮w缺失,可以在添加語言對(duì)話框點(diǎn)擊“導(dǎo)入字體”添加字庫(kù)文件

1053ccaa-709b-11ef-bb4b-92fbcf53809c.png

圖7使用AWStudio添加阿拉伯語言翻譯

最后在AWStudio給控件text屬性設(shè)置原始文本,并且開啟翻譯選項(xiàng),之后該控件就會(huì)根據(jù)程序當(dāng)前語言翻譯進(jìn)行翻譯。

10602540-709b-11ef-bb4b-92fbcf53809c.png

阿拉伯語言方向性問題

由于阿拉伯書寫習(xí)慣是從右到左,在切換語言后同樣需要遵循這個(gè)習(xí)慣。AWTK內(nèi)置的bidi算法可以自動(dòng)處理阿拉伯文本排序,也可以手動(dòng)定義bidi屬性(默認(rèn)為auto),如強(qiáng)制設(shè)置RTL排序。

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

    關(guān)注

    180

    文章

    7610

    瀏覽量

    137219
  • awtk
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    237
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AWTK使用經(jīng)驗(yàn)】如何響應(yīng)物理按鍵

    AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 06-06 08:25 ?828次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何響應(yīng)物理按鍵

    AWTK使用經(jīng)驗(yàn)】如何更換AWTK SDK與渲染模式

    AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何播放攝像頭畫面?如何更換
    的頭像 發(fā)表于 08-01 08:25 ?1117次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何更換<b class='flag-5'>AWTK</b> SDK與渲染模式

    VEE對(duì)象是否支持阿拉伯字符?

    同時(shí)顯示英語和阿拉伯語(或其他非拉丁字符集)嗎? TIA Mike Watts 以上來自于谷歌翻譯 以下為原文Hi All, Anyone know if VEE objects support
    發(fā)表于 04-02 06:17

    請(qǐng)問怎么在mplab x v3.26中保存阿拉伯字符串?

    大家好!我想在我的代碼中保存一個(gè)阿拉伯字符串。我該怎么辦?我可以在mplab x編輯器中編寫阿拉伯字符串,但當(dāng)我保存項(xiàng)目并退出mplab x時(shí),通過重新打開mplab x中的項(xiàng)目,阿拉伯字符串
    發(fā)表于 08-28 08:22

    什么是AWTKAWTK有哪些主要特色?

    什么是AWTK?AWTK有哪些主要特色?
    發(fā)表于 06-16 06:43

    介紹AWTK

    ZLG 開源 GUI 引擎 AWTK 1.6 發(fā)布一、介紹AWTK全稱 Toolkit AnyWhere,是ZLG開發(fā)的開源 GUI 引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和 PC 打造
    發(fā)表于 08-20 08:09

    AWTK的寓意

    一、介紹AWTK全稱Toolkit AnyWhere,是ZLG開發(fā)的開源GUI引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和PC打造的通用GUI引擎,為用戶提供一個(gè)功能強(qiáng)大、高效可靠、簡(jiǎn)單易用
    發(fā)表于 08-20 08:12

    介紹AWTK

    ZLG開源GUI引擎AWTK發(fā)布1.1版本一、介紹AWTK全稱Toolkit AnyWhere,是ZLG開發(fā)的開源GUI引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和PC打造的通用GUI引擎,為
    發(fā)表于 08-20 08:18

    AWTK-MVVM是什么?其功能有哪些

    AWTK-MVVM是一套為AWTK用C語言開發(fā),并支持各種腳本語言的MVVM框架,實(shí)現(xiàn)了數(shù)據(jù)綁定、命令綁定和窗口導(dǎo)航等基本功能,使用AWTK-MVVM開發(fā)應(yīng)用程序,無需學(xué)習(xí)AWTK本身
    發(fā)表于 12-15 06:07

    是否有其他字體支持更好的阿拉伯語文本?

    我有一個(gè)問題,要在屏幕上顯示阿拉伯語文本。目前我使用的字體是 Janna LT Regular。孤立的字母似乎不是問題。但是如果我想寫更長(zhǎng)的文本/單詞,那么我會(huì)在屏幕上看到很多“?”是否有其他字體支持更好的
    發(fā)表于 01-12 08:41

    HC8218 阿拉伯電話本來電顯示電話芯片

    HC8218 阿拉伯電話本來電顯示電話芯片 來電顯示:FSK & DTMF兼容英文/阿拉伯文/波斯文三種語言菜單及電話簿輸入;電話簿輸入可采用
    發(fā)表于 01-15 09:44 ?1160次閱讀

    AWTK使用經(jīng)驗(yàn)】如何設(shè)計(jì)立體電池進(jìn)度條?

    AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 04-18 08:25 ?483次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何設(shè)計(jì)立體電池進(jìn)度條?

    AWTK使用經(jīng)驗(yàn)】加載和釋放外部圖片

    AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 04-26 08:25 ?488次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】加載和釋放外部圖片

    AWTK使用經(jīng)驗(yàn)】如何播放視頻或攝像頭畫面

    AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 07-04 08:25 ?660次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何播放視頻或攝像頭畫面

    AWTK使用經(jīng)驗(yàn)】如何實(shí)現(xiàn)序列幀動(dòng)畫

    AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 07-18 08:25 ?455次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何實(shí)現(xiàn)序列幀動(dòng)畫