iOS 8.3 から、肌の色を5種類から指定可能な絵文字 (Unicode 8.0 の仕様案らしい) が使えるようになった。

iOS 8.3 から絵文字の肌色を指定できるようになった
nilog: iOS 8.3 の絵文字。 (2015-04-10)

Java のプログラムを書いて、この絵文字の中身 (コードポイントなど) を調べてみた。

以下、 Java で絵文字の中身を調べるプログラム (String#codePointAt のところが単純に2つとびになっているのは実装方法がわからなかったから)。


public class Emoji83 {
 
  public static void main(String[] args) {
    test("A");
    test("👶"); // default
    test("👶🏻"); // TYPE-1-2
    test("👶🏼"); // TYPE-3
    test("👶🏽"); // TYPE-4
    test("👶🏾"); // TYPE-5
    test("👶🏿"); // TYPE-6
    test("🐱"); // cat
    test("あ");
  }
 
  private static void test(String emoji){

    System.out.println(emoji);
    System.out.println("length: " + emoji.length());

    System.out.print("String to chars: ");
    for(int i=0; i<emoji.length(); i++){
      System.out.print(Integer.toHexString(emoji.charAt(i)).toUpperCase() + ", ");
    }
    System.out.println();
 
    // Unicode code points
    int count = emoji.codePointCount(0, emoji.length());
    int[] codePoints = new int[count];
    for(int i=0; i<count; i++){
      codePoints[i] = emoji.codePointAt(0 + i * 2);
    }
    System.out.print("code points: ");
    for(int codePoint : codePoints){
      System.out.print("U+" + Integer.toHexString(codePoint).toUpperCase() + ", ");
    }
    System.out.println();
  }
}

環境によっては、プログラムの中に埋め込まれた絵文字がちゃんと表示されないので、スクリーンショット画像を貼っておく。

Java で絵文字の中身を調べるプログラム

以下、プログラムの実行結果。ベースとなる絵文字 "BABY" 「U+1F476」の後に、EMOJI MODIFIER FITZPATRICK 「U+1F3FB」~「U+1F3FF」が入っているのがわかる。


A
length: 1
String to chars: 41, 
code points: U+41, 
👶
length: 2
String to chars: D83D, DC76, 
code points: U+1F476, 
👶🏻
length: 4
String to chars: D83D, DC76, D83C, DFFB, 
code points: U+1F476, U+1F3FB, 
👶🏼
length: 4
String to chars: D83D, DC76, D83C, DFFC, 
code points: U+1F476, U+1F3FC, 
👶🏽
length: 4
String to chars: D83D, DC76, D83C, DFFD, 
code points: U+1F476, U+1F3FD, 
👶🏾
length: 4
String to chars: D83D, DC76, D83C, DFFE, 
code points: U+1F476, U+1F3FE, 
👶🏿
length: 4
String to chars: D83D, DC76, D83C, DFFF, 
code points: U+1F476, U+1F3FF, 
🐱
length: 2
String to chars: D83D, DC31, 
code points: U+1F431, 
あ
length: 1
String to chars: 3042, 
code points: U+3042, 

環境によっては、出力内容の絵文字がちゃんと表示されないので、スクリーンショット画像を貼っておく。

ベースとなる絵文字 "BABY" 「U+1F476」の後に、EMOJI MODIFIER FITZPATRICK 「U+1F3FB」~「U+1F3FF」が入っているのがわかる

Unicode Consortium のサイトに、EMOJI MODIFIER FITZPATRICK TYPE の資料が置いてある。

Emoji Modifiers
UTR #51: Unicode Emoji

米Appleは、8日に公開したMac用OSの最新バージョン「OS X Yosemite 10.10.3」とiOSの最新バージョン「iOS 8.3」において、絵文字をアップデートした。300種類を新たに追加するとともに、人の顔や手足などを表す絵文字の一部で、ユーザーが“肌の色(スキントーン)”を選べるようにした。

昨年11月にドラフト案が出された文字コード規格「Unicode 8.0」では、肌の色の多様性に対応するため、特定の絵文字について、肌の色を変更するための符号を追加。ベースとなる絵文字に、色を指定する符号を追加することで肌の色を選択できるようにした。Appleの絵文字のスキントーンも、この符号を用いている。そのため、OSやブラウザー、ウェブサービスなど環境によってはこの仕組みに対応しておらず、ベースとなる絵文字と色を指定する符号が分離して表示されてしまう。

Apple、絵文字の“肌の色”を変更可能に、OS XとiOSの最新バージョンで -INTERNET Watch
濃い黄色の顔はいわゆる「黄色人種」ではなく、デフォルトの「人種を特定しない」肌色。アップルとGoogleによるUnicode提案では、肌色としてフィッツパトリックスケールを反映した5種類を設定しています。

フィッツパトリックスケールは、皮膚科学で標準的に使われる分類。人間の肌の種類を6種類に分類します( 本来は紫外線に対する反応による分類で、真っ白で日焼けすると赤くなるタイプから、いわゆる小麦色に日焼けして褐色が濃くなるタイプ、日焼けしてもほとんど分からない濃い褐色まで。日焼けしやすさのスコアにより大きく分けて6段階。そもそも文化的なものも含んで複雑な「人種」の分類とぴったり対応するわけではありません)。

フィッツパトリック分類のうち、もっとも色素が薄いタイプ1と2はまとめてひとつに扱われるため、肌の色として選ぶのは5種類。

iOS 8.3 b2 の実装ではいずれのタイプにも「肌色」を代表させず、デフォルトには濃い黄色が設定されています。つまりスマイリーの顔の黄色と同じ。

アップル、絵文字に人種と肌の色の違いを導入。iOS 8.3 / OS Xベータから - Engadget Japanese
ドラフト案では、「世界中の人々が、人間の多様性、特に肌の色調を反映した絵文字を望んでいる」と説明。絵文字のうち、人間や体のパーツを意味する文字は包括的であるべきだが、現状は日本の携帯電話を起源とした文字を踏襲し、明るい肌の色で表現されている場合が多いとしている。

追加する符号は、人間や手足などを表現している文字について、肌の色調を変化させるもので、皮膚科学の「Fitzpatrick scale」に基いた5種類の色調が提案されている。人間などを表す絵文字の直後にこの符号を置くことで、絵文字中の肌の色が変化する形となる。

「Unicode 8.0」で肌の色の多様性に対応へ、“絵文字”に肌の色を変化させる符号を追加 -INTERNET Watch

tags: ios java unicode

Posted by NI-Lab. (@nilab)