(57)【要約】【課題】現行のインターネットの仕組みやＨＴＭＬの仕様を何ら改変することなく完全にそのまま利用しつつ、横書きにしか対応できていないハイパーテキスト文書を、特別なプラグイン等を用いずにブラウザで表示する際に縦書きで表示させることができ、且つ閲覧者がブラウザ上で縦書きの文書中の文字の検索や選択、閲覧を可能とする。【解決手段】ハイパーテキスト文書の中で縦書きにする箇所を指定し、指定された箇所内の実際の文字、及び実際の文字１文字毎のスタイルを取得し、指定された箇所内の文字の１文字毎に、取得したスタイルを定義づけするか又は別のスタイルを必要に応じて付加して定義づけし、定義づけされた文字を１文字ずつ縦方向に配置したハイパーテキスト文書を作成する。【選択図】図１
2016024643.tif 000002
【特許請求の範囲】
【請求項１】
ハイパーテキスト文書を縦書きのハイパーテキスト文書に変換する方法であって、
ハイパーテキスト文書の中で縦書きにする箇所を指定し、
指定された箇所内の実際の文字、及び実際の文字１文字毎のスタイルを取得し、
指定された箇所内の文字の１文字毎に、取得したスタイルを定義づけするか又は別のスタイルを必要に応じて付加して定義づけし、
定義づけされた文字を１文字ずつ縦方向に配置したハイパーテキスト文書を作成することを特徴とするハイパーテキスト文書の縦書きへの変換方法。
【請求項２】
前記スタイルを定義づけする際に、該当する文字の文字占有領域と文字枠との間の横方向の間隔を計測し、該当する文字の文字占有領域と文字枠との間の横方向の間隔の左右両側が等しくなるようにスタイルを定義づけすることを特徴とする請求項１記載のハイパーテキスト文書の縦書きへの変換方法。
【請求項３】
前記スタイルを定義づけする際に、該当する文字が半角英数字及び通常括弧の場合には、該当する半角英数字又は通常括弧を文字占有領域の四隅のうちのいずれか１点を中心に９０°回転させ、回転させた後の横方向の位置を他の文字の横方向の位置に合わせるように移動させるように、スタイルを定義づけすることを特徴とする請求項２記載のハイパーテキスト文書の縦書きへの変換方法。
【請求項４】
前記スタイルを定義づけする際に、該当する文字が句読点及び拗促音の場合には、該当する句読点又は拗促音の位置を右上にシフトした位置となるように、スタイルを定義づけすることを特徴とする請求項２又は請求項３記載のハイパーテキスト文書の縦書きへの変換方法。
【請求項５】
ハイパーテキスト文書を縦書きのハイパーテキスト文書に変換するプログラムであって、
指定された範囲内のハイパーテキスト文書中の実際の文字、及び実際の文字１文字毎のスタイルを取得する機能と、
指定された箇所内の文字の１文字毎に、取得したスタイルを定義づけする機能と、
取得したスタイルが定義づけされた文字を１文字ずつ縦方向に配置したハイパーテキスト文書を作成する機能とをコンピュータに実行させることを特徴とするハイパーテキスト文書の縦書きへの変換プログラム。
【請求項６】
前記スタイルを定義づけする機能は、
該当する文字の文字占有領域と文字枠との間の横方向の間隔を計測し、該当する文字の文字占有領域と文字枠との間の横方向の間隔の左右両側が等しくなるようにスタイルを定義づけすることを特徴とする請求項５記載のハイパーテキスト文書の縦書きへの変換プログラム。
【請求項７】
前記スタイルを定義づけする機能は、
該当する文字が半角英数字及び通常括弧の場合には、該当する半角英数字又は通常括弧を文字占有領域の四隅のうちのいずれか１点を中心に９０°回転させ、回転させた後の横方向の位置を他の文字の横方向の位置に合わせるように移動させるように、スタイルを定義づけすることを特徴とする請求項６記載のハイパーテキスト文書の縦書きへの変換プログラム。
【請求項８】
前記スタイルを定義づけする機能は、
該当する文字が句読点及び拗促音の場合には、該当する句読点又は拗促音の位置を右上にシフトした位置となるように、スタイルを定義づけすることを特徴とする請求項６又は請求項７記載のハイパーテキスト文書の縦書きへの変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、横書きのハイパーテキスト文書を縦書きに変換する方法及びプログラムに関する。
【背景技術】
【０００２】
ウェブサイト上で標準的に使用されているＨＴＭＬ（HyperText Markup Language）で記述されたＨＴＭＬ文書は、横書きのレイアウトに用いられることを前提としている。
したがって、縦書きの文書をウェブサイト上で表示させるための提案が従来からなされている。
【０００３】
特許文献１の縦書き日記型ウェブサイト提供システムによれば、縦書きレイアウトのＨＴＭＬデータの代わりに代替データを送信する構成が開示されている。
【０００４】
特許文献２の情報処理装置によれば、テキストをＸＭＬ文書に変換する際に、テキスト内の文字列が縦書きか横書きかを解析し、解析した結果に基づいて設定画面を生成して設定画面を通じて指定される個々の条件に基づいて、個々の条件を示す情報にそれぞれタグが付された文字列を含む解析情報を作成することが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２５６９９７号公報
【特許文献２】特開２００９−５９１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の構成によれば、閲覧者が任意で別途インストールを行う必要がある無料配布されたプラグイン上での縦書き表示が可能となるだけである。すなわち、特別なプラグインをインストールした閲覧者が、実際には横書きで構成されているウェブサイトを閲覧する際に、縦書きで表示された内容を閲覧できるのみである。
このため、閲覧者がブラウザを用いて文字を選択したり、また選択した文字を用いてインターネット上で検索をかけようとしても、文字の選択及び検索ができないという課題がある。
【０００７】
また、特許文献２の構成においては、テキストを縦書きに対応したＸＭＬ文書に変換するために所定の操作が記載されているが、この構成も上記の特許文献１と同様に、閲覧者がブラウザを用いて文字を選択したり、また選択した文字を用いてインターネット上で検索をかけようとしても、文字の選択及び検索ができないという課題がある。
【０００８】
そこで本発明は上記課題を解決すべくなされ、その目的とするところは、現行のインターネットの仕組みやＨＴＭＬの仕様を何ら改変することなく完全にそのまま利用しつつ、横書きにしか対応できていないハイパーテキスト文書を、特別なプラグインのインストール等を用いずにブラウザで表示する際に縦書きで表示させることができ、且つ閲覧者がブラウザ上で縦書きの文書中の文字の検索や選択、閲覧を可能とする方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明にかかるハイパーテキスト文書の縦書きへの変換方法は、ハイパーテキスト文書を縦書きのハイパーテキスト文書に変換する方法であって、ハイパーテキスト文書の中で縦書きにする箇所を指定し、指定された箇所内の実際の文字、及び実際の文字１文字毎のスタイルを取得し、指定された箇所内の文字の１文字毎に、取得したスタイルを定義づけするか又は別のスタイルを必要に応じて付加して定義づけし、定義づけされた文字を１文字ずつ縦方向に配置したハイパーテキスト文書を作成することを特徴としている。
この方法によれば、取得したスタイルが定義づけされた文字を１文字ずつ縦方向に配置しているので、縦書きとなったハイパーテキスト文書の中で文字の検索や選択、閲覧を可能とすることができる。
【００１０】
また、前記スタイルを定義づけする際に、該当する文字の文字占有領域と文字枠との間の横方向の間隔を計測し、該当する文字の文字占有領域と文字枠との間の横方向の間隔の左右両側が等しくなるようにスタイルを定義づけすることを特徴としてもよい。
この方法によれば、縦書きにした場合に文字が横方向にずれることなく、見た目よく整列させることができる。
【００１１】
また、前記スタイルを定義づけする際に、該当する文字が半角英数字及び通常括弧の場合には、該当する半角英数字又は通常括弧を文字占有領域の四隅のうちのいずれか１点を中心に９０°回転させ、回転させた後の横方向の位置を他の文字の横方向の位置に合わせるように移動させるように、スタイルを定義づけすることを特徴としてもよい。
この構成によれば、半角英数字及び通常括弧を縦書きにする場合でも違和感なく縦書きに変換することができる。
【００１２】
また、前記スタイルを定義づけする際に、該当する文字が句読点及び拗促音の場合には、該当する句読点又は拗促音の位置を右上にシフトした位置となるように、スタイルを定義づけすることを特徴としてもよい。
この構成によれば、句読点及び拗促音を縦書きにする場合でも違和感なく縦書きに変換することができる。
【発明の効果】
【００１３】
本発明によれば、横書きのハイパーテキスト文書を縦書きに変換することができ且つ変換後の縦書きのハイパーテキスト文書中の文字に対して文字の検索や選択、閲覧を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】ＨＴＭＬ文書を縦書きへ変換する際の概略方法を示す説明図である。
【図２】ＨＴＭＬ文書を縦書きへ変換する際の他の概略方法を示す説明図である。
【図３】変換プログラムの動作を説明するフローチャートである。
【図４】変換プログラムのタグの再配置時の動作について説明するフローチャートである。
【図５】各文字の相対的描画位置の設定を説明する説明図である。
【図６】プロポーショナルフォントの横方向位置を設定する際の説明図である。
【図７】半角英数字の配置を設定する際の説明図である。
【図８】起こし括弧の配置を設定する際の説明図である。
【図９】閉じ括弧の配置を設定する際の説明図である。
【図１０】句読点の配置を設定する際の説明図である。
【図１１】拗促音の配置を設定する際の説明図である。
【図１２】リーダーの配置を設定する際の説明図である。
【図１３】音引きの配置を設定する際の説明図である。
【図１４】特殊起こし括弧の配置を設定する際の説明図である。
【図１５】特殊閉じ括弧の配置を設定する際の説明図である。
【図１６】段落頭の処理について説明する説明図である。
【図１７】段落頭の処理について説明する説明図である。
【図１８】行頭の処理について説明する説明図である。
【図１９】括弧と句読点が連続して配置された場合の処理について説明する説明図である。
【図２０】括弧と句読点が連続して配置された場合の処理について説明する説明図である。
【図２１】括弧と句読点が連続して配置された場合の処理について説明する説明図である。
【図２２】行内文字列の追い込みの処理について説明する説明図である。
【図２３】行内文字列の追い出しの処理について説明する説明図である。
【図２４】行内文字列の追い込みの処理について説明する説明図である。
【図２５】行内文字列の追い出しの処理について説明する説明図である。
【図２６】行内文字列のぶら下がりの処理について説明する説明図である。
【発明を実施するための形態】
【００１５】
本発明のハイパーテキスト文書の縦書きへの変換方法及びプログラムの全体構成について説明する。
なお、本発明でいうハイパーテキスト文書とは、ＨＴＭＬ（HyperText Markup Language）、ＸＨＴＭＬ（Extensible HyperText Markup Language）などを含む。また、ＸＨＴＭＬにＣＳＳ（Cascading Style Sheets）等のスタイルシートを適用させた文書も含まれる。
なお、以下に説明する実施形態は、ハイパーテキスト文書の一例としてのＨＴＭＬの場合について説明している。
【００１６】
図１及び図２に、本発明の概略の概念図を示す。ｗｅｂサイトなどでＨＴＭＬ文書を公開しようとする公開者は、一般的なワープロソフト（ｗｏｒｄなど）を用いて文書を作成してからＨＴＭＬ変換するか、またはＨＴＭＬ文書作成用ソフト（Dreamweaverなど）から、又はＨＴＭＬを直接入力して文書を作成する。ＨＴＭＬ文書を直接作成する場合はもちろん、ワープロソフトで作成した文書を作成した場合も作成されたＨＴＭＬ文書は横書きとなっている。
【００１７】
図１の場合は、公開者がｗｅｂサーバー２０に、本発明にかかる変換プログラムへのリンクを記述した横書きのＨＴＭＬ文書１０を記憶させており、ＨＴＭＬ文書１０をブラウザで表示する際に本発明にかかる変換プログラムｐを実行させて横書きのＨＴＭＬ文書１０を縦書きのＨＴＭＬ文書１２に変換させている。
【００１８】
図２の場合は、本発明にかかる変換プログラムを実行させる記述がされた横書きのＨＴＭＬ文書１０が公開されているｗｅｂサイトにアクセスした閲覧者が、縦書きのＨＴＭＬ文書に変換する場合についての概略説明図である。
この場合、公開された横書きのｗｅｂサイト上に、本発明にかかる変換プログラムを実行させるためのインターフェイス用タグ１４（図２では縦書と表示）を表示させるようにしておくとよい。閲覧者がこのタグ１４をクリックすると、変換プログラムｐが起動し、公開されたｗｅｂサイトが縦書きに変換される。
【００１９】
図１及び図２では、変換プログラムｐは、公開するＨＴＭＬ文書が記憶されているｗｅｂサーバー２０とは別のサーバー２２に記憶されている例を図示したが、変換プログラムｐは横書きのＨＴＭＬ文書を開示しているｗｅｂサーバー２０内に記憶されていてもよい。
別のサーバー２２としては、ＰＣ２４と通信可能であるサーバーであればよく、例えばクラウド上で共有化されていてもよい。
【００２０】
次に、変換プログラムの概略動作について説明する。
変換プログラムは、まず指定されたＨＴＭＬ文書の中の構文を解析する動作を実行する。構文の解析動作は、実際の文字、及び実際の文字１文字毎のスタイルを取得することにある。
【００２１】
次に、変換プログラムは、指定された箇所内の文字の１文字毎に、取得したスタイルを定義づけする。
そして、変換プログラムは、取得したスタイルが定義づけされた文字を１文字ずつ縦方向に配置したＨＴＭＬ文書を作成する。
【００２２】
次に、図３〜図４に基づいて、変換プログラムの具体的動作について説明する。
まず、構文解析には、各ブラウザによって実装されているＤＯＭ（Document  Object  Model）ＡＰＩ（Application Programming Interface）を用いて行うことができる。
例えば、縦書きへの変換を行いたいブロックレベル要素のidが「content」の場合、ＤＯＭＡＰＩを用いてこのブロックレベル要素を取得する（ステップＳ１００）。
このためにはjavascriptでは、
var elem=docment.getElementById(“content”)
という記載等により実行することができる。
【００２３】
次に、変換プログラムは、上記の構文解析によって取得したブロックレベル要素の、階層構造を取得する（ステップＳ１０２）。
ＤＯＭＡＰＩを用いてこのブロックレベル要素の階層構造を取得するためにはjavascriptでは、
var children =elem.childNodes;
という記載により実行することができる。
このような階層構造の取得によって、純粋な文字列及び子階層のタグの情報の配列を取得することができる。
【００２４】
次に、変換プログラムは、取得した純粋な文字列について、そこに適用されているスタイル（書式）を取得する（ステップＳ１０４）。
ＤＯＭＡＰＩを用いて純粋な文字列と、その文字に適用されているスタイルを取得するためにはjavascriptでは、
var ownerDocument=elem.ownerDocument;という記載で、このＨＴＭＬ文書構造の最上位のノードが取得できる。
また、var defaultView=ownerDocument.defaultView;という記載で、このＨＴＭＬファイルの基本ＶＩＥＷの取得が実行できる。
また、var style=defaultView.getComputedStyle(elem,null);という記載でelemに適用されているスタイルの取得が実行できる。
なお、古いMicrosoft Internet Explorerでは、defaultViewプロパティやgetComputedStyle()メソッドが存在しない。
ただし、Internet Explorerでは要素それぞれがcurrentStyleというプロパティを保持していて、これによってそのスタイル(書式)を取得できるため、
var style = elem. currentStyle;
で同様のことが可能である。
このため、本発明におけるプログラム実行時に、そのプログラムが実行されているブラウザを判別して別々の方法でスタイル（書式）を取得するようにするとよい。
上記の記述により、上記（００２３）で取得したelemのスタイルが取得できる。したがって、純粋な文字列についてはすべてこのスタイルが適用されているということがわかる。
一方、上記（００２４）で取得した子階層のタグについては、var children=子階層のタグへの参照.childNodes;で、やはり内部の純粋な文字列及び子階層のタグ情報を取得でき、
var style=defaultView.getComputedStyle（子階層のタグへの参照,null）;で、同様にスタイル取得ができる。
これらを再帰的に行うことで、ブロックレベル要素内の全ての文字と、その文字に対するスタイル（書式）とを取得できる。
【００２５】
上述してきた工程により、指定範囲内の文字、文字のスタイルが取得できたとする。次いで、変換プログラムは取得した文字及び文字のスタイルに基づいて、これを縦書きに変換する作業を実行する。
最初に縦書きへの変換作業の概略と要点について説明する。
まず、フォントについてであるが、ブラウザで表示されている文字に使用されているフォントは、横書きを想定して策定されているものである。このため、このフォントをそのまま縦書きの文書に組み替えただけでは、縦書きのルールにそぐわない結果となる。
【００２６】
例えば、括弧類、句読点類、音引き、外国語文章などは横書き用に表示されるべき文字列であることから、これらについては変換プログラムにおいて、縦書き用に適正な文字列となるように処理がなされる。具体的な処理の方法については後述するが、例えば回転、反転、引き伸ばし、妥当な文字への置き換えなどによる。
【００２７】
続いて、変換プログラムによる縦書きへの変換作業の具体的方法について説明する。
変換プログラムは、文字コード１文字に対し、この文字コードに該当するスタイルを定義したタグを生成する（ステップＳ１０６）。
つまり、横書きの状態では、複数の文字列としてまとまった状態で定義づけされていたものに対し、縦書きに変換する際には、これらを１文字ずつバラバラにして定義づけをするところに本発明の大きな特徴がある。なお、連続する同一のスタイル（書式）要素については、それらを包含するＨＴＭＬタグを生成して一括で指定しても良い。
【００２８】
１文字ずつタグを生成する際には、複数種類のタグが利用可能であるが、<span>タグが最も望ましいと考えられる。<span>タグは、ＨＴＭＬ及びＸＨＴＭＬで規定されるタグであって、このタグで囲まれた範囲を１つのまとまりとして取り扱うことができるインライン要素のタグである。このタグ自体は特定の意味を持たないため、ＨＴＭＬの規格に準拠しつつ本発明を実行するには最適と考えられる。
このタグの内部テキストとして、実際の文字、そこに適用するスタイルシートとして位置情報、書体、文字サイズ、色、フォントウェイトなどを記述することによって、該当する文字１文字の定義づけが行える。例えば、１文字ずつ次のような記述をすることにより、１文字ずつ定義づけする。
【００２９】
<span style=”position:absolute; left:10px; top:20px; font-family:serif; font-size:24px; color:red; font-weight:normal;”>日</span>
【００３０】
変換プログラムは、上述したように、縦書きに変換する文字列に対して１文字ずつタグによって定義づけを行った後、生成された複数のタグを、文書内での出現順序と同じ順序で配置する（ステップＳ１０８）。
この点も、変換プログラムにおける特徴点である。
【００３１】
つまりブラウザは通常ＨＴＭＬを読み込んで解析する際に、そのＨＴＭＬ文書を左から右方向に読み込み、次に下段に下がって左から右に読み込みを行う。
このように、左から右へ、その後下に下がって左から右へという順番での読み込み順序は、ＨＴＭＬやＸＨＴＭＬの仕様であって、世の中に存在するいずれのブラウザを用いても変わらないものである。
【００３２】
したがって、たとえ本発明の変換プログラム無しでＨＴＭＬによって見かけ上縦書きになる文書を作成し、文章の順番としては上から下へ、次に左へ移動して上から下に読むことができるような状態であったとしても、ブラウザによる文書の解析は、左から右方向に読み込み、次に下段に下がって左から右に読み込みを行う。このため、その文字情報は、人間が理解可能な文書としての意味をなさなくなる。
ただし、一部の日本語表現についてのみ特別な日本語対応がなされているブラウザは存在するが、その対応は十分とは言い難く、またその数も少ない。日本語が世界的にみて特異な言語であることを考慮すると、これらのブラウザによる日本語表現が今後十分に改良される可能性は低いと考えられる。
【００３３】
これらのことから、本発明の変換プログラムは、各文字のタグを文書内での出現順序と同じ順序で配置することにより、縦書きに配置された文字列であってもブラウザは縦書きの読み順序と同じ順序で文字列を解析することを可能とし、現在において利用されているブラウザでも特別な対応を必要とせずに日本語の縦組みを実現する。
【００３４】
次に、上述したように１文字ずつ生成したタグを再配置する際（図３のステップＳ１０８）の変換プログラムの動作を、図４に基づいてさらに具体的に説明する。
まず変換対象となる元のブロックレベル要素の領域を取得する（ステップＳ２００）が、これは構文解析として最初に行った動作（図３のステップＳ１００）と同じ動作であるので、ここではその説明を省略する。
【００３５】
次に、元のブロックレベル要素をコピーし、その内部に含まれている要素をすべて削除する（ステップＳ２０２）。
ＤＯＭＡＰＩを用いて元のブロックレベル要素をコピーし、その内部の要素をすべて削除するにはjavascriptでは、
var copy=elem.cloneNode(false);という記載で実行できる。
【００３６】
次に、コピーしたブロックレベル要素のidを別の名称に設定する（ステップＳ２０４）。ここでは、layoutと設定する。この設定は、javascriptでは、copy.id=”layout”;という記載で実行できる。
【００３７】
次に、元のブロックレベル要素の前にコピーしたブロックレベル要素を挿入する（ステップＳ２０６）。この動作は、javascriptでは、
Document.body.insertBefore(copy,elem);という記載で実行できる。
コピーしたブロックレベル要素の挿入は、元のブロックレベル要素の後ろでもよく、この場合javascriptでは、
Document.body.insertBefore(copy,elem.nextSibling);という記載で実行できる。
【００３８】
次に、元のブロックレベル要素を非表示にする（ステップＳ２０８）。この動作は、javascriptでは、
elem.style.display=”none”という記載で実行できる。
変換対象のＨＴＭＬ文書の解析はすでに行われているので、元のブロックレベル要素を削除してしまっても構わないが、縦書きでは都合が悪かった場合に元の文書を復元することを考慮して非表示にしておくことが望ましい。
【００３９】
そして次に、変換プログラムは、実際の文字配置領域を定義する（ステップＳ２１０）。
文字配置領域の定義は、変換プログラム実行時に渡された１行の文字数、行数、上下左右のマージン、描画可能段数、段間幅、複製されたブロックレベル要素の領域によって行われる。
１行の文字数、行数、上下左右のマージン、描画可能段数、段間幅については、ＨＴＭＬ文書を公開する公開者があらかじめ設定してもよいし、閲覧者が設定できるようにしておいても、どちらでもよい。
【００４０】
次に、変換プログラムは、各文字の相対的描画位置を設定する動作を行う（ステップＳ２１２）。
この動作については図５〜図２６に示し、以下に詳細に説明する。ただし、これらは複雑な日本語組版ルールの一例であり、必ずしもこの通りでなくとも構わない。
図５は、通常文字の相対的描画位置の設定の基本例である。通常文字の周囲に所定範囲の正方形状の全角文字枠を設定する。この全角文字枠の大きさは、通常文字の種類にかかわらずすべて同一とする。また、全角文字枠の基準位置は左上隅とする。
また、ここでいう通常文字とは、漢字、ひらがな、カタカナ、全角英数字、記号類をいう。
本発明においては以下の処理を行うにあたり、これらの文字を含有するタグについて、
line-height: lem;
というスタイルをあらかじめ適用することを推奨する。これはその行高を１文字分に制限するための書式であり、回転を正しく行うにあたって重要な要素である。
【００４１】
なお、通常ブラウザ上で表示されるフォントは、プロポーショナルフォントと呼ばれるフォントがデフォルトである。このプロポーショナルフォントは、その文字デザインによって、文字占有領域の幅が変わるものである。
そこで、変換プログラムは、図６に示すように、該当する文字の文字占有領域と文字枠との間の横方向の間隔を計測し、該当する文字の文字占有領域と文字枠との間の横方向の間隔の左右両側が等しくなるようにしている。
【００４２】
図６に示す例では、「り」というプロポーショナルフォントについて、文字占有領域と文字枠との間の横方向の間隔の左右両側が等しくなるようにしている。
横書きの「り」は、実際の文字占有領域は全角文字枠に対して左に偏って配置されており、右側に隙間が空いている。これをこのまま縦書きにすると、「り」の文字は他の文字よりも左側にずれた位置になってしまうので、これを真ん中に位置させる必要がある。
そこで、変換プログラムは、実際の文字占有領域の横方向の幅Ｙと全角文字枠の横方向の幅Ｘの差Ｘ−Ｙを算出する。次いで変換プログラムは、（Ｘ−Ｙ）／２を算出し、「り」の文字占有領域を（Ｘ−Ｙ）／２だけ右へシフトする。
これにより、「り」の字は、縦書きに変換した場合であっても縦方向の中心に位置することができる。
【００４３】
次に、変換プログラムは、該当する文字が半角英数字の場合には、半角英数字の文字占有領域の四隅のうちのいずれか１点を中心に９０°回転させ、その後横方向に移動させて、当該半角英数字を他の文字の横方向の位置に合わせる。
なお、半角英数字には、ＡＳＣＩＩ文字列のほか、他の外国語文字も含まれるものとする。
【００４４】
図７には、半角英数字の例として「ｉ」の字の処理について示している。
まず、「ｉ」の字を、文字占有領域の左上隅を中心に時計周りに９０°回転させる。そして、その後右方向へ１文字分シフトする。
これにより、「ｉ」の字は、縦書きに変換した場合であっても、半角英数字として横向きで読めるように処理される。
【００４５】
次に変換プログラムは、該当する文字が通常起こし括弧の場合には、通常起こし括弧の文字占有領域の四隅のうちのいずれか１点を中心に９０°回転させ、その後横方向に移動させて、当該通常起こし括弧を他の文字の横方向の位置に合わせる。
なお、通常起こし括弧には、「（｛等の括弧類のほか、環境異存文字も含めるものとする。
【００４６】
図８には、通常起こし括弧の例として「の処理について示している。
まず、「を文字占有領域の右下隅を中心に時計周りに９０°回転させる。そして、その後左方向へ１文字分シフトする。
これにより、「は、縦書きに変換した場合であっても、通常起こし括弧として縦書きに適した状態で読めるように処理される。
【００４７】
次に変換プログラムは、該当する文字が通常閉じ括弧の場合には、通常閉じ括弧の文字占有領域の四隅のうちのいずれか１点を中心に９０°回転させ、その後横方向に移動させて、当該通常閉じ括弧を他の文字の横方向の位置に合わせる。
なお、通常閉じ括弧には、」）｝等の括弧類のほか、環境異存文字も含めるものとする。
【００４８】
図９には、通常閉じ括弧の例として」の処理について示している。
まず、」を文字占有領域の左上隅を中心に時計周りに９０°回転させる。そして、その後右方向へ１文字分シフトする。
これにより、」は、縦書きに変換した場合であっても、通常閉じ括弧として縦書きに適した状態で読めるように処理される。
【００４９】
次に変換プログラムは、該当する文字が句読点の場合には、その位置を右上にシフトさせる。
句読点には、、。，．などが含まれる。
【００５０】
図１０には、句読点の例として句点「。」の処理について示している。
まず、「。」は横書きの状態では、全角文字枠の左下に位置している。これを全角文字枠内の右上にシフトする。具体的には、上に１／２文字分、右に１／２文字分シフトすればよい。
これにより、句点「。」は、縦書きに変換した場合であっても、縦書きに適した状態で読めるように処理される。
【００５１】
次に変換プログラムは、該当する文字が拗促音の場合には、その位置を右上にシフトさせる。
拗促音には、ぁぃぅぇぉっなどが含まれる。
【００５２】
図１１には、拗促音の例として「っ」の処理について示している。
まず、「っ」は横書きの状態では、全角文字枠の左下に位置している。そこで変換プログラムは、実際の文字占有領域の横方向の幅Ｙと全角文字枠の横方向の幅Ｘの差Ｘ−Ｙを算出する。次いで変換プログラムは、Ｘ−Ｙだけ「っ」を右へシフトする。そして、変換プログラムは、「っ」を上へ所定の距離だけシフトする。この所定距離は、あらかじめ設定しておく距離であるが、１文字分の距離の１０〜１５％程度の距離をシフトすればよい。
これにより、拗促音「っ」は、縦書きに変換した場合であっても、縦書きに適した状態で読めるように処理される。
【００５３】
次に変換プログラムは、該当する文字がリーダー類の場合には、リーダー類を横方向の中心位置で９０°回転させる。
リーダー類には、…  ・・  −  ―  〜などが含まれる。
【００５４】
図１２には、リーダー類の例として「…」の処理について示している。
「…」の横方向の中心は３つの点の中止の点であるので、この点を中心に９０°回転させる。すると、「…」は縦方向に伸びる３つの点となる。
これにより、リーダー類「…」は、縦書きに変換した場合であっても、縦書きに適した状態で読めるように処理される。
【００５５】
次に変換プログラムは、該当する文字が音引きの場合には、音引きを横方向の中心位置で左右反転させた後、横方向の中心位置で９０°回転させる。
音引きとは、ーのことである。
【００５６】
図１３には、音引き「ー」の処理について示している。
まず、変換プログラムは「ー」の横方向の中心で左右反転させる。次いで、横方向の中心を回転中心として９０°回転させる。すると、「ー」は縦方向に音引きとなる。
これにより、音引き「ー」は、縦書きに変換した場合であっても、縦書きに適した状態で読めるように処理される。
【００５７】
次に変換プログラムは、該当する文字が特殊起こし括弧の場合、他の文字に置き換えをして、その後左右反転し、右下にシフトさせる。なお、以下特殊起こし括弧及び特殊閉じ括弧は、明細書で適切に表現できないので、図面を参照。
特殊起こし括弧とは、横書きでは“であるが、縦書きでは"となるべき文字のことをいう。
【００５８】
図１４には、特殊起こし括弧の処理について示している。
まず横書きの特殊起こし括弧「“」を縦書きの「"」に置き換える。次に、横方向の中心位置を基準に置き換え後の「"」を左右反転する。そして、左右反転により「″」となった特殊起こし括弧を、右下にシフトする。具体的には、下に１／２文字分、右に１／２文字分シフトすればよい。
これにより、特殊起こし括弧は、縦書きに変換した場合であっても、縦書きに適した状態で読めるように処理される。
【００５９】
次に変換プログラムは、該当する文字が特殊閉じ括弧の場合、他の文字に置き換えをして、その後左右反転し、左上にシフトさせる。
特殊閉じ括弧とは、横書きでは”であるが、縦書きでは"となるべき文字のことをいう。
【００６０】
図１５には、特殊閉じ括弧の処理について示している。
まず横書きの特殊閉じ括弧「”」を縦書きの「"」に置き換える。次に、横方向の中心位置を基準に置き換え後の「"」を左右反転する。そして、左右反転により「″」（本明細書は横書きであり、適切なフォントは存在していない）となった特殊閉じ括弧を、左上にシフトする。具体的には、上に１／２文字分、左に１／２文字分シフトすればよい。
これにより、特殊閉じ括弧は、縦書きに変換した場合であっても、縦書きに適した状態で読めるように処理される。
【００６１】
図６〜図１５までの説明は、各文字において横書きを縦書きにする際に必要な処理であった。
以下、縦書きになったときの行頭及び行末における処理について説明する。
まず、縦書きの場合、段落頭は１文字分開けることが原則となっている。このため、段落頭に起こし括弧が配置された場合の処理を説明する。
図１６に示すように、段落頭起こし括弧半角のルールが指定されている場合において、変換プログラムは、段落頭に起こし括弧半角が配置された場合には、起こし括弧半角を全角１文字分下へシフトし、半角分上へシフトする。
【００６２】
図１７に示すように、段落頭起こし括弧全角のルールが指定されている場合において、変換プログラムは、段落頭に起こし括弧全角が配置された場合には、起こし括弧全角を全角１文字分下へシフトする。
【００６３】
また、段落頭起こし括弧半角のルールが指定されている場合において段落頭ではなく、単なる行頭に起こし括弧半角が配置されている場合には、図１８に示すように、起こし括弧半角を半角分上へシフトする。
ただし、段落頭起こし括弧全角のルールが指定されている場合において単なる行頭に起こし括弧全角が配置されている場合には、シフト等の処理をせずそのままである。
【００６４】
なお、行末に閉じ括弧が配置された場合は、閉じ括弧が半角、全角いずれであっても、シフト等の処理をせずそのままである。行末の閉じ括弧を半角にするルールが適用されている場合の処理は、（００６９）以降で示す処理によって調整が行われる。
【００６５】
次に括弧と句読点が連続して配置された場合の処理について説明する。
起こし括弧と閉じ括弧が連続して配置された際には、シフト等の処理をせずそのままである。
起こし括弧と読点が連続して配置された際には、シフト等の処理をせずそのままである。
【００６６】
図１９に示すように、起こし括弧と起こし括弧が連続して配置された場合には、下側の起こし括弧を半角分上へシフトする。
図２０に示すように、閉じ括弧と起こし括弧が連続して配置された場合、閉じ括弧と読点が連続して配置された場合、及び閉じ括弧と閉じ括弧が連続して配置された場合には、下側の文字を半角分上へシフトする。
【００６７】
また、図２１に示すように、読点と起こし括弧が連続して配置された場合、読点と閉じ括弧が連続して配置された場合、及び読点と句点が連続して配置された場合には、下側の文字を半角分上へシフトする。
【００６８】
次に、行内文字列の定義について説明する。
各文字の定義づけが完了したのち、行内での規則に基づいて縦方向の占有幅の調整が行われる。
例えば、図２２に示すように、次の行頭に、行頭禁止文字である起こし括弧が位置する場合、起こし括弧を行末に追い込む必要が出てくる。
変換プログラムは、行全体の中で文字詰めが可能であるかどうか、文字と縦方向の占有幅を確認する。図２２の例では、読点の下が半角分文字詰め可能な隙間がある。このため、変換プログラムは、読点の後の複数の文字を半角分上へシフトし、閉じ括弧を行末に収納させる。
【００６９】
図２３のように、次の行頭に、行頭禁止文字が２つ連続で位置する場合、当該行の行末の文字を次の行頭に移動させる処置が必要となる。
変換プログラムは、行末の文字を次の行頭に移動させるとともに、当該行において余った隙間部分を埋めるように、各文字間の隙間をあける。図２３の例では、行末の「字」という字を次の行に移動したので、行末に全角１文字分の隙間が空いている。そこで、縦方向の余り幅（全角１文字分）を全文字数―１で除算して得られた値だけ各文字間の隙間を開けるようにする。
【００７０】
図２４のように、当該行末において、半角分の文字がはみ出しており、はみ出した次の文字が行頭可能文字である場合、変換プログラムは、行全体の中で文字詰めが可能であるかどうか、文字と縦方向の占有幅を確認する。図２４の例では、読点の下に半角分文字詰め可能な隙間がある。このため、変換プログラムは、読点の後の複数の文字を半角分上へシフトし、行末のはみ出した字を行末に収納させる。
【００７１】
図２５のように、当該行末において、半角分の文字がはみ出しており、はみ出した次の文字が行頭禁止文字である場合、変換プログラムは、はみ出した文字及び次の文字の２文字を次の行に移動させる。
変換プログラムは、行末の２文字を次の行頭に移動させるとともに、当該行において余った隙間部分を埋めるように、各文字間の隙間をあける。図２５の例では、行末に半角分の隙間が空いている。そこで、縦方向の余り幅（半角１文字分）を全文字数―１で除算して得られた値だけ各文字間の隙間を開けるようにする。
【００７２】
図２６に、行頭禁止文字をはみ出させる処理（ぶら下がり）について説明する。図２６では、次の行頭に行頭禁止文字と読点が連速して配置される例を示している。
変換プログラムは、行全体の中で文字詰めが可能であるかどうか、文字と縦方向の占有幅を確認する。図２６の例では、読点の下に半角分文字詰め可能な隙間がある。このため、変換プログラムは、読点の後の複数の文字を半角分上へシフトし、行頭禁止文字である閉じ括弧を行末に収納させる。また、句読点も行頭禁止であるが、行末ぶら下がりが許容される文字のため、このルールが適用される場合においては、図２６の読点は閉じ括弧の下にはみ出す位置に配置する。
【００７３】
上述してきた工程を実行することにより、横書きの文字列を縦書きの文字列に変換した際の、日本語として通常の形態に変換することができる。
【００７４】
また、上述してきた実施形態では、純粋なjavascriptの記述を例に挙げたが、jQuery（javascriptコードをより容易に記述できるように設計されたjavascriptライブラリ）を利用することにより、実装が容易となり、またjQueryプラグインとして本発明に関わるプログラムを提供することにより、ＨＴＭＬ文書作成者が特別な知識を必要とせずに容易に本発明を導入できる。また、必ずしも本発明に使用するプログラム言語はjavascriptでなくても良い。
【符号の説明】
【００７５】
１０   ＨＴＭＬ文書
１２   ＨＴＭＬ文書
１４   タグ
２０   サーバー
２２   サーバー
２４   ＰＣ
ｐ     変換プログラム
【図１】
2016024643.tif 000003
【図２】
2016024643.tif 000004
【図３】
2016024643.tif 000005
【図４】
2016024643.tif 000006
【図５】
2016024643.tif 000007
【図６】
2016024643.tif 000008
【図７】
2016024643.tif 000009
【図８】
2016024643.tif 000010
【図９】
2016024643.tif 000011
【図１０】
2016024643.tif 000012
【図１１】
2016024643.tif 000013
【図１２】
2016024643.tif 000014
【図１３】
2016024643.tif 000015
【図１４】
2016024643.tif 000016
【図１５】
2016024643.tif 000017
【図１６】
2016024643.tif 000018
【図１７】
2016024643.tif 000019
【図１８】
2016024643.tif 000020
【図１９】
2016024643.tif 000021
【図２０】
2016024643.tif 000022
【図２１】
2016024643.tif 000023
【図２２】
2016024643.tif 000024
【図２３】
2016024643.tif 000025
【図２４】
2016024643.tif 000026
【図２５】
2016024643.tif 000027
【図２６】
2016024643.tif 000028