标题真的说明了一切。我需要帮助从一组单独的图像文件或一个图像创建一个自定义字体,在C#中以网格方式设置一系列字符。我到处搜索,没有找到任何有用的资源。如果您有任何建议,请提前感谢。
答案 0 :(得分:2)
据我所知,C#框架中没有任何内容允许创建字体,通过它的外观,您必须自己实现它。 Microsoft当然会为字体创建提供一些工具和SDK here以及其他信息here Microsoft以外的一些工具允许您创建字体,例如{{3} }。我确信这不是你想要的,但它是一个开始。
答案 1 :(得分:1)
这是20年前完成的事情,之后可以使用TrueType等可自由扩展的轮廓字体技术。其中一些字体仍在您的机器上,c:\ windows \ fonts中的.fon文件。它们实际上包含字体中字母的位图,对于字体支持的每个字体高度,通常大约256个。
.NET中不存在对这些字体的支持,因此不要考虑创建其中一种字体。通常,不使用TrueType字体的缺点是:
可以使用工具创建自己的TrueType字体。要想做到这一点并不容易,其中一个让TrueType闪耀的东西就是“提示”,当字体以小点大小呈现时,改变字母形状,使它们仍然清晰可辨。 Verdana是一种非常好的暗示的字体。
Anyhoo,为了追求你的方法,你需要创建一个位图,其中包含你愿意支持的所有字母,例如水平排列。订购它们的最佳方式是选择与您关系密切的代码页中的字母,例如西欧和美洲常见的Windows 1252。
如果字体是固定的,那么事情很简单,每个字母都会以字母宽度的倍数开始。按比例分隔的字体需要单独的查找表,该表指定每个字母开始的像素偏移量。例如,使用System.Drawing,您将使用Graphics.DrawImage(图像,矩形,矩形,graphicsunit)重载,您可以在其中设置矩形,以便复制要渲染的字母。使用Encoding.GetBytes()将字符串转换为渲染为字体位图中的索引。