トップページ > 記事閲覧
FixedSysについて
名前:でぃなんとか 日時: 2013/11/18 00:25

初めまして、でぃなんとかと申します。 今回DXライブラリを使用するにあたって不具合にぶつかった為、質問させていただきます。 メモ帳に使われているフォント FixedSys 文字を表示させる際、どうしてもこのフォントが使いたいのですが、 ChangeFont("FixedSys"); と打ち込むと Log.txt に GetGlyphOutline 関数が失敗しました と 1240 回現れ、結局文字列は表示されません。 結局、DXライブラリは FixedSys に対応していないのでしょうか。 調べても、少なくとも私には分かりませんでした。 なので管理人様にお尋ねした所存であります。 蛇足ですが、何故 FixedSys を使いたいかというと、 ・等倍フォントである。 ・全角のサイズは半角のサイズの丁度2倍である。 この2点が決め手です。
メンテ

Page: 1 |

Re: FixedSysについて ( No.1 )
名前:Will 日時:2013/11/18 13:41

http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=614 過去ログより
メンテ
Re: FixedSysについて ( No.2 )
名前:でぃなんとか 日時:2013/11/19 21:11

過去ログを読ませていただきました。 ChangeFont("Arial", DX_CHARSET_DEFAULT); 確かにこれで Arial というフォントは使えるようです。 (私はこのフォントを知らないので本当に Arial かどうかは知りませんが。) しかし…… ChangeFont("FixedSys", DX_CHARSET_DEFAULT); これを試して見ましたが、結果は変わりませんでした。 GetGlyphOutline 関数が失敗しました Log.txt で主に表示された文です。 (どうやら DrawString() の数で文の数が変わるみたいです。) Will 様 わざわざ過去ログを引っ張り出していただいてありがとうございました。 最後に、ソースコードを置いておきます。 結果は黒い画面でした。 //ここから #include<DxLib.h> int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){ ChangeWindowMode(1); DxLib_Init(); // ChangeFont("FixedSys"); ChangeFont("FixedSys", DX_CHARSET_DEFAULT); // ChangeFont("ああああ"); // ChangeFont("ああああ", DX_CHARSET_DEFAULT); DrawString(0, 0, "test Test TEST てすと テスト", 0xffffff); WaitKey(); DxLib_End(); return 0; } //ここまで
メンテ
Re: FixedSysについて ( No.3 )
名前:Will 日時:2013/11/20 10:40

すいません、調査不足で誤った回答でした。 FixedsysフォントはTrueTypeフォントで無いことが原因と思います。 ログに出ているGetGlyphOutline関数はTruetypeフォントからビットマップを作成するWindowsAPIです。 想像ですがDXライブラリはTruetypeフォント以外の使用は想定していないようです。
メンテ
Re: FixedSysについて ( No.4 )
名前:管理人 日時:2013/11/24 03:31

Willさんが仰られています通り、現在のDXライブラリは TrueTypeフォントのみ対応しています ただ、最初期の頃は TrueType のフォントのみ対応している GetGlyphOutline ではなく全部の フォントに対応している TextOut を使用していたので、その頃のソースを引っ張り出して FixedSys に対応してみました よろしければこちらのバージョンをお試しになってみてください http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) ちなみに FixedSys は半角英数字のみ含まれているフォントのようで、文字列中に全角文字が含まれる 場合は MSゴシック になるようです ( FixedSys はビットマップフォントなので SetFontSize( 64 ) などにするとドット画像が 拡大されて描画されるのですが、全角文字はドット画像が拡大される形にならず、 MSゴシック と非常によく似た形状になるので全角文字には MSゴシックが使用されていると思います )
メンテ
Re: FixedSysについて ( No.5 )
名前:でぃなんとか(解決) 日時:2013/11/25 17:37

>>管理人様 ありがとうございました。これで DrawString("FixedSys"); で文字が表示出来る様になりました。 しかし、想像していたのと違うなとも思いました。 というのも、全角文字は半角文字の丁度2倍ではないらしいのです。 ですが、 GetDrawStringWidth(); こういう関数があることを先程知りましたので、これで何とかしてみたいと思います。 >>Will様 私の為に過去ログまで引っ張って頂き、更に原因まで突き止めて頂けるとは私も幸せです。 ありがとうございました。
メンテ
Re: FixedSysについて ( No.6 )
名前:でぃなんとか 日時:2013/11/27 00:38

事後報告です。 管理人様から頂いたファイルを用いて、 SetFontSize(12); SetFontThickness(1); ChangeFont("FixedSys"); この関数で想像していたものと同じものが出力される様になりました。 感謝です。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存