我有画布。它要求用户从a、a或0-9绘制一个字符.一旦用户绘制了一个字符,比如说A,当前的画布对象就会保存在画布的数组列表中。另一个空白的画布弹出,它要求用户绘制B,等等。
程序运行得很好。但是我想要创建一个.ttf文件,其中包含所有可接受的字符。
在最后显示的画布下面有一个按钮,当单击它时,将从画布数组中提取所有字符,并从其中创建一个.ttf文件。但是怎么做呢?
发布于 2015-08-24 07:35:43
第一解决方案:
您可以使用java.awt.Font,它是一个用于管理和创建字体的Java类,您可以使用它的字体(字符串名称、int样式、int大小)构造函数来创建您的自定义字体:
字体(字符串名称、int样式、int大小): 根据指定的名称、样式和点大小创建新字体。字体名称可以是字体外观名称,也可以是字体家族名称。它与样式一起使用,以找到合适的字体面。当指定字体族名时,样式参数将用于从家族中选择最合适的面孔。当指定字体脸名时,将脸的样式和样式参数合并,以找到来自同一家族的最佳匹配字体。 例如,如果使用样式Font.ITALIC指定面部名称"Arial“,则字体系统将在"Arial”系列中查找粗体和斜体的脸,并可能将字体实例与物理字体面"Arial意大利“相关联。样式参数与指定的脸的样式合并,而不是添加或减去。这意味着,指定粗体脸和粗体样式并不会使字体更加大胆,而指定粗体和普通样式并不能减轻字体的影响。 参数: 名字-字体名。这可以是字体外观名称或字体家族名称,也可以表示在此GraphicsEnvironment中找到的逻辑字体或物理字体。逻辑字体的族名是: Dialog、DialogInput、Monospaced、Serif或SansSerif。所有这些名称都存在预定义的字符串常量,例如,对话框.如果名称为null,则将getName()返回的新字体的逻辑字体名称设置为"Default“。 样式-字体的样式常量样式参数是一个整数位掩码,可以是普通的,也可以是粗体和/或斜体(例如,斜体或粗体)的按位合并。如果样式参数不符合预期的整数位掩码之一,则样式设置为朴素。 大小- Fon的点大小
正如您所看到的,它允许您根据现有字体创建新字体,还可以更改样式和大小。
这是您可以跟踪的教程。
第二个解决方案:
正如注释中所述,您还可以使用防腐剂库,它似乎是创建新字体的一个很好的工具,它允许您根据数据、传感器、活动提要或任何其他算法制作字体,或者操作现有字体以创建自己的版本。
以下是向您展示其工作原理所需的基本步骤。有关完整的参考资料,请参阅文档。
如何创建一个新的创建对象:
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();你可以看到他们的例子。
结论:
但在这两种情况下,您将无法从手写扫描图像创建字体,Fantastic不允许您根据图像创建字体,但它使用矢量图形来创建字体,因此在这种情况下,解决方案是:
Font创建您的vectors。发布于 2015-08-24 06:34:49
我使用过这个库:字体造型机
这就是它的工作原理:
如何创建一个新的创建对象:
Fontastic f = new Fontastic(this, "ExampleFont"); // Create a new Fontastic object如何进一步设置字体属性:
f.setAuthor("Andreas Koller"); // Set author name - will be saved in TTF file too如何为字符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); // Assign contour to character A如何生成TrueType字体文件:
f.buildFont(); // Build the font resulting in .ttf and .woff files
// and a HTML template to preview the WOFFhttps://stackoverflow.com/questions/26332766
复制相似问题