概要
もしあなたがタイトルのような指示を受けた時、この記事にある事例を挙げつつ、それぞれの事例でどういう挙動になるかの合意をとっておきましょう。
先に結論から言うと、Unityで文字数制限のある自由文言を受け付ける、はどこかで不完全な対応になります。どこまでは妥協するかを確認しましょう。
この記事は不完全なので他のエッジケースをコメントで教えてください
絵文字
https://light11.hatenadiary.com/entry/2019/11/18/221847
https://www.wojtekmt.com/entry/2019/05/18/200000
まずはこれです。そもそもuGUIの標準InputFieldは絵文字を入力できます。
自由文言の中に絵文字があった場合はどうするべきか、対応方針を決めましょう。
- 絵文字は削除する
- 頑張る
絵文字における文字数
絵文字 | コードポイント | char数 | 意味 |
---|---|---|---|
🏴 | 1f3f4-e0067-e0062-e0065-e006e-e0067-e007f | 14 | 旗 + イングランド |
🙋🏻♀️ | 1f64b-1f3fb-200d-2640-fe0f | 7 | 手を上げる女 + 薄い肌色 |
もし、上の対応方針で頑張ることを決めた場合「文字数制限」との兼ね合いが発生します。
もし20文字制限のInputFieldに対して「🏴🏴🏴」という文字が入力された時にあなたのアプリはどうなっていてほしいですか?
絵文字合字
👨👩👧👧 はあなたのUIではどう表示されていて欲しいですか?また、何文字と判定されていて欲しいですか?
👩❤️👩はZero Width Joinerを使った合字です。どう表示されていて欲しいですか?また、何文字と判定されていて欲しいですか?
アラビア文字
右から左に表示されるInputFieldはあなたのUIの中ではどう見えていて欲しいですか?
﷽
﷽は「慈悲あまねく慈愛深きアッラーの御名において」という一文字です。
もし20文字制限のInputFieldに対して「﷽」という文字が20個入力された時にあなたのアプリはどうなっていてほしいですか?
𝑩𝑰𝑮𝑳𝑶𝑽𝑬
ℒℴѵℯ が入力された時にあなたのアプリはどうなっていてほしいですか?
ユーザからの𝑩𝑰𝑮𝑳𝑶𝑽𝑬をあなたはどう受け止めますか?
𩸽
𩸽も4バイトになります。あなたのアプリの20文字の文字数入力制限は𩸽を何文字入力できるようにしますか?
https://www.softel.co.jp/blogs/tech/archives/596
uGUIのTextタグをどこまで受け付けるか
<b>ボールド</b>
や<size=99>でかい文字</size>
や<color=red>色付き文字</color>
が入力された時にあなたのアプリはどうなっていてほしいですか?
禁止文字列はどう置き換えるか
ユーザが入力した文字が公序良俗に反していた場合のチェックはどこで行いますか?また多言語それぞれの禁止文字辞書はどうしますか?いままで出てきたさまざまなエッジケースを組み合わせた判定しにくい禁止文字に対してあなたのアプリはどこまで対応しますか?
結論
Unityの文字入力がもっとよくなるとうれしいな…