据说中文和阿拉伯文是两种最难学的语言,中文咱就不说了,来说说阿拉伯文。最近项目要适配阿拉伯文的显示,由于Unity的ugui对阿拉伯文显示并没有提供支持,还是要自己动手来做适配,着实费了一番功夫。本文介绍一下完整的适配方案,供大家一起参考。
首先介绍下阿拉伯文,阿拉伯文的显示是右对齐、从右到左的,不仅是语序从右到左,就连一个单词的每个字符都是从右到左显示的。打个比方,用大写英文字母来代表阿拉伯字符,我们理解的"ABCD EFG"(约定下文都用斜粗体表示我们理解的顺序)在阿拉伯文中就会显示成"GFE DCBA"。
另外,当阿拉伯文和英文、数字混排时,英文和数字的显示顺序又要恢复成从左到右。比如说,我们理解的"ABCD hello world EFG 123"(还是用大写英文字母来代表阿拉伯字符),就会显示成"123 GFE hello world DCBA"。
除了顺序,阿拉伯文还有一个特点是,同一个字符有多种写法,根据这个字符是单词的开头、中间、结尾来选择不同的写法。再打个比方(还是用英文字母举例),字符A有三种写法:A(前连书体),a(前后连书体),
(后连书体),那么单词"AAA"就会显示成"
aA"。
好了,上述就是阿拉伯文的特点所在,正因为这些与众不同的特点,我们需要经过适配处理才能在Unity中正常显示。
(不得不感慨秦始皇的“书同文”太伟大了)
网上一些适配方案都是把字符串适配后再赋值给ugui的Text组件,通过修改数据来改变显示。
不过我觉得,数据和显示最好分开,所以我把适配放在ugui的Text源码中,在渲染的时候使用适配后的字符串。就是说,Text保存的字符串数据还是从左往右的(如"ABCD hello world EFG 123"),然后转换成从右往左的字符串("123 GFE hello world DCBA"),用后者来渲染。
完整的适配方案分为5步:字符书体转换、字符串反转、字符串富文本提纯、字符串换行修正、字符串富文本恢复,下面详细说下每个步骤。
上面提到的ArabicSupport插件也提供了字符串反转功能,但是略显复杂,效果不是很好,所以我自己重写了一个。很简单,就是用一个栈来处理英文和数字。
在说富文本提纯前,先说字符串换行修正。我们知道,ugui的Text组件是有自动换行功能的,但遇到阿拉伯文时,这个换行就出问题了。比如说,显示 "TTTTTTTT 123 GFE hello world DCBA"(从右往左读的阿拉伯字符串),自动换行时,会显示成下图,句首跑到第二行了。
这个换行处理ugui没有开源,所以要自己处理,方法是处理字符串时,在适当的地方手动插入换行符'\n'。把"TTTTTTTT 123 GFE hello world DCBA"先处理成"hello world DCBA\nTTTTTTTT 123 GFE ",再用后者渲染,就能得到我们想要的效果。
按照上面的换行修正方法,由于是自己处理字符串,可能会把富文本截断,所以要提取富文本中的纯文本,用纯文本替换掉富文本得到纯文本字符串,然后对纯文本字符串进行换行修正。提取时用到了以下正则式来匹配:
经过换行修正后,需要进行富文本的恢复,很简单,在需要恢复的字符子串前后加上富文本修饰词就好。
现有一个从左往右读的阿拉伯字符串"ABAB hello world ABA"(用大写字母代表阿拉伯字符)
内存中表示为 ABAB <color=#ff3520>hello world ABA</color> 123
1、字符书体转换 Aba
<color=#ff3520>hello world Ab
</color> 123 2、字符串反转 123 <color/>
bA hello world<ff3520#=color>
abA (注意:反转时富文本也会反转) 3、字符串富文本提纯 123
bA hello world
abA 4、字符串换行修正 hello world
abA\n123
bA 5、字符串富文本恢复 <color=#ff3520> hello world</color>
abA\n123 <color=#ff3520>
bA</color>
经测试,这套方案完美解决了项目中的阿拉伯文适配问题。为了避免代码细节喧宾夺主,本文没有贴出代码,只说明了步骤和算法,供大家一起参考。
本文简要介绍了要将阿拉伯数字转换成中国汉字表示的数字的方法,我们需要一个映射表来转换每个数字,并且处理不同位数的数字(如十、百、千、万等),给出了详细的代码示例和解释。
哈喽,大家好,我是木头左!揭秘编程语言的灵活性在编程的世界里,简洁就是力量。Python以其优雅和简洁而著称,让开发者能够用更少的代码做更多的事。但这并不意味着功能上的妥协——Python的强大之处在于它允许在一行代码中执行多个语句,这不仅能提高的编码效率,还能使代码更加紧凑和易于阅读。一行代码实现多重操作在Python中,使用分号(;)可以分隔多个语句,这意味着你可以在一行内执行多个
爱情,总是带着一种朦胧的美。它如同一幅未完成的画卷,留白之处让人遐想无限;又似一首未唱完的歌,余音绕梁,回味无穷。在我与她的故事里,最动人的时刻,往往不是那些浓烈的瞬间,而是那些欲语未语、欲见未见的微妙时刻。这些时刻,如同初春的嫩芽,带着最纯粹的生机,让人沉醉。那是一个初秋的傍晚,微风带着些许凉意,吹散了白日的喧嚣。我独自一人走在回家的路上,耳机里播放着一首老歌,歌声在耳边轻轻回荡。街边的梧桐树已
# 如何在 Android 中实现阿拉伯语文本的超出一行显示在 Android 应用的开发中,处理不同语言的文本显示是一项重要的任务。特别是对于阿拉伯语等从右到左的语言,其文本显示的方式可能会与其他语言有所不同。在本教程中,我们将探讨如何在 Android 应用中实现阿拉伯语文本的“超出一行”显示,并确保其能够正确地显示。## 整体流程我们将通过以下步骤实现目标。下面是详细的步骤流程表
# 实现 Android 应用的阿拉伯语支持在这篇文章中,我们将学习如何在 Android 应用中实现阿拉伯语支持。随着全球化的加速,支持多语种变得越来越重要,阿拉伯语用户是一个庞大的群体,合理的本地化能提升用户体验。我们将分步进行,最终实现阿拉伯语的本地化功能。## 全部流程概述下面的表格展示了实现阿拉伯语支持的主要步骤:| 步骤 | 描述
前面刷过一个题,关于罗马字和阿拉伯数字转换 最近在看《算法的乐趣》王晓华著,其中的“阿拉伯数字和中文数字”。这篇也是自己学习记录下。阿拉伯数字转中文数字 具体的思路可以参考书中的段落,文章中只说重点的地方。中文数字中0的表述比较复杂,总结起来为一下三点:以 10000 为小节,小节的结尾即使是 0 ,也不使用 “零”。例如:60000,6万小节内(一个小节为 4 位数)两个非 0 数字之间要使用“
根据《算法的乐趣》简单总结一下:中文数字的特点中文数字直接“数字+权位”的方式组成数字,比如阿拉伯数字100,中文表示为一百,其中“一”为数字,“百”为权位。常用的数字权位有“十”,“百”,“千”,“万”,“亿”等中文数字的权位和小节 中文数字的特点之一就是每个计数数字都跟着一个权位,这个权位就是数字的量值,相当于阿拉伯数字中的数位。最低位(个位)没有权位,也可以理解为权位为空 中文数字的另一个特
这是一篇记录了我们把一大段 Python/Cython 代码迁移到 Go语言经历的(长)博客。如果你希望了解整个故事、背景等所有的内容,请接着读。如果只对 Python 开发者进入之前需要知道的东西感兴趣,点击下面的链接:从 Python 迁移到 Go 的提示与技巧背景 我们在 Repustate 技术上最大的成果就是实现了阿拉伯语情感分析。阿拉伯语真是一个难啃的骨头,它的单
作为阿拉伯民族的母语,阿拉伯语属于闪含语系-闪米特语族,它的使用者占世界人口的6%,而且阿拉伯语有一点不同于其他语言,那就是它的书写习惯是从右至左书写,主要通行于西亚和北非。在中世纪的数百年期间,阿拉伯语曾是整个中东和西方文明世界学术文化所使用的语言之一,在西欧的语言中至今仍有许多阿拉伯语词汇,足以说明阿拉伯语对人类文明所产生的影响和推动作用。随着我国在国际政治,经济,文化方面和阿拉伯民
我记得以前在微软面试程序员的时候,面试官问怎么样去显示一个阿拉伯的网页。我们知道阿拉伯的网页的显示方法是从右到左,向右对齐的。由于当时没有接触到这种页面,真的不知道该怎么去实现。今天,终于知道了(太惭愧了,这么晚才知道),不过还是拿出来秀一下,不足地方,请高手指点。在中国一般使用的是中文或者英文的操作系统,要实现显示阿拉伯语的网页,就需要我们创建支持双向语言的Web应用程序。1、要实现显示阿拉伯语
背景公司项目需支持多种语言,其中包含阿拉伯语,而阿拉伯语适配是一个比较麻烦的事情,不止在于它的文案的适配,更多的是在于其语言习惯的变化。可以使用手机切换为阿拉伯语,看到手机界面整个都反向显示了,由从左到右的布局习惯变成了从右到左的布局习惯针对ios9之后的RTL(RightToLeft简称RTL)适配,苹果有一个官方文档教你怎么适配定制RTL当系统语言切换成RTL语言(阿拉伯语)后,如果App支持
我们经常在文本检查的时候要查找其中的数字,但是可能文本是中文数字字符串“两亿三千万”等等,但是要转化为阿拉伯数字才能被程序识别,本文提供了一种将中文或者英文转化为阿拉伯数字的一种方法。 其实中文和英文只是我只知道这两种语言,但是从程序设计的角度来看,该方法是用于多种语种,只要将数据库配置好即可 中文转化为阿拉伯数字: 可以通用于不要分隔符区分单词的语种 ,例如 中文、日文、韩文等(
前言最近做了阿拉伯语的语言适配。记录一些比较麻烦的点。其实我也没太明白具体和其他语言有什么不同,唯一听懂的就是他们的语序是从右往左的(比如“你好!”,他们的阅读顺序是“!好你”)大概是这样子,具体原理也有很多大神在解释。但可能我没天赋,看的懵懵懂懂索性不去过分理解了。直接用按大神分享的插件就好了。插件用了前辈们都推荐的插件Arabic Support for Unity,免费的。没什么可说的。就一
国内因为版号的问题,导致很多游戏厂商选择出海。在国际化的市场要想取得好的成绩,就必须要做好深度的本地化,其中最基础的一块就是语言。为了给用户提供更好的游戏体验,通常用户第一次进游戏的时候,会根据用户当前设备设置里所选择的语言来设置游戏的默认语言。 通常系统返回的是 语言-国家/地区标识,如 ja-jp,日语-日本。en-us,英文-美国。当然还有比如 en-CA,英文-加拿大
阿拉伯语:背景:阿拉伯语使用者占世界人口的6%,使用阿拉伯字母,为从右至左书写的文字,主要通行于18个阿拉伯国家及4个国际组织的官方语言。以阿拉伯语作为母语的人数超过2.6亿人。阿拉伯语在全球范围使用者总计目前已经突破4.4亿人。语言特点:是由28个辅音字母和12个发音符号(不包括叠音符)组成的拼音文字。书写顺序从右往左横行书写,翻阅顺序也是由右往左。左右的相互调换,使用系统提供的方法(RTL仅支
维语输入法电脑版是一款专业可靠的维语输入以及学习维语软件,维语输入法官方版内置专业的维语编辑器及代码编辑器,还提供了16种维哈柯印刷字体,帮你顺利进行编排书刊杂志、制作电子表格、网页设计等工作,维语输入法电脑版是Windows第一个维吾尔文字体和输入法,适合各行各业使用。相似软件版本说明软件地址1.6.202.05 官方版查看1.0 官方版查看维语输入法软件简介维语输入法简称“维语输入法”。维语输
Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au1.1. Overview概论支持母语优先的战略性产品,主要是针对不想以及不愿使用普通话拼音方案的输入法的时候,就需要有一个自己方言的输入法。现有输入法绝大部分都是基于普通话语言拼音实现的,少部分得到广泛应用的方言输入法是粤语输入
uygurqaapp是款使用的维汉语输入法软件,这可不是一个简单输入法软件,大家在软件的使用中,能够很好地把握这款热软件的使用,同时也是大家在软件的使用中,能够更好地把握这款热软件的效果,这款软件的切换效果都是大家在使用时,能够即时搞定的,同时也是能够帮助大家巧妙的进行语音识别输入的输入法软件,这款软件的使用效果,能够很好地保证在使用输入法的过程中,找不到合适自己的输入法而烦恼。软件介绍Uyghu
目录 一、使用场景 二、语言背景 三、环境搭建 四、程序结构 五、代码一、使用场景公司一直以点阵屏显示为业务。最近希望替换原有的点阵字库,转用FreeType渲染矢量字形,且需要支持阿拉伯语。验证可行性阶段因为python的各种库用起来相当舒服,所以就先用Python进行验证,通过后再转C++实现。二、语言背景阿拉伯语与常规语言不同,它属于复杂文本语言。它有以下3个特点: 1.阅读顺序从右往左 2
通用文字识别一般这个功能用于多场景、多语种、高精度的整图文字检测和识别服务。好一点的文字识别可识别中、英、日、韩等20种语言。 具体也看场景,对于个人来说就是个翻译。 就比如现在微信上有扫一扫翻译的功能。 给个图识别图上的文字; 给个英文翻译成中文等等。当然每个产品也分精细度,一般的功能如下:高精度版在通用文字识别(标准版)的基础上,提供更高精度的识别服务,支持更多语种识别(丹麦语、荷兰语、马来语
MacBook 上搭建了 Python 开发环境,并运行了第一个 Python 程序,接下来可以继续探索Python的语法以及丰富的生态系统。
第二步:配置 Logstash(接收 Filebeat 日志,处理后发送到 Elasticsearch) 1. 创建 Logstash 管道配置文件 进入 Logstash 安装目录的 config 文件夹(如 C:\logstash-9.2.1\config),新建一个文件 springcloud ...
B. [POI2011] SEJ-Strongbox 2025noip模拟赛73 B Code #include<bits/stdc++.h> #define int long long #define il inline #define pb push_back using namespace s ...
关于 DeepSeek-OCR 猜想
在政务迈向数字化的大背景下,电子证照系统可算是 “数字政府” 建设的重头戏。这套系统对提高政务服务效率、减轻老百姓办事负担特别重要。但长期以来,很多电子证照系统都依赖 MongoDB 这类国外数据库,现在慢慢遇到了三个麻烦事儿:一是技术生态可能受外部影响,有潜在风险;二是碰上大量并发请求时,性能跟不上;三是大规模转移数据的时候,保障措施不到位。所以说,把电子证照系统换成国产的,已经成了保证政务体系自主可控、进一步提升服务效果的必答题。