我在StackOverflow上发现了这个:有没有办法以编程方式确定字体文件是否具有特定的Unicode字形?
但是,我还需要检查UTF-32字符.我想要做的是在unicode.org上解析Unihan数据并忽略"Arial Unicode MS"不支持的所有字符.我开始研究CheckIfCharInFont()方法,修改arg取一个字符串(对于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;
}
Run Code Online (Sandbox Code Playgroud)
你必须做你自己的事情。也许从规格开始(http://www.microsoft.com/typography/otspec/cmap.htm)
这就是这个工具的作用:http://mihai-nita.net/2007/09/08/charmapex-some-kind-of-character-map/
| 归档时间: |
|
| 查看次数: |
4703 次 |
| 最近记录: |