【Android】IconFontで特定の文字が特定の端末で色が変更できない


IconFont

メリット

  • アプリ容量を軽量化することができる。
  • 解像度別に画像を用意しなくても済む。
  • ベクターデータなので1個用意すれば全解像度デバイスにも対応できる。

デメリット

  • 単一カラーのみに限る。

何が起きたか

特定の文字のみでサムスンのドコモ端末だけでなぜかsetTextColor()が効かず、想定していない色になった。
他の文字だと自由自在に色を変えられるIconFontなのにある文字達だけ青やらオレンジやらの固定の文字色から変更ができなかった。白にしたいのに。

ちょっと調べた

IconFontは各々の画像(フォント)にUnicodeが振られる。
ドコモのサムスン機のみドコモの絵文字とUnicodeが同一のものの色だけ絵文字の方に奪われる。
https://www.nttdocomo.co.jp/service/developer/make/content/pictograph/extention/index.html
他のドコモ機では起きなかったのでサムスン機だけ内部でごにょごにょやっている。というより頑張って対応したんだろうか、はたまた単なるバグなのか。
つまり、auでもSoftbankでもサムスン機では絵文字の色からUnicodeがかぶると変えられないというハプニングがハプンする可能性が高そう(検証できてない)

解決策

どうしようもないので、デザイナーさんにUnicodeを振り直してもらい、絵文字のUnicode一覧のどの絵文字ともかぶらないUnicodeに全てをしてもらった。