テキストモード
テキストモードは、コンテンツが個々のピクセルではなく文字の観点からコンピューター画面上で内部的に表されるコンピューター表示モードです。通常、画面は文字セルの均一な長方形のグリッドで構成され、各セルには文字セットの文字の1つが含まれます。テキストモードは、すべてのポイントアドレス可能(APA)モードまたは他の種類のコンピューターグラフィックスモードとは対照的です。
テキストモードアプリケーションは、コマンドラインインターフェイスとテキストユーザーインターフェイスを使用してユーザーと通信します。テキストモードアプリケーションで使用される多くの文字セットには、ボックスの描画に使用できる定義済みの半グラフィック文字の限られたセット、およびコンテンツを強調表示したり、GUIプログラムで見つかったウィジェットまたはコントロールインターフェイスオブジェクトをシミュレートするために使用できるその他の基本的なグラフィックも含まれています。典型的な例は、IBMコードページ437文字セットです。
テキストモードプログラムの重要な特徴は、画面上ですべての文字が同じ幅を持つ等幅フォントを想定していることです。これにより、半グラフィック文字を表示するときに簡単に垂直方向の配置を維持できます。これは、ピッチが固定された初期の機械式プリンター(テレプリンターやデイジーホイールプリンターなど)の例えです。これにより、画面に表示される出力を、まったく同じ形式を維持したままプリンターに直接送信できます。
環境によっては、画面バッファーを直接アドレス指定できます。リモートビデオ端末に出力を表示するプログラムは、画面バッファーを操作するための特別な制御シーケンスを発行する必要があります。このような制御シーケンスの最も一般的な標準は、ANSIおよびVT100です。
コントロールシーケンスを介してスクリーンバッファにアクセスするプログラムは、実際の表示との同期を失う可能性があります。そのため、多くのテキストモードプログラムには、 すべてを再表示するコマンドがあります。
歴史
テキストモードのビデオレンダリングは、コンピューターのインタラクティブな使用において、ビデオ指向のテキスト端末がテレプリンターに取って代わり始めた1970年代初頭に顕著になりました。
利点
グラフィックモードと比較したテキストモードの利点には、メモリ消費量の削減と画面操作の高速化が含まれます。 1970年代にテキスト端末がテレプリンターに取って代わり始めたとき、その期間のランダムアクセスメモリのコストが非常に高かったため、画面上のすべてのピクセルの現在の値を同時に保存するためにコンピューターに十分なメモリをインストールするのは途方もなく高価でした現在はフレームバッファと呼ばれるものを形成します。初期のフレームバッファはスタンドアロンのデバイスで、接続された高度な高解像度ディスプレイの費用に加えて、数千ドルの費用がかかりました。単純なライングラフィックスを必要とするが、フレームバッファの費用を正当化できないアプリケーションでは、ベクトル表示が一般的な回避策でした。しかし、多くのコンピューターアプリケーション(データベースへのデータ入力など)に必要なのは、通常のテキストを迅速かつ費用対効果の高い方法でブラウン管にレンダリングする能力だけでした。
テキストモードでは、専用のディスプレイハードウェアが、陰極線による画面のスキャンごとに 、テキストの各行を文字からピクセルに再レンダリングすることにより、高価なメモリの問題を回避します。また、ディスプレイハードウェアは、一度に1行のテキスト(またはそれ以下)に相当するピクセルを格納するのに十分なメモリのみを必要とします。したがって、コンピューターのスクリーンバッファーは、基になるテキスト文字(「テキストモード」という名前)のみを保存および認識し、それらの文字を表す実際のピクセルが単一の統合イメージとして存在する唯一の場所は、画面自体です。ユーザー(視力が持続する現象のおかげ)。
たとえば、80 x 25文字の標準グリッドを保持するのに十分な画面バッファーには、少なくとも2,000バイトが必要です。モノクロディスプレイ、1バイトあたり8ビット、および各文字の8倍の標準サイズを想定すると、結果の画面上のすべてのピクセルを保持するのに十分な大きさのフレームバッファーには、少なくとも128,000ビット、16,000バイト、または16キロバイト未満が必要です。 。現代のコンピューターの標準では、これらは些細な量のメモリのように思えるかもしれませんが、コンテキストをまとめると、元のApple IIは1977年に4キロバイトのメモリと1,300ドルの価格でリリースされました(当時米国の最低賃金は1時間あたり2.30ドルでした。さらに、ビジネスの観点から見ると、テキスト端末のビジネスケースは、交換が想定されていた紙を大量に消費するテレプリンターよりも安く製造および運用できなければ意味がありませんでした。
テキストモードのもう1つの利点は、リモート端末での使用に必要な帯域幅要件が比較的低いことです。したがって、リモートサーバーは数十バイトしか送信する必要がないため、テキストモードのリモート端末は、同じ量の帯域幅にリンクされたグラフィックモードのリモート端末よりもはるかに高速に画面を更新する必要があります(応答性が向上します)。ビットマップ全体の送信とレンダリングを必要とする複雑なラスタグラフィックスのリモートプロシージャコールとは対照的に、テキストモードでの各画面更新に対して。
ユーザー定義の文字
特にPCのVGAハードウェアでは、テキストモードとグラフィカルプログラムの境界があいまいになることがあります。これは、後の多くのテキストモードプログラムがビデオコントローラーで遊んでモデルを極端なものにしようとしたためです。たとえば、カスタムセミグラフィカルキャラクターを作成するためにキャラクターセットを再定義したり、特定の時間にマウスが表示されたキャラクターの外観を再定義してグラフィカルマウスの外観を作成したりしました。
ユーザー定義の文字を使用したテキストモードレンダリングは、ピクセル指向のレンダリングよりもはるかに高速にゲーム画面を操作できるため、2Dコンピューターやビデオゲームにも役立ちます。
技術的根拠
テキストモードを実装するビデオコントローラーは、通常、2つの異なるメモリ領域を使用します。 文字メモリまたはパターンテーブルには使用中のラスターフォントが含まれており、各文字はドットマトリックス(ビットのマトリックス)で表されるため、文字メモリは3次元のビット配列と見なすことができます。 表示マトリックス ( テキストバッファー 、 スクリーンバッファー 、または名前テーブル )は、各セルに含まれる文字を追跡します。単純な場合、表示マトリックスはコードポイントのマトリックス( 文字ポインターテーブルと呼ばれる)だけにすることができますが、通常は各文字位置に対してコードだけでなく属性も格納します 。
L \ C | 0 0 0 0 0 | 0 0 0 0 1 | 0 0 0 1 0 | 0 0 0 1 1 | 0 0 1 0 0 | 0 0 1 0 1 | 0 0 1 1 0 | 0 0 1 1 1 | 00000000 11111111 00001111 00110011 01010101 | 11… 00… 00… 00… 01… | |
---|---|---|---|---|---|---|---|---|---|---|---|
00000 | ■ | ■ | ■ | ■ | ■ | ||||||
00001 | ■ | ■ | ■ | ■ | |||||||
00010 | ■ | ■ | ■ | ■ | ■ | ■ | |||||
00011 | ■ | ■ | ■ | ■ | ■ | ■ | |||||
00100 | ■ | ■ | ■ | ■ | ■ | ■ | |||||
00101 | ■ | ■ | |||||||||
00110 | ■ | ■ | ■ | ■ | |||||||
00111 | |||||||||||
01000 01001 … | ……… | ||||||||||
文字ボックスと対応する電子スキームのサンプル。グリフは8×8ピクセルで、スキャンラインとドットカウンターの3ビットの下位部分があります。画面は、5ビットのインデックスを持つ20×18〜32×32の文字セルです。 |
コンピューターモニターで最も一般的なラスタースキャン出力の場合、対応するビデオ信号は、ビデオテクノロジーで使用される同じ名前のデバイスに似た特殊な電子ユニットであるキャラクタージェネレーターによって作成されます。ビデオコントローラーには、スクリーンドットマトリックスの座標として機能するスキャンラインカウンターとドットカウンターの2つのレジスタがあります。表示マトリックスのインデックスを取得するには、それぞれを対応するグリフサイズで分割する必要があります。残りはグリフマトリックスのインデックスです。グリフサイズが2nに等しい場合、バイナリレジスタの下位nビットをグリフマトリックスのインデックスとして使用し、残りのビットを表示マトリックスのインデックスとして使用することができます。スキームを参照してください。
一部のシステムでは、文字メモリは読み取り専用メモリにあります。他のシステムでは、この目的のためにRAMを使用できるため、アプリケーション固有の目的のために書体や文字セットを再定義することもできます。 RAMベースの文字を使用すると、ビットマップ用に一部の文字を予約し、対応する文字メモリにピクセルを直接書き込むことにより、ピクセルグラフィックフレームバッファーの実装などの特別な手法も容易になります。 TMS9918、MOS Technology VIC、およびGame Boyグラフィックハードウェアを含むいくつかの歴史的なグラフィックチップでは、これは実際にピクセルグラフィックを行う標準的な方法でした。
テキストモードでは、多くの場合、表示される文字に属性が割り当てられます 。たとえば、VT100ターミナルでは、各文字に下線を付けたり、明るくしたり、点滅したり、反転したりすることができます。カラーサポートデバイスでは、通常、各文字の色、および多くの場合背景色も、限られた色のパレットから選択できます。これらの属性は、文字インデックスと共存するか、 カラーメモリまたは属性メモリと呼ばれる別のメモリ領域を使用できます 。
一部のテキストモード実装には、行属性の概念もあります。たとえば、VT100互換のテキスト端末の行は、個々のテキスト行の文字の幅と高さの倍増をサポートしています。
PC共通テキストモード
使用するグラフィックアダプターに応じて、IBM PC互換コンピューターでさまざまなテキストモードを使用できます。以下の表にリストされています。
テキスト解像度。 | チャーサイズ | グラフィック解像度。 | 色 | アダプター |
---|---|---|---|---|
80×25 | 9×14 | 720×350 | 白黒テキスト | MDA、ヘラクレス |
40×25 | 8×8 | 320×200 | 16色 | CGA、EGA |
80×25 | 8×8 | 640×200 | 16色 | CGA、EGA |
80×25 | 8×14 | 640×350 | 16色 | EGA |
80×43 | 8×8 | 640×350 | 16色 | EGA |
80×25 | 9×16 | 720×400 | 16色 | VGA |
80×30 | 8×16 | 640×480 | 16色 | VGA |
80×50 | 9×8 | 720×400 | 16色 | VGA |
80×60 | 16色 | VESA互換のSuper VGA | ||
132×25 | 16色 | VESA互換のSuper VGA | ||
132×43 | 16色 | VESA互換のSuper VGA | ||
132×50 | 16色 | VESA互換のSuper VGA | ||
132×60 | 16色 | VESA互換のSuper VGA |
MDAテキストは、明るい、下線、反転、および点滅属性で強調できます。
ビデオカードは一般に下位互換性があります。つまり、EGAはすべてのMDAおよびCGAモードをサポートし、VGAはMDA、CGAおよびEGAモードをサポートします。
DOS環境および最初のWindowsコンソールで使用される最も一般的なテキストモードは、デフォルトで80列25行、つまり80×25、16色です。このモードは、実質的にすべてのIBMおよび互換性のあるパーソナルコンピューターで使用できました。ターミナルエミュレータなどのいくつかのプログラムは、メインディスプレイに80x24のみを使用し、ステータスバーの最下行を予約しました。
80×43と80×50の2つのVGAテキストモードが存在しますが、使用されることはほとんどありませんでした。 40桁のテキストモードは、ゲームやテレビモニターとの互換性のために設計された他のアプリケーション以外ではあまり人気がなく、デモ目的または非常に古いハードウェアでのみ使用されていました。
拡張VESA互換のSuper VGAテキストモードの文字サイズとグラフィック解像度はメーカーに依存します。また、これらのディスプレイアダプターでは、2番目にカスタマイズされた文字セットを使用すると、使用可能な色が16から8に半分になります(一般的な256ではなく、合計レパートリー512の異なるグラフィック文字が同時に画面に表示されます)。
一部のカード(S3など)は、100×37や160×120などのカスタムの非常に大きなテキストモードをサポートしていました。 Linuxシステムでは、SVGATextModeと呼ばれるプログラムがSVGAカードでよく使用され、分割画面ターミナルマルチプレクサで使用するなど、非常に大きなコンソールテキストモードを設定します。
現代の使用法
グラフィカルインターフェイスを備えた最新のプログラムの多くは、特にコンピュータープログラミング中など、テキストの垂直方向の配置を維持することが重要な場合に、テキストモードプログラムの表示スタイルをシミュレートします。端末エミュレータやコマンドラインコンソールなど、テキストモードをエミュレートするソフトウェアコンポーネントもあります。 Microsoft Windowsでは、Win32コンソールは通常、エミュレートされたグラフィカルウィンドウモードで開きます。 AltキーとEnterキーを同時に押すと、フルスクリーン、トゥルーテキストモード、またはその逆に切り替えることができます。これは、Windows Vistaで導入されたWDDMディスプレイドライバーではサポートされなくなりました。
Linux仮想コンソールはテキストモードで動作します。ほとんどのLinuxディストリビューションは、Ctrl、Alt、およびファンクションキーを同時に押すことでアクセスできる複数の仮想コンソール画面をサポートしています。
AAlibオープンソースライブラリは、PNGやWMVなどの標準的な画像およびビデオファイルの翻訳に特化したプログラムとルーチンを提供し、ASCII文字のコレクションとして表示します。これにより、テキストモードシステムおよびLynxなどのテキストモードWebブラウザーでグラフィックファイルを基本的に表示できます。