6

FLTK 1.3.2のドキュメントによると:

Unicode サポートは FLTK に最近追加されたばかりで、まだ不完全です。

ただし、次のものが実装されていると思われます。

FLTK での Unicode と UTF-8 の初期実装には、次の 3 つの重要な領域が含まれることに注意することが重要です。

  • Unicode 文字テーブルといくつかの簡単な関連機能の提供
  • char* 変数と関数パラメーターの、1 文字あたりのシングルバイト表現から UTF-8 可変長
    シーケンスへの変換
  • 表示フォント インターフェイスを変更して、ASCII または Latin1 文字だけでなく、一般的な Unicode 文字または UCS コード番号を受け入れるようにしました。

私の質問は、実際に FLTK コントロールに Unicode を表示するにはどうすればよいですか? Unicode を受け入れるウィジェット関数が見つかりません。たとえば、これはlabel関数のシグネチャです。

void Fl_Widget::label ( const char * text )

4

1 に答える 1

5

あなたが投稿したリンクから:

FLTK は、UTF-8 エンコーディングを使用して完全に Unicode に変換されます。基盤となるオペレーティング システムで別のエンコードが必要な場合、FLTK は必要に応じて文字列を変換します。

リストした 3 つの箇条書きは、Unicode サポートの実装を構成する領域です。つまり、これらは彼らが行っていること、または行うことを計画していることです。

  • FLTK の実装者は、Unicode 文字テーブルといくつかの単純な関連関数を提供する予定です
  • FLTK の実装者は、char* 変数と関数パラメーターを SBCS の使用から UTF-8 に変換しようとしています。(つまり、FLTK 関数と変数を再実装して、char* 文字列を UTF-8 として扱う予定です。)
  • FLTK の実装者は、表示フォント インターフェイスを変更して、ASCII および Latin1 文字以上のものをカバーしようとしています。

私の質問は、実際に FLTK コントロールに Unicode を表示するにはどうすればよいですか? Unicode を受け入れるウィジェット関数が見つかりません。たとえば、これは label 関数のシグネチャです。

void Fl_Widget::label ( const char * text )

「Unicode」を 2 バイト文字を使用するエンコーディングを意味するものとして誤って使用している人がたくさんいます。リンク先のFLTKドキュメントでは、この間違いはありません。これを理解すると、ドキュメントは、上記の署名で Unicode を使用する方法を非常に明確に示しています。UTF-8 エンコーディングを使用して、Unicode データを char* 文字列として渡します。たとえば、実行エンコーディングとして UTF-8 を使用するコンパイラを使用している場合:

widget.label("кошка 日本国");

または、C++11 コンパイラを使用している場合:

widget.label( u8"кошка 日本国");
于 2013-10-07T13:30:40.003 に答える