インストールされてないフォントを使いたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
YYSS
記事: 125
登録日時: 9年前
連絡を取る:

インストールされてないフォントを使いたい

#1

投稿記事 by YYSS » 8年前

DXライブラリで、フォントファイルを同梱し、それを読み込んでウィンドウに文字を描画させたいのですが、
描画しても標準のフォントになってしまいます。


今までは、文字を画像化してからそれを読み込んで描画していたのですが、
フォントを読み込んで、DrawStringsなどで出来ると言うことを知り試してみたのですが、なかなか思うように行きません


ソースはこんな感じです。

コード:

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
						LPSTR lpCmdLine, int nCmdShow ){

	//***** 必須 ****************************************
	//フルスク時の設定
	SetGraphMode( 640, 480, 32 );
	//ログなし
	SetOutApplicationLogValidFlag( false );

	//スクリーン設定
	ChangeWindowMode( true );

	// DXライブラリ初期化処理
	if( DxLib_Init() == -1 ){
		return -1 ;			// エラーが起きたら直ちに終了
	}
	//描画を裏画面
	SetDrawScreen( DX_SCREEN_BACK );

	//描画はバイリニアにしとく
	SetDrawMode( DX_DRAWMODE_BILINEAR );
	//****************************************************

	AddFontResourceEx( "UNCRDFMN.otf", FR_PRIVATE, NULL );
	int hf = CreateFontToHandle("test", 48, 1, DX_FONTTYPE_NORMAL, DX_CHARSET_DEFAULT);

	if ( hf == -1 )
	{
		RemoveFontResource( "UNCRDFMN.otf" );
		DxLib_End();
		return 1;
	}

	//メインループ
	while( CheckHitKey( KEY_INPUT_ESCAPE ) == 0 && ProcessMessage() == 0 ){

		//=====画面初期化=====
		ClsDrawScreen();

		DrawStringToHandle(8 , 64, "ABC" , 0xffffff, hf);


		//=====裏描画処理=====
		ScreenFlip();

		WaitKey();

	}	//ループ端

	//***** 必須 ****************************************
	DxLib_End() ;			//DXライブラリ使用の終了処理
	return 0 ;				//ソフトの終了
	//***************************************************
}

フォントファイルは、実行ファイルと同じ階層においてあります。
パス指定が出来れば、Fontというフォルダにフォントファイルを入れたいのですが。


使おうとしているフォントはフリーのものです
再配布は出来ないので、リンクを貼っておきます
http://www.gebsite.org/font/uncrdfmn.html


過去ログなども参考にしたのですが、なかなか思うようにいきません・・・
http://dixq.net/forum/viewtopic.php?f=3&t=2632

ご教授をお願いします。


~開発環境~
 Windows 7 Ultimate SP1 32bit
 Visual C++ 2010
 DXライブラリ

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: インストールされてないフォントを使いたい

#2

投稿記事 by softya(ソフト屋) » 8年前

読み込みのカレントパスは、Visual C++ 2010から起動した場合はvcprojがあるフォルダになります。
カレントパスにはDXライブラリの実行ログであるLog.txtが出力されているはずなのでそれで確認できると思います。

[追記]
それと
int hf = CreateFontToHandle("UNCRDFMN", 48, 1, DX_FONTTYPE_NORMAL, DX_CHARSET_DEFAULT);
とフォント名を指定しましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
YYSS
記事: 125
登録日時: 9年前
連絡を取る:

Re: インストールされてないフォントを使いたい

#3

投稿記事 by YYSS » 8年前

softya(ソフト屋) さんが書きました: [追記]
それと
int hf = CreateFontToHandle("UNCRDFMN", 48, 1, DX_FONTTYPE_NORMAL, DX_CHARSET_DEFAULT);
とフォント名を指定しましょう。
出来ました!

フォント名は自由だと思ってました///
変数名が自由なのですね


回答ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る