我正在寻找一个加载 ttf 文件(在我的情况下为Inconsolata.ttf
)并创建文本层的简单示例。
是否有可能以与平台无关的方式做到这一点?从这里的回复中,我得到的印象不是。
我正在使用playn-samples 展示中的 TextDemo示例作为参考进行简单的概念验证。
我目前对如何注册 ttf 文件有点困惑。这是我的代码:
private void testCustomFont() {
// text
String text = "Hello, Cleveland!";
// load font
String fontName = "Inconsolata";
Font.Style fontStyle = Font.Style.BOLD;
Float fontSize = 24f;
Font myFont = graphics().createFont(fontName, fontStyle, fontSize);
// format text
Integer fontColor = Color.rgb(0, 0, 255);
TextFormat textFormat = new TextFormat().withFont(myFont).withTextColor(fontColor);
// create font image layer
ImageLayer textLayer = graphics().createImageLayer();
TextLayout textLayout = graphics().layoutText(text, textFormat);
CanvasImage textImage = graphics().createImage((int)Math.ceil(textLayout.width()),
(int)Math.ceil(textLayout.height()));
textImage.canvas().drawText(textLayout, 0, 0);
textLayer.setImage(textImage);
// position text layer and add to root layer
textLayer.setTranslation(20, 20);
graphics().rootLayer().add(textLayer);
}
项目布局如下:
/project
├── core
│ └── MyProject.java
└── resources
└── fonts
└── Inconsolata.ttf
这将显示文本,但正如预期的那样,不是以所需的字体显示。