[修正] Firemonkey 中英文混排折行问题(移动平台)

Posted 龟山Aone

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[修正] Firemonkey 中英文混排折行问题(移动平台)相关的知识,希望对你有一定的参考价值。

问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题。

修正:这个修正适用在任何文字显示的函数及控件上,如:TText, TLabel, DrawText....等。

适用:android & ios 平台

 

修正 1:提供二种折行方式(只能选择一种方式)

  1. 中英文混排折行
  2. 单字符折行
请将源码 FMX.TextLayout.GPU.pas 复制到自己的工程目录里,再进行修改。
找到代码:
while (WordBeginIndex > LRun.StartIndex) and (Text.Chars[WordBeginIndex - 1].GetUnicodeCategory <> TUnicodeCategory.ucSpaceSeparator) do

折行方式1:中英文混排折行(此种折行方式,才是跨所有平台都相同的折行方式)
while (WordBeginIndex > LRun.StartIndex) and not (Text.Chars[WordBeginIndex - 1].GetUnicodeCategory in [TUnicodeCategory.ucSpaceSeparator, TUnicodeCategory.ucOtherLetter]) do

折行方式2:单字符折行
while (WordBeginIndex > LRun.StartIndex) do
中英文混排折行:未修正 中英文混排折行:修正后 单字符折行

修正 2:修正显示省略字符 2017/01/11 

显示省略字符:修正前 显示省略字符:修正后 对照 Windows

修正 3:修正首字避开标点字符 2017/01/13

首字避开标点字符:修正前 首字避开标点字符:修正后 左括号,右引号允许在首字
右括号,右引号其它標點允许在首字

由于改动地方较多,请下载后将 FMX.TextLayout.GPU.pas 复制到自己的工程目录里即可。

修正下载:

官方 QC:https://quality.embarcadero.com/browse/RSP-16590

以上是关于[修正] Firemonkey 中英文混排折行问题(移动平台)的主要内容,如果未能解决你的问题,请参考以下文章

[修正] Berlin Firemonkey Windows 控件左方显示虚线问题

[修正] Firemonkey Android 文字斜粗体显示不全的问题

[修正] Firemonkey Android Edit 可输入 Emoji (颜文字)

[修正] Firemonkey Windows & macOS 平台下 Edit & Memo 中文输入后会取消原选取文字的 BUG

[原创] Firemonkey 解决 Canvas 几何绘图质量问题(移动平台)

android textview 自动换行 整齐排版