見出し画像

Qtリッチテキストでヒエログリフを打つ

Qtのリッチテキストではいろいろな外国語の文字を打つようにカスタマイズすることができます。

カスタマイズできる基本条件はこちら。

 ・打ち込みたい文字がユニコードに登録されていること
 ・自分の使用している言語が該当するユニコード対応になっていること
 ・その文字のための適切なフォントが存在していること


しかし、一旦外国語の文字を打てるようになると、様々な面倒事が発生します。巨大な力には巨大な責任が伴う・・・ということですね。大風呂敷が広がるわけです。

  • UndoとRedoの実装:例えば、韓国語は複数の字母が組み合わさって初めて1文字の字体となります。したがって、このためのUndoとRedoを実装しなければなりません。表記体系ごとにUndoとRedoを実装しなければならないので、超絶的に面倒です。

  • フォントの選択:表記体系によっては既存のフォントでは表示できないことがあります。また、表記体系を選択するタイプのアプリになると、適切なフォントを自動でセットするようにしなければなりません。なお、フォントは一つの表記体系のために複数用意されていることもよくありますから、代表的なものを選択します。

  • 余計な文字を入れ込まないようにさせる。例えば、彝文字を打つ場合、基本はアルファベットで入れ込みます。1文字を構成するのに必要なアルファベットがそろったとき、一気に今まで書いたアルファベットを消し去ります。変換対象以外のアルファベットを入れさせないようにするか、入れさせたとしても余計なアルファベットは全て消去します。

  • リストの表示中と非表示中の扱いを分ける。中国語などは、変換候補がリストで表示されます。このリスト表示中は、改行などを行えないようにする必要があります。リストの表示を制御することも必要です。9個の漢字がリストに並べられますが、4つしか載せられない場合もあります。その場合、空白の部分を選択するとエラーが発生します。

GUIアプリケーションを作ろうとした場合、最後の最後に気づくのです。UndoとRedoを実装しなければならないということに。

 一方通行のアプリは非常に組みやすく、ガンガン行くことができます。しかし、行きはよいよい帰りは怖い、しっかりと逆の動きも実装しなければならないのですね。

 Qtでは、デフォルトの設定で、すでにUndoとRedoが組み込まれています。普通に使う分にはまったくそのことを意識する必要はありません。

 しかし、一旦自分独自の機能を組み込もうとすると、もう既存のUndoとRedoには頼ってはいられないのです。最悪な話、自分で全部組みなおさなくてはならないのです。(少なくとも私はそうしちゃいました。)

 UndoとRedoなしのドキュメントアプリなんて、使いにくくて仕方がありません。間違えて大量の文章を消去してしまった後、もう2度と戻らないなんてことを考えると、非常に恐ろしいアプリになりますね。

 ですので、Qtを使う=UndoとRedoまでマスターする。ということは、必須のスキルになりますから、厳しい世界だなぁと思っています。

 人は許してくれるかもしれませんが、アプリは絶対にコードの通りにしか動きません。人に合わせるのではなく、世界に合わせる。これが重要なのです・・・。

 ・・・少なくとも心の持ちようはね。

 一番の問題は、ヒエログリフを入力しておきながら、一体私は何を書いているのか、自分でもわからないってことなんですけどね。ボポモフォとか自分で仕組み作っておきながら打ち方わからない~。

 ふう。というわけで、いつもの通りつまらない動画をば。

Qtで作成したバーチャルキーボードの出力結果。ヒエログリフや楔形文字、彝文字など。UndoとRedoの機能。 - YouTube




いいなと思ったら応援しよう!