[修正] 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 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题. 适用: ...
随机推荐
- 关键帧动画:@keyframes
关键帧动画:@keyframes: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- xss和sql注入原理学习
8.4 Web跨站脚本攻击 8.4.1 跨站脚本攻击的原理(1) 跨站脚本在英文中称为Cross-Site Scripting,缩写为CSS.但是,由于层叠样式表 (Cascading Style ...
- 安卓客户端a标签长按弹框提示解决办法
昨天工作时候发现一个bug,是关于a标签的,在安卓客户端中,如果是a标签的话,长按会出现一个弹框,如图所示 是因为安卓客户端的长按触发机制,以后进行wap端开发的时候,如果用到跳转页面尽量不要用a标签 ...
- git init和git init -bare区别
1 Git init 和 git init –bare 的区别 用"git init"初始化的版本库用户也可以在该目录下执行所有git方面的操作.但别的用户在将更新push上来的 ...
- Oracle补全日志(Supplemental logging)
Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(uni ...
- MySQL 数据库双向同步复制
MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的 ...
- mysql 写入优化
1 主从分离 从表读取,主表可以去掉索引 2 先写入到文件或redis,定时刷新到库 3 用nginx 4 分库 分表 每个库表的数据总量少了 插入会快一点 5 最大限度减少查库的次数 6 一条sql ...
- 为什么 Android Studio 工程文件夹占用空间这么大?我们来给它减减肥
偶然中发现Android Studio的工程文件夹比ADT Bundle的大很多.用Android Studio新建一个空工程,工程文件夹大小为30M,运行一次后大小为40M.同样用ADT Bundl ...
- Merge Sorted Array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
- TCP通信
//网络套接字编程实例,服务器端,TCP通信. #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib") #inc ...