-3

テキスト入力が許可されている場所ならどこでも、特殊文字の小さなセットをユーザーが入力できるようにする必要があります。キャラクターの名前は次のとおりです。

  1. FORALL.................................THERE EXISTS
  2. 存在しない.................................................大文字の PI
  3. キャピタル・シグマ.................................................サブセット
  4. の適切なサブセット.............のスーパーセット
  5. PROPER SUPERSET OF.........IMPLIIES
  6. 同等性.................................................NOT
  7. および................................................................または

編集

2 つのコメントで要求されているように、要件を明確にしています。

これらの文字を、オブジェクト エディターでのユーザー入力と、オブジェクト リーダーでのシンボルとしての出力として使用できるようにしたいと考えています。通常、これらのリーダーはオブジェクトの説明または定義を表示し、シンボルはその説明/定義の一部を形成します。ユーザーは、オブジェクトを記述または定義するタスクの一部としてそれらを入力します。リーダーは、さまざまなメディア (Web ページ、カスタム オブジェクト リーダー、オンスクリーンまたはオフスクリーン リーディング用のテキスト ドキュメント) に存在する可能性があります。

ユーザーが持っているマシンに関係なく、アプリケーションでこれらの機能を提供したいと考えています。特に、以下に関係なく提供したいと思います。

  1. プラットホーム
  2. 特定のマシンで使用可能なフォント
  3. ロケール - キーボードと OS の両方の設定。

@Raedwald の編集された回答は、私の要件の両方の部分に対する完全な回答を提供します。私の質問に対する彼の答えを受け入れる可能性が高い. 私がさらに調査する必要がある彼の答えの部分は、「2.出力デバイスが使用する出力エンコーディングを検出します。この検出には、存在するフォントのチェックを含めます。」この仕事に何が関係しているのかわかりません。

編集終了

4

1 に答える 1

3

「フォントに依存しない」、「ロケールに依存しない」。これは、ASCII 文字セットのみに制限したいという意味だと思います。その場合、C/C++ 文字列のようにエスケープ文字を使用することをお勧めします。たとえば、エスケープ文字が「?」の場合、次のように特殊記号をエンコードできます。

  • ?フォーラル
  • ?E 存在します
  • ?N 存在しません
  • ?P 大文字 PI
  • ?S キャピタル シグマ
  • ?< のサブセット

等々。WV Quine* のようになりたくない場合は、?? も定義する必要があります。意味する "?"。


編集:コメントで求められたとおり:

それは入力側を扱います。実際に特殊記号を特殊記号として表示したい場合は、Unicode で出力する必要があります。したがって、出力の実行時にこの表現から Unicode に変換するか、入力時に変換を行い、文字列を Unicode で記録する必要があります。


編集:コメントで求められたとおり:

必ずしも ASCII 文字セットに限定したいわけではありません。該当するコンピュータに(たとえば)記号フォントがない場合でも、文字を入力して表示したい

  1. 文字列を Unicode エンコーディングで保存します。
  2. 出力デバイスが使用する出力エンコーディングを検出します。この検出に、存在するフォントのチェックを含めます。
  3. 出力エンコーディングが必要なすべての特殊文字の出力をサポートできる場合は、出力コードを Unicode から出力デバイスが使用するエンコーディングに変換します。それ以外の場合は、入力に使用したのと同じエスケープ シーケンスを使用して、出力コードに特殊文字を書き込みます。

* 哲学者の W.V. クワインが機械式タイプライターを変更し、タイプの一部をクエスチョン マークなどの論理記号に置き換えたことは有名です。「クエスチョンマークを見逃していませんか?」と尋ねられたとき、彼は「そうですね、確かなことを扱っています」と答えました。

于 2012-08-25T15:55:02.717 に答える