[修正] 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里一个很古老的话题了,我们不像美国佬那样游戏里面聊天框就是聊天框,全是文字干干净净,也不像日本人发明了并且频繁地使用颜文字.不管是做论坛.做游戏,必定要实现的一点就是带 ...
随机推荐
- php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
一.场景介绍 最近的一个项目需要用到发布/订阅的信息系统,以做到最新实时消息的通知.经查找后发现了redis pub/sub(发布/订阅的信息系统)可以满足我的开发需求,而且学习成本和使用成本也比较低 ...
- 25_java之Properities集合|对象序列化和反序列化
01Properties集合的特点 * A: Properties集合的特点 * a: Properties类介绍 * Properties 类表示了一个持久的属性集.Properties 可保存在流 ...
- vue设置title和ioc图标
vue设置ioc图标和title 1.ioc图标设置 在根目录中的index.html中引入代码: <link rel="shortcut icon" type=" ...
- leetcode704
public class Solution { public int Search(int[] nums, int target) { var len = nums.Length; ; ; if (t ...
- Django 获取时间 和Linux 本地 系统时间 不一致
问题描述 Django 中获取的本地时间 ,和系统时间不一致 错误原因 Django在配置文件settings.py 中 默认配置 UTC世界标准时间,而北京时间是东八区,比UTC时间早8个小时. T ...
- Python基础学习九 数据库备份
class BakDb(object): def __init__(self,ip,username,passwd,port=3306,path=r'C:\Users\BJQT\Desktop\dat ...
- mybatis与springdata的一些简单比较与思考
主题 最近在用mybatis做项目,有一些感触想记录下,主要是mybatis(以及它的一些插件)相比较于Spring data(或者jpa,hibernate等)的优势地方. 感触 我觉得mybati ...
- 【转】运输层TCP协议详细介绍
TCP是TCP/IP协议族中非常复杂的一个协议.它具有以下特点: 1:面向连接的运输层协议.在使用TCP协议之前,首先需要建立TCP连接.传送数据完毕后,必须释放已经建立的TCP连接. 2:一条TCP ...
- SPI子系统分析之一:框架
内核版本:3.9.5 SPI子系统概述: 一个SPI主控制器对应一条SPI总线,当然在系统中有唯一的总线编号. SPI总线上有两类设备: 其一是主控端,通常作为SOC系统的一个子模块出现,很多嵌入式M ...
- C#使用NPOI导出excel设置单元格背景颜色
ICellStyle cellStyle = workbook.CreateCellStyle(); cellStyle.FillPattern = FillPattern.SolidForegrou ...








