问题:在 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

最新文章

  1. 处理数组的forEach map filter的兼容性
  2. GridView里做页面的链接
  3. C语言动态内存分配
  4. 如何进行oracle capability i/o(压力测试数据库服务器i/o性能)
  5. DDL、DML和DCL的理解
  6. Node.js开发环境介绍-调试工具
  7. RH033读书笔记(13)-Lab 14 Network Clients
  8. OMCS开发手册(02) -- 多媒体连接器
  9. (译)Windsor入门教程---第四部分 整合
  10. 一个web应用的诞生(10)--关注好友
  11. redis_简单动态字符串
  12. P2347 砝码称重 (01背包)
  13. Linux记录-重启后磁盘丢失问题解决方案
  14. [No000011A]Office Excel设置显示日期与星期
  15. python IOError: [Errno 22] invalid mode (&#39;r&#39;) or filename:
  16. python 问答
  17. weat!!团队
  18. FPGA学习笔记. 二分频和三分频
  19. 限定某个目录禁止解析php 限制user_agent php相关配置
  20. 基础邮件原理(MUA,MTA,MDA)

热门文章

  1. 将DataTable中的某列转换成数组或者List
  2. 【从零开始学BPM,Day2】默认表单开发
  3. BPM配置故事之案例4-子表
  4. 敏捷转型历程 - Sprint4 回顾会
  5. docker4dotnet #2 容器化主机
  6. C++常考面试题汇总
  7. Xamarin.Android之ActionBar与菜单
  8. .NET深入实战系列—Linq to Sql进阶
  9. React-Native 动画优化
  10. a different object with the same identifier value was already associated with the session: