ロゴ:EPSON
ロゴ:よくあるご質問(FAQ)

製品別
質問別

URLをクリップボードにコピーしました
シェア用URL:https://faq2.epson.jp/web/Detail.aspx?id=31037
  FAQ番号:31037
Microsoft Visual C++ とプリンターフォントについて<EPSON Advanced Printer Driver シリーズ>
Microsoft Visual C++ でプリンターフォント:Control による機器制御を行おうとしたが動作しない。代わりに文字が印字される。
 
 

本現象は、開発言語(C++など)にて弊社プリンタードライバー独自のデバイスフォント(controlなど)を使用する際に、文字セット(Charset)の値が適切ではないことが原因です。

デバイスフォントを使用する際には、明示的に文字セットを指定する必要があります。

【デバイスフォント使用時に必要な文字セットの組み合わせ】
・「control」「FontA11」など半角文字 ・・・・・・ ANSI_CHARSET(0)
・「Japanese11」など全角文字・・・・・・ SHIFTJIS_CHARSET(128)

 

プログラムコード例

// C++
//フォント情報の作成
CFont font;
font.CreateFont(
   1,                         // フォントの高さ
   0,                         // 平均文字幅
   0,                         // 文字送り方向の角度
   0,                         // ベースラインの角度
   FW_NORMAL,                 // フォントの太さ
   FALSE,                     // 斜体にするかどうか
   FALSE,                     // 下線を付けるかどうか
   0,                         // 取り消し線を付けるかどうか
   ANSI_CHARSET,              // 文字セットの識別子
   OUT_DEFAULT_PRECIS,        // 出力精度
   CLIP_DEFAULT_PRECIS,       // クリッピング精度
   DEFAULT_QUALITY,           // 出力品質
   DEFAULT_PITCH | FF_SWISS,  // ピッチとファミリ
   _T("Control"));            // フォント名
//作成したフォント情報を指定
CFont* def_font = dc.SelectObject(&font);
//用紙カットの実行
dc.TextOut(0, 0, _T("p"), 1);
//フォント情報を指定する前の状態に戻す
dc.SelectObject(def_font);
//作成したフォント情報を削除
font.DeleteObject(); 

なお、EPSON Advanced Printer Driver 4 シリーズ / 5 シリーズのサンプルプログラムに含まれています Visual C++ のコード例のように文字セットを指定しない方法もあります。
※CreatePointFontの使用

詳しくは Microsoft Visual C++ のヘルプを参照してください。

カスタマーディスプレイ DM-D101II,DM-D110,DM-D120 (ARCX専用),DM-D210,DM-D500
モバイルプリンター TM-P20,TM-P60II
PC一体型プリンター TM-T70II-DT,TM-T88V-DT
TMシリーズ TM-H5000II,TM-H6000II,TM-H6000III,TM-H6000IV,TM-J2000,TM-J2100,TM-L60II,TM-L90 オートカッターモデル,TM-L90 ピーラーモデル,TM-T20,TM-T20II,TM-T285,TM-T70,TM-T70II,TM-T88II,TM-T88III,TM-T88IIIX (ARCX搭載),TM-T88IV,TM-T88V,TM-T90,TM-T90 KP,TM-T90II,TM-U210A,TM-U210B,TM-U210D,TM-U220A,TM-U220B,TM-U220D,TM-U295,TM-U590,TM-U675,TM-U950
FAQ改善アンケート

このページの評価をお聞かせください。〇✖をお選びください。

 

■役に立った
■役に立たなかった