(57)【特許請求の範囲】
【請求項１】
ツリー構造の構造化文書を描画するシステムであって、
前記構造化文書を構成する各要素に対して描画領域を割り当てる領域決定部と、
第１の要素に、寸法に関する書式が相対単位で表現された第１のスタイルが設定されている場合に、前記第１の要素が所属するサブツリーのルートとなりうる複数の要素のうちの１つを第２の要素として選定する基準要素決定部と、
前記第２の要素に割り当てられている前記描画領域の大きさを基準として、前記第１のスタイルを絶対単位で表現した第２のスタイルを算出する描画スタイル算出部と、
前記第２のスタイルに従って前記第１の要素を描画する要素描画部と、
を備えることを特徴とする構造化文書描画システム。
【請求項２】
請求項１に記載の構造化文書描画システムであって、
前記第１のスタイルとは、前記第１の要素を表す図形を描画する線の太さ、前記描画領域の内部に前記図形を描画するためのマージン、前記図形の内部にテキストを描画するためのパディング、および前記テキストを描画するためのフォントサイズの少なくともいずれかであること、
を特徴とする構造化文書描画システム。
【請求項３】
請求項１に記載の構造化文書描画システムであって、
前記基準要素決定部は前記構造化文書のルートを前記第２の要素として決定すること、
を特徴とする構造化文書描画システム。
【請求項４】
請求項１に記載の構造化文書描画システムであって、
第１の構造化文書を記憶する構造化文書記憶部と、
前記第１の構造化文書に含まれる前記第１の要素の属性に第２の構造化文書が指定されている場合に、前記第２の構造化文書を取得する文書取得部と、
前記第２の構造化文書のルートの要素が前記第１の要素の子の要素になるように、前記第２の構造化文書を前記第１の構造化文書に連結して、描画対象となる前記構造化文書を生成する文書連結部と、
を備えることを特徴とする構造化文書描画システム。
【請求項５】
請求項４に記載の構造化文書描画システムであって、
前記基準要素決定部は、
前記第１の要素が前記第１の構造化文書に含まれている場合には、前記第１の構造化文書のルートを前記第２の要素として決定し、
前記第１の要素が前記第２の構造化文書に含まれている場合には、前記第２の構造化文書のルートを前記第２の要素として決定すること、
を特徴とする構造化文書描画システム。
【請求項６】
請求項１ないし５のいずれか１項に記載の構造化文書描画システムであって、
前記基準要素決定部は、前記第１の要素の祖先の要素のいずれかまたは前記第１の要素に指定された、基準となる要素を決定するための情報を取得し、取得した前記基準となる要素を決定するための情報に基づいて決定される要素を前記第２の要素として決定すること、
を特徴とする構造化文書描画システム。
【請求項７】
請求項６に記載の構造化文書描画システムであって、
要素の名称に対応付けて、前記基準となる要素を決定するための情報を記憶するスタイル記憶部を備え、
前記基準要素決定部は、前記第１の要素の祖先の要素のいずれかまたは前記第１の要素の名称に対応する前記基準となる要素を決定するための情報を前記スタイル記憶部から取得すること、
を特徴とする構造化文書描画システム。
【請求項８】
ツリー構造の構造化文書を描画する方法であって、
コンピュータが、
前記構造化文書を構成する各要素に対して描画領域を割り当てるステップと、
第１の要素に、寸法に関する書式が相対単位で表現された第１のスタイルが設定されている場合に、前記第１の要素が所属するサブツリーのルートとなりうる複数の要素のうちの１つを第２の要素として選定するステップと、
前記第２の要素に割り当てられている前記描画領域の大きさを基準として、前記第１のスタイルを絶対単位で表現した第２のスタイルを算出するステップと、
前記第２のスタイルに従って前記第１の要素を描画するステップと、
を実行することを特徴とする構造化文書描画方法。
【請求項９】
ツリー構造の構造化文書を描画するためのプログラムであって、
コンピュータに、
前記構造化文書を構成する各要素に対して描画領域を割り当てるステップと、
第１の要素に、寸法に関する書式が相対単位で表現された第１のスタイルが設定されている場合に、前記第１の要素が所属するサブツリーのルートとなりうる複数の要素のうちの１つを第２の要素として選定するステップと、
前記第２の要素に割り当てられている前記描画領域の大きさを基準として、前記第１のスタイルを絶対単位で表現した第２のスタイルを算出するステップと、
前記第２のスタイルに従って前記第１の要素を描画するステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書描画システム、構造化文書描画方法およびプログラムに関する。
【背景技術】
【０００２】
画面の記述言語としてＨＴＭＬ（HyperText Markup Language）が知られている。ＨＴＭＬでは、タグにより文章の構造や文字列の装飾などを定義している。ＨＴＭＬにより記述されたウェブページは、ウェブブラウザにより解釈されて画面に描画される。ＨＴＭＬでは、文字列や画像、ボタン、テキストボックスなど各種の要素をどのように描画するかを示すスタイルを、スタイルシートとして記述することができる。スタイルシートでは、要素名やクラスなどを指定する記述（セレクタと呼ばれる。）に対応付けて、セレクタにより指定されたタグのスタイルが記述される。
【０００３】
ウェブブラウザが提供する画面の大きさはクライアントによって様々であり、どのような画面に出力されても同じような表示になるようにしたいというニーズがある。これに対して、例えば、特許文献１には、クライアント側のスタイルシートを適用して、文書の幅を表示部の幅に合わせる仕組みが提案されている。
【特許文献１】特表２００５−５２７０５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、スタイルシートでは、要素の幅や高さなどを設定するスタイルには、その寸法をパーセント（％）やピクセル（ｐｘ）などの相対単位で指定することができる。相対単位でスタイルが指定された場合、寸法は、その要素の親の大きさに応じて決定される。この場合、画面のサイズに関わらず、ある要素の子要素は相対的に同じ大きさに表示される。
【０００５】
しかしながら、構造化文書のツリー構造の一部のサブツリー全体で同じスタイルに設定したい場合に、サブツリーに含まれる各要素についてスタイルを相対単位で指定すると、階層によって寸法を計算する基準が異なることになるので、階層によって異なるスタイルになってしまう。
【０００６】
本発明は、このような背景を鑑みてなされたものであり、構造化文書のサブツリーに含まれる要素の全てにその寸法に係るスタイルを相対単位で設定した場合に、これらの要素が全て同じスタイルで表示されるようにすることのできる構造化文書描画システム、構造化文書描画方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するための本発明のうち請求項１に記載の発明は、ツリー構造の構造化文書を描画するシステムであって、前記構造化文書を構成する各要素に対して描画領域を割り当てる領域決定部と、第１の要素に、寸法に関する書式が相対単位で表現された第１のスタイルが設定されている場合に、前記第１の要素が所属するサブツリーのルートとなりうる複数の要素のうちの１つを第２の要素として選定する基準要素決定部と、前記第２の要素に割り当てられている前記描画領域の大きさを基準として、前記第１のスタイルを絶対単位で表現した第２のスタイルを算出する描画スタイル算出部と、前記第２のスタイルに従って前記第１の要素を描画する要素描画部と、を備えることとする。
【０００８】
本発明の構造化文書描画システムによれば、ある要素についてスタイルが相対単位で指定されている場合に、その要素が所属するサブツリーのルートを基準として、スタイルを絶対単位に変換することができる。これにより、サブツリーに含まれる各要素のうち、相対単位でスタイルが指定されているものについて、同じルートを基準としてスタイルを変換することができる。したがって、相対単位のスタイルが同じ値である要素が、同じサブツリーに所属していれば、同じ値のスタイルを適用することができる。よって、相対単位でスタイルを適用しても、サブツリー内の要素に適用されるスタイルを統一することができる。
【０００９】
また、本発明のうち請求項２に記載の発明は、請求項１に記載の構造化文書描画システムであって、前記スタイルとは、前記第１の要素を表す図形を描画する線の太さ、前記描画領域の内部に前記図形を描画するためのマージン、前記図形の内部にテキストを描画するためのパディング、および前記テキストのフォントサイズの少なくともいずれかであることとする。
【００１０】
また、本発明のうち請求項３に記載の発明は、請求項１に記載の構造化文書描画システムであって、前記基準要素決定部は前記構造化文書のルートを前記第２の要素として決定することとする。  
この場合、構造化文書に含まれる要素の全てについて、相対単位で指定されたスタイルを同じ基準で変換することができる。したがって、スタイルを相対単位で指定した場合であっても、構造化文書に含まれる全ての要素に同じスタイルを適用することができる。
【００１１】
また、本発明のうち請求項４に記載の発明は、請求項１に記載の構造化文書描画システムであって、第１の構造化文書を記憶する構造化文書記憶部と、前記第１の構造化文書に含まれる前記第１の要素の属性に第２の構造化文書が指定されている場合に、前記第２の構造化文書を取得する文書取得部と、前記第２の構造化文書のルートの要素が前記第１の要素の子の要素になるように、前記第２の構造化文書を前記第１の構造化文書に連結して、描画対象となる前記構造化文書を生成する文書連結部と、を備えることとする。
【００１２】
また、本発明のうち請求項５に記載の発明は、請求項４に記載の構造化文書描画システムであって、前記基準要素決定部は、前記第１の要素が前記第１の構造化文書に含まれている場合には、前記第１の構造化文書のルートを前記第２の要素として決定し、前記第１の要素が前記第２の構造化文書に含まれている場合には、前記第２の構造化文書のルートを前記第２の要素として決定することとする。
【００１３】
その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。
【発明の効果】
【００１４】
本発明によれば、構造化文書のサブツリーに含まれる要素の全てにその寸法に係るスタイルを相対単位で設定した場合に、これらの要素が全て同じスタイルで表示されるようにすることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の一実施形態に係る構造化文書の描画システムについて説明する。本実施形態の描画システムは、画面に描画すべき要素をツリー構造に記述した構造化文書の描画を行うものである。本実施形態において、ツリー構造を構成するノードをキーという。また、ひとまとまりの複数のキーをキーセットという。各キーセットが記述される構造化文書をキーセットファイルという。また、本実施形態では、説明を簡単にするために、要素は矩形または楕円形の形状の内部に文字列が描画されるものとするが、もちろん、要素として、描画は一般的な画像や図形などを描画するようにしてもよい。
【００１６】
図１は、キーセットファイルの一例を示す図である。同図に示すように、キーセットファイル１０において、キーセットは、ツリー構造のルートとなるキーを示すラベルに続いて、同階層のキーをブレース（中括弧）でまとめ、深さ優先順に各キーを記述したデータ（以下、キーストリングという。）により表現される。
【００１７】
キーのラベル（要素名）には「Ｋ」「Ｓｅ」「Ｕ」「Ｒ」「Ｒｂ」「Ｃ」「Ｃｂ」などがある。後述するように、ラベルに応じてキーの描画領域が決定される。ＲやＲｂ、Ｃ、Ｃｂのラベルが付されたキーには、親の描画領域を分割した領域が割り当てられ、Ｓｅのラベルが付されたキーには、描画領域が割り当てられず、その他のキーには親の描画領域がそのまま割り当てられる。
【００１８】
「Ｋ」のラベルは、キーセットのルートになるキーを示す。Ｋのラベルが付されたキー（以下、Ｋキーという。）には、キーセットの名前（以下、キーセット名という。）が属性として設定される。キーの属性は、ラベルに続く括弧内に記述される。キーセットファイル１０の例では、Ｋキー１１は、「Ｋ（“＿Ｃａｌｃ２”）」と記述されている。これは「＿Ｃａｌｃ２」というキーセット名がＫキー１１の属性として設定されていることを示す。
【００１９】
「Ｓｅ」のラベルは、キーがどのように描画されるかを設定する描画属性（スタイルと呼ばれる。）を設定するためのキーを示す。なお、本実施形態では、説明を簡単にするため、キーに適用されるスタイルは各種の寸法に係るもののみとする。
【００２０】
図２は、キーの描画に適用されるスタイルを説明する図である。同図に示すように、本実施形態では、描画領域１内には図形２が太さ８の線で描画され、図形２内にキーの内容（図２の例では、テキスト３であるが、画像や図形などであってもよい。）が描画される。描画領域１の境界と図形２との間には余白（マージン）があり、図形２とテキスト３との間にも余白（パディング）がある。なお、本実施形態では、説明を簡単にするため、画面横方向のマージン４と、画面縦方向のマージン５とは同じ大きさであり、画面横方向のパディング６および画面縦方向のパディング７とは同じ大きさであるものとする。
【００２１】
本実施形態では、スタイルは、図形２を描画する線の太さ８（以下、ボーダーという。）、マージン４および５の大きさ（以下、単にマージンという。）、文字列３を描画するフォントサイズ、パディング６および７の大きさ（以下、単にパディングという。）の４種類であるものとするが、例えば、前景色や背景色など、各種のスタイルを設定するようにすることもできる。
【００２２】
Ｓｅのラベルが付されたキー（以下、スタイルキーという。）に引き続くブレース内には、スタイルの設定が記述される。スタイルの設定は、１つ以上のスタイルのまとまり（以下、スタイルセットという。）の名称（以下、スタイルセット名という。）に対応付けて、設定項目となるスタイルの名称（以下、スタイル名という。）とその値（以下、スタイル値という。）とが「＝」で対応付けられた形（例えば、「〜ｂｏｒｄｅｒ＝１％」のように記述される。以下、スタイル記述文という。）が記述される。また、スタイル記述文の最後尾にはセミコロン（；）が記述される。
【００２３】
ボーダーのスタイル名は「〜ｂｏｒｄｅｒ」である。マージンのスタイル名は、「〜ｍａｒｇｉｎ」である。フォントサイズのスタイル名は「〜ｆｏｎｔｓｉｚｅ」である。パディングのスタイル名は「〜ｐａｄｄｉｎｇ」である。
【００２４】
本実施形態で設定されるスタイルのスタイル値は、絶対単位もしくは相対単位で表現される数値である。絶対単位は、直接大きさを指定するための単位であり、例えば、センチメートル（ｃｍ）やミリメートル（ｍｍ）、インチ（ｉｎ）、ポイント（ｐｔ）などである。これに対し相対単位は、ある基準の大きさに対して相対的に大きさを指定するための単位であり、例えば、何らかの値に対する相対値を示すパーセント（％）や、あるフォントのあるフォントサイズにおける文字「ｘ」の高さ（ｅｘ）、ディスプレイ解像度に対する相対値であるピクセル（ｐｘ）などがある。本実施形態では、説明を簡単にするため、絶対単位はポイント（ｐｔ）であり、相対単位はパーセント（％）であるものとする。
【００２５】
図１に示すキーセットファイル１０の例では、Ｓｅキー１２には、２つスタイルセット１３、１４がＳｅキー１２の子の要素として記述されている。「＠ｌａｂｅｌ」というスタイルセット名が付されたスタイルセット１３では、フォントサイズが「１０％」、ボーダーが「１％」と指定されている。
【００２６】
キーセットファイル１０の例において、スタイルセット１３では、マージンやパディングは指定されていないが、このようにスタイルの設定を省略することもできる。  
また、スタイルセットには、特殊なスタイルとして「〜ｂａｓｅ〜ｒｅｇｉｏｎ」および「〜ｋｅｙ」を指定することができる。
【００２７】
スタイル名が「〜ｂａｓｅ〜ｒｅｇｉｏｎ」のスタイル（以下、基準スタイルという。）には、相対単位で指定されたスタイル値を絶対単位に変換する際の基準を指定するためのキーを決定するための情報が指定される。本実施形態では、基準スタイルのスタイル値は、「ｍｅ」「ｐａｒｅｎｔｋｅｙ」「ｔｈｉｓｋｓ」「ｐａｒｅｎｔｋｓ」「ｐａｇｅ」のいずれかであるものとする。基準スタイルのスタイル値が「ｍｅ」である場合、当該基準スタイルが設定されているスタイルセットのスタイルセット名が属性として指定されたキーの幅を基準とし、「ｐａｒｅｎｔｋｅｙ」であればそのキーの親の幅を基準として、相対単位のスタイル値が変換される。基準スタイルのスタイル値が「ｔｈｉｓｋｓ」であれば、スタイルセット名が属性として設定されたキーが所属するキーセット（すなわち、当該キーの祖先のうち最も近い階層のＫキー）の幅を基準とし、「ｐａｒｅｎｔｋｓ」であれば、そのＫキーが所属するキーセット（すなわち、当該キーの祖先のうち２番目に近い階層のＫキー）の幅を基準として、相対単位のスタイル値が変換される。基準スタイルのスタイル値が「ｐａｇｅ」である場合には、キーセットファイルを出力する描画領域全体の幅を基準として、相対単位のスタイル値が変換される。
【００２８】
スタイル名が「〜ｋｅｙ」のスタイルは、スタイルを適用するキーを限定するものである。この場合、スタイル値として、スタイルの適用先となる１つ以上のキーが「＋」を区切り文字として設定され、適用するスタイルを示すスタイル記述文は後続するブレース内に記述される。図１のキーセットファイル１０の例では、スタイルセット１４において、「〜ｋｅｙ＝“Ｒｂ＋Ｃｂ”」が記述されている。この場合、「＠ｂｕｔｔｏｎ」が指定されたキーおよびその子孫のキーのうち、Ｒｂのラベルが付されたキーおよびＣｂのラベルが付されたキーにのみ、後続するスタイルが適用される。なお、スタイルの適用先として「ａｌｌ」が指定された場合は、全ての種類のキーを示すものとする。
【００２９】
また、「〜ｋｅｙ」が指定された場合、そのスタイルセットが属性として設定されたキーおよびその子孫（のうち「〜ｋｅｙ」の値が示すキー）にスタイルが継承されるが、「〜ｋｅｙ」の値に「ｍｅ」が指定された場合には、そのスタイルセットが指定されたキーのみにスタイルが適用され、その子孫にはスタイルが継承されない。なお、「〜ｋｅｙ」の指定が省略されている場合には、〜ｋｅｙとして、「ｍｅ」が設定されているとみなされる。例えば、図１のキーセットファイル１０では、スタイルセット１３には、「〜ｋｅｙ」が記述されていないので、これらには「ｍｅ」が設定されたものとして、処理が行われる。  
なお、スタイルに従ったキーの描画処理の詳細については後述する。
【００３０】
「Ｕ」のラベルは、キーセットに割り当てられた描画領域全体に対応するキーを示す。Ｕのラベルが付されたキー（以下、Ｕキーという。）の子孫となるキーには、Ｕキーに対応する描画領域の少なくとも一部が割り当てられる。キーセットファイルには、原則として１つのＵキーのみが含まれる。図１のキーセットファイル１０においても、Ｕキー２１が１つのみ含まれている。
【００３１】
Ｕキーの子孫となるキーには、「Ｒ」「Ｒｂ」「Ｃ」「Ｃｂ」または「Ｉ」のラベルが付される。なお、その他のラベルを付したキーをＵキーの子孫とすることも可能であるが、本実施形態では簡単のために、Ｕキーの子孫のキーには「Ｒ」「Ｒｂ」「Ｃ」「Ｃｂ」または「Ｉ」のいずれかのラベルが付されるものとする。
【００３２】
ＲまたはＲｂのラベルが付されたキー（以下、Ｒキーという。）と、ＣまたはＣｂのラベルが付されたキー（以下、Ｃキーという。）とを、レイアウトキーと呼ぶ。レイアウトキーは、親のキーに割り当てられている描画領域を分割することを示す。Ｒキーは、親のキーに割り当てられた描画領域を行（Ｒｏｗ）に分割することを示し、Ｃキーは、列（Ｃｏｌｕｍｎ）に分割することを示す。
【００３３】
レイアウトキーには、属性として文字列およびスタイルセット名を設定することができる。キーセットファイル１０の例では、例えば、Ｕキーの子となるＲキーのうち、最初のＲキー２２には、文字列「０」と、スタイルセット名「＠ｌａｂｅｌ」とが属性として設定されている。
【００３４】
レイアウトキーは、兄弟のキーの数に応じて、兄弟のキーと等分に親の描画領域を分割することを示す。例えば、キーストリングが「Ｕ｛ＲＲ｝」である場合には、Ｕキーが示す描画領域は上下に２分割され、キーストリングが「Ｕ｛ＣＣＣ｝」である場合には、Ｕキーが示す描画領域は左右に３分割される。
【００３５】
「Ｒ」「Ｒｂ」「Ｃ」または「Ｃｂ」の後には数値を記述することができる。この場合、ラベルの後の数値（以下、指定数という。）は、描画領域の分割比を示す。キーセットファイル１０の例のように、キーストリングが「Ｕ｛ＲＲ４｝」である場合、Ｕキーが示す描画領域は、縦に５分の１および５分の４の領域に２分割される。なお、指定数の記述が省略されている場合には、指定数として「１」が記述されたものとする。すなわち、上記キーストリング「Ｕ｛ＲＲ４｝」は、「Ｕ｛Ｒ１Ｒ４｝」と同じ意味となる。  
なお、本実施形態では、同一階層にＲキーおよびＣキーは混在しないものとする。
【００３６】
各レイアウトキーには、スタイルが割り当てられる。各レイアウトキーは、その親のキーに割り当てられているスタイルが継承されるともに、レイアウトキーの属性としてスタイルセット名が指定されている場合には、そのスタイルセット名に指定されているスタイルも割り当てられる。  
各キーは、割り当てられている描画領域に、指定されたスタイルで描画される。なお、キーの描画処理の詳細については後述する。
【００３７】
「Ｉ」のラベルは、他のキーセットを連結するためのキーを示す。Ｉのラベルが付されたキー（以下、Ｉキーという。）がキーストリングに含まれている場合には、Ｉキーの属性に設定されているキーセット名（本実施形態において、キーセットファイルのファイル名は、キーセット名に一致するものとする。）またはＵＲＬ（Uniform Resource Locator）が示すキーセットファイルが読み出され、読み出されたキーセットファイル中の含まれるキーがＩキーの子として連結される。
【００３８】
例えば、「Ｋ（“Ａ”）｛Ｕ｛ＲＲ｛Ｉ（“Ｂ”）｝｝｝」というキーストリングにより記述されるキーセットＡと、「Ｋ（“Ｂ”）｛Ｕ｛ＣＣ｝｝」というキーストリングにより記述されるキーセットＢとが存在する場合、キーセットＢがキーセットＡに連結されて、キーストリングは「Ｋ｛Ｕ｛ＲＲ｛Ｉ｛Ｋ｛Ｕ｛ＣＣ｝｝｝｝｝｝」となる。
【００３９】
また、キーセットファイル１０の例では、Ｉキー２５にはＵＲＬ「http://server/kbd.ks」が属性として設定されている。このＵＲＬが示すキーセットファイルが取得され、取得されたキーセットファイルに含まれるキーストリングが、Ｉキー２５の子として連結される。
【００４０】
このように、Ｉキーの属性として指定されたキーセットファイルに含まれるキーストリングは、Ｉキーの子として連結されるので、Ｉキーに対応するスタイルが、Ｉキーの子孫の各キーにも継承される。したがって、Ｉキー以下に連結された各キーは、特にスタイルセット名が指定されていない限り、Ｉキーと同じスタイルで描画される。よって、他のキーセットファイルをＩキーにより連結した場合でも、Ｉキー以下の部分のスタイルを統一することができる。
【００４１】
以下、本実施形態の描画システムの詳細について説明する。
【００４２】
＝＝システム構成＝＝
図３は、本実施形態の描画システムの全体構成を示す図である。  
本実施形態の描画システムは、ユーザ端末１００およびキーセット提供サーバ２００を含んで構成されている。ユーザ端末１００およびキーセット提供サーバ２００は、通信ネットワーク３００を介して互いに通信可能に接続される。通信ネットワーク３００は、例えば、インターネットやＬＡＮ（Local Area Network）であり、イーサネット（登録商標）、フレームリレー網、公衆電話回線網、無線通信網などにより構築される。
【００４３】
ユーザ端末１００は、ユーザが操作する、例えば、パーソナルコンピュータやワークステーション、ＰＤＡ（Personal Digital Assistance）、携帯電話、ＰＯＳ（Point Of Sales）端末などのコンピュータである。ユーザ端末１００には、キーセットファイルが記憶され、キーセットファイルに含まれる各キーが描画される。
【００４４】
キーセット提供サーバ２００は、キーセットファイルを提供する、例えば、パーソナルコンピュータやワークステーションなどのコンピュータである。キーセット提供サーバ２００は、ユーザ端末１００からのリクエストに応じてキーセットファイルをユーザ端末１００に送信する。本実施形態では、キーセット提供サーバ２００は、Ｗｅｂサーバの機能を有し、ＨＴＴＰ（HyperText Transfer Protocol）に従ってキーセットファイルを送信するものとする。
【００４５】
ユーザはユーザ端末１００を操作し、キーセット提供サーバ２００にアクセスしてキーセットファイルを取得し、ユーザ端末１００がキーセット提供サーバ２００から取得したキーセットファイルに含まれる各キーを描画することもできる。
【００４６】
また、キーストリングにＩキーが含まれており、Ｉキーに、キーセット提供サーバ２００に記憶されているキーセットファイルへのＵＲＬが指定されている場合には、ユーザ端末１００は、ＵＲＬを指定したリクエストをキーセット提供サーバ２００に送信し、キーセット提供サーバ２００から応答されるキーセットファイルを受信し、受信したキーセットファイルに含まれるキーストリングをＩキーの子として連結することもできる。
【００４７】
＝＝ハードウェア＝＝
図４は、ユーザ端末１００およびキーセット提供サーバ２００のハードウェア構成を示す図である。同図に示すように、ユーザ端末１００およびキーセット提供サーバ２００はそれぞれ、ＣＰＵ１０１、メモリ１０２、記憶装置１０３、通信インタフェース１０４、入力装置１０５、出力装置１０６を備えている。
【００４８】
記憶装置１０３は、各種のプログラムやデータを記憶する、例えば、ハードディスクドライブやＣＤ−ＲＯＭドライブ、フラッシュメモリなどである。ＣＰＵ１０１は、記憶装置１０３に記憶されているプログラムをメモリ１０２に読み出して実行することにより各種の機能を実現する。通信インタフェース１０４は、通信ネットワーク３００に接続するためのインタフェースである。通信インタフェース１０４は、例えば、イーサネット（登録商標）に接続するためのアダプタや、電話回線網に接続するためのモデム、無線通信器などである。
【００４９】
入力装置１０５は、データの入力を受け付ける、例えば、キーボードやマウス、タッチパネルなどである。出力装置１０６は、データを出力する、例えば、ディスプレイやプリンタなどである。
【００５０】
＝＝キーセット提供サーバ２００＝＝
図５は、キーセット提供サーバ２００の機能ブロック図である。  
上述したように、キーセット提供サーバ２００は、一般的なウェブサーバとしての機能を提供するウェブ処理部２１１およびキーセットファイル記憶部２１２を備えている。
【００５１】
キーセットファイル記憶部２１２には、キーセットファイルが記憶される。本実施形態では、キーセットファイル記憶部２１２には、「ｋｂｄ．ｋｓ」というファイル名のキーセットファイル３０が記憶されている。図５に示すように、キーセットファイル３０は、Ｋ（“ｋｄｂ．ｋｓ”）というキーをルートとしたツリー構造になっている。本実施形態では、キーセットファイル３０のＵＲＬは「http://server/kbd.ks」であるものとする。
【００５２】
なお、ウェブ処理部２１１は、キーセット提供サーバ２００が備えるＣＰＵ１０１が記憶装置１０３に記憶されているプログラムをメモリ１０２に読み出して実行することにより実現される。また、キーセットファイル記憶部２１２は、メモリ１０２や記憶装置１０３が提供する記憶領域として実現される。キーセットファイル記憶部２１２は、例えば、キーセット提供サーバ２００で動作するオペレーティングシステムが提供するファイルシステムのディレクトリとして実現することができる。
【００５３】
＝＝ユーザ端末１００＝＝
図６は、ユーザ端末１００の機能ブロック図である。  
ユーザ端末１００は、キーセット描画処理部１１１、キーストリングパーサ１１２、入出力インタフェース１１３、マネージャコントローラ１１４、ファイルマネージャ１１５、ウェブマネージャ１１６、キーセット記憶部１５１、キーセットファイル記憶部１５２、スタイル記憶部１５３を備えている。
【００５４】
なお、キーセット描画処理部１１１、キーストリングパーサ１１２、入出力インタフェース１１３、マネージャコントローラ１１４、ファイルマネージャ１１５、およびウェブマネージャ１１６は、ユーザ端末１００が備えるＣＰＵ１０１が記憶装置１０３に記憶されているプログラムをメモリ１０２に読み出して実行することにより実現される。また、キーセット記憶部１５１、キーセットファイル記憶部１５２およびスタイル記憶部１５３は、メモリ１０２や記憶装置１０３が提供する記憶領域として実現される。
【００５５】
キーセットファイル記憶部１５２は、キーセットファイルを記憶する。本実施形態では、キーセットファイル記憶部１５２には、図１に示すキーセットファイル１０が記憶されているものとするが、もちろんその他のキーセットファイルが記憶されてもよい。キーセットファイル記憶部１５２は、例えば、ファイルシステムのディレクトリとして実現することができる。
【００５６】
ファイルマネージャ１１５は、ファイル名の指定を受け付けて、指定されたファイル名が示すキーセットファイルをキーセットファイル記憶部１５２から読み出す。  
ウェブマネージャ１１６は、ＵＲＬを受け付けて、ＵＲＬが示すキーセットファイルをキーセット提供サーバ２００から取得する。ウェブマネージャ１１６は、受け付けたＵＲＬを設定したＨＴＴＰリクエストをキーセット提供サーバ２００に送信し、キーセット提供サーバ２００からＨＴＴＰリクエストに対するレスポンスとして送信されるキーセットファイルを受信する。
【００５７】
マネージャコントローラ１１４（本発明の文書取得部に該当する。）は、ファイルマネージャ１１５やウェブマネージャ１１６を制御する。マネージャコントローラ１１４は、キーセット名を受け付け、受け付けたキーセット名に応じて、ファイルマネージャ１１５またはウェブマネージャ１１６にキーセット名を与えて呼び出し、キーセットファイルを取得する。マネージャコントローラ１１４は、例えば、キーセット名が「ｈｔｔｐ：／／」で始まっていれば、ウェブマネージャ１１６を呼び出し、それ以外であればファイルマネージャ１１５を呼び出すようにすることができる。
【００５８】
なお、本実施形態では、ファイルマネージャ１１５がファイルシステムからのファイルの読み出しを行い、キーセット提供サーバ２００からＨＴＴＰによるキーセットファイルの受信をウェブマネージャ１１６が行うものとしたが、例えば、ＦＴＰ（File Transfer Protocol）サーバからキーセットファイルを取得するＦＴＰマネージャや、電子メールによりキーセットファイルを受信する電子メールマネージャ、キーボードなどの入力装置１０５から直接キーストリングの入力を受け付けて、受け付けたキーストリングを含むキーセットファイルを生成する入力装置マネージャなどを設けるようにすることもできる。
【００５９】
キーストリングパーサ１１２（本発明の文書連結部に該当する。）は、キーセットファイル記憶部１５２に記憶されているキーセットファイル１０を読み出し、読み出したキーセットファイル１０に含まれているキーストリングを解析して、ツリー構造のキーを示すデータ（以下、キーツリー構造体という。）を生成する。キーストリングパーサ１１２は、生成したキーツリー構造体をキーセット記憶部１５１に記憶する。なお、キーツリー構造体は、例えば、各キーをメモリ上のオブジェクトとして表現し、オブジェクト間の親子関係は、ポインタや参照により表現することができる。
【００６０】
また、キーストリングパーサ１１２は、キーストリングにＩキーが含まれている場合には、Ｉキーの属性として設定されているキーセット名を与えてマネージャコントローラ１１４を呼び出す。キーストリングパーサ１１２は、マネージャコントローラ１１４からキーセットファイルを取得し、取得したキーセットファイルに含まれているキーストリングを解析して、キーツリー構造体を生成し、生成したキーツリー構造体のルートが、Ｉキーの子になるように接続する。
【００６１】
図７は、図１に示したキーセットファイル１０をキーストリングパーサ１１２が解析した結果である、キーツリー構造体４０の構造を説明する図である。図７に示すように、キーツリー構造体４０含まれるＩキー２５には、その子としてＫキー３１が連結されている。Ｋキー３１以下のキーツリー構造体４１は、キーセット提供サーバ２００が提供するキーセットファイル３０のキーストリングを解析した結果である。
【００６２】
キーセット描画処理部１１１は、キーセット記憶部１５１に記憶されたキーツリー構造体に基づいて、文字列を出力装置１０６に出力する。なお、キーセット描画処理部１１１の処理の詳細については後述する。  
また、キーストリングパーサ１１２は、キーセットファイルに含まれるスタイルキーに基づいて、キーに適用されるスタイルを示す情報（以下、スタイル情報という。）をスタイル記憶部１５３に格納する。
【００６３】
図８は、スタイル記憶部１５３に格納されるスタイル情報の構成例を示す図である。図８に示すように、スタイル情報は、スタイルセット名、スタイルの適用先、および適用するスタイルの値を含む。スタイル適用先には、スタイルを適用するキーのラベルと、スタイルの名称とが含まれる。ラベルにとして「ｍｅ」が指定された場合、そのスタイルは、そのスタイルセット名が指定されたキーにのみ適用され、その子孫のキーには継承されないことを示す。また、ラベルに「ａｌｌ」が指定された場合には、そのスタイルは、すべてのキーに適用されることを示す。例えば、図１０の例では、描画位置（〜ａｌｉｇｎ）に係るスタイル適用先として、「ｍｅ〜ｆｏｎｔｓｉｚｅ」や、「Ｒｂ〜ｆｏｎｔｓｉｚｅ」などが示されている。
【００６４】
なお、スタイル記憶部１５３には、予め描画に用いられる全てのスタイルについて、デフォルトとして、スタイルセット名が「デフォルト」であるスタイル情報が記憶されているものとする。上述したように、本実施形態では、描画に用いられるスタイルは「〜ｍａｒｇｉｎ」「〜ｐａｄｄｉｎｇ」「〜ｂｏｒｄｅｒ」「〜ｆｏｎｔｓｉｚｅ」「〜ｂａｓｅ〜ｒｅｇｉｏｎ」の５種類のみであるものとしており、図８の例でも、これら５種類のスタイル名に「ａｌｌ」や「Ｒ」、「Ｒｂ」、「Ｃ」、「Ｃｂ」のラベルが指定された適用先を含むスタイル情報が「デフォルト」のスタイルセット名に対応付けて登録されている。
【００６５】
図９は、キーストリングパーサ１１２によるスタイルの登録処理の流れを示す図である。キーストリングパーサ１１２は、スタイルキーの子要素のそれぞれについて、以下の処理を行う。
【００６６】
キーストリングパーサ１１２は、子要素の要素名をスタイルセット名とし（Ｓ４０１）、子要素の内容として記述されているスタイル記述文を抽出して、スタイルリストとする（Ｓ４０２）。キーストリングパーサ１１２は、スタイルセット名を第１引数とし、「ｍｅ」を第２引数とし、スタイルリストを第３引数として、図１０に示すスタイル情報の登録処理を呼び出す（Ｓ４０３）。
【００６７】
図１０に示すスタイル情報の登録処理において、キーストリングパーサ１１２は、第１引数をスタイルセット名とし（Ｓ４２１）、第３引数に含まれている各スタイル記述文について以下の処理を行う。
【００６８】
キーストリングパーサ１１２は、スタイル記述文に記述されているスタイル名が「〜ｋｅｙ」である場合（Ｓ４２２：ＹＥＳ）、スタイル記述文に記述されているスタイル値から「＋」で区切られたラベルのリストを抽出してラベルリストとする（Ｓ４２３）。なお、スタイル値に「＋」が含まれていない場合は、ラベルが１つのみ含まれるラベルリストが生成される。
【００６９】
キーストリングパーサ１１２は、スタイル記述文に後続するブレース内に記述されているスタイル記述文を抽出してスタイルリストとし（Ｓ４２４）、上記ラベルリストに含まれる各ラベルについて、スタイルセット名を第１引数とし、ラベルを第２引数とし、スタイルリストを第３引数として、当該登録処理を再帰的に呼び出す（Ｓ４２５）。
【００７０】
一方、スタイル名が「〜ｋｅｙ」でない場合（Ｓ４２２：ＮＯ）、キーストリングパーサ１１２は、第１引数をラベルとし（Ｓ４２６）、ラベルと、スタイル記述文に記述されているスタイル名とを結合した文字列を適用先として、スタイルセット名、適用先、およびスタイル記述文に記述されているスタイル値を含むスタイル情報を生成して、スタイル記憶部１５３に登録する（Ｓ４２８）。
【００７１】
以上の処理を第３引数に含まれる各スタイル記述文について行うことにより、上述の図８に示すようなスタイル情報がスタイル記憶部１５３に登録される。
【００７２】
入出力インタフェース１１３は、入力装置１０５からのデータの入力や、出力装置１０６へのデータの出力、マネージャコントローラ１１４との間のデータのやり取りなどを制御する。
【００７３】
＝＝キーの描画処理＝
以下、ユーザ端末１００におけるキーの描画処理について説明する。なお、以下の処理では、予めキーストリングパーサ１１２によりキーツリー構造体４０が生成され、スタイルキー１２に指定されていたスタイルが、スタイルセット名に対応付けてスタイル記憶部１５３に登録されているものとする。また、本実施形態では、文字列は予め固定されたフォントにより描画されるものとする。
【００７４】
図１１は、ユーザ端末１００におけるキーの描画処理の流れを説明する図である。  
図１１に示すように、キーセット描画処理部１１１は、キーツリー構造体４０のルートとなるキー（図７の例ではＫキー１１）をｋｅｙ変数に設定する（Ｓ５０１）。  
キーセット描画処理部１１１は、出力装置１０６に描画可能な最大の描画領域を取得し、取得した描画領域の幅および高さをそれぞれｗおよびｈとする（Ｓ５０２）。本実施形態では、描画領域は矩形であり、矩形の左上を基準座標（０，０）として、「（Ｘ座標，Ｙ座標，幅，高さ）」で表現するものとする。
【００７５】
キーセット描画処理部１１１は、描画領域（０，０，ｗ，ｈ）をｋｅｙに設定する（Ｓ５０３）。なお、キーセット描画処理部１１１は、例えば、キーの属性に描画領域を設定する。
【００７６】
キーセット描画処理部１１１は、スタイル記憶部１５３から、スタイルセット名が「デフォルト」であるスタイル情報を読み出し、読み出したスタイル情報のリスト（以下、スタイルリストという。）をｓｔとする（Ｓ５０４）。また、キーセット描画処理部１１１は、スタイルセットがどのキーに設定されているかを示す情報（以下、スタイル参照情報という。）を登録する空のリストをｂｓｔとする（Ｓ５０５）。キーセット描画処理部１１１は、ｓｔおよびｂｓｔをｋｅｙに設定する（Ｓ５０６）。  
キーセット描画処理部１１１は、ｋｅｙのラベルが「Ｓｅ」でなければ（Ｓ５０７：ＮＯ）、後述する図１２のｋｅｙの描画処理を実行する（Ｓ５０８）。  
キーセット描画処理部１１１は、キーツリー構造体４０においてｋｅｙを基準に、深さ優先順に次のキーが含まれている場合には（Ｓ５０９：ＹＥＳ）、次のキーをｋｅｙとして（Ｓ５１０）、ｋｅｙのラベルが「Ｓｅ」でなければ（Ｓ５０７：ＮＯ）、ｋｅｙの描画処理を行う（Ｓ５０８）。
【００７７】
以上のようにして、キーセット描画処理部１１１は、キーツリー構造体４０に含まれるスタイルキー以外のキーのそれぞれについて、深さ優先順にステップＳ５０５の描画処理を行うことになる。したがって、キーセット描画処理部１１１は、キーツリー構造体４０に含まれるスタイルキーを除く全てのキーについて描画処理を行うことができる。すなわち、キーセットファイル１０および連結されるキーセットファイル３０に記述されたスタイルキーを除く全てのキーが描画される。
【００７８】
図１２は、図１１のステップＳ５０８におけるｋｅｙの描画処理の流れを示す図である。  
まず、キーセット描画処理部１１１は、ｋｅｙに設定されている描画領域を、キーツリー構造体４０においてｋｅｙの子となるキー（以下、子キーという。）のそれぞれに設定する（Ｓ５２１）。  
次に、キーセット描画処理部１１１は、ｋｅｙの子キーの中に、レイアウトキーが含まれているかどうかを判断し（Ｓ５２２）、レイアウトキーが子キーに含まれていない場合には（Ｓ５２２：ＮＯ）、処理を終了する。
【００７９】
キーセット描画処理部１１１は、ｋｅｙの子キーにレイアウトキーがある場合には（Ｓ５２２：ＹＥＳ）、ｋｅｙに設定されている描画領域のＸ座標、Ｙ座標、幅、および高さをそれぞれ、ｘ、ｙ、ｗ、ｈとする（Ｓ５２３）。キーセット描画処理部１１１は、子キーの中のレイアウトキーについての指定数の合計をｎとする（Ｓ５２４）。キーセット描画処理部１１１は、ｗをｎで割った商をｃｗとし（Ｓ５２５）、ｈをｎで割った商をｃｈとする（Ｓ５２６）。キーセット描画処理部１１１は、ｃｘにｘを設定し（Ｓ５２７）、ｃｙにｙを設定し（Ｓ５２８）、変数ｍに０を設定して（Ｓ５２９）、次の子キーが存在する間（Ｓ５３０：ＹＥＳ）、以下の処理を行う。
【００８０】
キーセット描画処理部１１１は、次の子キーをｃｋとして（Ｓ５３１）、図１３に示すｃｋのスタイルの設定処理を行う（Ｓ５３２）。  
図１３に示すように、ｃｋのスタイル設定処理では、まずキーセット描画処理部１１１は、ｃｋの親のキーであるｋｅｙに設定されているスタイルリストをｓｔとし（Ｓ５４１）、ｓｔから、「ｍｅ〜」で始まるスタイル適用先のスタイル情報を削除する（Ｓ５４２）。キーセット描画処理部１１１は、ｋｅｙに設定されているスタイル参照リストをｂｓｔとする（Ｓ５４３）。  
キーセット描画処理部１１１は、ｃｋの属性にスタイルセット名が設定されている場合には（Ｓ５４４：ＹＥＳ）、ｃｋの属性に設定されているスタイルセット名に対応するスタイル情報をスタイル記憶部１５３から読み出し、読み出したスタイルリストをｃｓｔとして（Ｓ５４５）、ｃｓｔをｓｔの先頭に追加する（Ｓ５４６）。
【００８１】
ここで生成されるｓｔの構成例を図１４に示す。図１４は、図１のキーセットファイル１０に記載されたＲキー２２について生成されたスタイルリスト５０（ｓｔ）の一例を示している。スタイル情報５２は、ルートであるＫキー１１に設定されたデフォルトのスタイル情報である。Ｒキー２２の属性には、スタイルセット名「＠ｌａｂｅｌ」が設定されているので、「＠ｌａｂｅｌ」に対応するスタイル情報５１がリストの先頭に追加されている。
【００８２】
キーセット描画処理部１１１は、ｃｋの属性に設定されているスタイルセット名に対応付けて、ｃｋの識別情報（以下、キーＩＤという。キーＩＤとしては、例えば、キーをオブジェクトとして表現した場合に、そのオブジェクトへのポインタや参照とすることもできるし、オブジェクトに一意にキーＩＤを割り当てることもできる。）を含むスタイル参照情報を生成して、ｂｓｔの先頭に追加する（Ｓ５４７）。ここで生成されるスタイル参照リスト６０（ｂｓｔ）の一例を図１５に示す。同図に示すように、スタイル参照リスト６０には、スタイルセット名に対応付けて、そのスタイルセット名が属性に設定されていたｃｋのキーＩＤが登録される。  
最後にキーセット描画処理部１１１は、ｃｋにｓｔおよびｂｓｔを設定する（Ｓ５４８）。
【００８３】
以上のようにして、ｃｋの属性にスタイルセット名が設定されている場合には、親のｋｅｙに設定されているスタイルリストの先頭に、ｃｋの属性に設定されたスタイルセット名に対応するスタイル情報が追加されたものがｃｋに設定され、ｃｋの属性にスタイルセット名が設定されていない場合には、親のｋｅｙに設定されているスタイルリストがそのままｃｋに設定される。このようにして、キーツリー構造体４０では、各キーのスタイルは親から継承されていく。また、ｃｋの属性にスタイルセット名が設定されている場合には、親のｋｅｙに設定されているスタイル参照リストの先頭に、スタイルセット名とｃｋのキーＩＤとが登録されて、スタイル参照リストも親から子に継承されていく。
【００８４】
ここで図１２に戻り、キーセット描画処理部１１１は、ｃｋのラベルが「Ｃ」または「Ｃｂ」であれば（Ｓ５３３：Ｃ，Ｃｂ）、領域（ｃｘ，ｙ，ｃｗ×指定数，ｈ）を描画領域としてｃｋに設定し（Ｓ５３４）、ｃｘにｃｗ×（ｃｋの指定数）の演算結果を加算する（Ｓ５３５）。ｃｋのラベルが「Ｒ」または「Ｒｂ」であれば（Ｓ５３３：Ｒ，Ｒｂ）、キーセット描画処理部１１１は、領域（ｘ，ｃｙ，ｗ，ｃｈ×指定数）を描画領域としてｃｋに設定し（Ｓ５３６）、ｃｙにｃｈ×（ｃｋの指定数）の演算結果を加算する（Ｓ５３７）。以上のようにして、ｃｋがＣキーの場合、ｋｅｙの描画領域をＸ軸方向にｎ分割した描画領域がｃｋに設定され、ｃｋがＲキーの場合、ｋｅｙの描画領域をＹ軸方向にｎ分割した描画領域がｃｋに設定される。
【００８５】
一方、キーセット描画処理部１１１は、ｃｋのラベルが「Ｃ」「Ｃｂ」「Ｒ」および「Ｒｂ」のいずれでもない場合は（Ｓ５３３：その他）、ステップＳ５３０からの処理を繰り返す。  
ｃｋのラベルが「Ｃ」「Ｃｂ」「Ｒ」または「Ｒｂ」の場合（Ｓ５３３：Ｃ，Ｃｂ、Ｓ５３３：Ｒ，Ｒｂ）、キーセット描画処理部１１１は、図１６に示すｃｋの描画処理を行う（Ｓ５３５）。  
キーセット描画処理部１１１は、マージンを表す「〜ｍａｒｇｉｎ」をスタイル名として、図１７に示すスタイル値の取得処理を行い、その結果をｍとする（Ｓ５６１）。
【００８６】
図１７に示すスタイル値の取得処理において、キーセット描画処理部１１１は、ｃｋに設定されているスタイルリストをＬとし（Ｓ５８１）、「ｍｅ」にスタイル名を結合した文字列に対応するスタイル値をＬの先頭から検索する（Ｓ５８２）。  
キーセット描画処理部１１１は、上記スタイル値が見つかった場合には（Ｓ５８３：ＹＥＳ）、処理を終了し、上記スタイル値が見つからなかった場合には（Ｓ５８３：ＮＯ）、ｃｋのラベルにスタイル名を結合した文字列に対応するスタイル値をＬの先頭から検索する（Ｓ５８４）。  
キーセット描画処理部１１１は、上記スタイル情報が見つかれば（Ｓ５８５：ＹＥＳ）、処理を終了し、上記スタイル情報が見つからなければ（Ｓ５８５：ＮＯ）、「ａｌｌ」にスタイル名を結合した文字列に対応するスタイル値をＬの先頭から検索する（Ｓ５８６）。
【００８７】
なお、本実施形態では、全てのスタイル名に対応するデフォルトのスタイル値は、「ａｌｌ」にスタイル名が結合された適用先のスタイル情報としてスタイル記憶部１５３に登録されており、上記処理により確実にスタイル値が検索されることを想定している。
【００８８】
キーセット描画処理部１１１は、スタイル値が絶対単位で指定されているか、相対単位で指定されているかを判定する（Ｓ５８７）。スタイル値が相対単位で指定されている場合、すなわち、スタイル値として設定された文字列が「％」で終わっている場合（Ｓ５８７）、キーセット描画処理部１１１は、図１８に示すスタイル値の変換処理により、スタイル値を相対単位から絶対単位に変換する。
【００８９】
図１８の変換処理において、キーセット描画処理部１１１は、ｃｋに設定されているスタイルリストをＬとし（Ｓ６０１）、Ｌの先頭から、「ｍｅ〜ｂａｓｅ〜ｒｅｇｉｏｎ」に対応するスタイルセット名および値を、それぞれｓｋおよびｖａｌとして検索する（Ｓ６０２）。  
キーセット描画処理部１１１は、上記ｓｋおよびｖａｌが検索できなかった場合には（Ｓ６０３：ＮＯ）、ｃｋのラベルに「〜ｂａｓｅ〜ｒｅｇｉｏｎ」を結合した文字列に対応するスタイルセット名および値をｓｋおよびｖａｌとしてＬの先頭から検索する（Ｓ６０４）。  
キーセット描画処理部１１１は、上記ｓｋおよびｖａｌも検索できなかった場合には（Ｓ６０５：ＮＯ）、「ａｌｌ〜ｂａｓｅ〜ｒｅｇｉｏｎ」に対応するスタイルセット名および値をｓｋおよびｖａｌとしてＬの先頭から検索する（Ｓ６０６）。
【００９０】
なお、本実施形態では、スタイル記憶部１５３には予め「デフォルト」のスタイル名に対応付けて、「ａｌｌ〜ｂａｓｅ〜ｒｅｇｉｏｎ」のデフォルト値が記憶されており、以上の処理によってキーセット描画処理部１１１は、ｓｋおよびｖａｌを確実に取得するものとする。
【００９１】
キーセット描画処理部１１１は、ｓｋが「デフォルト」の場合（Ｓ６０７：ＹＥＳ）、ｃｋのキーＩＤをｋｉｄとし（Ｓ６０８）、ｓｋが「デフォルト」でなければ（Ｓ６０７：ＮＯ）、ｃｋに設定されているスタイル参照リストの先頭から、ｓｋに対応するキーＩＤをｋｉｄとして取得する（Ｓ６０９）。  
キーセット描画処理部１１１は、ｋｉｄが示すキーをｖｋとし（Ｓ６１０）、上記処理により検索したｖａｌに応じて、図１９に示す基準キーの特定処理を行う（Ｓ６１１）。
【００９２】
図１９に示すように、キーセット描画処理部１１１は、ｖａｌが「ｍｅ」である場合には（Ｓ６２１：ｍｅ）、ｖｋを基準キーとし（Ｓ６２２）、ｖａｌが「ｐａｒｅｎｔｋｅｙ」であれば（Ｓ６２１：ｐａｒｅｎｔｋｅｙ）、ｖｋの親のキーを基準キーとする（Ｓ６２３）。  
キーセット描画処理部１１１は、ｖａｌが「ｔｈｉｓｋｓ」であれば（Ｓ６２１：ｔｈｉｓｋｓ）、ｖｋの祖先のキーのうち最もｖｋから近い階層に所属するＫキーを検索して基準キーとする（Ｓ６２４）。  
キーセット描画処理部１１１は、ｖａｌが「ｐａｒｅｎｔｋｓ」であれば（Ｓ６２２：ｐａｒｅｎｔｋｓ）、ｖｋの祖先のキーのうち２番目に近い階層に所属するＫキーを検索して基準キーとする（Ｓ６２５）。なお、ｖｋの祖先にＫキーが１つしか含まれていない場合には、そのＫキーを基準キーとしてもよい。  
キーセット描画処理部１１１は、ｖａｌが「ｐａｇｅ」であれば（Ｓ６２１：ｐａｇｅ）、ｖｋの祖先のキーのうち、最も遠い階層に所属するＫキーを検索して基準キーとする（Ｓ６２６）。  
キーセット描画処理部１１１は、以上の処理により基準キーを決定すると、決定された基準キーに含まれている領域の幅（ｗ）を取得し、取得した幅に、パーセント（％）で指定されているスタイル値を乗じた値をスタイル値とする（Ｓ６１２）。
【００９３】
このようにして、相対単位で指定されているスタイル値が、基準キーの幅を基準として絶対単位の値に変換される。
【００９４】
次に、キーセット描画処理部１１１は、ボーダーを示す「〜ｂｏｒｄｅｒ」をスタイル名として、上述した図１７に示すスタイル値の取得処理を行い、その結果をｂとする（Ｓ５６２）。
【００９５】
キーセット描画処理部１１１は、ｃｋに設定されている描画領域のＸ座標、Ｙ座標、幅、および高さを、それぞれｄｘ、ｄｙ、ｄｗおよびｄｈとして取得する（Ｓ５６３）。キーセット描画処理部１１１は、ｄｘおよびｄｙのそれぞれにｍを加算し（Ｓ５６４）、ｄｗおよびｄｈのそれぞれからｍを２倍した値を減算して（Ｓ５６５）、ｃｋに設定されている描画領域のマージン分だけ内側の矩形を算出する。キーセット描画処理部１１１は、この矩形（ｄｘ，ｄｙ，ｄｗ，ｄｈ）を、ｂの太さの線で描画する（Ｓ５６６）。
【００９６】
ｃｋの属性に文字列が設定されている場合（Ｓ５６７：ＹＥＳ）、キーセット描画処理部１１１は、フォントサイズを示す「〜ｆｏｎｔｓｉｚｅ」をスタイル名として、上述した図１７に示すスタイル値の取得処理を行い、その結果をｆとする（Ｓ５６８）。また、キーセット描画処理部１１１は、パディングを示す「〜ｐａｄｄｉｎｇ」をスタイル名として、上述した図１７に示すスタイル値の取得処理を行い、その結果をｐとする（Ｓ５６９）。キーセット描画処理部１１１は、ｄｘおよびｄｙのそれぞれにｂおよびｐを加算し（Ｓ５７０）、ｄｗおよびｄｈのそれぞれから、ｂとｐとの合計値を２倍した値を減算して（Ｓ５７１）、上記矩形からボーダーの太さとパディングとの分だけ内側の領域を算出する。キーセット描画処理部１１１は、ｃｋの属性に設定されている文字列をｔとして（Ｓ５７２）、算出した領域（ｄｘ，ｄｙ，ｄｗ，ｄｈ）内に文字列ｔをフォントサイズｆで描画する（Ｓ５７３）。
【００９７】
図２０は、以上の処理によりキーセットファイル１０が描画された画面７０の一例を示す図である。図２０では、出力装置１０６がディスプレイなどの表示装置であり、表示装置の画面上に、図１に示すキーセットファイル１０が描画された例を示している。
【００９８】
図２０に示すように、画面７０では、Ｒキー２２が図形７１として描画されている。Ｒキー２２では、「＠ｌａｂｅｌ」というスタイルセット名のスタイルセット１３が指定されており、スタイルセット１３では、フォントサイズは「７％」、ボーダーは「１％」、パディングは「１％」と設定されている。スタイルセット１３に設定されていない、マージンは、スタイル記憶部１５３に記憶されているデフォルトのスタイル情報から、「０ｐｔ」として、ルートのＫキー１１からＲキー２２に継承される。スタイルセット１３では、基準スタイルのスタイル値が「ｐａｇｅ」と設定されているので、相対単位で指定されたスタイルは、画面７０全体の幅を基準に絶対単位に変換される。
【００９９】
また、画面７０には、Ｒキー２７が図形７２として描画されており、Ｉキー２５に連結されたキーセットファイル３０に含まれるＣキー３２が図形７３として描画されている。Ｒキー２７およびＣキー３２のいずれにもスタイルセット名は設定されていないが、上述したように、Ｒキー２７およびＣキー３２のそれぞれに、Ｒキー２３からスタイルが継承される。
【０１００】
Ｒキー２７の親に設定されている描画領域の幅７４と、Ｃキー３２の親に設定されている描画領域の幅７５とは大きさが異なる。したがって、親の描画領域を基準として相対単位で指定されたスタイルに従ってキーを描画した場合には、Ｒキー２７とＣキー３２とでは、ボーダーやマージンが異なる大きさとなる。
【０１０１】
しかし、本実施形態の描画システムでは、スタイルセット名が指定されたＲキー２３に対応する基準スタイルのスタイル値に応じて基準キーが決定され、基準キーの幅に応じて、相対単位で指定された大きさが絶対単位の大きさとして算出される。したがって、Ｒキー２７およびＣキー３２ともに、Ｒキー２３が属するＫキー１１に対応する領域を基準としてスタイル値が算出されるので、Ｒキー２７とＣキー３２とは同じ見た目となる。
【０１０２】
以上説明したように、本実施形態の描画システムによれば、各キーに設定されているスタイル参照リストに基づいて基準キーが決定され、基準キーの幅を基準として相対単位のスタイル値が絶対単位に変換される。基準スタイルのスタイル値が「ｐａｇｅ」である場合には、全てのキーについて同一の基準キーが決定され、「ｐａｒｅｎｔｋｓ」や「ｔｈｉｓｋｓ」である場合には、あるＫキーから子孫のキーについて同一の基準キーが決定され、「ｐａｒｅｎｔｋｅｙ」や「ｍｅ」であれば、そのキーのスタイルを継承した子孫のキーのすべてに同一の基準キーが決定される。このように、複数のキーについて同一の基準キーの幅を基準として相対単位のスタイル値が変換されるので、スタイル値が相対単位で指定されたとしても、これら複数のキーにおいて同じ大きさのスタイルを適用することができる。このように、同じ基準キーの幅に基づいて相対単位のスタイル値を変換することにより、画面の大きさがクライアントによって違うような状況でも、全てのクライアントにおいて同じような見た目にすることができる。
【０１０３】
また、基準キーは、最初にスタイルセット名が指定されたキー（以下、指定キーという。）に基づいて決定される。すなわち、基準キーは、基準スタイルのスタイル値が「ｍｅ」であれば、指定キーであり、「ｐａｒｅｎｔｋｅｙ」であれば、指定キーの親であり、「ｔｈｉｓｋｓ」であれば、指定キーの祖先のうち最も近いＫキーであり、「ｐａｒｅｎｔｋｓ」であれば、指定キーの祖先のうち２番目に近いＫキーであり、「ｐａｇｅ」であれば、ルートのキーである。指定キーから子孫にスタイルは継承されるので、指定キー以下のサブツリーに属するキーについて、基準スタイルが指定されない限り、同一の基準キーに基づいて相対単位のスタイル値を変換することができる。これにより、指定キー以下のサブツリーについては、相対単位でスタイル値が指定されても、同じ大きさのスタイルを適用することが可能となり、これによりサブツリー全体の見た目を統一することができる。画面のデザイナは、各サブツリーについて基準キーを想定して、その基準キーの幅に対する相対的な大きさを指定してスタイルを設定することができるので、デザインを柔軟に行いつつ、画面の大きさが変化した場合でも見た目が変換しないようにすることができる。
【０１０４】
また、ツリー構造においてスタイルはキーの子孫に継承されるので、デザイナは、キーに設定したスタイルがどの範囲に適用されるのかを容易に把握することができる。したがって、デザイナの作業の効率化を図ることができる。
【０１０５】
また、各レイアウトキーは、親の描画領域の全部または一部に描画されるので、基準となる親キーの描画領域内に描画されるレイアウトキーの全てを同じスタイルに容易に統一することができる。すなわち、同一の描画領域内に描画されるキーに同じスタイルを設定する場合には、親のキーにスタイルセット名を設定するだけでよい。したがって、スタイルセット名を設定し忘れたとしても、キーの見た目を統一することができる。
【０１０６】
また、Ｉキーにより、キーセットファイル１０にキーセットファイル３０を連結した場合、キーセットファイル１０の中のキーのスタイルを、Ｉキーの子孫として連結されたキーセットファイル３０に継承させることができる。したがって、キーセットファイル３０の中の各キーには予めスタイルセット名を記述する必要がないので、キーセットファイルのモジュール性を向上させることができる。
【０１０７】
また、上記図１２の処理は、キーツリー構造体４０を構成するスタイルキーを除く全てのキーについて行われる。したがって、本実施形態の描画システムによれば、キーツリー構造体４０に含まれるスタイルキーを除く各キーには、キーツリー構造体４０のルートに割り当てられた描画領域の全部または一部が割り当てられ、割り当てられた描画領域に、後述する文字列の描画が行われる。よって、１画面にキーツリー構造体４０の全体が描画されることになる。つまり、キーツリー構造体４０を構成する全てのキーのうち、描画すべき文字列が属性として設定されているものを、１画面に表示することが可能である。これにより、画面でのキーの一覧性を確保することができる。
【０１０８】
また、本実施形態の描画システムによれば、キーはツリー構造を構成し、ツリー構造のルートに画面全体の描画領域を割り当て、各キーには、親の描画領域の全部または一部を、そのキー情報の描画領域として割り当てることができる。したがって、画面の構成は、画面を分割した状態をツリー構造として表現すればよいので、画面のデザイナは、容易に画面構成をキーストリングとして記述することができる。
【０１０９】
また、画面の一領域を示すキーについてスタイルセット名を設定すれば、そのキーについてスタイルが設定されるとともに、その領域に描画される下位の階層のキーについてもそのスタイルが継承される。したがって、画面の一部分について見た目を統一することが簡単にできる。
【０１１０】
またその一方で、「〜ｋｅｙ」の指定により、スタイルの適用されるキーの種類を制限することもできる。また、適用先のキーの指定を省略し、あるいは「〜ｋｅｙ＝ｍｅ」と設定することにより、そのスタイルセットを指定したキーのみにスタイルを適用するようにすることもできる。したがって、キーの種類によって見た目を変えたり、ある特定のキーだけの見た目を変更したりすることも容易に実現可能であり、柔軟なデザインを行うことができる。
【０１１１】
なお、本実施形態では、描画システムはユーザ端末１００とキーセット提供サーバ２００とを含んで構成されるものとしたが、ユーザ端末１００のみで構成することもできる。この場合、ユーザ端末１００は、ユーザ端末１００に記憶されているキーセットファイルのみを表示することができる。逆に、複数のキーセット提供サーバ２００を含むように構成することもできる。
【０１１２】
また、本実施形態では、ファイルとしてキーセットが格納されているものとしたが、ファイルの形態をとらずに、例えばデータベースのレコードとして格納されていてもよい。
【０１１３】
また、本実施形態では、基準キーの幅を基準として、相対単位で指定されたスタイル値を変換するものとしたが、これに限らず、基準キーの高さを基準としてもよいし、基準キーの幅または高さの小さい方もしくは大きい方を基準としてもよいし、基準キーの幅および高さの平均値を基準としてもよい。
【０１１４】
また、本実施形態では、文字列を表示するフォントは固定されているものとしたが、スタイルとしてフォントを指定することもできる。この場合、スタイルキーにスタイルとしてフォント（例えば、スタイル名は〜ｆｏｎｔとする。）を指定可能とし、スタイル記憶部１５３には、デフォルトのフォントを登録するようにする。また、キーセット描画処理部１１１は、図１６のステップＳ５６７において、ｃｋに設定されているスタイルリストからフォント（〜ｆｏｎｔ）の値を取得し、ステップＳ５７１においては、文字列ｔを、取得したフォントによりフォントサイズｆで描画した場合の幅および高さを算出するようにする。
【０１１５】
また、本実施形態では、「Ｒ」のラベルが付されたキーおよび「Ｒｂ」のラベルが付されたキー、並びに「Ｃ」のラベルが付されたキーおよび「Ｃｂ」のラベルが付されたキーは、同じように表示されるものとしたが、例えば、「Ｒｂ」のラベルが付されたキーと「Ｃｂ」のラベルが付されたキーとは、ボタンとして描画されるようにしてもよい。
【０１１６】
また、本実施形態では、レイアウトキーには「Ｒ」「Ｒｂ」「Ｃ」「Ｃｂ」の４種類のラベルのいずれかが付されるものとしたが、これに限らず、より多様なラベルを定義してもよい。
【０１１７】
また、本実施形態では、各キーに設定されるスタイルリストには、デフォルトのスタイル情報を最後尾とし、階層の深い順にスタイル情報を並べることで、そのキーまたは祖先のキーに同じスタイルが設定されている場合には、キーからの距離が最も近いキーに設定されたスタイルが適用されるものとしたが、これに限らず、描画対象となる描画キーにスタイルセット名が指定されていない場合に、スタイルが設定されている祖先のキーのうち、描画キーからの距離が最も遠いものに設定されているスタイルが適用されるようにしてもよい。
【０１１８】
この場合、例えば、デフォルトのスタイル情報はスタイルリストに含めないようにし、キーセット描画処理部１１１は、図１６のステップＳ５６１、Ｓ５６２、Ｓ５６８、およびＳ５６９において、描画キーにスタイルセット名が設定されていれば、設定されているスタイルセット名とスタイル名に対応する値をスタイル記憶部１５３から検索するようにする。また、キーセット描画処理部１１１は、描画キーにスタイルセット名が設定されていない場合、あるいは、設定されているスタイルセット名とスタイル名に対応する値がスタイル記憶部１５３に見つからない場合には、スタイルリストの最後尾から順にスタイル名に対応する値を検索し、値が見つからないときは、スタイル記憶部１５３から「デフォルト」およびスタイル名に対応する値を検索するようにする。
【０１１９】
これにより、描画キーにスタイルが設定されていない場合には、描画キーから最も遠い祖先のキーに設定されていたスタイルに従って描画キーが描画され、その一方で描画キーにスタイルが設定されていれば、その設定されたスタイルにより描画キーが描画される。したがって、ある親キーにスタイルを設定して、その子孫のキーを統一的なスタイルにするとともに、特定のキーのみのスタイルを変更することができるので、デザインがしやすくなる。
【０１２０】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【０１２１】
【図１】キーセットファイル１０の一例を示す図である。
【図２】キーの描画に適用されるスタイルを説明する図である。
【図３】本実施形態の描画システムの全体構成を示す図である。
【図４】ユーザ端末１００およびキーセット提供サーバ２００のハードウェア構成を示す図である。
【図５】キーセット提供サーバ２００の機能ブロック図である。
【図６】ユーザ端末１００の機能ブロック図である。
【図７】キーツリー構造体４０の構造を説明する図である。
【図８】スタイル記憶部１５３の構成例を示す図である。
【図９】スタイル登録処理の流れを示す図である。
【図１０】スタイル情報の登録処理の流れを示す図である。
【図１１】キーの描画処理の流れを説明する図である。
【図１２】図１１のステップＳ５０８におけるｋｅｙの描画処理の流れを示す図である。
【図１３】図１２のステップＳ５３０におけるｃｋのスタイルの設定処理の流れを示す図である。
【図１４】ｃｋのスタイル設定処理において生成されるスタイルリストｓｔの構成例を示す図である。
【図１５】ｃｋのスタイル設定処理において生成されるスタイル参照リストｂｓｔの構成例を示す図である。
【図１６】図１２のステップＳ５３５におけるｃｋの描画処理の流れを示す図である。
【図１７】スタイル値の取得処理の流れを示す図である。
【図１８】スタイル値の変換処理の流れを示す図である。
【図１９】基準キーの特定処理の流れを示す図である。
【図２０】キーセットファイル１０が描画された画面７０の一例を示す図である。
【符号の説明】
【０１２２】
１０    キーセットファイル
３０    キーセットファイル
４０    キーツリー構造体
５０    スタイルリスト
６０    スタイル参照リスト
７０    画面
８０    画面
１００  ユーザ端末
２００  キーセット提供サーバ
３００  通信ネットワーク
１０１  ＣＰＵ
１０２  メモリ
１０３  記憶装置
１０４  通信インタフェース
１０５  入力装置
１０６  出力装置
１１１  キーセット描画処理部
１１２  キーストリングパーサ
１１３  入出力インタフェース
１１４  マネージャコントローラ
１１５  ファイルマネージャ
１１６  ウェブマネージャ
１５１  キーセット記憶部
１５２  キーセットファイル記憶部
１５３  スタイル記憶部
２１１  ウェブ処理部
２１２  キーセットファイル記憶部
【図１】
0005150213.tif 000002
【図２】
0005150213.tif 000003
【図３】
0005150213.tif 000004
【図４】
0005150213.tif 000005
【図５】
0005150213.tif 000006
【図６】
0005150213.tif 000007
【図７】
0005150213.tif 000008
【図８】
0005150213.tif 000009
【図９】
0005150213.tif 000010
【図１０】
0005150213.tif 000011
【図１１】
0005150213.tif 000012
【図１２】
0005150213.tif 000013
【図１３】
0005150213.tif 000014
【図１４】
0005150213.tif 000015
【図１５】
0005150213.tif 000016
【図１６】
0005150213.tif 000017
【図１７】
0005150213.tif 000018
【図１８】
0005150213.tif 000019
【図１９】
0005150213.tif 000020
【図２０】
0005150213.tif 000021