加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[修正] Firemonkey 中英文混排折行,省略字符,首字避开标点

发布时间:2020-12-15 04:38:48 所属栏目:大数据 来源:网络整理
导读:问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题。 修正:这个修正适用在任何文字显示的函数及控件上,如:TText,TLabel,DrawText..

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

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

适用:Android & iOS 平台

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

  1. 中英文混排折行
  2. 单字符折行
(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">

折行方式2:单字符折行
<span style="color: #0000ff">while (WordBeginIndex > LRun.StartIndex) <span style="color: #0000ff">do

中英文混排折行:未修正中英文混排折行:修正后单字符折行 修正 2:

显示省略字符:修正前显示省略字符:修正后对照 Windows 修正 3:2017/01/13

首字避开标点字符:修正前首字避开标点字符:修正后左括号,右引号允许在首字右括号,右引号其它標點允许在首字</tr>
<tr valign="top">
<td><img src="https://www.52php.cn/res/2019/01-12/18/5d19a35fe3dfda708c4cc774e3999d7a.png" alt="" width="211" height="337"></td>
<td><img src="https://www.52php.cn/res/2019/01-12/18/b1ff69d4e4cbc4f6211995df1a593117.png" alt="" width="210" height="336"></td>
<td><img src="https://www.52php.cn/res/2019/01-12/18/50a111c2201642355c388570213d8822.gif" alt=""></td>

</tr>

</table>

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

修正下载:

官方 QC:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!