问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题。
修正:这个修正适用在任何文字显示的函数及控件上,如:TText,TLabel,DrawText....等。
适用:Android & iOS 平台
修正 1:提供二种折行方式(只能选择一种方式)
- 中英文混排折行
- 单字符折行
(WordBeginIndex > LRun.StartIndex) (Text.Chars[WordBeginIndex - ].GetUnicodeCategory <> TUnicodeCategory.ucSpaceSeparator) 折行方式1:中英文混排折行(此种折行方式,才是跨所有平台都相同的折行方式)
<span style="color: #0000ff">while (WordBeginIndex > LRun.StartIndex) <span style="color: #0000ff">and <span style="color: #0000ff">not (Text.Chars[WordBeginIndex - <span style="color: #800080">1].GetUnicodeCategory <span style="color: #0000ff">in [TUnicodeCategory.ucSpaceSeparator,TUnicodeCategory.ucOtherLetter]) <span style="color: #0000ff">do<span style="color: #000000">
<span style="color: #0000ff">while (WordBeginIndex > LRun.StartIndex) <span style="color: #0000ff">and <span style="color: #0000ff">not (Text.Chars[WordBeginIndex - <span style="color: #800080">1].GetUnicodeCategory <span style="color: #0000ff">in [TUnicodeCategory.ucSpaceSeparator,TUnicodeCategory.ucOtherLetter]) <span style="color: #0000ff">do<span style="color: #000000">
折行方式2:单字符折行
<span style="color: #0000ff">while (WordBeginIndex > LRun.StartIndex) <span style="color: #0000ff">do