Я обнаружил это в StackOverflow: Есть ли способ программно определить, имеет ли файл шрифта определенный глиф Unicode?
Однако мне нужно также проверить символы UTF-32. Я пытаюсь проанализировать данные Unihan на unicode.org и игнорировать все символы, которые не поддерживаются «Arial Unicode MS». Я начал работу над методом CheckIfCharInFont (), изменив arg так, чтобы он брал строку (для utf-32), и проверял, является ли она суррогатной парой. Затем я получаю Int32, выполняя char.ConvertToUtf32 (surrogate1, surrogate2), но проблема в том, что текущий метод CheckIfCharInFont () поддерживает только Uint16 ... вы можете увидеть, где я разместил "Debugger.Break", что это немного проблемы. Есть какие-нибудь эксперты, которые могут помочь мне разобраться в этом?
Спасибо
public static bool CheckIfCharInFont(string character, Font font)
{
UInt16 value = 0;
int temp = 0;
if (character.Length > 1) //UTF-32
{
temp = char.ConvertToUtf32(character[0], character[1]);
}
else
{
temp = (int)character[0];
}
if (temp > UInt16.MaxValue)
{
Debugger.Break();
return false;
}
value = (UInt16)temp;
//UInt16 value = Convert.ToUInt16(character);
List<FontRange> ranges = GetUnicodeRangesForFont(font);
bool isCharacterPresent = false;
foreach (FontRange range in ranges)
{
if (value >= range.Low && value <= range.High)
{
isCharacterPresent = true;
break;
}
}
return isCharacterPresent;
}