第一个解决方案:
您可以使用java.awt.Font,它是一个用于管理和创建字体的Java类,您可以使用它的Font(String name, int style, int size)构造函数来创建您的自定义字体:
字体(字符串名称、int 样式、int 大小):
根据指定的名称、样式和磅值创建一个新字体。
字体名称可以是字体名称或字体系列名称。它是
与样式一起使用以找到合适的字体。当一个
指定字体系列名称,样式参数用于选择
家庭中最合适的面孔。当字体名称为
指定时,面的样式和样式参数合并为
从同一系列中找到最匹配的字体。
例如,如果用样式指定了面名“Arial Bold”
Font.ITALIC,字体系统在“Arial”家族中寻找一张脸
这是粗体和斜体,并且可以将字体实例与
物理字体“Arial Bold Italic”。样式参数被合并
具有指定面的样式,不加也不减。这意味着,
指定一个大胆的面孔和一个大胆的风格不会双重鼓励
字体,并指定粗体和普通样式不会变亮
字体。
参数:
name - 字体名称。这可以是字体名称或字体系列名称,可以表示逻辑字体或
在此 GraphicsEnvironment 中找到的物理字体。姓氏为
逻辑字体为:Dialog、DialogInput、Monospaced、Serif 或
无衬线字体。所有这些名称都存在预定义的字符串常量,
例如,对话。如果 name 为 null,则新的逻辑字体名称
getName() 返回的字体设置为名称“默认”。
风格 -
字体的样式常量样式参数是一个整数
可能是 PLAIN 的位掩码,或 BOLD 和/或 ITALIC 的按位联合
(例如,斜体或粗体|斜体)。如果样式参数不
符合预期的整数位掩码之一,然后设置样式
到平原。
size - 字体的磅值
如您所见,它允许您根据现有字体创建新字体,您还可以更改样式和大小。
这是您可以关注的a Tutorial。
第二种解决方案:
如 cmets 中所述,您还可以使用 Fontastic 库,这似乎是创建新字体的好工具,它允许您根据数据、传感器、实时提要制作字体,或任何其他算法,或操纵现有字体来创建您自己的版本。
这些是向您展示其工作原理所需的基本步骤。如需完整参考,请参阅Documentation。
如何创建一个新的 Fontastic 对象:
Fontastic f = new Fontastic(this, "ExampleFont"); // Create a new Fontastic object
如何设置更多字体属性:
f.setAuthor("Andreas Koller");
如何为字符 A 创建一个具有四点随机形状的字形:
PVector[] points = new PVector[4]; // Define a PVector array containing the points of the shape
points[0] = new PVector(0, 0); // Start at bottom left
points[1] = new PVector(random(512), 0); // The normal width is 512, the normal height 1024
points[2] = new PVector(random(512), random(1024)); // y coordinates are from bottom to top!
points[3] = new PVector(0, random(1024));
f.addGlyph('A').addContour(points);
如何生成TrueType字体文件:
f.buildFont();
事后如何清理:
f.cleanup();
你可以看到their examples。
结论:
但是在这两种情况下,您将无法从手写扫描图像创建字体,Fantastic 不允许您从图像创建字体,但它使用矢量图形创建字体,因此在这种情况下解决方案将是:
-
使用其他工具将图像转换为矢量(Vector
Magic、Inkscape、myScriptFont.com)
-
然后使用生成的vectors 创建您的Font。