我有一个使用Roboto FontFamily作为主要字体的WPF应用程序,但是可能有一些语言与Roboto (即中文)不兼容。如何以编程方式确定语言是否与Roboto不兼容,以便加载适当的FontFamily?机器人有不同的变体,如轻型,中型,Bold,意大利等。如果替代字体也有一些变化,我想可以选择那些。
Windows 10支持的语言列表如下:
南非荷兰语、阿尔巴尼亚语、阿姆哈拉语、阿拉伯语、亚美尼亚语、阿萨姆语、阿塞拜疆语、班加语(孟加拉国)、班加语(印度)、巴斯克语、白俄罗斯语、波斯尼亚语、保加利亚语、加泰罗尼亚语、中央库尔德语、切罗基语、中文(简体)、中文(繁体)、克罗地亚语、捷克语、丹麦语、达里-波斯语(阿富汗)、荷兰语、德语、希腊语、英语(联合王国)、英语(美国)、爱沙尼亚语、芬兰语、菲律宾语、法语(加拿大)、法语(法国)、加利西亚语、格鲁吉亚语、古吉拉特语、豪萨语、希伯来语、印地语、匈牙利语、冰岛语、伊博语、印度尼西亚、爱尔兰、意大利语、日语、甘纳达语、哈萨克语、哈萨克语、哈纳达语、哈萨克语、伊格博语K‘’iche‘、Kinyarwanda、Konkani、朝鲜语、吉尔吉斯、老挝、拉脱维亚、立陶宛、卢森堡、马其顿、马来、马来西亚、马耳他、毛利、马拉蒂、蒙古、尼泊尔、北索索、挪威Bokm l、挪威Nynorsk、Odia、波斯语(伊朗)、Punjabi (阿拉伯语)、Punjabi (Gurmukhi)、波兰、葡萄牙(巴西)、葡萄牙(葡萄牙)、Quechua、罗马尼亚、俄罗斯、苏格兰Gaelic、塞尔维亚(西里尔语、波斯尼亚-黑塞哥维那)、塞尔维亚(西里尔语、塞尔维亚)、塞尔维亚(拉丁语)、信德希(阿拉伯语)、辛哈拉语、斯洛伐克语、斯洛文尼亚语、西班牙(西班牙)、塔吉克斯坦、塔吉克斯坦、瑞典、瑞典泰米尔语、鞑靼语、特卢古语、泰语、蒂格里尼亚语、茨瓦纳语、土耳其语、土库曼语、乌克兰语、乌尔都语、维吾尔语、乌兹别克语、瓦伦西亚语、越南语、威尔士语、沃尔夫语、科萨语、约鲁巴语、祖鲁语。
是否有Roboto支持的Windows 10语言列表,或者Roboto不支持的语言列表?我一直找不到这样的名单。
发布于 2022-05-17 16:58:20
关于Roboto支持Windows 10语言,我联系了Google字体小组,回复如下:
使用 hyperglot.rosettatype.com 来确定任何字体的语言支持
使用此网站,Roboto不支持下列Windows 10语言:
阿姆哈拉语、阿拉伯语、亚美尼亚语、阿萨姆语、阿塞拜疆语、班加语(孟加拉国)、班加语(印度)、白俄罗斯语、波斯尼亚语、切罗基语、中文(简体)、中文(繁体)、达里语-波斯语(阿富汗)、格鲁吉亚语、古吉拉特语、豪萨语、希伯来语、印地语、伊格博语、卡纳达语、高棉语、孔卡尼语、朝鲜语、吉尔吉斯语、老挝语、马来西亚、马拉蒂语、尼泊尔语、奥迪亚语、波斯语、贾比语、罗马尼亚语、信德基语、僧伽罗语、泰米尔语、泰语、蒂格里尼亚语、乌尔都语、Uyghur语、瓦莱尼语、约鲁巴语
发布于 2022-05-17 08:13:30
private bool FontSuitableForArabic()
{
(int, int) langSymbolsRange;
langSymbolsRange.Item1 = 0x600;
langSymbolsRange.Item2 = 0x6FF;
var families = Fonts.GetFontFamilies(@"C:\Users\User\Documents\Temp\TestFonts\Roboto-Regular.TTF");
foreach (var family in families)
{
var typefaces = family.GetTypefaces();
foreach (Typeface typeface in typefaces)
{
GlyphTypeface glyph;
typeface.TryGetGlyphTypeface(out glyph);
IDictionary<int, ushort> characterMap = glyph.CharacterToGlyphMap;
for (int i = langSymbolsRange.Item1; i != langSymbolsRange.Item2; i++)
{
if (!characterMap.TryGetValue(i, out ushort _))
{
Console.WriteLine($"Failed to find Unicode Character {i:X} in this font!");
return false;
}
}
}
}
return true;
} myTextBlock.FontFamily = new FontFamily("Roboto, Janna LT Bold");或
<TextBlock FontFamily="Roboto, Janna LT Bold">Hello, world</TextBlock>https://stackoverflow.com/questions/72260401
复制相似问题