首先,请看Text Rendering文章。
文本呈现是将字符串转换为用户可读格式的过程。
现在是2020年,而Unity还不支持RTL复杂脚本语言。因此,我希望自己将文本渲染到最终结果中。显然,渲染文本比编写文本要在更高级别上完成。让我举一个例子:
U+0633 =〉空气
U+0633 U+0633 =〉小囊(原始字符串)
你可以看到有两个相同的字符,但如果你在窗口中输入它们,它们呈现不同的形状。实际呈现的字符是:
U+ FEB 3 U+ FEB 2 =〉(渲染字符串)
正如您所看到的,这两个字符代码都不同于它们所键入的内容(如果您仔细观察,它们实际上是不同的字符),但您看到的结果是相同的,因此在中间有一个API可以正确呈现文本。根据Microsoft Text Rendering文章,通常文本以原始格式存储,并在显示时呈现。
**问:**在C#(.Net Framework)中是否有一种简单的方法可以将原始字符串转换为呈现的字符串?
示例:是否有一个函数可以将“U+0633 U+0633”转换为“U+ FEB 3 U+ FEB 2”?它可能与“Uniscribe”或DirectWrite”功能类似,我需要将键入的内容转换为看到的内容!!!
附言:
1-我知道一些Unity资产可以做到这一点。但是他们写了很多年的所有系统都可以使用的东西,他们并不完整和健全。我喜欢用完整和健全的OS渲染器来做。
2-我想,如果它是这么容易,统一开发人员将使用它。所以,如果没有一个直接的方式,请简单地说,没有这样的事情。
谢谢你!
2条答案
按热度按时间9rnv2umw1#
对于RTL语言,可以使用RTL Text Mesh Pro。
通过这个插件,你可以在编辑器中显示你的波斯语,阿拉伯语或任何RTL语言,或者直接从脚本中传递一个变量。
qpgpyjmq2#
我已经为编辑器创建了一个免费的软件包。也许它可以帮助。你可以翻转文本RTL,然后复制并粘贴到任何你喜欢的地方,或者你可以使用函数SwitchRTL(“文本翻转”);从运行时脚本如果您希望从脚本执行此操作,只需包含运行时脚本,以便可以在您自己得脚本中使用它.
链接如下
https://assetstore.unity.com/packages/tools/utilities/right2left-232988