- PR -

プリンタ内蔵フォントの設定

投稿者投稿内容
かっちゃん
会議室デビュー日: 2003/12/03
投稿数: 7
投稿日時: 2003-12-03 13:59
はじめて投稿いたします。
VBで開発をしている、ど初心者です。

レシートプリンタにカスタマディスプレイとキャッシュドロアが接続されている環境があります。この方面も、ど初心者なものですから制御の仕方がわからずメーカのヘルプサポートに問い合わせたところ下記のような回答があり、その件で二つ質問があります。

1.3)のキャラクタセットの件ですが、どのようにしてセットするのかがわかりません。
2.フォントの設定で
   Dim f1 As Font = New System.Drawing.Font("control", 9.5)
  としたのですが、「Microsoft Sans Serif」と設定されてしまいます。3)の
  キャラクタセットが(0)となっていないからでしょうか。

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

------- 回答の一部 -----
『制御方法』
カスタマディスプレイ及びキャッシュドロワは、ドライバと共にインストールされるプリンタ内蔵フォントにて制御いたします。
この内蔵フォントを使用するためには以下の3つの条件を満たす必要がございます。

1)印刷先プリンタとして、「xxxxxx」が指定されていること。
   (ドロワの場合、接続先プリンタ「xxxxxx」が指定されていること。)
2)印刷向きが”縦方向”に設定されていること。
3)フォント・オブジェクトにてキャラクタセットがWindows標準(0)となっていること。
------------------------


KeroKero
常連さん
会議室デビュー日: 2003/11/06
投稿数: 26
投稿日時: 2003-12-03 21:39
たとえば,以下の場合では最後の引数が文字セットの指定になってます。
0がANSI,128がシフトJISだったかな。

Fontコンストラクタ(String, Single, FontStyle, GraphicsUnit, Byte)
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawingfontclassctortopic12.asp
かっちゃん
会議室デビュー日: 2003/12/03
投稿数: 7
投稿日時: 2003-12-04 10:59
KeroKero様、返答ありがとうございます。

ご指示のFontコンストラクタのところを読んだのですが、現在の私の知識では理解が出来ませんでした。「勉強しろよ」と叱られるのを覚悟で、お聞きしますが、具体的には、どのようにコーディングするのかお教え願えないでしょうか。

よろしくお願いいたします。
KeroKero
常連さん
会議室デビュー日: 2003/11/06
投稿数: 26
投稿日時: 2003-12-04 11:49
e.Graphics.DrawString("ABCDEFG", New Font("control", 9.5, FontStyle.Regular, _
GraphicsUnit.Display, 0), Brushes.Black, 0, 0)

でどうでしょう。

[ メッセージ編集済み 編集者: KeroKero 編集日時 2003-12-04 12:32 ]
かっちゃん
会議室デビュー日: 2003/12/03
投稿数: 7
投稿日時: 2003-12-04 13:21
KeroKero様、早速の返答ありがとうございます。

KeroKer様が書かれたのをそのままコピーして実行してみました。
キャラクタセットを(0)にして、"A"を印刷すればキャッシュドロワがオープンするはずが・・・"A"が印字されて・・・だめでした。

下記のようにちょっと直して(間違っていなければいいのですが)、私なりに調べてみました。

Dim f1 As Font = New Font("control", 9.5, FontStyle.Regular, _
GraphicsUnit.Pixel, 0)
Label1.Text = f1.GdiCharSet
Label2.Text = f1.Name
e.Graphics.DrawString("A", f1, Brushes.Black, 0, 0)

キャラクタセットは(0)になっていましたが、フォント名が"Microsoft Sans Serif"となっていました。

ご教授よろしくおねがいします。
KeroKero
常連さん
会議室デビュー日: 2003/11/06
投稿数: 26
投稿日時: 2003-12-04 15:33
「console」フォントは正しくインストールされているのでしょうか?
試しにButtonとFontDialogをフォームに追加してみて下さい。これをButton1とFontDialog1とするとButton1_Clickに以下のコードを入力して,実行してみて下さい。

コード:
If FontDialog1.ShowDialog() <> DialogResult.Cancel Then
	Console.WriteLine(FontDialog1.Font.Name)
End If



このダイアログボックスに「console」フォントは出てきますか?出てきたなら「Fontdialog1.Font」をプリンタのフォントに渡してみて印刷するとうまくいくでしょうか?
かっちゃん
会議室デビュー日: 2003/12/03
投稿数: 7
投稿日時: 2003-12-04 16:23
KeroKero様 何度もお手数をおかけして申し訳ございません。

ダイアログボックスに「control」は出てきませんでした。
しかし、フォント選択ができるワードパットからドロワが接続してあるプリンタを指定すると「control」は出てきます。"A"を印刷するとドロワはオープンします。

プリンタの指定は、「通常使うプリンタに設定」と
PrintDocument.PrinterSettings.PrinterName = ("Printer") で試しましたがだめでした。

下記の文は、以前にメーカに問い合わせたときの回答です。参考になるでしょうか。

----- 以下メーカからの回答 ------

 弊社プリンタ内蔵フォントは
 ”MS明朝”や”MSゴシック”などTrueFontと違いフォント定義ファイルを
 持っておりません。
 つまり、別途インストールする必要はなく、ドライバを
 インストールいただくことで自動的に取り込まれます。
 これらプリンタ内蔵のフォントを使用するには以下の条件を満たす
 必要がございます。

  1)印刷先プリンタとして、「xxxxxx」が
    指定されていること。
  2)印刷向きが”縦方向”に設定されていること。
  3)フォント・オブジェクトにてキャラクタセットがWindows標準(0)となって
    いること。

 これらのひとつでも満たされない点があると、プリンタ内蔵フォントは
 使用できません。
 特に3)のキャラクタ・セットにつきましてご注意ください。

 ############################################################
  「MS P明朝」や「MS ゴシック」など、日本語版OSが持っている、これらの
  フォント群はキャラクタセット=128(日本語版 Windows 専用の 2 バイト文字
  セット (DBCS))上で動作いたします。
  しかし、TM用プリンタ内蔵フォントなどは、キャラクタセット=0(Windows
  標準文字セット)上で動作いたします。
 ############################################################
  
 開発言語(VC+やDelphiなど)日本語版では、起動時キャラクタセット=128
 となっており、このままではプリンタ内蔵フォントを使用できません。
 キャラクタセットを、0(Windows標準文字セット)に設定し直してから
 プリンタ内蔵フォントをご使用ください。

 開発言語によって、キャラクタセットの変更できるオブジェクト/プロパティ
 が異なりますので、具体的な実装方法は開発言語のヘルプをご参照下さい
 ますようお願い致します。



KeroKero
常連さん
会議室デビュー日: 2003/11/06
投稿数: 26
投稿日時: 2003-12-05 08:59
ようやく話が見えてきた感じです。

以下のコードをPrintPage内に入れてみて下さい。MsgBoxは表示されるでしょうか?

コード:
Dim resultGetFamilies(), tmpFontFamily As FontFamily

resultGetFamilies = FontFamily.GetFamilies(e.Graphics)
For Each tmpFontFamily In resultGetFamilies
    If (tmpFontFamily.Name = "control") Then
        MsgBox("Hit")
        Exit For
    End If
Next

スキルアップ/キャリアアップ(JOB@IT)