詳細な印刷機能を有効にして印刷すると外字が印刷されないことがある

適用対象: Windows Vista EnterpriseWindows 7 ProfessionalWindows Server 2008 Enterprise 詳細

現象


Windows Vista 以降のコンピュータで、プリンタのプロパティの詳細設定タブで "詳細な印刷機能を有効にする" を利用して外字を印刷する場合、以下の条件が満たされると外字が印刷されません。
  • NT EMF 形式のスプーリングが有効になっている
  • スプール データに外字の字形データが含まれていない
  • 印刷に使用した外字が、セッション 0 で有効になっていない


原因


NT EMF 形式の印刷処理では、スプール データに外字用フォントが埋め込まれている場合には埋め込まれたフォントを使用して外字の描画をしますが、スプール データに外字用フォントが埋め込まれていない場合にはスプーラーサービスが動作しているセッションで有効になっている外字を使用して描画します。スプーラー サービスが動作しているセッションで外字が有効になっていない場合には意図した文字が取得できないため、外字が描画されません。

Windows Vista 以降のコンピュータでは、サービスの動作するセッション 0 とユーザーが使用するセッションが分離されており、外字はセッション毎に有効もしくは無効に設定されます。ユーザーのセッションで外字を使用していてもサービスのセッションで外字が有効になっていない場合には外字の描画が行われず、印刷されません。

回避策


以下のいずれかの方法で現象を回避します。

  1. NT EMF 形式のスプーリングを使用せず、RAW 形式のスプーリングを使用します。 これには "詳細な印刷機能を有効にする" をオフにする、もしくは、プリンタ ドライバで NT EMF 形式のスプーリングをオフにします。
  2. セッション 0 で EnableEUDC 関数を TRUE に設定して実行し、外字を有効にします。

状況


この動作は仕様です。