値のマクロ
重要
Windows でプリンターとの通信手段として推奨されるのは、最新の印刷プラットフォームです。 プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。
詳細については、最新の印刷プラットフォームに関する記事および「印刷サポート アプリの設計ガイド」を参照してください。
値マクロは、Generic Printer Description (GPD) ファイルに個別に繰り返し挿入する1つまたは複数の値のセットを指定するために使用されます。 Values can be any of the GPD value types.
値マクロの使用には以下のルールが適用される:
GPDファイル内の値マクロ定義は、その値を参照する前に配置する必要があります。
ルートレベルで定義された(つまり中括弧の中ではない)値マクロは、それが定義された後、それを定義したGPDファイルを通して利用できます。 そうでなければ、値マクロのスコープは、その定義を含む左中括弧と右中括弧のセットである。
値マクロは GPD値タイプに解決されなければならない.
値マクロ定義は、すべての値がテキスト文字列であれば、以前に定義された他の値マクロを参照することができるが、値マクロはそれ自身を参照することはできない。
値マクロは引数を受け付けない。
同じ名前の値マクロを2つ作成した場合、GPDパーサーが2つ目の定義に出会うまで、最初の定義が有効になります。 そして、2番目の定義が最初の定義に取って代わる。 2つ目の定義の範囲が終了すれば、1つ目の定義が復活する。
値マクロ形式
GPDファイルに1つ以上の値マクロを定義するには、以下の書式を使用します:
*Macros: *ValueMacroGroupName { ValueMacroBody }
Where ValueMacroGroupName is a unique name, and ValueMacroBody is a set of unique value names and associated values, as follows:
ValueMacroName : MacroValue
Where ValueMacroName is a unique macro name, and MacroValue represents a GPD value type. (MacroValue 解決された文字列がGPD値タイプを表す限り、以前に定義された値マクロへの参照を含むことができます)。
例として、よく使われるコマンド接頭辞のセットに対して、次のように値マクロを定義することができる:
*Macros: HP4L
{
LetterCmdPrefix: "<1B>&l2a8c1E<1B>*p0x0Y"
A4CmdPrefix: "<1B>&l26a8c1E<1B>*p0x0Y"
Env10CmdPrefix: "<1B>&l81a8c1E<1B>*p0x0Y"
}
ValueMacroGroupName (例ではHP4L)はオプションで、コメントとして扱われる。
値マクロの参照
値マクロを参照するには、以下の書式を使う:
= ValueMacroName
Where ValueMacroName は、マクロを定義する *Macros エントリで指定された一意の名前である。
例えば、コマンド仕様の中でHP4Lマクロの1つを参照するには、以下のように記述します:
*Command: CmdSelect
{
*Cmd: =LetterCmdPrefix "<1B>*c0t5760x7680Y"
}
マクロ参照とマクロ以外の値を組み合わせて値を割り当てることができるのは、例に示したように、マクロ定義とその他の値がすべてテキストまたはコマンドの部分文字列を表す場合だけである。 それ以外の場合はすべて、マクロ参照は代入される値全体を表すものでなければならない。