我在StackOverflow上找到了这篇文章:如何通过编程确定字体文件是否具有特定的Unicode字符?
然而,我还需要检查UTF-32字符。我的目标是解析unicode.org上的Unihan数据,并忽略所有不受“Arial Unicode MS”支持的字符。我已经开始修改CheckIfCharInFont()方法,使其接受一个字符串(用于utf-32),并检查它是否为代理对。然后,我通过char.ConvertToUtf32(surrogate1, surrogate2)获取Int32,但问题是当前的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;
}