トップページ > 記事閲覧
縦書きフォントの表示について
名前:HS 日時: 2025/04/14 19:42

VisualC#版のDxLibを使用しているものです。 v3.24fでM PLUS 1 Mediumを縦書きフォントとして読み込み文章を表示したのですが、少し左のほうが切れて表示されてしまいました。 対処法などはありますでしょうか?
メンテ

Page: 1 |

Re: 縦書きフォントの表示について ( No.1 )
名前:管理人 日時:2025/04/14 22:23

手元で M PLUS 1 Medium の縦書きを試してみましたが、特に切れて表示されるということはありませんでした ただ、アンチエイリアス無しの描画とは相性が悪そうでしたので、フォントハンドルの場合は DX.CreateFontToHandle の第4引数の FontType に DX.DX_FONTTYPE_ANTIALIASING_4X4 を、 デフォルトフォントの場合は DX.ChangeFontType( DX.DX_FONTTYPE_ANTIALIASING_4X4 ); を実行して アンチエイリアス有りの描画を試してみてください m(_ _)m
メンテ
Re: 縦書きフォントの表示について ( No.2 )
名前:HS(解決?) 日時:2025/04/15 16:02

了解です。 また、一つ訂正です。 使用しているライブラリのバージョンはv3.24fではなくv3.24dでした。 ライブラリを最新版に更新して再度試してみます。
メンテ
Re: 縦書きフォントの表示について ( No.3 )
名前:HS(解決ならず…orz) 日時:2025/04/18 16:21

ライブラリを最新版に更新してみましたが、変わらず左端が切れた状態で表示されてしまいました…orz また、Noto Sans JPでも同様の現象が確認できました。 FontTypeはDX.DX_FONTTYPE_ANTIALIASING_8X8を使用しているのですが、これが何か問題を引き起こしているのでしょうか?
メンテ
Re: 縦書きフォントの表示について ( No.4 )
名前:管理人 日時:2025/04/19 00:14

うーん不思議ですね… C++版ですが、以下のようなテストプログラムを実行してみましたが、左端が切れるということはありませんでした #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // フォントハンドルを作成 int FontHandle = CreateFontToHandle( "@M PLUS 1 Medium", 32, 8, DX_FONTTYPE_ANTIALIASING_8X8 ) ; // 文字列を描画 DrawVStringToHandle( 0, 0, "漢字変換あいうえお", GetColor( 255,255,255 ), FontHandle ) ; // キー入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } HSさんの環境では上記のプログラムでも左端が切れてしまいますでしょうか? > FontTypeはDX.DX_FONTTYPE_ANTIALIASING_8X8を使用しているのですが、これが何か問題を引き起こしているのでしょうか? 上記のテストプログラムでは DX_FONTTYPE_ANTIALIASING_8X8 を使用していますが、 手元の環境では問題は発生しませんでした
メンテ
Re: 縦書きフォントの表示について ( No.5 )
名前:HS 日時:2025/04/19 17:22

上記のプログラムを以下のC#用のコードに変換して試したところ、正常に表示されました。 しかし、自作ソフトのほうはやはり左端が切れたままになってしまっています。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DxLibDLL; namespace Dxlib_Test { public class Program { static void Main(string[] args) { DX.ChangeWindowMode(DX.TRUE); if(DX.DxLib_Init() != -1) { // フォントハンドルを作成 int FontHandle = DX.CreateFontToHandle("@M PLUS 1 Medium", 32, 8, DX.DX_FONTTYPE_ANTIALIASING_8X8); // 文字列を描画 DX.DrawVStringToHandle(0, 0, "漢字変換あいうえお", DX.GetColor(255, 255, 255), FontHandle); // キー入力待ち DX.WaitKey(); // DXライブラリの後始末 DX.DxLib_End(); } } } } また、自作の縁取りシステム(周りに16個黒色で描画している)が問題を起こしているのかと思いその部分をコメントアウトして試してみましたが、変化は見られませんでした。
メンテ
Re: 縦書きフォントの表示について ( No.6 )
名前:管理人 日時:2025/04/20 04:43

お試し頂きありがとうございます、テストプログラムは正常に動作しましたか… 現象を直接確認できれば原因もすぐに分かると思いますので、 よろしければ HSさんがご制作中のソフトをこちらのメールアドレスに 送って頂けないでしょうか? BQE00322(あっとまーく)nifty.com ( (あっとまーく) を @ に置き換えてください ) ただ、↑こちらのメールアドレスは容量制限が 20MB なので、zip等で圧縮した容量が 20MB以上になってしまう場合はお手数で申し訳ありませんがアップローダーや Googleドライブ等を利用してください m(_ _;m
メンテ
Re: 縦書きフォントの表示について ( No.7 )
名前:HS 日時:2025/04/20 22:03

ありがとうございます。 上記のメールアドレスにgoogle driveのリンクを送信しました。
メンテ
Re: 縦書きフォントの表示について ( No.8 )
名前:管理人 日時:2025/04/21 02:05

メールありがとうございます ご返信メールをお送りしましたので、よろしければご確認ください m(_ _)m
メンテ

Page: 1 |

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

   クッキー保存