[修正] Firemonkey Android 顯示 Emoji (顏文字)

来源:http://www.cnblogs.com/onechen/archive/2016/11/18/6079080.html
-Advertisement-
Play Games

問題:在 Android 平臺下,顯示 Emoji 文字,無法顯示彩色(皆為黑色),例如 Edit 控制項,即使將 Edit.ControlType = Platform 設為平臺原生控制項,還是沒用(真機測試 Edit.ControlType 設定為 Style 與 Platform 是一樣的,而 i ...


問題:在 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 := 0 to LRun.Chars.Count - 1 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 = $2139) or ((Char >= $2194) and (Char <= $2199)) 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 = $2600) or (Char = $2601) or (Char = $260E) or (Char = $2611) or (Char = $2614) or (Char = $2615) or (Char = $261D) or (Char = $263A) or ((Char >= $2648) and (Char <= $2653)) or (Char = $2660) or (Char = $2663) or (Char = $2665) or (Char = $2666) or (Char = $2668) or (Char = $267B) or (Char = $267F) or (Char = $2693) 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 = $2702) or (Char = $2705) or ((Char >= $2708) and (Char <= $270F)) or (Char = $2712) or (Char = $2714) or (Char = $2716) or (Char = $2728) or (Char = $2733) or (Char = $2734) or (Char = $2744) or (Char = $2747) or (Char = $274C) or (Char = $274E) or ((Char >= $2753) and (Char <= $2755)) or (Char = $2757) or (Char = $2764) or ((Char >= $2795) and (Char = $2797)) or (Char = $27B0) or (Char = $27BF) or (Char = $2934) or (Char = $2935) or ((Char >= $2B05) and (Char = $2B07)) or (Char = $2B1B) or (Char = $2B1C) or (Char = $2B50) or (Char = $2B55) or (Char = $3030) or (Char = $303D) or (Char = $3297) or (Char = $3299); {<+++} ...略... end;

 

效果:

 

官方相關 QC:

https://quality.embarcadero.com/browse/RSP-9899


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • php的socket編程算是比較難以理解的東西吧,不過,我們只要理解socket幾個函數之間的關係,以及它們所扮演的角色,那麼理解起來應該不是很難了,在筆者看來,socket編程,其實就是建立一個網路服務的客戶端和服務端,這和mysql的客戶端和服務端是一樣的,你只要理解mysql的客戶端和服務端是 ...
  • 最近在開發一個jsp學生信息管理系統,由於剛剛接觸jsp,遇到問題比較多,特此記錄與大家分享。 Jquery ajax提交表單到servlet示例 前臺部分代碼: ajax提交表單代碼: web.xml配置代碼: addStudents.java代碼(採用POST提交方式): ajax提交表單 通過 ...
  • 從根本上講,Python是一種面向對象的語言。它的類模塊支持多態,操作符重載和多重繼承等高級概念,並且以Python特有的簡潔的語法和類型,OOP十分易於使用。Python的語法簡單,容易上手。 Python程式可以分解成模塊、語句、表達式以及對象。1.程式由模塊構成。2.模塊包含語句。3.語句包含 ...
  • 2.1上傳 2.2解壓jdk #創建文件夾 mkdir /usr/java #解壓 tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/ 2.3將java添加到環境變數中 vim /etc/profile #在文件最後添加 export JAVA_HO ...
  • 前面幾篇講解瞭如何使用rabbitMq,這一篇主要講解spring集成rabbitmq。 首先引入配置文件org.springframework.amqp,如下 一:配置消費者和生成者公共部分 二:配置生成者 三:生產者程式 其中convertAndSend方法預設第一個參數是交換機名稱,第二個參數 ...
  • 今天我們來探索python中大部分的異常報錯 首先異常是什麼,異常白話解釋就是不正常,程式裡面一般是指程式員輸入的格式不規範,或者需求的參數類型不對應,不全等等。 打個比方很多公司年終送蘋果筆記本,你程式話思維以為是(MAC)電腦筆記本,結果給你個蘋果+筆記本。。。首先類型不對,數量也不對。 先來看 ...
  • 》JavaAPI 文檔註釋可以在:類,常量,方法上聲明 文檔註釋可以被javadoc命令所解析並且根據內容生成手冊 1 package cn.fury.se_day01; 2 /** 3 * 文檔註釋可以在:類,常量,方法上聲明 4 * 文檔註釋可以被javadoc命令所解析並且根據內容生成手冊 5 ...
  • 一、算數運算符和算術表達式 +加 a+b -減 a-b *乘 a*b /除 a/b %取模 a%b **求冪 a**b 二、關係運算符和關係表達式 < ,<=,>,>=,==,!=其中< ,<=,>,>=,的運算符的優先順序大於==,!= 三、邏輯運算符和邏輯表達式 and 與a and b or 或 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...