[修正] Firemonkey Android 显示 Emoji (颜文字)
问题:在 Android 平台下,显示 Emoji 文字,无法显示彩色(皆为黑色),例如 Edit 控件,即使将 Edit.ControlType = Platform 设为平台原生控件,还是没用(真机测试 Edit.ControlType 设定为 Style 与 Platform 是一样的,而 iOS 平台则不同)。
修正方法:
请将源码 FMX.TextLayout.GPU.pas 复制到自己的工程目录里,再进行修改。
procedure TTextLayoutNG.DoDrawLayout(const ACanvas: TCanvas);
var
...略... {+++>}Char: UCS4Char; // 加入此行代码 by Aone (2016.11.18)
begin ...略... for K := to LRun.Chars.Count - do
begin
{+++>} Char := LRun.Chars[K]; // 加入此行代码 by Aone (2016.11.18)
Rec := AddOrGetChar(ACanvas, LRun.Chars[K], CharDic, LRun.Font); ...略... {---> ColoredGlyph := TFontGlyphStyle.ColorGlyph in Rec.Glyph.Style; // 删除此代码
{+++>}
// 加下下列代码 by Aone (2016.11.18),取自: FMX.FontGlyphs.iOS
ColoredGlyph :=
(Char = $10086) or // 追加
(Char = $1F004) or
(Char = $1F0CF) or
(Char = $1F170) or
(Char = $1F171) or
(Char = $1F17E) or
(Char = $1F17F) or
(Char = $1F18F) or
((Char >= $1F191) and (Char <= $1F19A)) or
(Char = $1F201) or
(Char = $1F202) or
(Char = $1F21A) or
(Char = $1F22F) or
((Char >= $1F232) and (Char <= $1F23A)) or
(Char = $1F250) or
(Char = $1F251) or
((Char >= $1F300) and (Char <= $1F320)) or
((Char >= $1F330) and (Char <= $1F393)) or
((Char >= $1F3A0) and (Char <= $1F3F0)) or
((Char >= $1F400) and (Char <= $1F43E)) or
(Char = $1F440) or
((Char >= $1F442) and (Char <= $1F49F)) or
((Char >= $1F4A0) and (Char <= $1F4FC)) or
((Char >= $1F500) and (Char <= $1F53D)) or
((Char >= $1F550) and (Char <= $1F567)) or
((Char >= $1F5FB) and (Char <= $1F64F)) or
((Char >= $1F680) and (Char <= $1F6C5)) or
(Char = $) or
((Char >= $) and (Char <= $)) or
(Char = $21A9) or
(Char = $21AA) or
(Char = $231A) or
(Char = $231B) or
((Char >= $23E9) and (Char <= $23EC)) or
(Char = $23F0) or
(Char = $23F3) or
(Char = $24C2) or
(Char = $25AA) or
(Char = $25AB) or
(Char = $25B6) or
(Char = $25C0) or
((Char >= $25FB) and (Char <= $25FE)) or
(Char = $) or
(Char = $) or
(Char = $260E) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $261D) or
(Char = $263A) or
((Char >= $) and (Char <= $)) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $267B) or
(Char = $267F) or
(Char = $) or
(Char = $26A0) or
(Char = $26A1) or
(Char = $26AA) or
(Char = $26AB) or
(Char = $26BD) or
(Char = $26BE) or
(Char = $26C4) or
(Char = $26C5) or
(Char = $26CE) or
(Char = $26D4) or
(Char = $26EA) or
(Char = $26F2) or
(Char = $26F3) or
(Char = $26F5) or
(Char = $26FA) or
(Char = $26FD) or
(Char = $) or
(Char = $) or
((Char >= $) and (Char <= $270F)) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $) or
(Char = $274C) or
(Char = $274E) or
((Char >= $) and (Char <= $)) or
(Char = $) or
(Char = $) or
((Char >= $) and (Char = $)) or
(Char = $27B0) or
(Char = $27BF) or
(Char = $) or
(Char = $) or
((Char >= $2B05) and (Char = $2B07)) or
(Char = $2B1B) or
(Char = $2B1C) or
(Char = $2B50) or
(Char = $2B55) or
(Char = $) or
(Char = $303D) or
(Char = $) or
(Char = $);
{<+++} ...略... end;
效果:

官方相关 QC:
https://quality.embarcadero.com/browse/RSP-9899
[修正] Firemonkey Android 显示 Emoji (颜文字)的更多相关文章
- [修正] Firemonkey Android 文字斜粗体显示不全的问题
问题:Firemonkey Android 平台显示斜粗体文字时,文字右方会有显示不全的问题. 修正代码: 请将 FMX.FontGlyphs.Android.pas 复制到自己的工程目录下,再修改如 ...
- 使用php-emoji类让网页显示emoji表情
需要的材料: php-emoji类库的下载地址:https://github.com/iamcal/php-emoji 代码示例:(该代码来自官网) <?php include('emoji.p ...
- Android 实现emoji表情的demo
Android 实现emoji表情的例子,网上看到的,记录一下. 请看下图 : 项目下载地址:http://download.csdn.net/detail/abc13939746593/741397 ...
- Android显示GIF图片
今天我们研究一下怎样在Android手机上显示GIF动态图片 首先须要在src文件夹下新建一个自己定义的View.代码例如以下: </pre><pre name="code ...
- 完美解决android显示gif
今天是周5啊.纠结了一天.android显示gif,没该控件 网上找开源项目 找到个viewgif.该作者在各大站点都在推荐自己的项目...好吧.用下吧. . . . 结果呢: 图片略微一大就 内存溢 ...
- 11.1 Android显示系统框架_framebuffer原理及改进
1. Android显示系统框架Android Graphic UI with GPU Hardware Accelerationhttps://community.nxp.com/docs/DOC- ...
- Android 显示系统:SurfaceFlinger详解
一.Android系统启动 Android设备从按下开机键到桌面显示画面,大致过程如下图流程: 开机显示桌面.从桌面点击 App 图标到 Activity显示在屏幕上的过程又是怎样的呢?下面介绍And ...
- 修复Arch Linux和Manjaro Linux无法显示emoji的问题
安装好Arch Linux或Manjaro Linux系统后默认没办法正常显示emoji,通常会变成方框或者带有unicode码的方块: 这是因为缺失字体以及相关的字体配置导致的. 当然也有一小部分应 ...
- [修正] Firemonkey 中英文混排折行问题(移动平台)
问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题. 适用: ...
随机推荐
- C# 泛型
C# 泛型 1.定义泛型类 在类定义中包含尖括号语法,即可创建泛型类: class MyGenericClass<T> { //Add code } 其中T可以遵循C#命名规则的任意字符. ...
- kali linux下的arp攻击
这是我第一篇博客,写的不好请谅解 ____________________________(分割线)_______________________________ 在kali linux系统下自带工具 ...
- Linux基础介绍【第四篇】
Linux文件和目录的属性及权限 命令: [root@oldboy ~]# ls -lhi total 40K 24973 -rw-------. 1 root root 1.1K Dec 10 16 ...
- 机器指令翻译成 JavaScript —— No.6 深度优化
第一篇 中我们曾提到,JavaScript 最终还得经过浏览器来解析.因此可以把一些优化工作,交给脚本引擎来完成. 现代浏览器的优化能力确实很强,但是,运行时的优化终归是有限的.如果能在事先实现,则可 ...
- 深入理解IIS的多线程工作机制
首先让我们来看看IIS里面的这2个数字:最大并发连接数,队列长度.先说这2个数字在哪里看. 最大并发连接数:在IIS中选中一个网站,右键网站名称,在右键菜单中找到并点击[管理网站]->[高级设置 ...
- 云计算之路-阿里云上:“黑色1秒”最新线索——w3tp与w3dt
向大家分享一下最近排查“黑色1秒”问题的进展,“黑色1秒”的问题表现详见什么是黑色1秒. 1. 发生在w3wp进程内 判断依据:“黑色1秒”期间,http.sys的HTTP Service Reque ...
- Spark Shuffle原理、Shuffle操作问题解决和参数调优
摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...
- ASP.net 使用ConfigurationManager获取连接字符串
在解决方案资源管理器里右键单击解决方案选择“添加引用”,并且从 .net 中找到 System.Configuration 引用它 在项目的web.config文件中添加 <connection ...
- Atitti 载入类的几种方法 Class.forName ClassLoader.loadClass 直接new
Atitti 载入类的几种方法 Class.forName ClassLoader.loadClass 直接new 1.1. 载入类的几种方法 Class.forName ClassLo ...
- http程序接口、调用(最入门级,文末附Demo)
HTTP协议简介 既然是基于HTTP协议开发,那么就首先要了解下HTTP协议的相关内容- 在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层.浏览Web时,浏览器通过HTTP ...