给定一个特定的Unicode字符,比如“嗎”,我该如何遍历系统中安装的所有字体,并列出其中包含此字符字形的字体?
我已在.NET 4.0上进行了测试,您需要添加对PresentationCore的引用才能使字体和字形类型正常工作。还要检查Fonts.GetFontFamilies重载。
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)
{
PrintFamiliesSupportingChar('a');
Console.ReadLine();
PrintFamiliesSupportingChar('â');
Console.ReadLine();
PrintFamiliesSupportingChar('嗎');
Console.ReadLine();
}
private static void PrintFamiliesSupportingChar(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范围内。再次感谢! - Timwinew System.Drawing.InstalledFontCollection()
并循环遍历.Families
属性(即不需要URI或文件夹位置,它只是以某种方式查询Windows)轻松查询已安装的字体系列列表。 WPF PresentationCore有类似的方法吗? - BrainSlugs83albatross 嗎
,你将得到一个包含该字符的所有字体列表: __ __ __
.---.-.| | |--.---.-.| |_.----.-----.-----.-----.
| _ || | _ | _ || _| _| _ |__ --|__ --|
|___._||__|_____|___._||____|__| |_____|_____|_____|
Unicode code point [55CE] mapping to 嗎
┌─────────────────────────────────────────────────────────────────────────────┐
│ Font name │
├─────────────────────────────────────────────────────────────────────────────┤
│ .Aqua Kana,.Aqua かな │
├─────────────────────────────────────────────────────────────────────────────┤
│ .Aqua Kana,.Aqua かな,.Aqua Kana Bold,.Aqua かな ボールド │
├─────────────────────────────────────────────────────────────────────────────┤
│ .Hiragino Kaku Gothic Interface │
├─────────────────────────────────────────────────────────────────────────────┤
│ .Hiragino Sans GB Interface │
├─────────────────────────────────────────────────────────────────────────────┤
│ .LastResort │
├─────────────────────────────────────────────────────────────────────────────┤
│ .PingFang HK,.蘋方\-港,.苹方\-港 │
├─────────────────────────────────────────────────────────────────────────────┤
│ .PingFang SC,.蘋方\-簡,.苹方\-简 │
├─────────────────────────────────────────────────────────────────────────────┤
│ .PingFang TC,.蘋方\-繁,.苹方\-繁 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Adobe Fangsong Std,Adobe 仿宋 Std,Adobe Fangsong Std R,Adobe 仿宋 Std R │
├─────────────────────────────────────────────────────────────────────────────┤
│ Adobe Heiti Std,Adobe 黑体 Std,Adobe Heiti Std R,Adobe 黑体 Std R │
├─────────────────────────────────────────────────────────────────────────────┤
│ Adobe Kaiti Std,Adobe 楷体 Std,Adobe Kaiti Std R,Adobe 楷体 Std R │
├─────────────────────────────────────────────────────────────────────────────┤
│ Adobe Ming Std,Adobe 明體 Std,Adobe 明體 Std L,Adobe Ming Std L │
├─────────────────────────────────────────────────────────────────────────────┤
│ Adobe Song Std,Adobe 宋体 Std,Adobe Song Std L,Adobe 宋体 Std L │
├─────────────────────────────────────────────────────────────────────────────┤
│ Arial Unicode MS │
├─────────────────────────────────────────────────────────────────────────────┤
│ GB18030 Bitmap │
├─────────────────────────────────────────────────────────────────────────────┤
│ Heiti SC,黑體\-簡,黒体\-簡,Heiti\-간체,黑体\-简 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Heiti TC,黑體\-繁,黒体\-繁,Heiti\-번체,黑体\-繁 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro,Hiragino Kaku Gothic Pro │
│ W3,ヒラギノ角ゴ Pro W3 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro,Hiragino Kaku Gothic Pro │
│ W6,ヒラギノ角ゴ Pro W6 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Kaku Gothic ProN,ヒラギノ角ゴ ProN,Hiragino Kaku Gothic ProN │
│ W3,ヒラギノ角ゴ ProN W3 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Kaku Gothic ProN,ヒラギノ角ゴ ProN,Hiragino Kaku Gothic ProN │
│ W6,ヒラギノ角ゴ ProN W6 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Maru Gothic Pro,ヒラギノ丸ゴ Pro,Hiragino Maru Gothic Pro │
│ W4,ヒラギノ丸ゴ Pro W4 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Maru Gothic ProN,ヒラギノ丸ゴ ProN,Hiragino Maru Gothic ProN │
│ W4,ヒラギノ丸ゴ ProN W4 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Mincho Pro,ヒラギノ明朝 Pro,Hiragino Mincho Pro W3,ヒラギノ明朝 │
│ Pro W3 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Mincho Pro,ヒラギノ明朝 Pro,Hiragino Mincho Pro W6,ヒラギノ明朝 │
│ Pro W6 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Mincho ProN,ヒラギノ明朝 ProN,Hiragino Mincho ProN W3,ヒラギノ明朝 │
│ ProN W3 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Mincho ProN,ヒラギノ明朝 ProN,Hiragino Mincho ProN W6,ヒラギノ明朝 │
│ ProN W6 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Sans GB,冬青黑體簡體中文,冬青黑体简体中文,冬青黑體簡體中文 │
│ W3,Hiragino Sans GB W3,冬青黑体简体中文 W3 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Sans GB,冬青黑體簡體中文,冬青黑体简体中文,冬青黑體簡體中文 │
│ W6,Hiragino Sans GB W6,冬青黑体简体中文 W6 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Sans,ヒラギノ角ゴシック,Hiragino Sans W1,ヒラギノ角ゴシック W1 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Sans,ヒラギノ角ゴシック,Hiragino Sans W2,ヒラギノ角ゴシック W2 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Sans,ヒラギノ角ゴシック,Hiragino Sans W3,ヒラギノ角ゴシック W3 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Sans,ヒラギノ角ゴシック,Hiragino Sans W4,ヒラギノ角ゴシック W4 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Sans,ヒラギノ角ゴシック,Hiragino Sans W5,ヒラギノ角ゴシック W5 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hiragino Sans,ヒラギノ角ゴシック,Hiragino Sans W6,ヒラギノ角ゴシック W6 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Meiryo,メイリオ │
├─────────────────────────────────────────────────────────────────────────────┤
│ MS Gothic,MS ゴシック │
├─────────────────────────────────────────────────────────────────────────────┤
│ MS Mincho,MS 明朝 │
├─────────────────────────────────────────────────────────────────────────────┤
│ MS PGothic,MS Pゴシック │
├─────────────────────────────────────────────────────────────────────────────┤
│ MS PMincho,MS P明朝 │
├─────────────────────────────────────────────────────────────────────────────┤
│ PingFang HK,蘋方\-港,苹方\-港 │
├─────────────────────────────────────────────────────────────────────────────┤
│ PingFang SC,蘋方\-簡,苹方\-简 │
├─────────────────────────────────────────────────────────────────────────────┤
│ PingFang TC,蘋方\-繁,苹方\-繁 │
├─────────────────────────────────────────────────────────────────────────────┤
│ PMingLiU,新細明體 │
├─────────────────────────────────────────────────────────────────────────────┤
│ SimSun,宋体 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Songti SC,宋體\-簡,宋体\-简 │
├─────────────────────────────────────────────────────────────────────────────┤
│ Songti TC,宋體\-繁,宋体\-繁 │
├─────────────────────────────────────────────────────────────────────────────┤
│ STSong │
└─────────────────────────────────────────────────────────────────────────────┘