问题:在 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 (颜文字)的更多相关文章

  1. [修正] Firemonkey Android 文字斜粗体显示不全的问题

    问题:Firemonkey Android 平台显示斜粗体文字时,文字右方会有显示不全的问题. 修正代码: 请将 FMX.FontGlyphs.Android.pas 复制到自己的工程目录下,再修改如 ...

  2. 使用php-emoji类让网页显示emoji表情

    需要的材料: php-emoji类库的下载地址:https://github.com/iamcal/php-emoji 代码示例:(该代码来自官网) <?php include('emoji.p ...

  3. Android 实现emoji表情的demo

    Android 实现emoji表情的例子,网上看到的,记录一下. 请看下图 : 项目下载地址:http://download.csdn.net/detail/abc13939746593/741397 ...

  4. Android显示GIF图片

    今天我们研究一下怎样在Android手机上显示GIF动态图片 首先须要在src文件夹下新建一个自己定义的View.代码例如以下: </pre><pre name="code ...

  5. 完美解决android显示gif

    今天是周5啊.纠结了一天.android显示gif,没该控件 网上找开源项目 找到个viewgif.该作者在各大站点都在推荐自己的项目...好吧.用下吧. . . . 结果呢: 图片略微一大就 内存溢 ...

  6. 11.1 Android显示系统框架_framebuffer原理及改进

    1. Android显示系统框架Android Graphic UI with GPU Hardware Accelerationhttps://community.nxp.com/docs/DOC- ...

  7. Android 显示系统:SurfaceFlinger详解

    一.Android系统启动 Android设备从按下开机键到桌面显示画面,大致过程如下图流程: 开机显示桌面.从桌面点击 App 图标到 Activity显示在屏幕上的过程又是怎样的呢?下面介绍And ...

  8. 修复Arch Linux和Manjaro Linux无法显示emoji的问题

    安装好Arch Linux或Manjaro Linux系统后默认没办法正常显示emoji,通常会变成方框或者带有unicode码的方块: 这是因为缺失字体以及相关的字体配置导致的. 当然也有一小部分应 ...

  9. [修正] Firemonkey 中英文混排折行问题(移动平台)

    问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题. 适用: ...

随机推荐

  1. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  2. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  3. android绘制圆形图片的两种方式

    看下效果先 下面有完整的示例代码 使用BitmapShader(着色器) 我们在绘制view 的时候 就是小学上美术课 用水彩笔在本子上画画 使用着色器绘制圆形图片最简单的理解方式 就是把bitmap ...

  4. Android listview和gridview以及view的区别

    GridView 可以指定显示的条目的列数. listview一般显示的条目的列数都是一列 如果是列表(单列多行形式)的使用ListView,如果是多行多列网状形式的优先使用GridView andr ...

  5. 编译器开发系列--Ocelot语言1.抽象语法树

    从今天开始研究开发自己的编程语言Ocelot,从<自制编译器>出发,然后再自己不断完善功能并优化. 编译器前端简单,就不深入研究了,直接用现成的一款工具叫JavaCC,它可以生成抽象语法树 ...

  6. 【转】Android开发中让你省时省力的方法、类、接口

    转载 http://www.toutiao.com/i6362292864885457410/?tt_from=mobile_qq&utm_campaign=client_share& ...

  7. nginx代理https站点(亲测)

    nginx代理https站点(亲测) 首先,我相信大家已经搞定了nginx正常代理http站点的方法,下面重点介绍代理https站点的配置方法,以及注意事项,因为目前大部分站点有转换https的需要所 ...

  8. ABP(现代ASP.NET样板开发框架)系列之17、ABP应用层——参数有效性验证

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之17.ABP应用层——参数有效性验证 ABP是“ASP.NET Boilerplate Project (ASP. ...

  9. 【Win 10应用开发】AdaptiveTrigger在自定义控件中是可以触发的

    前些天,看到有网友给我留言,说AdaptiveTrigger在自定义控件(模板化控件)中不能触发.因为当时我正在写其他的代码,就没有去做实验来验证,于是我就给这位网友提了使用GotoVisualSta ...

  10. Jquery 选择器注意的问题--记录(五)

    1. $("p.intro")-> 所有 class="intro" 的 <p> 元素 $("div#intro .head&quo ...