# Terminal

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

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

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

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mwm5.twelite.info/0.8/references/untitled.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
