0

* ClickOnce 配置 * バーコード フォント * Font オブジェクトにアクセスせずに "FontName" を使用する DevExpress コントロールで、PrivateFontCollection を使用できません。* フォントはサイレント インストールし、インストール後すぐに動作する必要があります。

私が PFC を使用するのを妨げている DevExpress の部分は、RichEditControl の CharacterProperties オブジェクトです。彼らのサポート サイトには、「申し訳ありませんが、PrivateFontCollection で動作させることはできません」で終わるチケットが既にあります。

多くの情報源から読んだところ、ClickOnce はインストール時にフォントをすぐに使用できないことがわかりました。PFC を使用できないため、P/Invoke を使用してフォントをインストールしています。このフォントのインストールを行う完全に別のコンソール アプリを作成しました。フォントは Word に表示されますが、Word の後で開いても、ClickOnce アプリケーションには表示されません。Windows の通常のクリック方法で手動でフォントをインストールすると、Word と ClickOnce の両方に表示されます。

System.Drawing.Font を使用して、うるさいベンダー コントロールだけでなく、アプリケーション全体で使用できないことを確認しました。

Font fontTester = new Font(fontName, 12, FontStyle.Regular, GraphicsUnit.Pixel);
if (fontTester.Name == fontName)

「名前」の値が「Microsoft Sans-Serif」に変わり、フォントが使用できないかのように動作します。

再起動/ログオフせずに ClickOnce にフォントを表示するにはどうすればよいですか?

4

2 に答える 2

0

フォントを Windows ディレクトリに配置するという従来の方法でフォントをインストールできるかどうかはわかりません。ClickOnce サンドボックスを使用すると、このようなことを行うことができなくなります。

ただし、コードを使用してフォントを動的に追加できますが、現在のユーザーに対してのみです。

このMSDN の記事では、System.Drawing.Text 名前空間のメソッド AddFontFile が示されています。この問題については、ここでさらに議論されています(不可能だと誤って言っている人は無視してください)。

編集:あなたの名前空間のようです。C# - フォントの読み取りとプレビューを参照してください

アプリから何らかの形でフォントをリストして、それらがまったく読み取れるかどうかを確認しようとします。

于 2012-09-14T12:19:33.683 に答える
0

コンソール アプリの P/Invoke メソッドが機能せず、その理由を解明する時間はありませんが、Shell.Application で VBScript を使用すると機能します。

Const FONTS = &H14&

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FONTS)
objFolder.CopyHere "\\server\Fonts\barcodefont.ttf"

私は実際にこれで始めましたが、何らかの理由で機能しなかったため、コンソールアプリを含む他の方法に移行しました.

于 2012-09-14T21:17:22.457 に答える