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
これにより、テキストが表示されますが、予想どおり、目的の書体ではありません。