AWTK是基于C語言開發的跨平臺GUI框架。AWTK使用經驗系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何播放視頻或攝像頭畫面?如何播放序列幀動畫?這些都會在系列文章進行解答。
本篇文章將簡單介紹阿拉伯文本相關整形與排序規則,接著介紹在AWStudio設置阿拉伯語言翻譯的步驟。
阿拉伯文本整形規則
一般GUI顯示英文或者中文時,內存中存儲的字符串和我們人眼看到的字符串是一樣的;但是阿拉伯文本比較特殊,內存中的字符串需要經過幾個步驟處理(主要是整形與文本方向排序),最終才形成成我們人眼看到的字符串。
關于阿拉伯文本整形可以分為5種,下面將簡單介紹這幾種類型的整形。1、字母位置不同,如在開頭或結尾可能會導致不一樣的變形:
圖1字母位置變形(Shaper)
2、字母會受到前后字母影響而變形,如下圖兩個字符會結合形成第三個字符:
?
圖2連寫變形(Ligature)
3、元音符號和字母會有組合的特性,如下圖,一個字母與一個元音符號會有位移結合的變形:
?
圖3元音符號變形(Diacritics)
4、有時候為了美觀的視覺效果會將字母延長湊成一整行的長度,這種是字母延長變形:
?
圖4字母延長變形(Kashida)
5、字母之間插入連接符號會影響變形:
?
圖5字母插入連接符號變形(Tatwell)
阿拉伯文本雙向排序
Unicode不同類型字符的方向屬性
Unicode字符可以分為強字符、弱字符和中性字符,不同類型的字符具有不同的方向性特征:
1、強字符:英文、漢字、阿拉伯字母等,它們方向性都是確定的,比如英文屬于從左到右的LTR字符,阿拉伯屬于從右到左的RTL字符,它們可能影響前后字符的方向性;
2、弱字符:數字和數字相關的符號,它們方向性是確定的,但是對前后字符不會產生影響;
3、中性字符:大部分標點符號和空格,它們方向是不確定的,由上下文bidi屬性決定其方向。
AWTK支持阿拉伯文本的哪些規則
由于阿拉伯文本整形規則和排序規則比較復雜,AWTK內部調用了bidi算法對阿拉伯文本進行排序并做簡單的變形,bidi算法支持文本雙向排序算法,在整形規則上暫時只支持字母位置變形和連寫變形,不支持元音符號變形。
如何在AWTK使用阿拉伯語言
如果想在AWTK正確使用阿拉伯語言,可以參考以下步驟:
下載阿拉伯語言字庫
AWStudio新建工程的默認字庫是不支持顯示阿拉伯文本的,因此需要先找到支持阿拉伯文本字庫文件。字庫文件可以在相關字體下載網站搜索并下載,或者從awtk資源目錄拷貝自帶的阿拉伯語言字庫文件:
awtk/design/default/fonts/trado.ttf導入阿拉伯語言字庫到工程準備好字庫文件后,可以使用AWStudio將字庫文件導入到自己的項目工程。在AWStudio資源瀏覽器選擇“字體”,點擊右上角加號選擇字庫文件并導入。?
圖6使用AWStudio導入字庫文件
在AWStudio設置阿拉伯語言翻譯文本
AWStudio支持給工程設置多國語言翻譯并實時切換的功能,點擊AWStudio上方菜單欄的“翻譯”按鈕進入多語言翻譯設置頁面,頁面操作步驟如下:1、點擊界面右下角添加語言按鈕;2、在對話框選擇要添加的語言、國家或地區,比如阿拉伯語言選擇“Arabic”;3、點擊對話框確定按鈕;4、在對應語言框輸入翻譯后的文本內容。(如果顯示異常可能是字體缺失,可以在添加語言對話框點擊“導入字體”添加字庫文件)
圖7使用AWStudio添加阿拉伯語言翻譯
最后在AWStudio給控件text屬性設置原始文本,并且開啟翻譯選項,之后該控件就會根據程序當前語言翻譯進行翻譯。
阿拉伯語言方向性問題
由于阿拉伯書寫習慣是從右到左,在切換語言后同樣需要遵循這個習慣。AWTK內置的bidi算法可以自動處理阿拉伯文本排序,也可以手動定義bidi屬性(默認為auto),如強制設置RTL排序。
-
C語言
+關注
關注
180文章
7614瀏覽量
137714 -
awtk
+關注
關注
0文章
46瀏覽量
252
發布評論請先 登錄
相關推薦
評論