(57)【要約】【課題】  ルビを付す場合の文書の体裁又はルビの編集に柔軟に対応すること。【解決手段】  文書中の文字にルビを付す場合に、従来の如く、ルビを付す文字の幅をルビの幅に変更しないように、ルビを付す文字（文字列）の幅を変更することなく当該ルビを付す手段を備える。【選択図】  図３
2005267102.tif 000002
【特許請求の範囲】
【請求項１】
文書中の文字にルビを付すための文書処理装置であって、
ルビを付す文字の幅を変更することなく当該ルビを付す手段を備えたことを特徴とする文書処理装置。
【請求項２】
文書中の文字にルビを付すための文書処理装置であって、
ルビを付す文字の幅を変更することなく当該ルビを付す場合と、ルビを付す文字の幅をルビの幅に変更して当該ルビを付す場合と、のいずれかを選択的に実行可能な手段を備えたことを特徴とする文書処理装置。
【請求項３】
文書中の文字にルビを付すための文書処理装置であって、
ルビの配置位置情報を、そのルビが付された文字の配置位置情報とは別に、独自に設定する手段を備えたことを特徴とする文書処理装置。
【請求項４】
文書中の文字にルビを付すための文書処理装置であって、
文書中に挿入された、ルビ開始記号と、ルビセパレータ記号と、ルビ終了記号と、をそれぞれ識別する手段と、
前記ルビ開始記号と前記ルビセパレータ記号との間に挟まれた文字をルビを付す文字と認識し、前記ルビセパレータ記号と前記ルビ終了記号との間に挟まれた文字をルビと認識する手段と、
を備えたことを特徴とする文書処理装置。
【請求項５】
文書中の文字にルビを付すための文書処理方法であって、
ルビを付す文字の幅を変更することなく当該ルビを付すことを特徴とする文書処理方法。
【請求項６】
文書中の文字にルビを付すための文書処理方法であって、
ルビを付す文字の幅を変更することなく当該ルビを付す場合と、ルビを付す文字の幅をルビの幅に変更して当該ルビを付す場合と、のいずれかを選択的に実行可能な工程を含むことを特徴とする文書処理方法。
【請求項７】
文書中の文字にルビを付すための文書処理方法であって、
ルビの配置位置情報を、そのルビが付された文字の配置位置情報とは別に、独自に設定する工程を含むことを特徴とする文書処理方法。
【請求項８】
文書中の文字にルビを付すための文書処理方法であって、
文書中に挿入された、ルビ開始記号と、ルビセパレータ記号と、ルビ終了記号と、をそれぞれ識別する工程と、
前記ルビ開始記号と前記ルビセパレータ記号との間に挟まれた文字をルビを付す文字と認識し、前記ルビセパレータ記号と前記ルビ終了記号との間に挟まれた文字をルビと認識する工程と、
を含むことを特徴とする文書処理方法。
【請求項９】
文書中の文字にルビを付すために、コンピュータを、
ルビを付す文字の幅を変更することなく当該ルビを付す手段、として機能させるプログラムを記録した記憶媒体。
【請求項１０】
文書中の文字にルビを付すために、コンピュータを、
ルビを付す文字の幅を変更することなく当該ルビを付す場合と、ルビを付す文字の幅をルビの幅に変更して当該ルビを付す場合と、のいずれかを選択的に実行可能な手段、として機能させるプログラムを記録した記憶媒体。
【請求項１１】
文書中の文字にルビを付すために、コンピュータを、
ルビの配置位置情報を、そのルビが付された文字の配置位置情報とは別に、独自に設定する手段、として機能させるプログラムを記録した記憶媒体。
【請求項１２】
文書中の文字にルビを付すために、コンピュータを、
文書中に挿入された、ルビ開始記号と、ルビセパレータ記号と、ルビ終了記号と、をそれぞれ識別する手段、
前記ルビ開始記号と前記ルビセパレータ記号との間に挟まれた文字をルビを付す文字と認識し、前記ルビセパレータ記号と前記ルビ終了記号との間に挟まれた文字をルビと認識する手段、
として機能させるプログラムを記録した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書中の所望の文字列に対してルビ文字を付加して、表示、編集を行なうことが可能な文書処理装置及び文書処理方法に関する。
【背景技術】
【０００２】
文書内の文字列データに、文字修飾情報としてフリガナ（以下ルビ）文字または文字列を付けることが可能な文書処理装置が提案されている。
【０００３】
【特許文献１】特開平１０−２５４８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ここで、従来の文書処理装置では、ルビ文字列の占める文字方向の幅が、ルビが付けられた文字列（以下、ルビ親文字列ともいう。）の幅を超える場合、ルビ親文字列の配置領域は、ルビ文字列の幅に変更されていた。
【０００５】
しかし、ルビ親文字列の幅が変更されると、ルビが付けられている文字列の配置領域が広がることによって、文書内の文字列の部分または全体の配置（組体裁）が変化してしまうという問題がある。
【０００６】
また、ルビ文字列の文字サイズ、文字書体は、配置されたルビ文字列毎に決められるため、ルビ文字列内でルビの部分文字列のサイズ強調、太さ強調をしたり、異なる書体での表示ができないという問題がある。
【０００７】
従って、本発明の目的は、ルビを付す場合の文書の体裁又はルビの編集に柔軟に対応することにある。
【課題を解決するための手段】
【０００８】
本発明によれば、文書中の文字にルビを付すための文書処理装置であって、ルビを付す文字の幅を変更することなく当該ルビを付す手段を備えたことを特徴とする文書処理装置が提供される。
【０００９】
また、本発明によれば、文書中の文字にルビを付すための文書処理装置であって、ルビを付す文字の幅を変更することなく当該ルビを付す場合と、ルビを付す文字の幅をルビの幅に変更して当該ルビを付す場合と、のいずれかを選択的に実行可能な手段を備えたことを特徴とする文書処理装置が提供される。
【００１０】
また、本発明によれば、文書中の文字にルビを付すための文書処理装置であって、ルビの配置位置情報を、そのルビが付された文字の配置位置情報とは別に、独自に設定する手段を備えたことを特徴とする文書処理装置が提供される。
【００１１】
また、本発明によれば、文書中の文字にルビを付すための文書処理装置であって、文書中に挿入された、ルビ開始記号と、ルビセパレータ記号と、ルビ終了記号と、をそれぞれ識別する手段と、前記ルビ開始記号と前記ルビセパレータ記号との間に挟まれた文字をルビを付す文字と認識し、前記ルビセパレータ記号と前記ルビ終了記号との間に挟まれた文字をルビと認識する手段と、を備えたことを特徴とする文書処理装置が提供される。
【００１２】
また、本発明によれば、文書中の文字にルビを付すための文書処理方法であって、ルビを付す文字の幅を変更することなく当該ルビを付すことを特徴とする文書処理方法が提供される。
【００１３】
また、本発明によれば、文書中の文字にルビを付すための文書処理方法であって、ルビを付す文字の幅を変更することなく当該ルビを付す場合と、ルビを付す文字の幅をルビの幅に変更して当該ルビを付す場合と、のいずれかを選択的に実行可能な工程を含むことを特徴とする文書処理方法が提供される。
【００１４】
また、本発明によれば、文書中の文字にルビを付すための文書処理方法であって、ルビの配置位置情報を、そのルビが付された文字の配置位置情報とは別に、独自に設定する工程を含むことを特徴とする文書処理方法が提供される。
【００１５】
また、本発明によれば、文書中の文字にルビを付すための文書処理方法であって、文書中に挿入された、ルビ開始記号と、ルビセパレータ記号と、ルビ終了記号と、をそれぞれ識別する工程と、前記ルビ開始記号と前記ルビセパレータ記号との間に挟まれた文字をルビを付す文字と認識し、前記ルビセパレータ記号と前記ルビ終了記号との間に挟まれた文字をルビと認識する工程と、を含むことを特徴とする文書処理方法が提供される。
【００１６】
また、本発明によれば、文書中の文字にルビを付すために、コンピュータを、ルビを付す文字の幅を変更することなく当該ルビを付す手段、として機能させるプログラムを記録した記憶媒体が提供される。
【００１７】
また、本発明によれば、文書中の文字にルビを付すために、コンピュータを、ルビを付す文字の幅を変更することなく当該ルビを付す場合と、ルビを付す文字の幅をルビの幅に変更して当該ルビを付す場合と、のいずれかを選択的に実行可能な手段、として機能させるプログラムを記録した記憶媒体が提供される。
【００１８】
また、本発明によれば、文書中の文字にルビを付すために、コンピュータを、ルビの配置位置情報を、そのルビが付された文字の配置位置情報とは別に、独自に設定する手段、として機能させるプログラムを記録した記憶媒体が提供される。
【００１９】
また、本発明によれば、文書中の文字にルビを付すために、コンピュータを、文書中に挿入された、ルビ開始記号と、ルビセパレータ記号と、ルビ終了記号と、をそれぞれ識別する手段、前記ルビ開始記号と前記ルビセパレータ記号との間に挟まれた文字をルビを付す文字と認識し、前記ルビセパレータ記号と前記ルビ終了記号との間に挟まれた文字をルビと認識する手段、として機能させるプログラムを記録した記憶媒体が提供される。
【発明の効果】
【００２０】
本発明によれば、ルビを付す場合の文書の体裁又はルビの編集に柔軟に対応することができる。
【発明を実施するための最良の形態】
【００２１】
＜装置の説明＞
図１は本発明の一実施形態の文書処理装置の構成を説明するブロック図である。図１において、１はＣＲＴ表示装置で、編集中の文書、各種メッセージメニューなどを表示する。２はビデオＲＡＭ（ＶＲＡＭ）で、ＣＲＴ表示装置１の画面に表示される文字、イメージを展開記憶する。３はビットムーブユニット（ＢＭＵ）で、メモリ間あるいはメモリと各デバイス間のデータ転送をコントロールする。４は文書編集などを行なうための各種キーを備えたキーボードであり、５は画面上のアイコンなどを指し示すためなどに用いられるポインティングデバイス（ＰＤ）、６はＣＰＵで、ＲＯＭ７に記憶された制御プログラム（文書編集に係るプログラムやエラー処理プログラムをはじめ、後述する本発明の処理を実現するためのプログラムも記憶されている）に基づいて本装置の各部を制御する。
【００２２】
８は上述した各種プログラムをＣＰＵ６が実行する時にワークエリア、エラー処理時の一時退避エリアとして用いられるＲＡＭ、９はハードディスクドライブ（ＨＤＤ）、１０はフロッピー（登録商標）ディスクドライブ（ＦＤＤ）をそれぞれ示し、各ディスクには後述するアプリケーションプログラムやデータ、ライブラリなどの保存用に用いられる。１１はネットワークインターフェイス（Ｎｅｔ−Ｉ／Ｆ）を示し、他の文書処理装置との間でネットワークを経由してデータ転送を行なうためにネットワーク上のデータ制御、診断を行なう。１２は上述した各ユニット間を接続するＩ／Ｏバス（アドレスバス、データバスおよび制御バスからなる）である。
【００２３】
なお、本実施形態でＲＯＭに記憶しているプログラムは、文書処理装置に直接接続されているハードディスク（ＨＤ）やフロッピー（登録商標）ディスク（ＦＤ）などの記憶媒体にも記憶されていてもよい。さらに、ネットワークで接続されている他の装置上に記憶されていてもよい。また、該プログラムは、ＦＤやＨＤなどの記憶媒体やネットワークを介してシステムや装置に供給することもできる。
【００２４】
図２は文書処理装置における文書データのデータ形式の一例を示す図である。この文書処理装置においえて文書データは、文書の文字列データ２１と、文字列の表示領域に関する領域情報２２と、文字列データ２１の文字修飾情報２３と、文字修飾情報としてのルビ表示情報２４と、文書データ全体に関する書式情報２５とから構成される。図３は、この文書処理装置におけるルビ文字処理の表示例であり、”文字列”という親文字列に”るびもじれつ”というルビ文字列が付された態様を示した図である。
【００２５】
図４は、図３の文字列のデータ形式の一例を示す図である。図中、ルビ開始コマンド”●”、ルビセパレータ”▲”、ルビ終了コマンド”■”は、文書文字列中にルビ付加を実現するためのルビ関係コマンドであり、表示を伴わない（字間０、表示サイズ０）文字データである。一連の文字列中の各文字は、全て、例えば図５に示されるようなデータ形式の文字修飾情報５０が与えられ、それらの文字修飾情報は、図２に示した文字修飾情報２３に格納される。図５に示した文字修飾情報５０は、文字の表示位置を示す表示位置情報５１と、文字の書体を示す書体情報５２と、文字サイズを示す書体サイズ情報５３と、文字間の字送りを示す書体字間情報５４と、から構成される。なお、表示位置情報５１は、文書処理装置が文字修飾情報５０の他の情報に基づき、文字の配置つまり組版を行った際に格納される。また、書体情報５２、書体サイズ情報５３、書体字間情報５４は、文字入力を行う際に設定されることとなる。図６は、各文字と文字修飾情報５０との関係を示した図である。
【００２６】
次に、文字の配置について説明する。図７は、文字列の配置及びその位置情報の格納のための処理のフローチャートである。ステップＳ７１では、表示を行う領域情報２２と書式情報２５とに基づいて文字列データの最初の文字配置位置（Ｐ１）を決定する。次にステップＳ７２へ進み、一文字目の文字データの文字修飾情報５０の表示位置情報５１へ座標値（Ｐｍ）を格納する。
【００２７】
ステップＳ７３及びステップＳ７４では、文字列データについてその先頭より順に配置処理をすすめ、各配置処理では、前の配置文字の座標値へ書体字間（Ｇｍ）情報５４、および書体サイズ（Ｗｍ）情報５３を加算した値を該文字の配置座標値とする。図８は、前の配置文字”れ”と該配置文字”は”との位置関係を示す。算出方法は、
Ｐｍ＋１＝Ｐｍ＋Ｇｍ＋Ｗｍ
（ｍは文字列中のｍ番目の文字を示す）
となる。その後、座標値を表示位置情報５１へ格納し、文書文字列データの終了位置まで繰り返し配置を行って終了する。
【００２８】
次に、図９を用いて文書文字列データ中のルビ配置方法を説明する。図９は、ルビ配置処理のフローチャートである。ステップＳ９１は、図７のステップＳ７１に相当し、文字列データの先頭文字の配置座標を決定する。順に文字配置を進めていき、文字配置途中にてルビ開始コマンド”●”が現れた場合、図７のステップＳ７３の処理において配置を終了する。
【００２９】
次に、文書文字列データ中のルビ開始コマンド”●”とルビ終了コマンド”■”に挟まれるルビ親文字列とルビ文字列のデータ列の配置を仮想的に行うため、ステップＳ９２では、ルビ開始コマンド”●”を基準先頭文字としてその位置を仮想原点で設定し、ステップＳ９３では、順に文字配置を進めていき、文字配置途中にてルビ終了コマンド”■”が現れたところで配置処理を終了する。この結果、一連の文字列は、例えば図１０の形態となる。
【００３０】
図１０は、位置ＶＰ１より仮想配置された、ルビ親文字列およびルビ文字列の実施形態である。ステップＳ９４では、
ＬｅｎｇｔｈＭＯＪＩ＝ＶＰ２−ＶＰ１
ＬｅｎｔｇｈＲＵＢＹ＝ＶＰ３−ＶＰ２
なる演算を行って、ルビ親文字列長”ＬｅｎｇｔｈＭＯＪＩ”と、ルビ文字列長”ＬｅｎｇｔｈＲＵＢＹ”とをそれぞれ計算する。
【００３１】
ステップＳ９５では、ルビ親文字列の先頭配置座標を設定する。ステップＳ９５は続くステップＳ９６の文字配置処理における図７のステップＳ７１で説明される基準先頭文字位置の決定に相当する。この処理は、＜ルビ親文字列とルビ文字列の配置＞欄にて説明を行う。
【００３２】
ステップＳ９６では、ルビ親文字列の再配置を、図７の文字配置位置決定処理に基づいて、ルビセパレータ”▲”の直前まで行う。ステップＳ９７では、ルビ文字列の先頭配置座標を設定する。これは、続くステップＳ９８における図７のステップＳ７１で説明される基準先頭文字位置の決定に相当する。この処理は、＜ルビ親文字列とルビ文字列の配置＞欄にて説明を行う。
【００３３】
ステップＳ３０８の配置処理では、図７の文字配置位置決定処理によってルビ文字の配置を行い、ルビ終了コマンド”■”の直前までの文字配置を行う。ステップＳ９９では、ルビ文字列に続く文書文字列（図４の”です”）の先頭配置座標を設定する。続くステップＳ１００での文字配置処理における図７のステップＳ７１で説明される基準先頭文字位置の決定に相当する。この処理は、＜ルビ親文字列とルビ文字列の配置＞欄にて説明を行う。ステップＳ１０１では、文字列データに格納された領域情報２２により表示を行う。以上の処理により、図４に例示される文書文字列データは、図３に例示される表示例を得る。
【００３４】
次に、本実施形態では、従来技術であるルビ文字列の表示幅でルビ表示領域が設定されるルビ表示方法と、ルビ表示領域をルビ親文字列の表示幅で設定される表示方法のいずれかを指定することができる。例えば、一例として図１１に示すように、キャレット表示がルビ親文字列またはルビ文字列に存在する場合、ポインティングデバイスによる選択メニューの選択を行う。
【００３５】
図１１において、「ふりがな（ルビ）」のメニユーアイテムは、文字列が選択された場合に選択が可能となり、文字列選択なき場合は、ルビ付加の対象となる文字列を指定する機能は動作しない。キャレット移動処理および範囲指定処理は後述する。文字列選択がなされている場合は、続いてメニューよりルビ付加機能の動作を行う。すなわち、図１２に示されるようなパネルが開き、ルビ表示幅ののラジオボタンでの選択とＯＫボタンの押下によって指定がなされる。指定が行われた場合には、キャレット表示にて指定が行われているルビ文字列のルビ開始コマンドの文字修飾情報であるルビ表示方法情報２４に格納される。これらの処理を詳細に説明する。
【００３６】
図１のように構成された文書処理装置において、ポインティングデバイス等により文書の中からルビ付加対象とすべき所望の文字列を指定し、メニューアイテムからルビの入力開始を指示すると、ルビ入力開始処理が、ルビコマンドを文字列に埋め込み、ルビの編集状態となる。もしくは、既存のルビ文字列を指定すると、自動的にルビの編集状態となる。キャレットの移動操作による移動処理内で、ルビ編集終了処理がコールされ、ルビ文字の有無に従い、ルビコマンドの削除を行なう。この一連の動作により、ルビを通常の文字と同じような操作で編集することが可能となる。
【００３７】
任意の位置にキャレットを移動するための手段は、例えば、図１の４に示すキーボード、もしくは図１の５に示すポインティングデバイスである。また、編集開始時は自動的に文書の先頭に表示されるものとする。ポインティングデバイスでの指定動作を図１５のフローチャートで示す。ステップＳ１５１にて、図１６に示す所定のバッファ上の比較対象文字２０１に文書先頭文字のポインタを指定する。また、その文字のベースラインを２０２に保管しておく。そして以降は、文書終端方向へ指定されたと考えるにもっともふさわしい文字をサーチして行く。
【００３８】
ステップＳ１５２にて、図２の文字修飾情報２３から得る文字の底より上がポインティングされたかを比較する。下ならば、ステップＳ１５３へ、上ならばその行の文字が指定されたとしてバッファ内２０２のベースラインに現在の文字のベースラインを保管してステップＳ１５５に進む。ステップＳ１５３にて、比較対象文字２０１のポインタをインクリメントして、次の文字とする。
【００３９】
ステップＳ１５４にて、文書の終わりに達してしまったならステップＳ１５８へ進み文書の終端を最終文字として終了する。文書終端でなければステップＳ１５２に戻り、最適行を探すループとなる。ステップＳ１５５にて、図２の文字修飾情報２３内の情報から得る文字の左端位置より左がポインティングされたかを比較する。左ならば、その直前がポインティングされたことになるので、ステップＳ１５８に進み、直前の文字が比較対象文字を移動先として処理が進む。
【００４０】
右ならばステップＳ１５６へ進み、上述したステップＳ１５３と同様の処理の後、ステップＳ１５７にて、バッファ部に保管されているベースライン２０２と比較中の文字２０１のベースラインを比べ、文字のベースラインが下ならば、次の行へ移ってしまったと考えてステップＳ１５８へ、ベースラインが同じか上ならステップＳ１５５へ戻ることでこの行内で最適移動先文字を探すループとなる。
【００４１】
ステップＳ１５８では、バッファ内２０１に比較対象文字ポインタとして保管されているものを移動先文字とする。ステップＳ１５９では、上記移動先文字を引数として、キャレットの移動処理を行なう。図１７は、キャレットの移動処理であり、ルビ編集の要となる。ステップＳ１７１の移動先文字取得は実際には引数として必ずこの処理にわたってくるものである。ステップＳ１７２の判定でマウスドラッグか、キーボードのシフトキーが押されている時の移動操作の場合は、範囲指定操作であるのでステップＳ１７３へ、そうでなければ範囲指定でないのでステップＳ１８１へ、進む。なお、ステップＳ１７３の範囲指定操作のケースの場合は、文字列の指定手段として、図１８を利用して後に述べる。また、ステップＳ１８１の範囲指定解除のケースの場合は図１９を用いて後に述べる。
【００４２】
ステップＳ１７４は、移動先となる文字の直前の文字の文字修飾情報（図２の２３）から表示すべきキャレットサイズを取得する。ルビの場合のサイズは図４のルビセパレータ”▲”にあたるセパレータの修飾情報も保有している。このために、通常の文字と処理を変える必要はない。ステップＳ１７５は、移動先となる文字の文字修飾情報（図２の２３）から表示すべきキャレット位置を取得する。ルビの場合のサイズは図４のルビ終了コマンド”■”も保有している。このために、通常の文字と処理を変える必要はない。
【００４３】
ステップＳ１７６は、文字列を前方へサーチして、ルビ終了コマンドよりも先にルビセパレー夕が見つかった時にＹｅｓとなる。当然のことながら、文書の先頭までサーチして見つからない時もＮｏである。ステップＳ１７７は、今までキャレットがルビ中にあったかを図２０の状態フラグ３０１内、図２１の０１０ルビ中フラグのＯｎ，Ｏｆｆによって調べる。なお、図２０はキャレット情報の構造体を表しており、また、図２１は、キャレット状態フラグを表している。
【００４４】
その結果、以前ルビ中であったなら、ルビ編集終了と判定し、ステップＳ１７９のルビ入力終了処理を行う。以前がルビ中でない場合は処理を終了する。
【００４５】
ステップＳ１７８では、ルビ内にいるので図２０の状態フラグ３０１内、図２１のルビ中フラグ３１０をＯｎにする。このシステムに於いてはこれがルビ編集開始判定手段にあたるが、特に通常文字と変わった動作はしない。通常文字と同じようにルビが編集できることが優位点である。ステップＳ１７９はルビ入力終了手段で、後に述べる。
【００４６】
ステップＳ１８０は、ルビ外に出たので図２０の状態フラグ３０１内、図２１のルビ中フラグ３１０をＯｆｆにする。文字列を指定するための指定手段は、キーボードのシフトキー、もしくはポインティングデバイスがマウスの場合はマウスボタンのドラッギングと前記キャレット移動指定手段を組み合わせる事によって行う。これを、図１８に示す。上述した通り、キャレットの移動位置算出処理により、移動後の位置は得られるので、ステップＳ２０１では、図２１の範囲指定操作フラグ３０９が立っているかの判定を行い、フラグが立っていればステップＳ２０３へスキップし、立っていない時は初期処理としてステップＳ２０２へ進む。
【００４７】
ステップＳ２０２では、範囲指定開始文字として図２０の３０５のキャレット文字を範囲指定開始文字として３０６にコピーする。ステップＳ２０３では、図２０の３０５のキャレット文字から移動後の文字位置までをＶＲＡＭ上で排他論理和で反転する事により反転する。これにより未反転文字のみが反転されていく。ステップＳ２０４では、図２０の３０１の状態フラグ、つまり図２１の３０８，３０９の反転系フラグをＯｎにする。この一連の操作により、図３に示すような文書中の文字列の反転が行われ、対象文字列の指定と確認が可能となる。
【００４８】
範囲指定解除処理は、図１９のフローチャートで示す。ステップＳ２１１は図２１の範囲指定操作フラグ３０９を参照し、Ｏｆｆであれば範囲はされていないので、何もせずに終了する。Ｏｎであれば、範囲指定解除のためステップＳ２１２へ進む。ステップＳ２１２は範囲指定解除処理で、図２０の３０６範囲指定開始文字から図２０の３０５のキャレット文字までをＶＲＡＭ上で排他論理和で反転する事により、表示上の反転を解除する。
【００４９】
ステップＳ２１３では、図２１反転フラグである３０８，３０９の両方をＯｆｆにする。ステップＳ２１４は、図２０の３０６の範囲指定開始文字を０でクリアする。入力開始の指定は、図３の矢印で示すようにＣＲＴ上で確認しながらポインティングデバイスにてメニューバーから処理したい項目を選べばよい。もちろんこれはキーボード上に割り当てられた特種キーを操作するといった手段でも構わない。この時、図２２のフローチャートの処理が実行される。
【００５０】
ステップＳ２２１では、範囲指定により対象オブジェクトが存在するかを判定する。図２１の状態フラグ内の範囲指定操作フラグ３０９がＯｎであればステップＳ２２２で処理を継続し、Ｏｆｆであれば処理不要で何もせずに終了する。
【００５１】
捨てぷＳ２２２では、図４で示すところのルビ開始コマンド”●”を図２０の３０６の範囲指定開始文字の前に挿入する。ステップＳ２２３では、図４で示すところのルビセパレータ”▲”を図２０の３０５のキャレット文字の前に挿入する。
【００５２】
ステップＳ２２４では、図４で示すところのルビ終了コマンド”■”を図２０の３０５のキャレット文字の前に挿入する。また、この時キャレットをルビ終了コマンドの前に移動し、図２０の３０５のポインタを終了コマンドとする。ステップＳ２２４にて、移動先を終了コマンドとしてキャレットを移動する事により、前に述ベたキャレットを移動するための指定手段で説明した理論でキャレット位置とサイズが実際のルビの入力に適した表示に自動的に変化する。入力手段は、キーボードであり、通常文字の入力と何ら変わるものではなく、入力された文字列が、図２の文書文字列データに挿入されていく。ルビ入力終了処理はキャレットの移動処理の中から自然にコールされる。この事により、ルビの編集削除を普通の文字列と変わらないインタフェースで実現できる。図２３を用いてルビの終了処理を示す。
【００５３】
ステップＳ２３１は、図２０のキャレット文字のポインタを取得し、それが図４のルビ終了コマンド”■”であって、直前の文字がルビセパレータ”▲”である際にルビ文字なしとして、Ｎｏを返し、ステップＳ２３２のルビコマンド消去に進む。ルビ文字ありの場合は何もせずに終了する。ステップＳ２３２のルビコマンド類削除の場合、図２０のキャレット文字のポインタの直前のポインタから２文字分を削除して、図２０の３０５のキャレットポインタを２文字分ずらす。そして、図４のルビ開始コマンド”●”を前方向にサーチし、消去する。
【００５４】
＜ルビ親文字列とルビ文字列の配置＞
図９に示されるステップＳ９５，ステップＳ９７，ステップＳ９９について、ルビ開始コマンド”●”に格納されているルビ表示方法情報２４の指定を図１２のルビ表示幅欄の指定に基づき、従来技術であるルビの配置方法との切り替えを可能とする。ルビ親文字配置開始位置（Ｐｍｏｊｉ）、ルビ文字配置開始位置（Ｐｒｕｂｙ）、ルビ親文字列に続く文書配置開始位置（Ｐｂｕｎ）を計算する。ルビ表示幅の指定が、ルビ親文字列幅である場合、配置座標を求める方法を＜配置実施形態１＞に示す。ルビ表示幅の指定が、ルビ文字列幅である場合、配置座標を求める方法を＜配置実施形態２＞に示す。
【００５５】
＜配置実施形態１＞
図９フローチャートで示されるステップＳ９４によりＬｅｎｇｔｈＭＯＪＩ，ＬｅｎｇｔｈＲＵＢＹを得る。本実施形態では、ルビ親文字列の配置はルビ文字列の長さに影響を受けない。図１３に図示されるように、本文文字列に続く次ｍ文字目の文字配置位置Ｐｍにルビ親文字列配置先頭座標Ｐｍｏｊｉは等しい。ステップＳ９６でのルビ親文字列を終了する。続いて、図１３に図示されるルビ文字列先頭座標Ｐｒｕｂｙを求める。
【００５６】
文字配置方向（正Ｘ右Ｙ下方向）を基準とすると、Ｐｒｕｂｙは
文字配置横方向Ｘ：
Ｐｒｕｂｙ（ｘ）＝Ｐｍ（ｘ）−（ＬｅｎｇｔｈＲＵＢＹ
−ＬｅｎｇｔｈＭＯＪＩ）／２
文字配置縦方向Ｙ：
Ｐｒｕｂｙ（ｙ）＝Ｐｍ（ｙ）−（Ｌｉｎｅ  Ｈｅｉｇｈｔ）
となる位置で配置先頭座標を決定する。ステップＳ９７で配置位置決定し、ステップＳ９８にてルビ文字列の配置を行う。
【００５７】
次に、ルビに続く本文文字列の配置開始位置となるルビ終了コマンドＰｂｕｎは、図１３に示すように
Ｐｂｕｎ（ｘ）＝Ｐｍ（ｘ）＋ＬｅｎｇｔｈＭＯＪＩ
Ｐｂｕｎ（ｙ）＝Ｐｍ（ｙ）
となる先頭文字配置座標を決定する。ステップＳ９９で配置位置決定し、ステップＳ１００にてルビに続く本文文字列の配置を行う。
【００５８】
＜配置実施形態２＞
図９のフローチャートで示されるステップＳ９４によりＬｅｎｇｔｈＭＯＪＩ，ＬｅｎｇｔｈＲＵＢＹを得る。本実施形態では、ルビ親文字列の配置はルビ親文字の長さＬｅｎｇｔｈＭＯＪＩよりもルビ文字列の長さＬｅｎｇｔｈＲＵＢＹが長い場合、ルビ文字列の長さの領域を確保しセンタリング配置がなされる。図１４に図示されるように、本文文字列に続く次ｍ文字目の文字配置位置Ｐｍを基準として、
Ｐｍｏｊｉ＝Ｐｍ＋（ＬｅｎｇｔｈＲＵＢＹ−ＬｅｎｔｇｈＭＯＪＩ）／２
となる座標を基準に配置される（ステップＳ９５，Ｓ９６）。
【００５９】
ルビ文字列の配置基準座標Ｐｒｕｂｙは、図示されるように
Ｐｒｕｂｙ（ｘ）＝Ｐｍ（ｙ）−（ｌｉｎｅ  ｈｅｉｇｈｔ）
となる座標である（ステップＳ９７，Ｓ９８）。ルビ文字列に続く本文文字列配置座標Ｐｂｕｍは
Ｐｂｕｍ＝Ｐｍ＋ＬｅｎｇｔｈＲＵＢＹ
で求められ、配置が行われる（ステップＳ９９，Ｓ１００）。
【００６０】
ルビ親文字列の長さがルビ文字列より長くなる場合、つまり、
ＬｅｎｇｔｈＲＵＢＹ≦ＬｅｎｇｔｈＭＯＪＩ
の場合は、ルビ親文字列の配置領域は、ルビ親文字の長さに一致するため、図１３の場合と同等となる。配置先頭座標Ｐｍｏｊｉは等しい。ステップＳ９６でのルビ親文字列を終了する。続いて、図１３に図示されるルビ文字列先頭座標Ｐｒｕｂｙを求める。文字配置方向（正Ｘ右Ｙ下方向）を基準にする。Ｐｒｕｂｙは
文字配置横方向Ｘ：
Ｐｒｕｂｙ（ｘ）＝Ｐｍ（ｘ）−（ＬｅｎｇｔｈＲＵＢＹ−ＬｅｎｇｔｈＭＯＪＩ）／２
文字配置縦方向Ｙ：
Ｐｒｕｂｙ（ｙ）＝Ｐｍ（ｙ）−（Ｌｉｎｅ  Ｈｅｉｇｈｔ）
となる位置で配置先頭座標を決定する。ステップＳ９７で配置位置決定し、ステップＳ９８にてルビ文字列の配置を行う。
【００６１】
次に、ルビに続く本文文字列の配置開始となるルビ終了コマンドＰｂｕｎは、図１３に示すように、
Ｐｂｕｎ（ｘ）＝Ｐｍ（ｘ）＋ＬｅｎｇｔｈＭＯＪＩ
Ｐｂｕｎ（ｙ）＝Ｐｍ（ｙ）
となる先頭文字配置座標を決定する。ステップＳ９９で配置位置決定し、ステップＳ１００にてルビに続く本文文字列の配置を行う。
【００６２】
このように、本実施形態では、ルビ文字列の占める文字方向の幅が、ルビが付けられたルビ親文字列の幅を超える場合、ルビが付けられているルビ親文字列の配置領域は、ルビ親文字列の幅に等しいことから、ルビが付けられている文字列の配置領域が広がることによっても、文書内の文字列の部分または全体の配置（組体裁）が変化しない。また、ルビ文字列の文字サイズ、文字書体は、ルビ文字列内でルビの部分文字列をサイズ強調、太さ強調したり、異なる書体での表示ができる。
【００６３】
＜他の実施形態＞
ルビ親文字列の配置領域はルビ文字列の長さによる影響を受けないことにより、例えば図２４に示されるように矩形領域４０１への文字列の配置を行い、複数行にわたる文字列データの配置を仮定する。
【００６４】
ある行末に存在する文字列にルビ付加が行われる場合であって、図２４の選択文字列へのルビ親文字列より長いルビ文字列を指定する場合、図２５に示されるようにルビ文字列４０２の配置を本文文字列配置にかかわらず矩形領域４０１の外へ配置を実現できることにより、ルビ文字列の長さが全体の組体裁に影響を与えないように、ルビ親文字列へのルビ文字列の配置が実現する。
【００６５】
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体（又は記録媒体）等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００６６】
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図に示すフローチャートに対応したプログラム）を、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。プログラムを供給するための記憶媒体（又は記録媒体）としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【００６７】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体（又は記録媒体）にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００６８】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体（又は記録媒体）に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。さらに、記憶媒体（又は記録媒体）から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００６９】
【図１】本発明の一実施形態である文書処理装置の概略構成を示すブロック図である。
【図２】文書データのデータ形式の一例を示す図である。
【図３】ルビ文字処理の表示例を示す図である。
【図４】図３の文字列のデータ形式の一例を示す図である。
【図５】文字修飾情報５０のデータ形式を示す図である。
【図６】各文字と文字修飾情報５０との関係を示した図である。
【図７】文字列の配置及びその位置情報の格納のための処理のフローチャートである。
【図８】文字の配置関係の具体例を示した図である。
【図９】ルビ配置処理のフローチャートである。
【図１０】仮想配置時の文字列の形態を示す図である。
【図１１】ルビ文字列選択に伴うメニュー選択を示す図である。
【図１２】ルビ表示方法指定パネルの例を示す図である。
【図１３】ルビ親文字列およびルビ文字列の配置の形態を示す図である。
【図１４】ルビ親文字列およびルビ文字列の配置の形態を示す図である。
【図１５】ポインティングデバイスからの位置指定処理を示すフローチャートである。
【図１６】バッファ部の構成を示す図である。
【図１７】キャレット移動処理を示す図である。
【図１８】文字列範囲指定処理を示す図である。
【図１９】文字列範囲指定解除処理を示す図である。
【図２０】キャレット情報構造体を示す図である。
【図２１】キャレット状態フラグである。
【図２２】ルビ入力開始処理を示すフローチャートである。
【図２３】ルビ入力終了処理を示す図である。
【図２４】矩形領域への文字列配置と行末文字列の選択実施形態を示す図である。
【図２５】矩形領域への文字列配置と行末文字列へのルビ付加実施形態を示す図である。
【符号の説明】
【００７０】
１  ＣＲＴ
２  ビデオＲＡＭ
３  ＢＭＵ
４  キーボード
５  ポインティングデバイス
６  ＣＰＵ
７  ＲＯＭ
８  作業用のＲＡＭ
９  ハードディスク
１０  フロッピィディスク
１１  ネットワークインターフェース
１２  Ｉ／Ｏバス
【図１】
2005267102.tif 000003
【図２】
2005267102.tif 000004
【図３】
2005267102.tif 000005
【図４】
2005267102.tif 000006
【図５】
2005267102.tif 000007
【図６】
2005267102.tif 000008
【図７】
2005267102.tif 000009
【図８】
2005267102.tif 000010
【図９】
2005267102.tif 000011
【図１０】
2005267102.tif 000012
【図１１】
2005267102.tif 000013
【図１２】
2005267102.tif 000014
【図１３】
2005267102.tif 000015
【図１４】
2005267102.tif 000016
【図１５】
2005267102.tif 000017
【図１６】
2005267102.tif 000018
【図１７】
2005267102.tif 000019
【図１８】
2005267102.tif 000020
【図１９】
2005267102.tif 000021
【図２０】
2005267102.tif 000022
【図２１】
2005267102.tif 000023
【図２２】
2005267102.tif 000024
【図２３】
2005267102.tif 000025
【図２４】
2005267102.tif 000026
【図２５】
2005267102.tif 000027