給定一個特定的Unicode字符,比方說,我如何遍歷系統中安裝的所有字體並列出包含此字符的字形的字體?如何確定哪些字體包含特定字符?
回答
我已經在.NET 4.0上測試過了,您需要添加對PresentationCore的引用以獲取字體&字體類型的工作。另請檢查Fonts.GetFontFamilies overloads。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Windows.Markup;
using System.Windows.Media;
class Program
{
public static void Main(String[] args)
{
PrintFamiliesSupprotingChar('a');
Console.ReadLine();
PrintFamiliesSupprotingChar('â');
Console.ReadLine();
PrintFamiliesSupprotingChar('嗎');
Console.ReadLine();
}
private static void PrintFamiliesSupprotingChar(char characterToCheck)
{
int count = 0;
ICollection<FontFamily> fontFamilies = Fonts.GetFontFamilies(@"C:\Windows\Fonts\");
ushort glyphIndex;
int unicodeValue = Convert.ToUInt16(characterToCheck);
GlyphTypeface glyph;
string familyName;
foreach (FontFamily family in fontFamilies)
{
var typefaces = family.GetTypefaces();
foreach (Typeface typeface in typefaces)
{
typeface.TryGetGlyphTypeface(out glyph);
if (glyph != null && glyph.CharacterToGlyphMap.TryGetValue(unicodeValue, out glyphIndex))
{
family.FamilyNames.TryGetValue(XmlLanguage.GetLanguage("en-us"), out familyName);
Console.WriteLine(familyName + " Supports ");
count++;
break;
}
}
}
Console.WriteLine();
Console.WriteLine("Total {0} fonts support {1}", count, characterToCheck);
}
}
非常感謝,這似乎工作得很好!當然,在生產代碼中,不會像這樣硬編碼字體文件夾。一個應該也可以採用'int'而不是'char'(或'string',然後使用'char.ConvertToUtf32'),否則你會限制它到BMP。再次感謝! – Timwi 2011-04-09 13:32:42
對,它不是生產質量代碼,它更多**如何**。 – 2011-04-09 13:46:15
在GDI +中,您可以通過創建一個'System.Drawing.InstalledFontCollection()'並循環訪問'.Families'屬性來輕鬆地查詢已安裝字體系列的列表(即不需要URI或文件夾位置,它只是以某種方式查詢Windows )。有沒有類似的方式來做到這一點與WPF PresentationCore的東西? – BrainSlugs83 2014-03-04 22:08:43
- 1. 如何檢查哪些字體包含perl的特定字符?
- 2. 確定包含特定字符的CTLine
- 3. 如何:確定字體支持哪些字符範圍
- 4. 如何判斷特定字體是否包含PDF中的特定字符:: API2
- 5. 如何刪除包含在殼某些特定字符串行
- 6. MongoDB:如何過濾只包含特定字符的字符串?
- 7. 如何替換包含python中特定字符的字符串?
- 8. 如何確定一個字符串包含字符串
- 9. 如何確定2D數組是否包含特定數字?
- 10. 確定一個字符串是否包含特定位置的子字符串
- 11. Rails:如何查找包含特定字符串的字段
- 12. 如何檢查一個字符是否包含特定字母
- 13. 我的一些NSString是字母數字。我如何判斷哪些包含數字,哪些不包含數字?
- 14. 不包含特定字符串
- 15. 字符串包含特定文本
- 16. 查找僅包含特定字符
- 17. 選擇與包含特定字符串
- 18. Laravel - 獲得包含特定字符串
- 19. 刪除包含特定字符
- 20. 獲取從包含特定字符串
- 21. 尋找forrecords包含特定字符串
- 22. grepping/awking刪除包含特定字符
- 23. 如何獲取包含在指定字符串中的特定字符串?
- 24. 新的空NSString包含哪些字符?
- 25. 字符串包含如果我有以下特定字符
- 26. 如何確定一個字符串是否包含非字母數字字符?
- 27. 如何匹配一個特定的字符,只有後面緊跟着包含特定字符的字符串
- 28. 搜索Elasticsearch 2.4如果一個字段包含一些特定的字符串
- 29. 如何包含Google字體中未找到的特定字體系列?
- 30. 如何找出頁面上包含哪些字體?
參見:[檢查不受支持的字符/字體中的字形(http://stackoverflow.com/questions/5025740/c-check-for-unsupported-characters-glyphs-in-a-font) – Ani 2011-04-09 11:57:24
不是C#,但是這個python腳本效果很好:http://unix.stackexchange.com/a/268286/26952 – 2017-02-07 13:28:36