使用javafx创建Truetype字体文件

问题描述 投票:34回答:2

我有一块画布。它要求用户从A-Z,a-z或0-9绘制字符。用户绘制一个字符说A后,当前画布对象将保存在画布数组列表中。然后弹出另一个空白画布,要求用户绘制B。依此类推。

程序运行正常。但是我想创建一个.ttf文件,并绘制所有可接受的字符。

我在最后显示的画布下面有一个按钮,单击该按钮时,将从画布的数组列表中提取所有字符并从中创建一个.ttf文件。但是如何?

java fonts javafx-8 true-type-fonts
2个回答
3
投票

第一个解决方案:

您可以使用java.awt.Font,它是用于管理和创建Fonts的Java类,您可以使用其Font(String name, int style, int size)构造函数来创建自定义字体:

字体(字符串名称,整数样式,整数大小):

根据指定的名称,样式和磅值创建新字体。字体名称可以是字体名称或字体系列名称。它是与样式一起使用以找到合适的字体。当一个指定了字体系列名称,使用style参数选择家庭中最合适的面孔。字体名称为指定后,将面孔的样式和样式参数合并到找到同一家族中最匹配的字体。

例如,如果使用样式指定面部名称“ Arial Bold”Font.ITALIC,字体系统在“ Arial”家族中寻找头像粗体和斜体,并且可以将字体实例与实际字体为“ Arial Bold Italic”。样式参数已合并具有指定面部样式的对象,不添加或减去。这表示,指定大胆的面孔和大胆的样式不会双重凸显字体,并指定粗体和普通样式不会变亮字体。

参数:

name-字体名称。这可以是字体名称或字体系列名称,并且可以表示逻辑字体或在此GraphicsEnvironment中找到的物理字体。的姓氏逻辑字体为:Dialog,DialogInput,等宽字体,衬线或无衬线字体。所有这些名称都存在预定义的字符串常量,例如DIALOG。如果name为null,则为新的逻辑字体名称由getName()返回的字体设置为名称“默认”。

style-Font的样式常量style参数是一个整数位掩码可能是PLAIN,或者是BOLD和/或ITALIC的按位联合(例如,ITALIC或BOLD | ITALIC)。如果样式参数不符合预期的整数位掩码之一,然后设置样式前往PLAIN。

size-Fon的磅值

正如您所看到的,它允许您根据现有字体创建新字体,还可以更改样式和大小。

这是您可以遵循的a Tutorial


第二解决方案:

如评论中所述,您还可以使用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不允许您从图像创建字体,但是它使用矢量图形来创建字体,因此在这种情况下,解决方案将是:

  1. 要使用其他工具将图像转换为矢量(Vector MagicInkscapemyScriptFont.com]

    ] >>
  2. 然后使用生成的Font创建您的vectors


4
投票

我已经使用了这个库:fontastic font maker


0
投票

我收到一个错误:“无法访问软件包fontastic”。我该如何解决?

© www.soinside.com 2019 - 2024. All rights reserved.