我有一个Graphics2D
对象,我想使用它的drawString
方法。我可以调用该方法并传递一个String和(x,y)位置,这非常好。但是,我也可以使用需要Font对象的Graphics2D
方法更改setFont
对象的字体。这也很好。不幸的是,这对我来说还不够,因为我打算为我的Font对象定义多个字体文本。
这是我想要传输到我的Font对象的文本表示:
font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif
我已经看到我有可能使用AttributedCharacterIterator
界面来解决我的问题,但是,我不知道该如何使用它。我已经看到实际上有一个名为AttributedString
的实现,它有一组Attributes
,但我不知道如何创建一个AttributedString
对象,可以被构造函数使用以Font
对象识别多种字体并在我致电Graphics2D
时应用它们。{/ 1}}。{/ 1}
编辑:
drawString
在上面的代码中,我尝试使用Andale Mono,在我测试此应用程序的系统中已知,但是,在生成的图形中,文本以Times New Roman字体绘制。有些事情是错的,不幸的是我对于我可能遗失的东西一无所知。
答案 0 :(得分:5)
基本上,AttributedString
提供了允许您将渲染属性应用于String
的方法。看起来很明显。
之后,您可以将AttributedString
的{{1}}传递给AttributedCharacterIterator
进行渲染......
Graphics2D
您可以查看this了解详情
答案 1 :(得分:4)
Graphics2D有一个你想要使用的drawString(AttributedCharacterIterator, int, int)
方法。
只需为字符串的每个特定子范围构建您想要的所有不同TextAttribute.FONT
属性的AttributedString,然后调用:
g2d.drawString(myAttributedString.getIterator(), x, y);
答案 2 :(得分:0)
据我所知,不可能将多种字体分配给相同的字体对象,但是,如果我们想要为同一个Graphics2D对象分配多种替代字体,则是必要的。因此,这个问题没有解决方案,但如果有人向我展示解决方案,我会接受他/她的回答。现在,不幸的是,我必须接受我自己的答案,该答案表明这个问题无法解决。