# Terminal

本ライブラリのターミナル（コンソール）は、文字列ベースの画面を構成することを目的としてます。

以下に設計時の考慮事項を記載します。

* 固定幅の画面構成を行うこと
* 日本語の表示が可能であること
* ソースコード中に直接日本語文字列を含められるようにすること
  * UTF-8でソースコードを記述する前提とする
  * 内部処理をUnicodeとすること
  * UTF-8デコードが出来るようにすること
* 旧来のキャラクター型のインタフェースを実装できるよう、いくつかのエスケープシーケンスを実装しておくこと
  * ただしANSIエスケープシーケンスの完全な互換性を目的とはしない
* 文字色、背景色、太字といった表示属性に対応すること
* カーソルを表示・非表示にできること
* 画面の順方向のスクロールに対応すること
* カラム数を超えて文字列を出力した場合は、折り返しを行えること
  * 右端カラムへの文字出力を行った場合、その時点では折り返しを行わないようにすること
    * 上記を実装は、折り返し処理の実装より優先すること
* 複数のターミナル表示を画面上に同時に表示できること
* 毎回全画面書き換えといったような描画パフォーマンスの悪い実装でないこと
  * 変更がある行のみを書き換える行単位の描画を行うようにした
* フォントを選択できること
  * 配布可能なフォントをライブラリ内に同梱しておくこと
  * より大きな文字を表示するため、倍角表示に対応すること

本ライブラリのターミナルは、大まかに分けて２要素から構成されます。

* ターミナル画面上の文字列を管理するクラスや関数をまとめた [TWETERM](https://mwm5.twelite.info/0.8/references/untitled/tweterm)
* フォントの管理と描画に関連するクラスや関数をまとめた [TWEFONT](https://mwm5.twelite.info/0.8/references/untitled/twefont)
