[修正] Firemonkey 中英文混排折行,省略字符,首字避开标点
问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题。
修正:这个修正适用在任何文字显示的函数及控件上,如:TText, TLabel, DrawText....等。
适用:Android & iOS 平台
修正 1:提供二种折行方式(只能选择一种方式)
- 中英文混排折行
- 单字符折行
请将源码 FMX.TextLayout.GPU.pas 复制到自己的工程目录里,再进行修改。
找到代码:
while (WordBeginIndex > LRun.StartIndex) and (Text.Chars[WordBeginIndex - ].GetUnicodeCategory <> TUnicodeCategory.ucSpaceSeparator) do 折行方式1:中英文混排折行(此种折行方式,才是跨所有平台都相同的折行方式)
while (WordBeginIndex > LRun.StartIndex) and not (Text.Chars[WordBeginIndex - ].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 中英文混排折行,省略字符,首字避开标点的更多相关文章
- [修正] Firemonkey 中英文混排折行问题(移动平台)
问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题. 适用: ...
- android 首字母迷糊查询 拼音查询 中英文混排查询
对于这个问题,还没有动手去做,暂且查了查资料,把思路记录下来: 1. 数据库保存拼音+汉字.在插入数据库的时候将这些信息保存下来,将来可以进行首字母模糊查询,拼音查询,中英文混排查询(参考手机通讯录数 ...
- 中英文混排网站排版指南 All In One
中英文混排网站排版指南 All In One 排版 数字与单位 正确 5G 的下载速度可以达到 1Gbps,4G 为100Mbps 1Gbps === 1000Mbps 错误 5G的下载速度可以达到1 ...
- php简简单单搞定中英文混排字符串截取,只需2行代码!
提到中英文混排计数.截取,大家首先想到的是ascii.16进制.正则匹配.循环计数. 今天我给大家分享的是php的mb扩展,教你如何轻松处理字符串. 先给大家介绍用到的函数: mb_strwidth( ...
- 图片文字混排的垂直居中、inline-block块元素和行内元素混排的垂直居中问题
图片.文字混排: 不管图片和文字的前后位置,都要给 图片 设置 vertical-algin,而不是谁在前面给谁设置. 此方法兼容IE7+ 和其它主流浏览器.IE7-没有测. inline-block ...
- AS3聊天单行输入框图文混排完美实现
几年前刚毕业.第一个游戏模块做的就是聊天.到如今.几个游戏写过几次聊天模块. 之前在4399做的<幻龙骑士>(又名<神骑士>),还有上周六刚上线的<疯狂的子弹>, ...
- 纯 CSS 自定义多行省略:从原理到实现
文字溢出怎么展示,你的需求是什么?单行还是多行?截断,省略,自定义样式,自适应高度?在这里你都能找到答案.接下来我会由浅入深,从原理到实现,带你一步步揭开多行省略的面纱.我们先从最简单的单行溢出省略开 ...
- 用NSAttributedString实现简单的图文混排
iOS7以后,因为TextKit的强大,可以用NSAttributedString很方便的实现图文混排(主要是利用了NSTextAttachment). 关于Textkit的牛逼之处,可以参考objc ...
- 【转】关于FLASH中图文混排聊天框的小结
原文链接 图文混排也是FLASH里一个很古老的话题了,我们不像美国佬那样游戏里面聊天框就是聊天框,全是文字干干净净,也不像日本人发明了并且频繁地使用颜文字.不管是做论坛.做游戏,必定要实现的一点就是带 ...
随机推荐
- azkaban平台的使用
最近接触一些大数据的测试,有些hadoop/spark任务在服务器测试不太方便,会放到azkaban上跑 简单写下azkaband的使用流程:包括任务的上传和提交任务到hadoop集群 一 登陆azk ...
- Drools简单例子
转自:http://www.blogjava.net/diggbag/articles/359347.html 1.Drools简单例子 首先是搭建一个可供进行Drools开发的框架.Jboss官方推 ...
- [Z] 将samba共享文件夹映射到linux的目录下
Linux系统下访问远程共享资源 使用mount加载共享目录: -把WinXP机器192.168.16.249上的共享目录test001映射到本地目录/wdl/下. -把Linux机器192.168. ...
- 爬虫中urllib库
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- leetcode382
/** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNo ...
- delphi BLE 后台
http://codeverge.com/embarcadero.delphi.ios/
- Spring3X升级到Spring4X时,出现的问题
1.1.异常描述 Description Resource Path Location Type Class 'org.springframework.http.converter.json.Mapp ...
- T-SQL 之 执行顺序
1.sql查询语句的处理步骤,代码清单 --查询组合字段 (5)select (5-2) distinct(5-3) top(<top_specification>)(5-1)<se ...
- GameObject.Active
[GameObject.Active] 用于控制一个对象是否激活,一个对象激活当且本身active=true,并且它的父结点也都active.相当API有: 1)GameObject.SetActiv ...
- Python中的try...except...finally
Python的异常处理代码格式如下: try: // do something except Exception as e: // dual with exception finally: // fi ...