GameMaker 日本語掲示板

テキスト描画時の文字間隔の指定方法

4 コメント
views
17 フォロー

こんにちは!
テキストを描画するときに、文字間隔を指定する方法はありますか?
Text ⇒ T e x t のように、文字の間隔をピクセル単位で調整したいです。
よろしくお願いします<(_ _)>

サトヤガンジ
作成: 2022/11/29 (火) 08:44:18
通報 ...
1

私の知る限り、文字間隔を指定できる関数は無いので(行間隔はdraw_text_ext()でできますが)
1文字ずつ描画する関数を自作する形になるでしょうかね。
自作関数なら1文字単位で文字間隔を変えることもできます。
私は文字単位で色を変えるために自作しました。

フォント単位で固定でいいなら、フォントの素材画像をスペース込みで作成する方法もあります。

2
サトヤガンジ 2022/11/29 (火) 21:43:57 >> 1

海外フォーラムでも検索しましたが、カーニングを指定できる関数はなさそうですね。
1文字ずつ描画する関数の自作を研究してみます!
ありがとうございました('ω')

3
サトヤガンジ 2022/12/07 (水) 21:52:36 >> 1

こんにちは!
文字間隔を調整できるフォントの作成の調査をしています。

font_add_sprite()で各文字の幅を指定できるようですが、べースとなるスプライトが必要とあります。
JIS 第一・第二水準を含む美咲ゴシックを導入したいのですが、可能でしょうか?(サイズが大きい気がしまして。)

現在は美咲ゴシック(JIS 第一・第二水準)をフォントアセットに取り込んでテキストを表示しているので、このフォントに対して文字間隔を指定する方法があればいいのですが・・・。

何かヒントでもいただければ幸いです。
よろしくお願いいたします。

4

フォントの質問についてはちょっと分からないのでテキスト表示の処理を考えました。
これで文字間と行間を指定できます。こういう方法はいかがでしょうか。


Draw GUI(Drawでも動きます)に貼り付けて「フォント」を使いたいフォントアセットに書き換えてください。

draw_set_font(フォント);
characters = ["今","日","は","い","い","天","気","。","\n", "そ","う","で","す","ね"];
char_width = 12;
char_space = 2;
line_height = 15;
line = 0;
char_index_in_line = 0;
x = 10;
y = 10;

for (var _i=0; _i<array_length(characters); _i++)
{
	if (characters[_i] == "\n")
	{
		line += 1;
		char_index_in_line = 0;
	}
	else
	{
		var _x = x + char_width*char_index_in_line + char_space*char_index_in_line;
		var _y = y + line_height*line;
		draw_text(_x, _y, characters[_i]);
		char_index_in_line += 1;
	}
}