[修正] Firemonkey 中英文混排折行问题(移动平台)
Posted 龟山Aone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[修正] Firemonkey 中英文混排折行问题(移动平台)相关的知识,希望对你有一定的参考价值。
问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题。
修正:这个修正适用在任何文字显示的函数及控件上,如:TText, TLabel, DrawText....等。
修正 1:提供二种折行方式(只能选择一种方式)
- 中英文混排折行
- 单字符折行
请将源码 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 复制到自己的工程目录里即可。
修正下载:
以上是关于[修正] Firemonkey 中英文混排折行问题(移动平台)的主要内容,如果未能解决你的问题,请参考以下文章
[修正] Berlin Firemonkey Windows 控件左方显示虚线问题
[修正] Firemonkey Android 文字斜粗体显示不全的问题
[修正] Firemonkey Android Edit 可输入 Emoji (颜文字)
[修正] Firemonkey Windows & macOS 平台下 Edit & Memo 中文输入后会取消原选取文字的 BUG