我目前正在編寫我自己的DrawTextEx()函數來支持表情符號。使用此功能,每次在文本中找到表情符號時都會調用回調函數,使調用者有機會用圖像替換包含表情符號的文本句段。例如,在文本中找到的Unicode字符0x3DD8 0x00DE在繪製文本時將被替換爲笑臉圖像。其實這個功能工作正常。轉換UTF16中的「HTML實體」表情符號代碼(在C++中)
現在我想在來電方實現一個圖像庫。在我的回調函數中,我收到了一個像0x3DD8 0x00DE的文本段,我的想法是在包含所有Unicode組合的映射中使用此代碼作爲鍵,每個組合都與包含要繪製的圖像的結構鏈接。我在http://emojione.com/developers/網站上找到了一個很好的包裹。本網站上提供的所有軟件包都包含多個文件名,即十六進制代碼。因此,我可以遍歷包中包含的文件,並以自動方式創建我的地圖。
但是,我發現這些代碼是另一個標準的一部分,實際上是一組名爲「HTML實體」的項目,顯然是用於Web開發的,因爲它可以在http://graphemica.com/%F0%9F%98%80網站上看到。因此,爲了能夠使用這些文件,我需要一個解決方案將其名稱中包含的HTML實體值轉換爲UTF16代碼。例如,在上述笑臉的情況下,我需要將0x1f600 HTML實體代碼轉換爲0x3DD8 0x00DE UTF16代碼。
蠻力的方法可能包括編寫一個地圖轉換這些代碼,通過逐個添加它們在我的代碼中的每一個。但是,在最樂觀的情況下,由於Unicode標準包含超過1800個表情符號的組合,我想知道它有一個現有的解決方案,例如已知的API或函數,可以用來完成這項工作。還是有一個已知的伎倆來做到這一點? (如例如 「字符+( 'A' - 'A')」 來轉換大寫字符來降低)
問候