システムにインストールされていない外字やフォントであっても、外字フォントファイルを作成・設定することでシステム環境に依存することなく外字の表示・印刷が行えます。
外字フォントファイルは、使用する外字やフォントがインストールさているコンピュータでエディタから作成することができ、最大4種類のフォントの任意のコード範囲を指定することができます。
※
外字フォントファイルに登録されているフォント、または印刷イメージファイルに埋め込まれたフォントで表示・印刷された文字は図形として描画されます。
通常少し濃く描画され、太字設定は無視されます。
<参照>
ダイアログ - 外字フォントファイルの作成
メソッド - SetFontFile
メソッド - Save
パラメータ - Font
コマンド起動 - /font
コマンド起動 - /s
<サーバにある外字フォントファイルを使用する例>
<HTML> <HEAD> <!-- wfrc.ocx のバージョンアップに備えこのページをキャッシュしないようにします--> <META http-equiv="pragma" content="no-cache"> <META http-equiv="cache-control" content="no-cache"> </HEAD> <BODY> <!-- ActiveXコントロールの作成と帳票の表示 --> <!-- www... の箇所は有効なURLパスに置き換える必要があります。--> <OBJECT id="Wfrc1" classid="CLSID:FDE80453-754C-11D3-BF87-0090FE02F720" codebase="http://www.../wfrc.cab#version=1,1,17,3114" height="100%" width="100%"> <PARAM name="Font" value="<DM0>http://www.../sample.wff"> <PARAM name="FileName" value="http://www.../sample.wfr"> <PARAM name="Import" value="Data1,0,http://www.../sample.csv"> </OBJECT> </BODY> </HTML> |
フォント情報の埋め込みの有無についてはSaveメソッドや/sコマンド、「名前を付けて保存」ダイアログで指定します。
この指定では、
@フォント情報を埋め込まない(mode=0)
A使用している全ての文字のフォント情報を埋め込む(mode=4)
どちらかの選択しかできません。
特定の範囲の外字情報だけを埋め込むには、そのコード範囲を指定した外字フォントファイルを作成・設定し、@の指定で印刷イメージファイルを作成します。
外字フォントファイルが設定されている状態で印刷イメージファイルを作成すると、外字フォントファイルに定義されて帳票で使用されている文字に関するフォント情報は必ず埋め込まれます。
<例>
'コマンドラインの例 wfrv.exe sample.wfr /d "Data1,0,'c:\sample.csv'" /font c:\sample.wff /s0 c:\sample.wfi 'COM/ActiveXの例 wfr_obj = CreateObject("Wfr.Preview.1") wfr_obj.SetFontFile("c:\sample.wff") wfr_obj.Open("c:\sample.wfr") wfr_obj.Import("Data1", 0, "c:\sample.csv") wfr_obj.Save(0, "c:\sample.wfi") |
外字フォントファイルの内容についてはフォントビューで確認することができます。
フォントビュー
サーバでフォント情報を埋め込む方法について説明します。
ASP中から、
等を実行すると全ての文字が空白で表示されてしまいます。
この現象は ASPに限らずシステムフォントやウインドウにアクセスできない環境で発生します。
このような場合、あらかじめ使用する全てのフォント・コード範囲から外字フォントファイルを作成し利用することで、実行環境に左右されずにフォント情報を埋め込んだ印刷イメージファイルを作成することができます。
外字フォントファイルを指定した場合は、mode=0 を指定することをお勧めします。(mode=4 の場合登録されていない文字は表示されません)
<例>
'ASP中で起動される実行モジュールはフォントへのアクセスが行えません。 'あらかじめ使用する全てのフォント・コードから外字フォントファイルを作成しておき、 '指定する必要があります。 <%@Language="VBScript"%> <% Dim wfr_obj As Object Dim file_image As Byte() wfr_obj = CreateObject("Wfr.Preview.1") wfr_obj.Open("c:\sample.wfr") wfr_obj.Import("Data1", 0, "c:\sample.csv") wfr_obj.SetFontFile("c:\sample.wff") Response.ContentType="application/octer-stream" file_image = wfr_obj.GetBinaryImage(0) Response.BinaryWrite(file_image) System.Runtime.InteropServices.Marshal.ReleaseComObject(wfr_obj) wfr_obj = Nothing %> |