gpt4 book ai didi

java - 光栅化 Java 字体

转载 作者:行者123 更新时间:2023-11-30 05:14:41 25 4
gpt4 key购买 nike

说明:

我正在通过 JOGL 用 Ja​​va 编写一个 OpenGL 应用程序。 GLUT 的内置字体非常基本。我希望能够采用 Java 字体,将其中的所有字符渲染为 2D 字节数组(表示字符的灰度图像),然后我可以将其作为纹理加载到 OpenGL 中。

问题:

我可以在OpenGL中加载纹理;我可以使用 JOGL。我唯一的问题是从“Font java cn read”-->“所有字符的二维灰度图像步骤”开始。我应该使用哪些函数/库?

最佳答案

我不确定我是否完全理解您在寻找什么。我认为您想要的是一些代码,可以为字体中的每个字形生成给定大小的灰度位图图像。

没有办法(无论如何我都知道)来获取字体支持的所有字形(奇怪的是,你可以获得字形的数量......所以是的,我可能只是错过了一些东西,呸) 。但是,您可以非常轻松地获取给定字符的字形度量。

这些内容应该适合您。

HashMap<int[], Rectangle2D> generateGlyphs(int fontSize, String characters, Font font){
HashMap<int[], Rectangle2D> ret = new HashMap<int[], Rectangle>();
FontRenderContext rendCont = new FontRenderContext(null, true, true);

for(int i = 0; i < characters.length; i++){
Rectangle2D bounds = font.getStringBounds(characters.substring(i, 1), rendCont);
BufferedImage bi = new BufferedImage((int)bounds.getWidth(), (int)bounds.getHeight(), BufferedImage.TYPE_INT_GRAY);

Graphics g = bi.getGraphcs();
g.setFont(font);
g.drawString(characters.substring(i, 1), 0, (int)bounds.getHeight());

ret.put(bi.getData().getPixels(0, 0, (int)bounds.getWidth(), (int)bounds.getHeight()), bounds);
}

return ret;
}

请注意,我在某些地方进行了裁剪而不是四舍五入,这可能是一个问题。

关于java - 光栅化 Java 字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2017221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com