Java 光滑的2D字体不';行不通

Java 光滑的2D字体不';行不通,java,fonts,slick2d,Java,Fonts,Slick2d,我用Java制作了一个2D库和一个游戏。我一直在想,只是一个简短的问题,如何设置图形对象上的字体以使用不同的字体绘制。 我做不到。我认为它与AngelCode有关,但这需要一些不是“.tff”的格式,所以我不知道 那么,你能告诉我你是怎么做到的吗?你可以使用angel code的BMF字体工具,该工具生成位图字体文件,其中包含一个存储字符图像的字形图像,以及一个描述图像文件的文本文件(仅限windows,Herio.jar类似,包含在slick中,但它只在某些情况下有效,会反复崩溃) 获取BMF

我用Java制作了一个2D库和一个游戏。我一直在想,只是一个简短的问题,如何设置图形对象上的字体以使用不同的字体绘制。 我做不到。我认为它与AngelCode有关,但这需要一些不是“.tff”的格式,所以我不知道


那么,你能告诉我你是怎么做到的吗?

你可以使用angel code的BMF字体工具,该工具生成位图字体文件,其中包含一个存储字符图像的字形图像,以及一个描述图像文件的文本文件(仅限windows,Herio.jar类似,包含在slick中,但它只在某些情况下有效,会反复崩溃)

  • 获取BMF字体并使用附带的windows安装程序安装它。完成后,使用GUI选择字体、大小等(注意,每个大小和字体必须有一个字体/glyh图像对),然后突出显示包含要使用的字符的框,注意slick最多只能支持256个字符

  • 您需要更改一些导出设置,以便slick能够识别这些文件。转到文件->导出选项并更改“位通道”(我想这就是它的名称)A->字形R、G和B->一。将“预设”设置为“自定义”,将纹理设置为.png文件,即可完成配置

  • 在相应的数据目录中导出新创建的字体文件[文件->将位图字体另存为](是的,它将生成一个字形图像(.png)和一个扩展名为.fnt的文本描述符文件)

  • 使用AngelCodeFont构造函数对其进行编码:

    fnt=new AngelCodeFont(.fnt文件的位置),new Image(.png GLYPH Image的位置);

  • 然后,您可以直接使用它进行绘制:

    fnt.drawString(float x, float y, "TEXT TO DISPAY");
    
    或者你可以

    将当前图形字体设置为AngelCodeFont,并直接通过graphics类绘制

    GraphicsObject.setFont(fnt);
    GraphicsObject.drawString("THIS WLL DRAW IN THE ANGEL CODE FONT");
    
    希望这有帮助:D

    更多信息请参见API文档:

    您可以使用angel code的BMF字体工具,该工具生成位图字体文件,其中包含存储字符图像的字形图像,以及描述图像文件的文本文件(仅限windows,Herio.jar与此类似,包含在slick中,但它只在某些情况下有效,会反复崩溃)

  • 获取BMF font并使用附带的windows installer安装它。完成后,使用GUI选择字体、大小等(注意,每个大小和字体必须有1个字体/glyh图像对),然后突出显示包含要使用的字符的框,注意slick最多只支持256个字符(我认为)

  • 您需要更改一些导出设置,以便slick能够识别文件。转到文件->导出选项并更改“位通道”(我想这就是它的名称)A->字形R、G和B->一。将预设设置为自定义,将纹理设置为.png文件,配置完成

  • 在相应的数据目录中导出新创建的字体文件[文件->将位图字体另存为](是的,它将生成一个字形图像(.png)和一个扩展名为.fnt的文本描述符文件)

  • 使用AngelCodeFont构造函数对其进行编码:

    fnt=new AngelCodeFont(.fnt文件的位置),new Image(.png GLYPH Image的位置);

  • 然后,您可以直接使用它进行绘制:

    fnt.drawString(float x, float y, "TEXT TO DISPAY");
    
    或者你可以

    将当前图形字体设置为AngelCodeFont,并直接通过graphics类绘制

    GraphicsObject.setFont(fnt);
    GraphicsObject.drawString("THIS WLL DRAW IN THE ANGEL CODE FONT");
    
    希望这有帮助:D

    更多信息请参见API文档:

    o我刚刚注意到是你的脸,我不明白-UnicodeFont在API中似乎没有被弃用。AngelCodeFont是Slick唯一有效的字体方法吗?不是的,我错误地评论说UnicodeFonts被贬值了。也许它被更新了,但我发誓我在某处看到它被贬值了。我不能保证它是否有效,但我可以对于AngleCodeFonts@Young_MakerTrueTypeFonts已经贬值。我必须将位深度设置为32而不是8才能编辑R、G、B频道。我刚刚注意到这是你的脸我不明白-UnicodeFont在API中似乎没有被弃用。AngelCodeFont是Slick唯一有效的字体方法吗?不是,我错误地评论了UnicodeFonts被折旧了。也许它被更新了,但我发誓我在某处看到它被折旧了。我不能保证它是否有效,但我可以为它做担保AngleCodeFonts@Young_MakerTrueTypeFonts已经贬值。我必须将位深度设置为32,而不是8,才能编辑R、G、B通道。