0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【AWTK使用经验】如何在AWTK显示阿拉伯文本

ZLG致远电子 2024-09-12 08:07 次阅读

AWTK是基于C语言开发的跨平台GUI框架。AWTK使用经验系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何播放视频或摄像头画面?如何播放序列帧动画?这些都会在系列文章进行解答。

本篇文章将简单介绍阿拉伯文本相关整形与排序规则,接着介绍在AWStudio设置阿拉伯语言翻译的步骤。


阿拉伯文本整形规则

一般GUI显示英文或者中文时,内存中存储的字符串和我们人眼看到的字符串是一样的;但是阿拉伯文本比较特殊,内存中的字符串需要经过几个步骤处理(主要是整形与文本方向排序),最终才形成成我们人眼看到的字符串。
关于阿拉伯文本整形可以分为5种,下面将简单介绍这几种类型的整形。1、字母位置不同,如在开头或结尾可能会导致不一样的变形:0ff2a2cc-709b-11ef-bb4b-92fbcf53809c.png

图1字母位置变形(Shaper)

2、字母会受到前后字母影响而变形,如下图两个字符会结合形成第三个字符:

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

图2连写变形(Ligature)

3、元音符号和字母会有组合的特性,如下图,一个字母与一个元音符号会有位移结合的变形:

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

图3元音符号变形(Diacritics)

4、有时候为了美观的视觉效果会将字母延长凑成一整行的长度,这种是字母延长变形:

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

图4字母延长变形(Kashida)

5、字母之间插入连接符号会影响变形:

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

图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资源浏览器选择“字体”,点击右上角加号选择字库文件并导入。10415ce6-709b-11ef-bb4b-92fbcf53809c.png 

图6使用AWStudio导入字库文件

在AWStudio设置阿拉伯语言翻译文本

AWStudio支持给工程设置多国语言翻译并实时切换的功能,点击AWStudio上方菜单栏的“翻译”按钮进入多语言翻译设置页面,页面操作步骤如下:1、点击界面右下角添加语言按钮;2、在对话框选择要添加的语言、国家或地区,比如阿拉伯语言选择“Arabic”;3、点击对话框确定按钮;4、在对应语言框输入翻译后的文本内容。(如果显示异常可能是字体缺失,可以在添加语言对话框点击“导入字体”添加字库文件

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

图7使用AWStudio添加阿拉伯语言翻译

最后在AWStudio给控件text属性设置原始文本,并且开启翻译选项,之后该控件就会根据程序当前语言翻译进行翻译。

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

阿拉伯语言方向性问题

由于阿拉伯书写习惯是从右到左,在切换语言后同样需要遵循这个习惯。AWTK内置的bidi算法可以自动处理阿拉伯文本排序,也可以手动定义bidi属性(默认为auto),如强制设置RTL排序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136617
  • awtk
    +关注

    关注

    0

    文章

    44

    浏览量

    224
收藏 人收藏

    评论

    相关推荐

    AWTK使用经验】如何响应物理按键

    AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何加载外部资源?如何设计自定义进度条?这些都会在系列文章
    的头像 发表于 06-06 08:25 788次阅读
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>经验</b>】如何响应物理按键

    AWTK使用经验】如何更换AWTK SDK与渲染模式

    AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何播放摄像头画面?如何更换
    的头像 发表于 08-01 08:25 1063次阅读
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>经验</b>】如何更换<b class='flag-5'>AWTK</b> SDK与渲染模式

    VEE对象是否支持阿拉伯字符?

    同时显示英语和阿拉伯语(或其他非拉丁字符集)吗? TIA Mike Watts 以上来自于谷歌翻译 以下为原文Hi All, Anyone know if VEE objects support
    发表于 04-02 06:17

    请问怎么在mplab x v3.26中保存阿拉伯字符串?

    大家好!我想在我的代码中保存一个阿拉伯字符串。我该怎么办?我可以在mplab x编辑器中编写阿拉伯字符串,但当我保存项目并退出mplab x时,通过重新打开mplab x中的项目,阿拉伯字符串
    发表于 08-28 08:22

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

    什么是AWTKAWTK有哪些主要特色?
    发表于 06-16 06:43

    介绍AWTK

    ZLG 开源 GUI 引擎 AWTK 1.6 发布一、介绍AWTK全称 Toolkit AnyWhere,是ZLG开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造
    发表于 08-20 08:09

    AWTK的寓意

    一、介绍AWTK全称Toolkit AnyWhere,是ZLG开发的开源GUI引擎,旨在为嵌入式系统、WEB、各种小程序、手机和PC打造的通用GUI引擎,为用户提供一个功能强大、高效可靠、简单易用
    发表于 08-20 08:12

    介绍AWTK

    ZLG开源GUI引擎AWTK发布1.1版本一、介绍AWTK全称Toolkit AnyWhere,是ZLG开发的开源GUI引擎,旨在为嵌入式系统、WEB、各种小程序、手机和PC打造的通用GUI引擎,为
    发表于 08-20 08:18

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

    AWTK-MVVM是一套为AWTK用C语言开发,并支持各种脚本语言的MVVM框架,实现了数据绑定、命令绑定和窗口导航等基本功能,使用AWTK-MVVM开发应用程序,无需学习AWTK本身
    发表于 12-15 06:07

    是否有其他字体支持更好的阿拉伯语文本

    我有一个问题,要在屏幕上显示阿拉伯语文本。目前我使用的字体是 Janna LT Regular。孤立的字母似乎不是问题。但是如果我想写更长的文本/单词,那么我会在屏幕上看到很多“?”是否有其他字体支持更好的
    发表于 01-12 08:41

    HC8218 阿拉伯电话本来电显示电话芯片

    HC8218 阿拉伯电话本来电显示电话芯片 来电显示:FSK & DTMF兼容英文/阿拉伯文/波斯文三种语言菜单及电话簿输入;电话簿输入可采用
    发表于 01-15 09:44 1141次阅读

    AWTK使用经验】如何设计立体电池进度条?

    AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何加载外部资源?如何设计自定义进度条?这些都会在系列文章
    的头像 发表于 04-18 08:25 445次阅读
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>经验</b>】如何设计立体电池进度条?

    AWTK使用经验】加载和释放外部图片

    AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何加载外部资源?如何设计自定义进度条?这些都会在系列文章
    的头像 发表于 04-26 08:25 464次阅读
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>经验</b>】加载和释放外部图片

    AWTK使用经验】如何播放视频或摄像头画面

    AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何加载外部资源?如何设计自定义进度条?这些都会在系列文章
    的头像 发表于 07-04 08:25 600次阅读
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>经验</b>】如何播放视频或摄像头画面

    AWTK使用经验】如何实现序列帧动画

    AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何加载外部资源?如何设计自定义进度条?这些都会在系列文章
    的头像 发表于 07-18 08:25 395次阅读
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>经验</b>】如何实现序列帧动画