セグメント間の文字
文字ベースのディスプレイにおいて、セグメント間の文字は、特定の情報を表すためにオンまたはオフにできる追加要素です。「メイン」の文字の一部ではありません。たとえば、時計には「:」や「/」のような区切り要素があるほか、一部のディスプレイでは小数の表示に備えてどの文字にもドット(「.」)が付加されています。
セグメント間の文字の表示
セグメント間の文字はAPL-Tドキュメントで一般的な形式でターゲットにできますが、そのためには、その文字の位置と、そこで表示できる文字を把握している必要があります。たとえば、日付をYYYY/MM/DD形式(8文字がYYYYMMDD、2文字が「/」を表示できるセグメント間文字)で表示できる8文字クロック付きのデバイスを考えてみましょう。
デバイスの機能を把握していれば、text
プロパティに「2016/02/07」を設定したText
コンポーネントを含むAPL-Tドキュメントを作成できます。ランタイムは、「/」文字の描画にセグメント間の文字を使用します。
ただし、ドキュメントで(レイアウトにより)指定されているものの、ディスプレイではその位置にセグメント間の文字がない場合、該当する文字はランタイムによって無視されます。
アルゴリズム
ここでは、セグメント間の文字を処理するアルゴリズムを説明します。説明では次の用語を使用します。
- 「ドキュメント文字」は、APL-Tドキュメントから取得される文字です。
- 「ディスプレイの文字スロット」は、実物のハードウェア上の位置です。上述のような「実スロット」と「セグメント間スロット」があります。
- 「実文字セット」は、「実スロット」に表示できる文字です。
- 「セグメント間文字セット」は、「セグメント間スロット」に表示できる文字です。
ステップ1
ランタイムは、次の書き込み先となるディスプレイの文字スロットの処理を次々と続けます。開始時のスロットは、ディスプレイ左上のものです。左から右へ同じ行を進んでから、次の行の左端へ移動します。
ステップ2
ランタイムは、次に描画するドキュメント文字を決定します。決定に際しては、個々のComponent
に指定されているレイアウトルールに従います。
ステップ3
ドキュメント文字の表示、スキップ、または省略を決定します。ランタイムは、デバイスの機能、実スロットとセグメント間スロットの位置、表示できる文字を把握しています。次の判断ルールに従います。
ドキュメント文字 | 実ディスプレイスロット | セグメント間ディスプレイスロット |
---|---|---|
実文字セットに含まれている | 表示 | 次のスロットへ移動してステップ3を繰り返す |
セグメント間文字のセットに含まれている | 省略 | 表示 |
どちらでもない | スペースを表示 | 次のスロットへ進んでステップ3を繰り返す |
最後のスロットより後の位置に達すると、ドキュメント全体の描画が停止します。
例
「NN:NN」のような数値時間データの表示をサポートするデバイスを考えてみましょう。Nは0~9、ドキュメントには「1:24」が指定されているとします。このコンテンツを左ぞろえ(デフォルト)で使用すると、結果は「124」となります。これは、「:」が省略扱いとなり、本来の位置に何も表示されないためです。
一方、同じコンテンツを右ぞろえで配置すると、「1:24」と表示されます。