我有一个阿拉伯语字符串。例如:راماتراحيل
在阿拉伯语中,根据字母位置,相同的字母具有不同的字形。 因此,如果是孤立的或初始的,则字母Lam是ل,如果它是内侧的或最终的,则是ل。
当我在char数组中转换原始字符串(.NET)时,所有字符都返回为Isolated。
是否可以拥有实际的字形?
我必须“翻译”阿拉伯语字符并将其发送到设备。所以ل有代码128(例如),而ل有代码129。 翻译表是自定义的。
如何获取char并不重要,在所有情况下它们都以Isolated形式返回:
Dim a As String = "رامات راحيل"
Dim ar As Char() = a.ToCharArray
For Each c As Char In ar
Console.WriteLine(c)
Next
For i As Integer = 0 To a.Length - 1
Console.WriteLine(a.Substring(i, 1))
Next
For i As Integer = 0 To a.Length - 1
Console.WriteLine(a.Chars(i))
Next
我的理解是代码是相同的,但形状是不同的。 见标准杆。上下文整形http://msdn.microsoft.com/en-us/goglobal/bb688137.aspx
答案 0 :(得分:0)
转换为char数组时,您会丢失有关位置的信息。明显的所有字符都是隔离的,因此可以在任何地方使用。有趣的是,对于写作而言,它在这里有所作为(每天学习新东西)。
您有两种选择:
答案 1 :(得分:0)
实际上是来自GDI的GetCharacterPlacement,来自Uniscribe的ScriptShape或来自DirectWrite的IDWriteTextAnalyzer的GetGlyphs将执行此操作。或者,因为这些不仅是字形,而且实际上是阿拉伯语演示范围内的Unicode标准定义的替代字符,您可以简单地制作自己的翻译表,但在确定初始,最终,内侧或隔离时,请注意忽略组合变音符号。 / p>
答案 2 :(得分:0)
这个问题有一个完整的解决方案。它由一个字形定义文件和一个cpp实用程序函数组成,用于使用字符代码
获取实际字形请查找更多详细信息并下载文件from here
答案 3 :(得分:-1)
你应该考虑