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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0122
ねんねこ5787フォントファイルをexeファイルにパック6解決


ねんねこ5787

リンク

2022/1/22(Sat) 12:40:05|NO.95145


http://hsp.tv/play/pforum.php?mode=all&num=93974
のURLにあるこのコードですが、

//フォントをインストールせずに使用するモジュール #include "gdi32.as" #define FW_NORMAL 0x190 #define FALSE 0x0 #define ANSI_CHARSET 0x0 #define OUT_DEFAULT_PRECIS 0x0 #define CLIP_DEFAULT_PRECIS 0x0 #define DEFAULT_QUALITY 0x0 #define FF_DONTCARE 0x0 #module #const use_fonts 10 //登録できるフォントの最大数(変更可能) #const global FR_PRIVATE 0x10 //「登録したフォントをこのプログラムだけで使用する」オプション #const global FR_NOT_ENUM 0x20 //「登録したフォントがフォント選択ダイアログ等で表示されないようにする」オプション #deffunc font_file_init l_flag=0 dim l_opt,use_fonts sdim l_name,64,use_fonts return //font_file p1,p2,p3 //指定したメモリ内のファイル名のフォントを一時的に使えるように登録する。 //p1はフォントのファイル名。 //p2を1にした場合はこれまでの登録を解除。(省略時は0) //p3はFR_PRIVATEかFR_NOT_ENUMか、もしくは0かを指定。(省略時はFR_PRIVATEとFR_NOT_ENUMの両方とも有効) #define global font_file(%1,%2=0,%3=0x30) _font_file %1,%2,%3 #deffunc _font_file str file,int cl_flag,int opt if cl_flag : font_clean if l_flag>=use_fonts : return 0 l_opt(l_flag)=opt l_name(l_flag)=file l_flag++ AddFontResourceEx file,opt,0 if stat=0 : l_flag-- return stat #deffunc font_clean onexit repeat if l_flag<=0 : break l_flag-- RemoveFontResourceEx l_name(l_flag),l_opt(l_flag),0 loop return #global
私が使おうとしているフォントは、exeファイルにパックしないと再配布になるからダメ!!
となっています。
hsp掲示板の過去ログを見ても何が何だかわかりませんでした。
(私はWindowsAPIは全然わかりません。)

先日の「謎の長い名前の、海外フォント」の件で、
そのフォントも、exeファイルにパックしないと再配布になるからダメ!!
となっていますが、①と同じく、hsp掲示板の過去ログを見ても何が何だかわかりませんでした。
長文失礼しました。



この記事に返信する


zrs90(5さい)

リンク

2022/1/22(Sat) 14:14:22|NO.95146

プログラミングマニュアル 5.20
PACKFILEと暗号化
...に説明があります。
これは見た事があると思いますが。

例の海外フォントは

1.ファイル名が、ユニコード対応でないとダメ
2.名前の長さが、普通のフォント名と違い長すぎる
(※再配布するなら、絶対にフォント名の変更はダメ)

...ので、使用にも、こいる さんのプログラムが
必要になります。

ライセンスの問題が分かりませんが、使用するフォントを
画像化、パックして使えば、回避出来るかも知れません。



す²

リンク

2022/1/22(Sat) 15:51:20|NO.95158




沢渡

リンク

2022/1/22(Sat) 16:18:31|NO.95159

先のモジュールを作った者ですが、パックしたフォントファイルも読み込めるように
モジュールを改変しました。
(参考)http://hsp.tv/play/pforum.php?mode=pastwch&num=27078
ライセンスについてはよくわかりませんが、暗号化してパックすれば
抜き出される心配も(多分)無いと思うので、これでOKなのではないかな、と。

//フォントをインストールせずに使用するモジュール //(パックファイル対応版) #include "gdi32.as" #module #const use_fonts 10 //登録できるフォントの最大数(変更可能) #deffunc font_file_init l_flag=0 dim h_font,use_fonts return //font_file p1,p2,p3 //指定したメモリ内のファイル名のフォントを一時的に使えるように登録する。 //p1はフォントのファイル名。 //p2を1にした場合はこれまでの登録を解除。(省略時は0) //p3は旧バージョンとの互換のために残しています。省略可能で、指定しても意味はありません。 #define global font_file(%1,%2=0,%3=0x30) _font_file %1,%2 #deffunc _font_file str file,int cl_flag,local size,local tmp,local dum if cl_flag : font_clean if l_flag>=use_fonts : return 0 exist file : size=strsize if size=-1 : return 0 sdim tmp,size : bload file,tmp,size : dum=0 AddFontMemResourceEx varptr(tmp),size,0,varptr(dum) if stat : h_font(l_flag)=stat : l_flag++ return dum #deffunc font_clean onexit repeat if l_flag<=0 : break l_flag-- RemoveFontMemResourceEx h_font(l_flag) loop return #global font_file_init //以下、使用例 #epack "k8x12S.ttf" //このファイルを暗号化してパックしたとする font_file "k8x12S.ttf" //フォントのファイル名を指定 font "k8x12S",20 mes "東京特許許可局"



zrs90(5さい)

リンク

2022/1/22(Sat) 16:20:46|NO.95160

訂正。

再配布は出来ませんでしたね。間違えました。

フォントファイル自体をパックしないとダメ
...と書いてありましたね。申し訳ないです。


ちなみに、フォントの画像化と使用については
mod_picfont で検索して下さい。

ただし、例のフォントを画像化するなら
Unicode使用可能な環境下で、プログラムを
修正しないとダメと思います。



ねんねこ5787

リンク

2022/1/22(Sat) 16:21:34|NO.95161

>>95159
ありがとうございます。



ねんねこ5787

リンク

2022/1/22(Sat) 16:25:16|NO.95162

解決しました!!
ありがとうございます。
普通のフォントも、「謎の長い名前の、海外フォント」もしっかりフォントを消してもそのまま
で表示されました。
>>沢渡さん
ありがとうございます。



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