I tested what you suggested, but this still spits out false. Here you can find a demo. The code for the check is this one:
using TMPro;
using UnityEngine;
public class CheckHasEmoji : MonoBehaviour
{
[SerializeField]
private TMP_Text[] textsToCheck;
private void Start()
{
LogHasEmoji();
}
public void LogHasEmoji()
{
string emojiToCheck = "\U0001F34B"; // 🍋
foreach (TMP_Text text in textsToCheck)
{
Debug.Log($"Text {text.name} with font asset {text.font.name} supports emoji {emojiToCheck}: {text.font.HasCharacters(emojiToCheck, out _, false, true)}");
}
}
}
It checks for one TMP Text that has the emoji font directly applied and one that uses LiberationSans and therefore the fallback. Also interesting in that regard: Apparently also he emoji fallback is used for the text that has the noto emoji font applied (You can see this when switching the emoji fallback through the buttons.