エラーを回避する方法

投稿者:アーク 投稿日:2024/01/27(Sat) 22:40:46 No.2905

いつもお世話になっております。アークです。

フォント繋がりでの質問です。
C#が使えないのでPowershellで書きます。

$Location = Get-Location
$file = Join-Path $Location '851tegaki_zatsu_normal_0883.ttf'

$signature = @'
[DllImport("gdi32.dll")]
public static extern int AddFontResource(string lpszFilename);
'@

$type = Add-Type -MemberDefinition $signature `
-Name FontUtils -Namespace AddFontResource `
-Using System.Text -PassThru

$type::AddFontResource($file)

上記スクリプトを実行すると指定フォントがフォントテーブルに追加されます。
フォントファイルはインストールされないので一時的な使用方法です。
フォントテーブルに追加するのでワードパッドやエディタ等で使用可能になります。
これはこれで使い道が有りそうです。

プロデルからも選択はできますが直後にエラーになってしまいます。
エラーを回避して使えるようにする方法が有りますでしょうか。

よろしくお願いいたします。

ここから先が分かりません

投稿者:アーク 投稿日:2024/02/15(Thu) 18:56:52 No.2926

お世話になっております。アークです。

一応、先のPowershellスクリプトの「ドットネット型」への変換はできました。

FontPath=「851tegaki_zatsu_normal_0883.ttf」
フォントテーブル追加は、ネイティブ関数(ファイル名「gdi32.dll」、関数名「AddFontResourceA」)を作る
フォントテーブル追加の戻り値型は、整数
フォントテーブル追加の引数型一覧は、{文字列}
フォントテーブル追加を{「[FontPath]」}で呼び出して結果とする

このコードを実行すると指定のフォントがフォントテーブルに登録され、
ワードパッド等から使用可能になるところまでは確認しました。
プロデルのフォント選択画面にも表示されるようになりますが、
それを選択したとたんにエラーになってしまいます。
まだ何か処理が必要なのでしょうか。
それともプロデル自体が対応していない何かが有るのでしょうか。

よろしくお願いいたします。

Re: ここから先が分かりません

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/23(Fri) 23:12:13 No.2939

こんにちは
「AddFontResource」関数はちゃんと動いているようです。

> それを選択したとたんにエラーになってしまいます。
TrueTypeとしてインストールされていない旨のエラーということでしょうか。
(単に「エラーとなる」「うまくいかない」ではなくメッセージや状況を具体的に書いていただけると、状況が絞り込めるのでありがたいです)

次のアドレスの説明を見ると、AddFontResourceは、一時的なインストールのみでエクスプローラで選べるインストールとは動作が異なるようです。
2つ目のリンクの中盤にあるように、フォントをfontフォルダにコピーして、レジストリを直接登録し再起動する方法の方がベストのように思います。

https://learn.microsoft.com/ja-jp/windows/win32/api/wingdi/nf-wingdi-addfontresourcea
https://www.web-dev-qa-db-ja.com/ja/c%23/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%A7%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%EF%BC%88c%EF%BC%83%EF%BC%89/1045179572/

基本的には、以前お示ししたように、インストールせずにフォルトを用いる方法をお勧めします。
いずれにしても、プロデルには直接関連がなく、この件を確かめている余裕がありませんので
ご自身で試行錯誤してお試しください。

Re^2: ここから先が分かりません

投稿者:アーク 投稿日:2024/02/24(Sat) 17:21:57 No.2950

ゆうとさん、こんにちは。アークです。

〉いずれにしても、プロデルには直接関連がなく
ワードパッド等では普通に使えてしまうのでプロデル側の処理が必要なのかと思った次第です。
プロデルに関係が無いので有れば此方でお聴きする事では無いので他を検討する事にします。
お手数をお掛けして申し訳ありませんでした。

▲ページの先頭へ

- WebForum -