Starドキュメントマークアップ 仕様

Starドキュメントマークアップタグは全て同じ構造に従っており、解析が容易に行えます。

各タグは角括弧([ / ])で囲まれ、コマンド名のあとにいくつかのパラメーター名と値が続きます。

Starドキュメントマークアップフォーマット

Starドキュメントマークアップタグの一般的な構造は次のようになります。


[<tag>: <parameter>: <value>; <parameter>: <value>; <parameter>: <value>; ....]

<tag>マークアップタグを示します。
パラメーターを指定する場合は、タグのあとに単一のコロン:を続けて指定します。
<parameter>パラメーターは単一の名前(スペースなし)であり、読みやすくするためにオプションでコロン:を続けることができます。
パラメーター名の前の空白(キャリッジリターンを含む)は無視されます。
<value>パラメーター値はセミコロン;またはタグの終了を示す]に達するまでの、スペースを含むすべての文字です。

サンプル

簡単なタグ

最も単純なタグは、コマンド名が角括弧で囲まれただけのものです。UTF-8エンコードされたプレーンテキストと混在させることができます。
以下の例では、"Hello World!"のテキストを印刷して用紙をカットします。


Hello World!
 [cut]

パラメーターの追加

ほとんどのタグは追加のパラメーターを指定できます。
例えば、位置揃えを設定するタグの指定は以下のようになります。


[align: right]Right aligned text
 [align: left]Left aligned text

値付きパラメーター

パラメーターは単独で指定することもできますが、通常は値が必要です。
パラメーター名のあとに値を指定し、1つ以上のスペース文字でパラメーター名と区切ります。
例えば、テキスト幅の倍率を設定するには以下のようになります。


 [magnify: width 2]Double Width Text [magnify: width 1]Single Width Text

複数のパラメーター

必要に応じていくつかのパラメーターを指定できます。
各パラメーター/値セットは、セミコロン;で区切られています。
例:


[magnify: width 2; height 2]Double Width and Double Height text

可読性

可読性を上げるためにパラメーター名のあとにコロン:を置くことができます。コロンの後にはスペースが必要です。印刷結果に影響はありません。
値にスペースを含むテキストが含まれる場合に、可読性の効果がより明確になります。
2列のレイアウトを実行する場合の例は以下になります。


[column: left Large Vegetable Soup; right £4.50]

パラメーター名の後にコロンを置くことで可読性が上がります。


[column: left: Large Vegetable Soup; right: £4.50]

パラメーター名の前に追加の空白を使用することも許容されます。パラメーター名の前の空白は無視されます。


[column: left: Large Vegetable Soup;              right: £4.50]
 [column: left: Garlic Bread;                      right: £3.00]
 [column: left: Olives;                            right: £1.50]

空白には改行を含めることもできます。


[image: url https://star-emea.com/wp-content/uploads/2015/01/logo.jpg;
         width 60%;
         min-width 48mm]

エスケープ

いくつかの文字はStarドキュメントマークアップタグの構文とワードラッピング機能との競合により、印刷用のテキスト内に含めることができません。
その場合には、バックスラッシュ\でエスケープすることができます。

印刷文字のエスケープ

エスケープ可能な印刷文字は次のとおりです。

  • 角括弧(開)[文字を印刷するには\[を使用してください。
  • 角括弧(閉)]文字を印刷するには\]を使用してください。
  • バックスラッシュ\文字を印刷するには\\を使用してください。
  • スペース 文字 を印刷するためには\をスペース文字の前に付けて\ としてください。

例:


This will print a markup command, instead of acting on it.
 \[cut\]

改行のエスケープ

行末(文頭へ戻るや行送りの直前)で\を使用すると、改行が出力されなくなります。
これは、ワードラッピングフローを中断することなくマークアップデータに改行を挿入するために使用できます。

この方法は、改行を発生させずに単一行にマークアップタグを配置する場合にも役立ちます。

例:


[align: middle]\
 [barcode: type code39;
           data 123456789012;
 		  height 15mm;
 		  module 0;
 		  hri]
 [align]\
 Thank you for trying the new Star Document Markup Language\
 we hope you will find it useful. Please let us know!
 [cut: feed; partial]


Note:
エスケープされた改行は常に単語の区切りを引き起こすため、一つの非常に長い単語を複数の行に広げることはできません。

ワードラッピング

用紙サイズ、印刷可能領域、解像度、フォントサイズを異なる出力デバイス間で簡単に適合させるために、Starドキュメントマークアップはドキュメントを出力するときに自動的にワードラッピングを実行します。

ワードラッピングを使用すると、開発者はデバイスごとにレイアウトを管理する必要なくドキュメントのコンテンツを管理できます。

ワードラッピングがもたらす結果

次のテキストはテスト用入力データです。


This is a test of word wrapping when targeting point of sale printers of varying size, and print widths. Star Markup language makes this easy to manage automatically.

以下の各タブでは、通常のプレーンテキストを送った場合の出力結果と、対応する用紙幅が異なるStarプリンターに、Starドキュメントマークアップを通じて生成した印刷ジョブを送信した場合の出力結果を表示しています。

これはStarドキュメントマークアップを使用せずに、プレーンテキストとしてmC-Print2 58mm(2inch)プリンターに直接送信した場合の結果です。

Sample01 Output

これは、Starドキュメントマークアップを利用して生成した出力結果をmC-Print2 58mm(2inch)プリンターに送信した場合の結果です。

Sample01 Output

これは、Starドキュメントマークアップを利用して生成した出力結果をmC-Print3 80mm(3inch)プリンターに送信した場合の結果です。

Sample01 Output

フォントと拡大サイズの混合

Starドキュメントマークアップがプリンターのネイティブコマンドにレンダリングされると、フォントサイズと拡大サイズが追跡されます。
これにより、ワードラッピングを維持しながら、異なるフォントと文字の拡大を1行で混在させることが可能になります。

ワードラッピングとスペース

StarドキュメントマークアップのワードラッピングはHTMLと同様の方法で実行され、各ワードは空白(一連のスペースなど)で区切られた一連の印刷可能な文字として識別されます。 スペースは単語の区切りとしてのみ扱われ、コンテンツとしては扱われません。
このため、従来のPOSソフトウェアで一般的に行われているように、単語間に複数のスペースを入れたり、スペース文字を使用してフォーマット(列レイアウトなど)を実行したりすることはできません。 異なる印刷幅、文字サイズなど、デバイスに合わせた自動的な再フォーマットを行うためであり、この仕様は意図的なものです。

Starドキュメントマークアップは、一般的に必要なレイアウト設計を実現するための代替方法を提供しており、様々なフォーム要素により簡単に適応できます。

特定の数のスペース文字を出力する必要がある場合、スペース文字をエスケープするか、[space]マークアップタグを使用することができます。

ワードラッピングとStarドキュメントマークアップタグ

マークアップタグは、その機能に応じて単語の区切りを引き起こす場合と起きない場合があります。

[bold][underline]などテキストの装飾を変更するタグは、単語の区切りを引き起こしません。
[bold: on]B[bold: off]oldは、"B"文字が太字フォントで印刷された単一の単語 "Bold" としてレンダリングされます。

[feed], [image], [barcode]など、テキスト以外の何かを印刷するタグや任意のタイプのフィードは、単語の区切りを引き起こします。

省略記法

略語

タグ名とパラメーター名を選択する際の主な目標は読みやすさです。
読みやすさを維持できると思われる一部のタグ名とパラメーター名において、短縮バージョンをサポートしています。

例:


[magnification: width 3; height 2]

以下は機能的に上記と同じです。


[mag: w 3; h 2]

詳細については、各Starドキュメントマークアップタグのマニュアルを参照してください。

デフォルトのパラメーター

[magnification][align]などのレンダリング(テキスト描画)状態に影響するタグは、通常パラメーターを指定する必要があります。
パラメーターなしで使用するとデフォルト値にリセットされます。

例:


This is standard sized text
 [mag: w 2]Double Width Text[mag]
 This is standard sized text again.

詳細については、各Starドキュメントマークアップタグのマニュアルを参照してください。

サイズ指定

Starドキュメントマークアップは、様々なプリンター用紙幅、エミュレーション、出力解像度に可能な限り自動的に適応して出力を生成することで、開発者のサポートすることを目的としています。

この目的に対応するため、長さを指定できる各タグはプリンターの解像度に依存せず用紙の幅に対して相対的な方法で指定できます。

長さのタイプ

長さは次の方法で指定できます

  • プリンタードット
    プリンターのドットに基づいて指定された長さです。数値のみが指定された場合、この形式であるとみなされます。
    この指定は、異なる解像度または用紙幅の出力デバイスでデータが正しくレンダリングされないため推奨されません。
    
     [image: url https://website.com/logo.jpg; width 300]
    
    用紙サイズやプリンタードットの物理サイズに関係なく、300ドット にサイズ変更された画像を出力します。
  • ミリメートル
    数値指定時にmmを付加することでミリメートル単位の実際に出力される長さを指定できます。
    この場合、設定された出力形式の解像度に基づいて指定したサイズで出力されるよう計算されます。
    
     [image: url https://website.com/logo.jpg; width 40mm]
    
    用紙サイズや解像度に関係なく、すべてのプリンターで幅40mmの画像を出力します。
  • 印字幅のパーセンテージ
    数値指定時に%を付加することでパーセンテージによる相対的長さを指定できます。
    この場合、設定された印字領域/用紙サイズに対して相対的に計算されます。 この指定は、要求されたレイアウトに合わせて画像要素のサイズを調整するのに役立ちます。
    
     [image: url https://website.com/logo.jpg; width 60%]
    
    プリンターの印字幅の60%に合わせてサイズ変更された画像を出力します。

Note:
インチ単位の長さ指定については、現在サポートされていません。

長さタイプの組み合わせ

一部のタグでは追加の長さ制約を指定できます。この場合単一のタグで異なる長さ単位タイプを混合すると便利です。
例えば [image] タグは最小サイズを指定することができます。


[image: url https://website.com/logo.jpg; width 60%; min-width 48mm]

これは画像が印刷可能な幅の60%で印刷されることを要求しますが48mm未満にはなりません。
目的は、印刷可能な領域の60%が小さすぎると感じる58mm/2inchモデルを含むすべてのプリンターで快適なサイズで画像を印刷するためです。

Unicodeサポート

StarドキュメントマークアップはUnicodeベースであるため、8ビットテキストエンコーディングの制限による問題を回避します。
入力データはUnicode互換のデータファイルまたは文字列からのものでなければなりません。

デバイスがUnicodeを直接サポートしている場合、Starドキュメントマークアップレンダラーは必要な変換を自動的に処理します。

Unicodeをサポートしているデバイス:

  • Star mC-Print2
  • Star mC-Print3
  • Star TSP100IV
  • Star TSP100IV SK
  • Star mC-Label3

ファイルフォーマット

Starドキュメントマークアップのソースファイルは、UTF-8、UTF-16、またはプレーンASCIIデータとしてエンコードされたプレーンテキストファイルです。

ドキュメントを開くとき、ファイルにUTF-16(UTF-16BE/UTF-16LE)またはUTF-8データが含まれていることを認識するために、最初にファイルの開始がUnicode BOM(バイトオーダーマーク)でチェックされます。 既知のBOMが見つからない場合、UTF-8で有効でないコードポイントが含まれている場合を除きファイルはUTF-8ファイルとして扱われます。その場合、最終的にプレーンな7ビットASCIIとして開かれます。

また、Starドキュメントマークアップ形式で書かれたテキストファイルの拡張子は".stm"としてください。 CPUtilやStarMicronics.CloudPRNT-Utilityパッケージの.NET APIでは、ファイル名の".stm"拡張子をチェックしてStarドキュメントマークアップ形式であることを認識します。 拡張子が".txt"の場合、プレーンテキストファイルとして認識されStarドキュメントマークアップのタグ解析がされません。

Note:
7ビットASCIIデータは、UTF-8エンコーディングスキームと100%互換性があります。
そのため、ASCIIエンコーディングを使用して入力ファイルを読み取るフォールバック方式は、ソースデータが実際に ASCIIエンコードされていないため、ある程度の情報損失が発生する可能性があります。

マークアップ入力ファイルは常にUTF-8またはUTF-16としてエンコードすることを強くお勧めします。