以下の内容はhttps://kan-kikuchi.hatenablog.com/entry/Font_HasCharacterより取得しました。


TextやTextMeshProのフォントに指定した文字が含まれているか(表示できるか)【Unity】【uGUI】【TextMesh Pro】




この記事でのバージョン
Unity 2020.3.25f1



はじめに

今回はuGUIのTextやTextMeshProのフォントに指定した文字が含まれているか

つまりその文字が表示できるかという事をチェックする方法の紹介です!

f:id:kan_kikuchi:20220416065814j:plain

なお、記事中では以下のフォントを使っています。





Textの場合

Textで使っているフォントに指定した文字が含まれているかをチェックするには

FontのHasCharacterというメソッドを使います。

//kという文字が含まれているかチェック
char targetChar = 'k';
var hasCharacter = _text.font.HasCharacter(targetChar);
   
Debug.Log($"フォント{_text.font.name}に {targetChar} という文字が含まれているか : {hasCharacter}");
f:id:kan_kikuchi:20220416060852j:plain


ただ、フォールバックに指定してるフォントも判定に含まれてしまう点には注意が必要です。

(※フォールバック : フォントに含まれない文字だけを違うフォントを使って表示する機能)

//漢という文字が含まれているかチェック(Textに設定されているフォントには含まれているが、フォールバックのフォントに含まれている)
char targetChar = '漢';
var hasCharacter = _text.font.HasCharacter(targetChar);
    
Debug.Log($"フォント{_text.font.name}に {targetChar} という文字が含まれているか : {hasCharacter}");
f:id:kan_kikuchi:20220416060953j:plain



TextMeshProの場合

TextMeshProで使っているフォントに指定した文字が含まれているかをチェックする場合も

FontのHasCharacterというメソッドを使うのですが、FontのクラスはTextとは異なります。

//1という文字が含まれているかチェック
char targetChar = '1';
var hasCharacter = _textMeshPro.font.HasCharacter(targetChar);
    
Debug.Log($"フォント{_textMeshPro.font.name}に {targetChar} という文字が含まれているか : {hasCharacter}");
f:id:kan_kikuchi:20220416065352j:plain


なお、Textとは違いデフォルトではフォールバックのフォントは考慮しません。

//漢という文字が含まれているかチェック
char targetChar = '漢';
var hasCharacter = _textMeshPro.font.HasCharacter(targetChar);
   
Debug.Log($"フォント{_textMeshPro.font.name}に {targetChar} という文字が含まれているか : {hasCharacter}");
f:id:kan_kikuchi:20220416065514j:plain


ただし、第2引数のsearchFallbacksをtrueにすればフォールバックのフォントも考慮する事が出来ますし、

第3引数のtryAddCharacterをtrueにすれば文字がない場合に追加する事も出来ます。

var hasCharacter = _textMeshPro.font.HasCharacter(targetChar, searchFallbacks:true, tryAddCharacter:true);


さらにHasCharactersという

指定した文字列の内の全ての文字が含まれているかチェックするメソッドもあります。

//漢字の両方の文字が含まれているかチェック
string targetText = "漢字";
var hasCharacters = _textMeshPro.font.HasCharacters(targetText);






以上の内容はhttps://kan-kikuchi.hatenablog.com/entry/Font_HasCharacterより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14