Tim*_*zer 13
看一下:
http://www.pinvoke.net/default.aspx/Structures/LOGFONT.html
使用其中的一个结构,然后循环遍历族,实例化Font,获取LogFont值并检查lfPitchAndFamily.
以下代码是动态编写的,未经测试,但以下代码应该有效:
foreach (FontFamily ff in System.Drawing.FontFamily.Families)
{
if (ff.IsStyleAvailable(FontStyle.Regular))
{
Font font = new Font(ff, 10);
LOGFONT lf = new LOGFONT();
font.ToLogFont(lf);
if (lf.lfPitchAndFamily ^ 1)
{
do stuff here......
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,ToLogFont函数不会将lfPitchAndFamily字段填充到正确的值.就我而言,它始终为0.
检测哪些字体可能被修复的一个近似值如下
foreach ( FontFamily ff in FontFamily.Families ) {
if ( ff.IsStyleAvailable( FontStyle.Regular ) ) {
float diff;
using ( Font font = new Font( ff, 16 ) ) {
diff = TextRenderer.MeasureText( "WWW", font ).Width - TextRenderer.MeasureText( "...", font ).Width;
}
if ( Math.Abs( diff ) < float.Epsilon * 2 ) {
Debug.WriteLine( ff.ToString() );
}
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,它们是几个误报,例如Wingdings
归档时间: |
|
查看次数: |
9390 次 |
最近记录: |