首页 文章 精选 留言 我的

精选列表

搜索[自动化研究],共10000篇文章
优秀的个人博客,低调大师

android中阿拉伯文研究

阿拉伯語系在文字處理上是我目前所知道最複雜的。阿拉伯文一些獨有的特性,導致其文字儲存時的編碼或在記憶體的原始 Unicode characters 序列,跟最後螢幕上看到的有很大的差異。 兩者最大的差異有: 順序不同 阿拉伯文的書寫(或顯示)順序是由右向左的 阿拉伯文字元序列間如果有數字或英文等左邊開始書寫的文字,這些左向右寫的文字,呈現時不能跟著阿拉伯字一起字序倒轉 單一字元最後顯示的形狀也不同 字型檔處理上,會針對最後螢幕上呈現的字元給與另一套獨立的編碼 這個獨立編碼,根據最新的 Unicode 標準,是不規範的,也就是由字型檔的創造者自行處理,可參考Generating Arabic Fonts 不過為了相容,Unicode 還是保留一組編碼作為這個用途,例如阿拉伯語專用的 Arabic Presentation Forms-B ,可參考Arabic characters in Unicode 可參看Arabic: 'source' Unicode to final display Unicode - Stack Overflow 阿拉伯文字,從記憶體中原始 Unicode 順序(memory representation in logical order),到最後螢幕呈現的結果(glyphs arrangement in visual order),中間的整個處理流程叫作造形(shaping),一般是顯示時由 rendering engine 處理的。 Arabic Shaping 可以區分成下列五部分: 書寫連接(Arabic Cursive Joining) 阿拉伯文只有書寫體(沒有印刷體或標準體),即使是印刷在紙上,或顯示在電腦上,都得考慮草寫連接問題 連接時,每個字元會因兩旁字元不同,而有不同形狀(glyphs),以應付不連,右連,左連,双連等情況 形狀重塑(Arabic Ligatures) 除了連接需求外,一些連續的特定兩個字元,會結合(ligature)成另一種形狀(glyph) 記號標注(Combining Marks) 用來標注重音等等 字序重排(Reordering) 處理右到左的書寫,及混合左到右書寫的情形 鏡像矯正(Mirroring) 針對大於小於及括號等因左右方向不同而有不同意義的字元作修正 前三者要依序處理。字序重排及鏡像矯正可以最先處理或最後處理,但會因先後處理不同會影響到前三項處理的細節。完整的字序重排及鏡像矯正說明可以參閱UAX #9: Unicode Bidirectional Algorithm。 網路上可以找到的 source code 如下: Arabic Support for Windows CE How to support Arabic text in Android? - Stack Overflow harfbuzz-arabic.c 其中, Android 版是 CE 版的改寫,但這兩支程式都有個問題,就是沒考慮到 Combining Marks ,遇到 Transparent Joining Types 的字元時,就會出錯,這很容易遇到。第三支程式應該比較完整,但它太龐雜了,有耐心的話可以慢慢啃 。建議直接參考Unicode6.1.0/ch08.pdf的 8.2 Arabic 這個章節,針對會遇到的部份,自己重寫比較直接。 如果要處理的文字只有阿拉伯語(不含其他阿拉伯語系的文字,例如波斯、埃及等),那只要處理 Arabic Block 中,也有在ISO/IEC 8859-6列出的部份。對應的 glyphs 都可以在 Arabic Presentation Forms-B 找到。 要完整處理整個阿拉伯語系,那勢必得直接採用下列資料: ArabicShaping.txt DerivedJoiningGroup.txt DerivedJoiningType.txt 其他值得參考的資料如下: Template:Arabic alphabet shapes/joining What you need to know about the bidi algorithm and inline markup Right-To-Left Text in Markup Languages 本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/1230808 ,如需转载请自行联系原作者

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册