HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0203
peatArtlet2Dでの縦書きフォント使用について2解決


peat

リンク

2015/2/3(Tue) 20:01:58|NO.67249

過去ログを見ましたが類似する質問が無い為、この場を借りて質問をさせて頂きます。

Artlet2Dを使い、横書き・縦書き両対応のフォントを読み込み、縦書きで使用したいのです。
(フォントは「07やさしさアンチック」、otfではなく同封のttf使用、ライセンス確認済み)


横書きの際のフォントの読み込みと描写は問題なく出来ました。
しかし、縦書きで読み込もうと
 alFont "@07やさしさアンチック", 30, 0
と記述したところ、縦書きではなく横書きのやさしさアンチックの文字で描写されます。(『ー』や『()』が横書き用のまま)

Artlet2Dの問題かと思い、試しにArtlet2Dを使用せずに、font命令とmes命令で表示してみたところ、縦書き用の文字で表示されました。

gdi32.asを使用した外部のフォントの読み込みは、一通り完成してから実装しようと思い行っていません。

これがArtlet2Dの仕様なのであれば、特定文字だけ90度回転させて処理しようと考えているのですが、これは私の環境固有の現象なのでしょうか?
皆さんの環境では縦書きフォントの読み込みと描写は正常に行なえますか?



この記事に返信する


774

リンク

2015/2/3(Tue) 22:46:50|NO.67252

Artlet2DというよりGDI+の仕様っぽいですね。

フォント名が「@〜」かどうかではなく、テキストの方向で縦書き文字を使い分けるようです。

#ifndef a2d #include "a2d.hsp" #endif #module a2d_mv #define GdipCreateStringFormat GdipCreateStringFormat@a2d #define GdipDeleteStringFormat GdipDeleteStringFormat@a2d #define GdipSetStringFormatAlign GdipSetStringFormatAlign@a2d #define GdipSetStringFormatLineAlign GdipSetStringFormatLineAlign@a2d #define GdipDrawString GdipDrawString@a2d #define alWstrlen alWstrlen@a2d #define imgGraphics imgGraphics@a2d #define imgFont imgFont@a2d #define imgBrush imgBrush@a2d #uselib "gdiplus" #func GdipSetStringFormatFlags "GdipSetStringFormatFlags" int, int // 最後に引数1つ追加 [1:右=>左 2:縦書き] #define global alDrawTextV(%1="",%2=0,%3=0,%4=9999,%5=9999,%6=0,%7=0,%8=0) alDrawTextV_ %1,%2,%3,%4,%5,%6,%7,%8 #deffunc alDrawTextV_ str p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7, local a, local b If(imgFont==0){Return} :Dim a :Dim b,4 GdipCreateStringFormat 0, 0, varptr(a) ; アラインメント用 Format オブジェクト GdipSetStringFormatAlign a, p5 GdipSetStringFormatLineAlign a, p6 GdipSetStringFormatFlags a, p7 //縦書属性 b = alFloat(p1), alFloat(p2), alFloat(p3), alFloat(p4) GdipDrawString imgGraphics, p0, alWstrlen(p0), imgFont, varptr(b), a, imgBrush GdipDeleteStringFormat a ; Format オブジェクト 削除 Return #global



peat

リンク

2015/2/4(Wed) 00:08:55|NO.67255

なるほど、GDI+の方でしたか…
fontで読み込めてるのだからalFontでの読み込みに問題がある、とばかり考えていたので盲点でした。

張って頂いたソースを使って試したところ、無事縦書き表示が出来ました。
ありがとうございます!



ONION software Copyright 1997-2023(c) All rights reserved.