我正在 Delphi 10.4中为Android移动的开发一个应用程序。我在应用程序中使用Unicode Devnagari字体(尼泊尔语),在Windows上运行时显示正确。但在Android手机上部署时显示不正确,如下所示。
我希望TEdit
中的文本像一样,在桌面上的设计时和运行时都能正确显示,但当我在Android Samsung m 52上部署它时,它会显示为
它发生在TEdit
、TLabel
、TMemo
控件中。
当我将错误的文本从我的应用程序复制到Messenger时,短信会正确显示。如果我将正确的文本复制到我的应用程序中,它会转换为
我已经在部署中部署了适当的字体,但它没有解决这个问题。我只在我的应用程序中看到移动的设备上的这个问题。
如何在Android设备上显示“低”而不是“低”
1条答案
按热度按时间swvgeqrz1#
这是FireMonkey中的已知问题,报告为:移动的平台https://quality.embarcadero.com/browse/RSP-27872上RTL文本的不正确呈现
虽然该报告是针对从右到左的语言,但问题的原因似乎是在某些平台上,如Android和iOS,FireMonkey逐字符绘制文本,这会破坏需要连字才能正确显示的文本。
对于某些控件,如
TEdit
,解决方案是将ControlType
属性设置为Platform
,而不是使用默认Styled
选项。遗憾的是,该解决方案并不适用于所有FMX控件。由于平台控件知道如何正确地绘制带有连字的文本,因此其他控件的一个可能的解决方案是为每个平台上的本机平台控件实现 Package 器。
TEdit
的FireMonkey代码提供了如何实现这一点的见解。