2017-08-18 10 views
0

Androidの標準絵文字(画像の最初の黄色の絵文字)を取得する最適な方法は何ですか?絵文字が異なる色で表示される可能性がある場合(iOS絵文字)その理由は、Androidには色の付いた絵文字がないからです。JavaScript iOSとAndroidのクロスプラットフォームの絵文字

enter image description here

アンドロイドのすべての絵文字少ない最初の一つを示します「か」シンボル。

JavaScriptでemojisを解析する必要がありますが、適切なライブラリが見つかりませんでした。たぶんこれを解決する置換関数があります。

+0

私がしたいことはiOSの中で、私は(色の絵文字をサポートしていない)ことができない色とAndroidで見ることができるので、黄色のいずれかに着色された絵文字を変換することで、回避策は黄色のものを見ることです。 – gusgard

答えて

1

Emojis

まず、絵文字が何であるかを理解しましょう。絵文字は、Unicodeで実装されているので、多くの文字の組み合わせです。たとえば、「光肌色男性すくめ絵文字は」実際には次の5文字を​​組み合わせている:

0x1f937 0x1f3fb 0x200d 0x2642 0xfe0f 

- 0x1f937: Person Shrugging 
- 0x1f3fb: Light skin tone 
- 0x200d: Zero width joiner  (Used to combine two characters, in this case 
           the Light skin tone Person shrugging and the 
           male sign.) 
- 0x2642: Male sign 
- 0xfe0f: Variation selector-16 (Used to indicate an Emoji) 

UnicodeをJavaScriptで

グッドニュースは、我々は単に肌のトーンなしバージョンを取得する0x1f3fbを削除することができ、あります。悪いニュースは、しかしである、それはそれはsurrogate pairが何であるかを知らないので間違っている代わりに

0xd83e 0xdd37 0xd83c 0xdffb 0x200d 0x2642 0xfe0f 
└───────── Uh oh ─────────┘ 

として表示されますので、JavaScriptは、UTF-16をサポートしていません。正しいコードポイントを計算するには、UTF-16 standardを参照し、必要な修正を加えなければなりません。幸い、someone else already did the hard work、ここでは、私は、適切なUTF-16に文字列を変換すると、私はしたくない部分を削除しています:

// Defines the range of skin tone modifiers 
var modifiersMin = 0x1F3FB, modifiersMax = 0x1F3FF; 

// Emoji with U+1F3FB "light skin tone" modifier combined with "male sign" 
var string = new UnicodeString("‍♂️"); 

// Removes the modifier 
string = new UnicodeString(string.codePoints.filter(c => { 
    return c < modifiersMin || c > modifiersMax; 
}); 

alert(string.toString()); 

あなたがここにアクションでそれを見ることができます。https://jsfiddle.net/DerekL/b5848tor/

今では、あなた絵文字の仕事は、あなたもこれを行うことができます方法を理解:それはその背後にある概念を理解せずに動作する理由もはるかに高速ではなく、正確には明らかに動作し

// The replace function that you would like 
var skinToneModifiers = new RegExp("\ud83c[\udffb-\udfff]", "g"); 
var string = "‍♂️"; 
// Remove skin tone modifier 
string = string.replace(skinToneModifiers, ""); 

を。

が行動でそれを参照してください:https://jsfiddle.net/DerekL/sn4n689r/

関連する問題