C# 安装字体

遍历所有字体

InstalledFontCollection MyFont = new InstalledFontCollection();
FontFamily[] MyFontFamilies = MyFont.Families;
List<string> installedFontNames = new List<string>();
int Count = MyFontFamilies.Length;
for (int i = 0; i < Count; i++)
{
    string FontName = MyFontFamilies[i].Name;
    installedFontNames.Add(FontName);
}

string fontDir = Application.StartupPath + "\\Fonts";
if (Directory.Exists(fontDir))
{
    string[] fontFiles = Directory.GetFiles(fontDir);
    foreach (string fontFile in fontFiles)
    {
        string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fontFile);
        if (!installedFontNames.Contains(fileNameWithoutExtension))
        {

        }
    }
}

安装字体

[DllImport("kernel32.dll", SetLastError = true)]
static extern int WriteProfileString(string lpszSection, string lpszKeyName, string lpszString);

[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, // handle to destination window
uint Msg, // message
int wParam, // first message parameter
int lParam // second message parameter
);

[DllImport("gdi32")]
public static extern int AddFontResource(string lpFileName);

private void InstallFont(string fontPath)
{
    string fontFileName = Path.GetFileName(fontPath);
    string fontNameWithoutExtenstion = Path.GetFileNameWithoutExtension(fontPath);
    string WinFontDir = Environment.GetEnvironmentVariable("WINDIR") + "\\fonts";
    string FontPath = WinFontDir + "\\" + fontFileName;
    if (!File.Exists(FontPath))
    {
        File.Copy(fontPath, FontPath);
        AddFontResource(FontPath);
        WriteProfileString("fonts", fontNameWithoutExtenstion + "(TrueType)", fontFileName);
    }
}

临时字体

public static Font CreateFont(string fontName, float height, FontStyle fontStyle = FontStyle.Bold)
{
    Font font;
    if (File.Exists(Application.StartupPath + "\\Fonts\\" + fontName + ".ttf"))
    {
        PrivateFontCollection privateFonts = new PrivateFontCollection();
        privateFonts.AddFontFile(Application.StartupPath + "\\Fonts\\" + fontName + ".ttf");
        font = new Font(privateFonts.Families[0], height, fontStyle);
    }
    else
    {
        font = new Font(fontName, height);
    }

    return font;
}

内存字体

public static Font CreateFont(Setting setting)
{
    setting.FontFamily = setting.FontFamily ?? "";
    PrivateFontCollection p_Font = new PrivateFontCollection();
    var o = Properties.Resources.ResourceManager.GetObject(setting.FontFamily);
    if (o is byte[])
    {
        byte[] b_Font = o as byte[];
        IntPtr MeAdd = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(byte)) * b_Font.Length);
        Marshal.Copy(b_Font, 0, MeAdd, b_Font.Length);
        p_Font.AddMemoryFont(MeAdd, b_Font.Length);
        return new Font(p_Font.Families[0], 14.25F, FontStyle.Bold);
    }

    return new Font("宋体", 14.25f, FontStyle.Bold);
}

C# 安装字体

时间: 2024-11-10 07:46:32

C# 安装字体的相关文章

Linux系统上安装字体

最近项目中需要控制字体类型,然后就上网查了一下在linux系统上安装字体,在window上和linux上,字体要求一样,都是ttf格式,下面这是window上的字体截图 在linux系统中的/usr/share/fonts下面新建一个目录,这里取名my_fonts,然后将tff格式的字体复制到这个文件夹中, 通过fc-list这个命令查看该系统下面安装了那些字体, 然后进入到新创建的文件夹下,ll查看这个文件下有那些文件,可以看到刚才复制进去的字体: 然后执行下面的三条命令, mkfontsca

Win7 系统下给 Users 组用户安装字体的权限

"开始"-"运行"以下四条命令 attrib -r -s c:\Windows\Fontstakeown /f c:\Windows\Fonts /r /d ncacls c:\Windows\Fonts /e /t /g users:ccacls c:\Windows\System32\FNTCACHE.DAT /e /t /g users:c 确保下面注册让user用户有权限HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Window

如何给CentOS安装字体库

很多时候,我们需要做一些图像生成工作(譬如验证码之类的),这时候,我们一般都需要用到系统的字体库.但事情却总非尽善人意,我们所使用的Linux操作系统无法像Windows操作系统那样足够“旗舰”,字体这种东西,分分钟都是缺失的(譬如我们选择Minimum方式安装或者没有选择Chinese Support之类的).如果遇到这种情况,我们就得发扬DIY(自己动手丰衣足食)的精神,自己给操作系统安装字体库了.本节内容,我们将讲解如何为CentOS(Red Hat流)操作系统安装字体库,使用Ubuntu

Linux CentOS 7 安装字体库 &amp; 中文字体

最近用CentOS上,用phantomjs把html生成pdf,但是生成多次虽然文件生成了,但是内容一直是空的. 找来找去,发现和系统上支持的字体有关系. 运行了下面的命令后: yum install cabextract xorg-x11-font-utils -y 如果是英文字符,就可以生成了,但是中文还是不行. 最后参考了下面的文章终于搞定. 原文地址:http://blog.csdn.net/wlwlwlwl015/article/details/51482065 前言 报表中发现有中文

如何在Linux系统上安装字体

如何在Linux系统上安装字体 最后更新 2015年12月11日 分类 Linux 101 最新文章 标签 font linux 字体 一般电脑用户使用的字体大部分属于TrueType字体,TrueType字体文件的扩展名是.ttf,ttf就是TrueType Font的首字母缩写.这篇教程将向读者介绍如何在Linux系统上安装TrueType字体.本文先介绍通用的安装方式,不管你用的是哪个Linux发行版,都可以用这种方法来安装.然后介绍Debian系和Redhat系发行版安装字体的一些捷径或

Linux安装字体文件

登录生成验证码的时候使用了monaco.ttf字体,没有安装字体的情况下,会报错:can't open resource Linux安装字体的方式其实很简单,就是调用fc-cache -f -v命令,其实我们可以什么都不添加直接调用这个命令 可以看到它会去/usr/share/fonts/truetype等目录以及你自己的个人用户目录 ~/.fonts/ ~/.local/share/fonts ~/.fontconfig ~/.cache/fontconfig等目录进行字体文件ttf的索引查找

C# 安装字体

using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; [DllImport("kernel32.dll", SetLastError = true)] static extern int WriteProfileString(string lpszSection, string lpszKeyName, string lpszString); [DllImport("

phantomjs截图中文网站网页页面乱码,安装字体解决

用phantomjs去截取中文页面的网站可能会出现乱码的情况,也就是截图中中文的位置全是方框. 解决办法就是安装字体. 在centos中执行:yum install bitmap-fonts bitmap-fonts-cjk 在ubuntu中执行:sudo apt-get install xfonts-wqy 这样再去截图中文的页面就不会出现一堆的方框了.

CentOS 7 安装字体库 & 中文字体

前言 报表中发现有中文乱码和中文字体不整齐(重叠)的情况,首先考虑的就是操作系统是否有中文字体,在CentOS 7中发现输入命令查看字体列表是提示命令无效:  如上图可以看出,不仅没有中文字体,连字体库都没有,那么接下来就记录一下在Linux CentOS7中如何安装字体库以及中文字体. 安装字体库 在CentOS 4.x开始用fontconfig来安装字体库,所以输入以下命令即可: yum -y install fontconfig 这时在/usr/shared目录就可以看到fonts和fon

AHK 获取系统已安装字体列表

AHK 调用API获取系统已安装字体列表代码: DllCall("gdi32\EnumFontFamilies","uint",DllCall("GetDC","uint",0),"uint",0,"uint",RegisterCallback("EnumFontFamilies"),"uint",a_FontList:="")