(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023096389
(43)【公開日】2023-07-07
(54)【発明の名称】情報処理装置、筆記システム、情報処理プログラム及び情報処理方法
(51)【国際特許分類】
G06F 40/109 20200101AFI20230630BHJP
G09G 5/24 20060101ALI20230630BHJP
G09G 5/22 20060101ALI20230630BHJP
G06F 3/04883 20220101ALI20230630BHJP
【FI】
G06F40/109
G09G5/24 690
G09G5/22 650R
G06F3/0488 130
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021212107
(22)【出願日】2021-12-27
(71)【出願人】
【識別番号】509248431
【氏名又は名称】佐藤 博
(74)【代理人】
【識別番号】100115129
【弁理士】
【氏名又は名称】清水 昇
(72)【発明者】
【氏名】佐藤 博
【テーマコード(参考)】
5B109
5C182
5E555
【Fターム(参考)】
5B109RA04
5C182AA02
5C182AA03
5C182AB02
5C182AC02
5C182AC37
5C182FA03
5C182FA12
5C182FA14
5E555AA13
5E555BA02
5E555BB02
5E555CB11
5E555DB41
5E555DC33
5E555EA24
5E555FA00
(57)【要約】
【課題】動的に生成した手書き風のフォントと予め記憶手段に記憶された手書き風のフォントを混用して版下を生成するようにした情報処理装置を提供することを目的としている。
【解決手段】情報処理装置の受付手段は、文字コードを受け付け、分類手段は、前記受付手段によって受け付けられた文字コードを、予め定められた第1の文字と第2の文字に分類し、フォント生成手段は、前記第1の文字に対して、動的に手書き風のフォントを生成し、呼出手段は、前記第2の文字に対して、記憶手段に記憶された手書き風のフォントを呼び出し、版下生成手段は、前記フォント生成手段によって生成されたフォントと前記呼出手段によって呼び出されたフォントを用いて版下を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
文字コードを受け付ける受付手段と、
前記受付手段によって受け付けられた文字コードを、予め定められた第1の文字と第2の文字に分類する分類手段と、
前記第1の文字に対して、動的に手書き風のフォントを生成するフォント生成手段と、
前記第2の文字に対して、記憶手段に記憶された手書きのフォントを呼び出す呼出手段と、
前記フォント生成手段によって生成されたフォントと前記呼出手段によって呼び出されたフォントを用いて版下を生成する版下生成手段
を有する情報処理装置。
【請求項2】
前記フォント生成手段は、文字種毎のフォント生成手段を有しており、前記第1の文字の文字種に対応したフォント生成手段を用いて、動的にフォントを生成する、
請求項1に記載の情報処理装置。
【請求項3】
前記版下生成手段は、前記受付手段によって受け付けられた文章内の文字コードの出現順にしたがって、前記フォント生成手段によって生成されたフォントと前記呼出手段によって呼び出されたフォントに対して、筆記する文字の順を示す情報を付与する、
請求項1に記載の情報処理装置。
【請求項4】
前記呼出手段によって呼び出されたフォントに対して、アフィン変換、又は、ホモグラフィー変換を行う変換手段
をさらに有し、
前記版下生成手段は、前記フォント生成手段によって生成されたフォントと前記変換手段によって変換されたフォントを用いて版下を生成する、
請求項1に記載の情報処理装置。
【請求項5】
前記変換手段での前記アフィン変換、又は、前記ホモグラフィー変換における係数を、ランダム関数により変更する、
請求項4に記載の情報処理装置。
【請求項6】
前記係数をランダム関数により揺らぎを持たせた値に変更するタイミングは、フォントを生成する毎、又は、版下内で同じ文字コードが出現した場合、のいずれかとする、
請求項5に記載の情報処理装置。
【請求項7】
縦書きをする場合、英数字の文字コードのフォントについては、90度時計方向に回転させる、
請求項1に記載の情報処理装置。
【請求項8】
請求項1から7のいずれか1項に記載の情報処理装置と筆記装置を有する筆記システムであって、
前記フォントはベクトル形式で記載されており、
前記筆記装置は、前記版下生成手段によって生成された版下内の前記フォントを示すベクトルにしたがって文字を筆記する出力手段を有する、
筆記システム。
【請求項9】
コンピュータを、
文字コードを受け付ける受付手段と、
前記受付手段によって受け付けられた文字コードを、予め定められた第1の文字と第2の文字に分類する分類手段と、
前記第1の文字に対して、動的に手書き風のフォントを生成するフォント生成手段と、
前記第2の文字に対して、記憶手段に記憶された手書きのフォントを呼び出す呼出手段と、
前記フォント生成手段によって生成されたフォントと前記呼出手段によって呼び出されたフォントを用いて版下を生成する版下生成手段
として機能させる情報処理プログラム。
【請求項10】
記憶手段にアクセス可能な情報処理装置が行う情報処理方法であって、
前記情報処理装置は、以下のステップを行う、
文字コードを受け付ける受付ステップと、
前記受付ステップによって受け付けられた文字コードを、予め定められた第1の文字と第2の文字に分類する分類ステップと、
前記第1の文字に対して、動的に手書き風のフォントを生成するフォント生成ステップと、
前記第2の文字に対して、前記記憶手段に記憶された手書きのフォントを呼び出す呼出ステップと、
前記フォント生成ステップによって生成されたフォントと前記呼出ステップによって呼び出されたフォントを用いて版下を生成する版下生成ステップ
を有する情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、筆記システム、情報処理プログラム及び情報処理方法に関する。
【背景技術】
【0002】
文字を発生させる技術がある。
これに関連する技術として、例えば、最初のベクトル方式の文字発生技術として、特許文献1には、各文字の文字パターンを複数の直線により構成し、かつ各直線部分をベクトルとして、一文字を表現する必要なベクトル数、各ベクトルの始点、方向及び長さを情報として主モメモリに記憶させると共に、表示すべき文字パターンを上記メモリから選択して、各ベクトルに情報として読み出し、これらをタンダムアクセスメモリ内に、任意に設定された座標系に対応させて順次書き込むようにしてなり、かつ適宜再生手段により上記タンダムアクセスメモリ内に書き込まれた情報を読み出せることを特徴とする文字パターンの発生方法が開示されている。なお、本願の出願人(発明者)は、特許文献1の発明者であり、米国特許3,936,664ともなっている。
【0003】
また、例えば、特許文献2には、ストローク文字の発生速度を向上させることを目的とし、表示すべきストローク文字をメインプロセッサがコードにより指定し、ストローク文字発生器がこのコードに応じてストローク文字を発生させ、ストローク文字を発生させる際、ストローク文字発生器のプロセッサは、このストローク文字を構成する所定本数のベクトルについてその成分値を定数出力し、ストローク文字発生器のドット発生器はこの定数を入力して当該ベクトルを構成する所定個数のドットの座標値を逐次発生させ、プロセッサは、ストローク文字を構成する全てのベクトルについてこの動作を繰り返し実行する構成を有し、各ベクトルにその成分値を演算する必要がなくなるため、ストローク文字の発生速度が著しく向上することが開示されている。
【0004】
また、人間が書いた手書き文字を再現したフォントを生成する技術が知られている。例えば、特許文献3には、手書き文字画像とベースフォント画像とを比較して歪データを抽出し、歪データをベースフォントの複数の文字に展開して、手書き風のフォントデータを生成する端末装置が開示されている。
【0005】
また、例えば、特許文献4には、個人内変動を考慮した手書き文字の再現を行うことができる文字生成装置を提供することを課題とし、文字生成装置は、複数の文字コードに対応づいた文字データ群からなる手本フォントを記憶する記憶部と、文字データを取得する文字データ取得部と、取得した文字データの対応する文字を特定する文字特定部と、前記取得した文字データと、前記文字特定部が特定した文字に対応する前記手本フォントの文字データとを比較して、特徴量の差分値から変形量を抽出する変形量抽出部と、前記手本フォントの各文字データに対して前記変形量を加減させた値を用いて、新たな文字データを対応する文字コードと対応付けて生成する文字データ生成部とを備えることが開示されている。
【0006】
さらに、例えば、非特許文献1では、ニューラルネットワークの一種であるリカレントニューラルネットワーク(RNN:Recurrent Neural Network)を用いて、コンピュータが手書き文字を生成することが記載されている。結果として得られるシステムは、さまざまなスタイルで非常にリアルな筆記体の手書きを生成することができている(The resulting system is able to generate highly realistic cursive handwriting in a wide variety of styles.)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特公昭54-7416号公報
【特許文献2】特開平5-249946号公報
【特許文献3】特許第5834822号公報
【特許文献4】特開2019-28094号公報
【非特許文献】
【0008】
【非特許文献1】Alex Graves Department of Computer Science University of Toronto、”Generating Sequences With Recurrent Neural Networks”、[online]、5 Jun 2014、インターネット〈URL:https://arxiv.org/abs/1308.0850〉
【発明の概要】
【発明が解決しようとする課題】
【0009】
活字体とは異なる手書き風の文字、つまり、人が手で書いた形状に近い態様で表現することが求められている。
手書きの雰囲気を出すためには、固定した字形ではなく同じ文字が複数回筆記されたときに、毎回字形が変化していることが手書き風の特徴である。
毎回異なる字形を発生させる先行技術として前述した非特許文献1のように、リカレント・ニューラルネットを応用して英数字を発生させた事例がある。
しかし、これはたかだか256文字の英数字をカバーするのみであり、文章表現に少なくとも3000字程度は必要となる日本語を実装することは、機械学習のためのデータ量とそれを実現するコンピュータの処理能力の観点で、一般的なパソコン程度の処理能力で実現することはできない。そのために、手書き風の文字を記載することは、商用的には日本語での実現性が乏しいのが現状である。日本語は例示であり、他の言語(例えば、中国語等)でも同様である。
そこで、本発明は、動的に生成した手書き風のフォントと予め記憶手段に記憶された手書きのフォントを混用して版下を生成するようにした情報処理装置、筆記システム、情報処理プログラム及び情報処理方法を提供することを目的としている。
【課題を解決するための手段】
【0010】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
発明[1]は、文字コードを受け付ける受付手段と、前記受付手段によって受け付けられた文字コードを、予め定められた第1の文字と第2の文字に分類する分類手段と、前記第1の文字に対して、動的に手書き風のフォントを生成するフォント生成手段と、前記第2の文字に対して、記憶手段に記憶された手書きのフォントを呼び出す呼出手段と、前記フォント生成手段によって生成されたフォントと前記呼出手段によって呼び出されたフォントを用いて版下を生成する版下生成手段を有する情報処理装置である。
【0011】
発明[2]は、前記フォント生成手段は、文字種毎のフォント生成手段を有しており、前記第1の文字の文字種に対応したフォント生成手段を用いて、動的にフォントを生成する、発明[1]に記載の情報処理装置である。
【0012】
発明[3]は、前記版下生成手段は、前記受付手段によって受け付けられた文章内の文字コードの出現順にしたがって、前記フォント生成手段によって生成されたフォントと前記呼出手段によって呼び出されたフォントに対して、筆記する文字の順を示す情報を付与する、発明[1]に記載の情報処理装置である。
【0013】
発明[4]は、前記呼出手段によって呼び出されたフォントに対して、アフィン変換、又は、ホモグラフィー変換を行う変換手段をさらに有し、前記版下生成手段は、前記フォント生成手段によって生成されたフォントと前記変換手段によって変換されたフォントを用いて版下を生成する、発明[1]に記載の情報処理装置である。
【0014】
発明[5]は、前記変換手段での前記アフィン変換、又は、前記ホモグラフィー変換における係数を、ランダム関数により変更する、発明[4]に記載の情報処理装置である。
【0015】
発明[6]は、前記係数をランダム関数により揺らぎを持たせた値に変更するタイミングは、フォントを生成する毎、又は、版下内で同じ文字コードが出現した場合、のいずれかとする、発明[5]に記載の情報処理装置である。
【0016】
発明[7]は、縦書きをする場合、英数字の文字コードのフォントについては、90度時計方向に回転させる、発明[1]に記載の情報処理装置である。
【0017】
発明[8]は、発明[1]から発明[7]のいずれか1項に記載の情報処理装置と筆記装置を有する筆記システムであって、前記フォントはベクトル形式で記載されており、前記筆記装置は、前記版下生成手段によって生成された版下内の前記フォントを示すベクトルにしたがって文字を筆記する出力手段を有する、筆記システムである。
【0018】
発明[9]は、コンピュータを、文字コードを受け付ける受付手段と、前記受付手段によって受け付けられた文字コードを、予め定められた第1の文字と第2の文字に分類する分類手段と、前記第1の文字に対して、動的に手書き風のフォントを生成するフォント生成手段と、前記第2の文字に対して、記憶手段に記憶された手書きのフォントを呼び出す呼出手段と、前記フォント生成手段によって生成されたフォントと前記呼出手段によって呼び出されたフォントを用いて版下を生成する版下生成手段として機能させる情報処理プログラムである。
【0019】
発明[10]は、記憶手段にアクセス可能な情報処理装置が行う情報処理方法であって、前記情報処理装置は、以下のステップを行う、文字コードを受け付ける受付ステップと、前記受付ステップによって受け付けられた文字コードを、予め定められた第1の文字と第2の文字に分類する分類ステップと、前記第1の文字に対して、動的に手書き風のフォントを生成するフォント生成ステップと、前記第2の文字に対して、前記記憶手段に記憶された手書きのフォントを呼び出す呼出ステップと、前記フォント生成ステップによって生成されたフォントと前記呼出ステップによって呼び出されたフォントを用いて版下を生成する版下生成ステップを有する情報処理方法である。
【発明の効果】
【0020】
発明[1]に記載の情報処理装置によれば、動的に生成した手書き風のフォントと予め記憶手段に記憶された手書きのフォントを混用して版下を生成することができる。
【0021】
発明[2]に記載の情報処理装置によれば、文字種に対応したフォント生成手段を用いて、動的にフォントを生成することができる。
【0022】
発明[3]に記載の情報処理装置によれば、文字コードとフォントの1対1対応を必要としない版下を生成することができる。
【0023】
発明[4]に記載の情報処理装置によれば、予め記憶手段に記憶された手書き風のフォントに対しても揺らぎを与えることができる。
【0024】
発明[5]に記載の情報処理装置によれば、アフィン変換、又は、ホモグラフィー変換における係数に揺らぎを持たせることができる。
【0025】
発明[6]に記載の情報処理装置によれば、予め記憶手段に記憶された手書き風のフォントに対しても、同じ文字が複数回筆記されたときに毎回字形を変化させることができる。
【0026】
発明[7]に記載の情報処理装置によれば、縦書きをする場合、90度時計方向に回転した英数字のフォントを用いることができる。
【0027】
発明[8]に記載の筆記システムによれば、フォントを示すベクトルにしたがって文字を筆記することができる。
【0028】
発明[9]に記載の情報処理プログラムによれば、動的に生成した手書き風のフォントと予め記憶手段に記憶された手書きのフォントを混用して版下を生成することができる。
【0029】
発明[10]に記載の情報処理方法によれば、動的に生成した手書き風のフォントと予め記憶手段に記憶された手書きのフォントを混用して版下を生成することができる。
【図面の簡単な説明】
【0030】
【
図1】本実施の形態の構成例についての概念的なモジュール構成図である。
【
図2】本実施の形態を利用した概略的な構成例を示す説明図である。
【
図3】本実施の形態を利用したより具体的な構成例を示す説明図である。
【
図4】本実施の形態を利用したシステムとしての構成例を示す説明図である。
【
図5】本実施の形態によって筆記した例を示す説明図である。
【
図6】本実施の形態による処理例を示すフローチャートである。
【
図7】本実施の形態による処理例を示す説明図である。
【
図8】本実施の形態による処理例を示す説明図である。
【
図9】本実施の形態による処理例を示す説明図である。
【
図10】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0031】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(「ソフトウェア」の解釈として、コンピュータ・プログラムを含む)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(例えば、コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(例えば、データの授受、指示、データ間の参照関係、ログイン等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態にしたがって、又はそれまでの状況・状態にしたがって定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、2以上の値(「2以上の値」には、もちろんのことながら、全ての値も含む)が同じであってもよい。また、「Aである場合、Bをする」という記載は、「Aであるか否かを判断し、Aであると判断した場合はBをする」の意味で用いる。ただし、Aであるか否かの判断が不要である場合を除く。また、「A、B、C」等のように事物を列挙した場合は、断りがない限り例示列挙であり、その1つのみを選んでいる場合(例えば、Aのみ)を含む。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(「ネットワーク」には、一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」(つまり、社会システム)にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。
なお、もちろんのことながら、以下に説明する実施の形態に係る物(装置等)、方法、プログラムを提供することを目的とすること、又は、その実施の形態から把握できる発明に係る物(装置等)、方法、プログラムを提供することを目的とすることを「発明が解決しようとする課題」として捉えてもよい。
【0032】
本実施の形態が解決しようとする課題として、以下のように捉えてもよい。なお、「発明が解決しようとする課題」の具体化させたものであるが、もちろんのことながら、本実施の形態は「発明が解決しようとする課題」を解決するものである。
そして、この説明(本段落番号内の記載)は、本実施の形態の理解を容易にすることを目的とするものであり、この説明を用いて限定解釈することは意図していない。そして、この説明部分のみを用いて、特許を受けようとする発明が発明の詳細な説明に記載したものであること(特許法第36条第6項第1号)の判断を行うべきではないことは当然である。
通常のフォントを利用した出力システムは、全く個性がない活字体のみであり、受信者の関心を引くことができない。手書きの手紙等は、珍しさから開封率も判読性も高くなり、営業ダイレクトメールでは効果が大きくなる。
つまり、活字体とは異なる手書き風の文字、つまり、人が手で書いた形状に近い態様で表現することが求められている。
また、通常フォントでは出せない、前述の特許文献3、特許文献4等で開示されている手書き文字の発生装置においても、固定されたフォントであるため、同じ文字は同じ形状となり不自然であり、より手書き感のある文字発生技術を必要とする。
手書きの雰囲気を出すためには、固定した字形ではなく同じ文字が複数回筆記されたときに、毎回字形が変化していることが手書き風の特徴である。
毎回異なる字形を発生させる先行技術として前述した非特許文献1のように、リカレント・ニューラルネットを応用して英数字を発生させた事例がある。
しかし、これはたかだか256文字の英数字をカバーするのみであり、文章表現に少なくとも3000字程度は必要となる日本語を実装することは、機械学習のためのデータ量とそれを実現するコンピュータの処理能力の観点で、一般的なパソコン程度の処理能力で実現することはできない。そのために、手書き風の文字を記載することは、商用的には日本語での実現性が乏しいのが現状である。具体的には、日本語においては、人名・地名には常用漢字(約2100字)を上回る数の文字が必要である。つまり、住民基本台帳文字(約19,000文字)、戸籍統一文字(漢字55,270文字)が使われており、それらが必要に応じて字形の作成と利用ができる必要がある。日本語は例示であり、他の言語(例えば、中国語等)でも同様である。
なお、複数のフォントセットを用意して、ランダムに抽出するという案はあるが、手書きデザインのフォントセットを多数用意することは、人的工数の観点から時間的・コスト的に難易度が高い。
そこで、本実施の形態は、動的に生成した手書き風のフォントと予め記憶手段に記憶された手書きのフォントを混用することによって、全体的な印象として書く度に文字に揺らぎがあると認識されるような版下を生成するようにした情報処理装置、筆記システム、情報処理プログラム及び情報処理方法を提供することを目的としている。
【0033】
なお、本実施の形態では、常用漢字、住民基本台帳文字、戸籍統一文字の全ての文字を筆記可能とする構成である。つまり、後述する記憶モジュール150にこれら全ての文字を記憶させればよい。ただし、記憶モジュール150にこれら全ての文字を記憶させることは、発明の必須の構成要件ではない。つまり、筆記するのに必要とされる文字を、「予め定められたフォント」として記憶モジュール150に記憶させておけばよい。
【0034】
本実施の形態である情報処理装置100は、手書き風のフォントを用いて版下を生成する処理を行う機能を有している。
図1の例に示すように、情報処理装置100は、受付モジュール110、分類モジュール120、フォント生成モジュール130、呼出モジュール140、記憶モジュール150、版下生成モジュール170を有している。さらに、変換モジュール160を有してもよい。
ただし、記憶モジュール150は、情報処理装置100に内蔵されている必要はなく、情報処理装置100(呼出モジュール140)からアクセス可能であればよい。つまり、記憶モジュール150にアクセス可能な情報処理装置100であればよい。この形態として、例えば、情報処理装置100内に記憶モジュール150があってもよいし、情報処理装置100と記憶モジュール150は別筐体であるが、アクセス可能に接続されていてもよい。接続として、記憶モジュール150はUSBメモリ、CD等の記憶媒体を読み込むことができる装置であれば、その装置との接続はUSB等であるし、記憶モジュール150がサーバー等であれば、インターネット等の通信回線を介した接続となる。
また、変換モジュール160は、情報処理装置100の必須の構成要件ではなく、変換モジュール160がない場合、版下生成モジュール170は、フォント生成モジュール130が生成したフォントと呼出モジュール140が呼び出したフォントを用いて版下を生成する。変換モジュール160を有している場合、版下生成モジュール170は、フォント生成モジュール130が生成したフォントと変換モジュール160が変換したフォントを用いて版下を生成する。
【0035】
「フォント生成モジュール130が生成する『手書き風』のフォント」とは、人が手で書いた文字そのものではなく、また、従来のように活字体等の文字で印刷されたもの(毎回同じ形状のフォント)でもなく、人が手で書いた時の行書体に近い文字である。具体的には、文字の形状に(程よい)揺らぎ(一般的には、崩れと言われる)がある文字である。さらに、文字間に(程よい)揺らぎを加えてもよい。さらに具体的には機械学習されたモデルによって生成されるフォントである。
「記憶モジュール150に記憶された『手書き』のフォント」とは、人が手で書いた文字を基にして生成された文字である。なお、人が手で書いた文字を忠実にベクトル化してもよいし、その文字の形状に対して何らかの加工を施したものであってもよい。例えば、タブレット型端末上でデジタルペンで描かれた文字をベクトル化して生成したフォントが該当する。手書きのフォントであるが、このフォントをそのまま印字した場合は、毎回同じ形状のフォントで印字されることになり、複数の同じ文字間についての揺らぎはない。なお、ここで「揺らぎ」とは、同じ文字(文字コードが同じ)を複数筆記した場合に、その文字の形状(フォント)が異なることをいう。
【0036】
受付モジュール110は、分類モジュール120と接続されており、文字コードを受け付ける。
なお、対象とする文字として、英数字、日本語で用いられているひらがな、カタカナ、漢字等の他に空白文字(タブを含む)、記号、絵文字、他の言語で用いられている文字、図形等を含めてもよい。
【0037】
分類モジュール120は、受付モジュール110、フォント生成モジュール130、呼出モジュール140と接続されており、受付モジュール110によって受け付けられた文字コードを、予め定められた第1の文字と第2の文字に分類する。なお、第1の文字と第2の文字は、ともに予め定められた文字である。
「第1の文字」はフォント生成モジュール130でフォントを生成することができる文字であり、「第2の文字」は第1の文字以外の文字である。以下に例示する具体例としては、「第1の文字」は機械学習されたモデルを用いてフォントを動的に生成することができる文字であり、「第2の文字」はそのモデルを使うことができずに記憶モジュール150内のフォントを用いることとなる文字である。ここで、モデルとは、機械学習された人工知能(例えば、ニューラルネットワーク)であって、その人工知能を使って正解を出す「予測フェーズ」で稼働するものである。
分類するとは、受け付けた文字コードが第1の文字に該当するか否かを判断することである。その文字コードが第1の文字に該当する場合は第1の文字とし、第1の文字に該当しない場合は第2の文字とすればよい。また、その文字コードが第2の文字に該当する場合は第2の文字とし、第2の文字に該当しない場合は第1の文字としてもよい。さらに、その文字コードが第1の文字に該当する場合は第1の文字とし、その文字コードが第2の文字に該当する場合は第2の文字としてもよい。
「予め定められた第1の文字と第2の文字に分類する」ことは、例えば、(1)予め定められた第1の文字に該当するか否か、(2)予め定められた第2の文字に該当するか否か、(3)予め定められた第1の文字に該当するか否か、及び、予め定められた第2の文字に該当するか否か、によって実現され得る。また、後述するように、受け付けた文字コードの種類による判断を付加してもよい。具体的には、受け付けた文字コードが半角英数字を表すASCIIであれば第1の文字とし、全角文字を表すUTF-16であれば前述の判断((1)、(2)、(3)のいずれか)を行うようにしてもよい。
また、例えば、「予め定められた第1の文字と第2の文字」の内容として、出現頻度により分類された第1の文字と第2の文字としてもよい。ここで、第1の文字は出現頻度の高い文字であり、第2の文字は第1の文字以外の文字(第1の文字よりも出現頻度の低い文字)である。また、ここで出現頻度は、なんらかの統計資料に基づいていればよい。統計資料として、公的機関が作成した統計資料であってもよいし、私的な機関による統計資料であってもよい。また、統計の対象として、例えば、書状で用いられる文字の頻度であってもよいし、その他として、新聞で用いられる文字の頻度、小説で用いられる文字の頻度、電子メールで用いられた文字の頻度、過去に本実施の形態で受け付けた文字の頻度等であってもよい。
なお、第1の文字は、英数字と出現頻度の高い文字(この場合は出現頻度の高いひらがなとカタカナと漢字)としてもよい。また、第1の文字は、英数字とひらがなとカタカナと出現頻度の高い文字(この場合は出現頻度の高い漢字)としてもよい。
【0038】
フォント生成モジュール130は、分類モジュール120、版下生成モジュール170と接続されており、第1の文字に対して、動的に手書き風のフォントを生成する。
「動的にフォントを生成する」とは、フォントを生成する毎に揺らぎをもたせたフォント(手書き風のフォント)を生成することである。したがって、同じ文字のフォントを複数生成する場合であっても、異なる形態のフォントとなる。ただし、その場合であっても、2つのフォント間の違いは、同じ人物が書いた文字であるように見せる程度であることが望ましい。具体例として、人間が筆記した手書き文字を教師データとして機械学習を行ったモデルを用いてフォントを生成すること等が挙げられる。機械学習として、非特許文献1に記載されているディープラーニングの手法であるRNN(Recurrent Neural Network)を用いるようにすればよい。
【0039】
呼出モジュール140は、分類モジュール120、記憶モジュール150、変換モジュール160、版下生成モジュール170と接続されており、第2の文字に対して、記憶モジュール150に記憶された手書きのフォントを呼び出す。具体的には、第2の文字の文字コードに対応するフォントを記憶モジュール150から読み込む。
記憶モジュール150は、呼出モジュール140と接続されており、文字コードに対応して手書きのフォントを記憶している。また、記憶モジュール150が記憶しているフォント(以下、固定フォントともいう)とは、予め作成されている手書き文字フォントである。前述したように、手書きのフォントではあるが、そのフォントのデータは固定(一定)している。なお、後述するように、この固定フォントに対して、変換モジュール160が動的な変換を施すことによってさらに手書きに見せることも可能である。
【0040】
版下生成モジュール170は、フォント生成モジュール130、呼出モジュール140、変換モジュール160、筆記装置180と接続されており、フォント生成モジュール130によって生成されたフォントと呼出モジュール140によって呼び出されたフォントを用いて版下を生成する。
したがって、少なくともフォント生成モジュール130によって生成されたフォントには、書く度に文字に揺らぎがあり、また、呼出モジュール140によって呼び出されたフォントは、手書きのフォントであるので、全体的な印象として書く度に文字に揺らぎがあると認識されるようになる。また、前述したように、第1の文字は出現頻度の高い文字とした場合、書く度に揺らぎがある文字は、版下(筆記される文書)内の大半を占めることになるので、さらに、手書きの雰囲気が出ることになる。
【0041】
また、フォント生成モジュール130は、文字種毎のフォント生成モジュール(フォント生成(A)モジュール132、フォント生成(B)モジュール134、フォント生成(C)モジュール136等)を有しており、第1の文字の文字種に対応したフォント生成モジュールを用いて、動的にフォントを生成するようにしてもよい。
文字種として、例えば、英数字、ひらがなとカタカナ、漢字としてもよい。その場合、「文字種毎のフォント生成モジュール」として、手書きの英数字で機械学習したフォント生成(A)モジュール132、手書きのひらがなとカタカナで機械学習したフォント生成(B)モジュール134、手書きの漢字で機械学習したフォント生成(C)モジュール136となる。なお、英数字、ひらがなとカタカナ、漢字の3種は例示であり、その他に、例えば、英数字、その他の文字(例えば、ひらがなとカタカナと漢字)の2種としてもよいし、例えば、英数字、ひらがな、カタカナ、漢字の4種としてもよいし、これら以外の種類に分けてもよい。機械学習として、例えば、前述したRNNを利用すればよい。
【0042】
また、版下生成モジュール170は、受付モジュール110によって受け付けられた文章内の文字コードの出現順にしたがって、フォント生成モジュール130によって生成されたフォントと呼出モジュール140によって呼び出されたフォントに対して、筆記する文字の順を示す情報を付与するようにしてもよい。
「筆記する文字の順を示す情報」として、具体的には、番号が一般的であるが、英字等を用いてもよい。
このように、その順に組版することで文字コードとフォントの1対1対応を必要としないことになる。したがって、同じ文字コードのフォントを複数回筆記する場合であっても、違う形態のフォントを筆記することが可能となる。
具体的には、フォント毎のファイルを生成し、そのファイル名に「筆記する文字の順を示す情報」である連番を用いればよい。例えば、100.svg、101.svg、・・・のファイルができる。
【0043】
変換モジュール160は、呼出モジュール140、版下生成モジュール170と接続されており、呼出モジュール140によって呼び出されたフォントに対して、アフィン変換、又は、ホモグラフィー変換を行う。個人の字の揺らぎは、基本形は維持されるものの外形的揺らぎが大きいことから、アフィン変換、又は、ホモグラフィー変換を行うのが望ましい。
そして、この場合、版下生成モジュール170は、フォント生成モジュール130によって生成されたフォントと変換モジュール160によって変換されたフォントを用いて版下を生成することになる。変換モジュール160によって、記憶モジュール150に記憶された手書きのフォントが、文字の形状に揺らぎがある手書き風のフォントに近くなる。
ホモグラフィー変換は射影変換とも言われる。
【0044】
また、変換モジュール160でのアフィン変換、又は、ホモグラフィー変換における係数を、ランダム関数により変更するようにしてもよい。
「係数をランダム関数により変更」として、例えば、アフィン変換又はホモグラフィー変換で用いる変換四辺形の周辺の4点の座標を、ランダム関数により予め定められた範囲内で散らせるように変更すればよい。「予め定められた範囲」として、例えば、手書きに見えるデザインから判断される量(例えば、5%等)とすればよい。この「予め定められた範囲」によって、基本の癖が残ったままで形状に揺らぎを感じさせることができる。なお、ランダム関数として、1/fノイズを用いるようにしてもよい。
また、筆記距離(又は、筆記時間、筆記文字数等としてもよい)が長くなれば、それに応じて「予め定められた範囲」を大きく(値を散らばらせる方向)するようにしてもよい。手書きの場合、多くの文字を筆記していると、字形が崩れることが多く、それを再現するためである。さらに、その版下において最後の頃(例えば、残りの筆記距離(又は、筆記時間、筆記文字数等としてもよい)が閾値より小となった場合)には、「予め定められた範囲」を小さく(値を散らばらせない方向)してもよい。手書きの場合、最後近くになると、ていねいに筆記することが多く、それを再現するためである。
【0045】
また、係数をランダム関数により揺らぎを持たせた値に変更するタイミングは、フォントを生成する毎、又は、版下内で同じ文字コードが出現した場合、のいずれかとするようにしてもよい。
つまり、フォントを生成する毎に、係数を変換してもよいし、1つの版下内で、以前に同じ文字コードがあったか否かを判断し、同じ文字コードがあった場合は係数を変更してもよい。前者の場合は、フォント毎に係数が異なることになる。後者の場合は、同じ文字コードが出現するまでは前回と同じ係数を用いることになる。
このように係数を変更することによって、文字デザインをフォント生成モジュール130で自動生成させた字形と、固定フォントをアフィン変換又はホモグラフィー変換させて生成させた字形を混在させられるようにし、全ての文字において、筆記する都度の揺らぎが発生するようにしている。
【0046】
また、縦書きをする場合、英数字の文字コードのフォントについては、90度時計方向に回転させるようにしてもよい。
なお、この回転処理を行うのは、フォント生成モジュール130が行ってもよいし、版下生成モジュール170が行うようにしてもよい。
例えば、縦書きが否か(又は横書きか否か)については、利用者であるユーザーが文字を入力する際に指定し、その指定を受付モジュール110が受け付け、判断すればよい。
【0047】
版下生成モジュール170が生成した版下に含まれるフォントはベクトル形式で記載されている。ベクターフォントといわれる形式(スケーラブルフォント、ストロークフォントともいわれる)である。そして、版下のデータ形式として、SVG(Scalable Vector Graphics)を採用してもよい。SVGは、XMLに準拠した(XMLのサブセット)、画像フォーマットの一種であり、ベクトル形式のデータである。
筆記装置180で描画することができるように、線分の始点から終点までを滑らかな曲線一本で表現する必要がある。そのためにXMLでベジェ曲線を利用する。なお、特許文献1に記載の技術を利用して、ベジェ曲線のストロークフォントを生成すればよい。
【0048】
筆記装置180は、情報処理装置100の版下生成モジュール170と接続されており、版下生成モジュール170によって生成された版下内のフォントを示すベクトルにしたがって文字を筆記する出力モジュール185を有する。
出力モジュール185は、文字を媒体(一般的には、便せん、ハガキ等の用紙であるが、用紙に限らずTシャツ等の布、木材等であってもよい)に記載することができればよい。したがって、プリンタ(複合機を含む)であってもよいが、ペンを用いることができるペンプロッタ(XYプロッタともいわれる)が手書きであるように見せるためには望ましい。この出力モジュール185を、人間の代筆をすることからロボットと称してもよい。なお、ペンとしては、万年筆、ボールペン、毛筆、フェルトペン、鉛筆等がある。限定はしないが、特に、万年筆が望ましい。万年筆を用いる場合は、ペンプロッタのペン保持部に万年筆を斜めに固定させる。
このベクトルには、線分(曲線)の始点、終点であるX座標、Y座標を少なくとも含む。また、ベジェ曲線とするための制御点のX座標、Y座標を含めてもよい。さらに、出力モジュール185が速度、圧力に対応する場合は、筆記速度、筆圧を含めるようにしてもよい。
【0049】
なお、空白文字(英語の場合は単語間の間隔)は、第1の文字としてもよいし、第2の文字としてもよい。第1の文字とする場合は、空白文字を含めて機械学習を行っていれば、フォント生成モジュール130によって空白文字に揺らぎを与えることができる。また、第2の文字とする場合は、変換モジュール160によって空白文字に揺らぎを与えることができる。なお、空白文字に揺らぎを与えるとは、その空白文字の長さ(横書きの幅、縦書きの場合は高さ)を毎回(出現する毎に)変更することである。
また、後述するように、空白文字を第1の文字として扱うが、さらに空白文字の文字コードによって処理を振り分けてもよい。つまり、半角英数字の文字コードによる空白文字である場合は、第1の文字としてフォント生成(A)モジュール132に処理をさせ、全角の文字コードによる空白文字である場合は、第1の文字としてフォント生成(B)モジュール134(出現頻度の高いひらがな又はカタカナの1種として空白文字を扱うことになる)又はフォント生成(C)モジュール136(出現頻度の高い漢字の1種として空白文字を扱うことになる)に処理をさせるようにすればよい。
【0050】
図2は、本実施の形態を利用した概略的な構成例を示す説明図である。
図2の例に示すように、本実施の形態は、「ロボットによる筆記を行うシステム」である。つまり、入力サブシステム210、レンダリングサブシステム220、記録ロボットサブシステム230と順に処理を行うことによって、手書き風の文字を生成し利用できるようにしている。
入力サブシステム210は、手書き文字風の文書を生成したいユーザーの文字コードの入力を受け付ける。
レンダリングサブシステム220は、入力サブシステム210で受け付けた文字コードから版下を生成する。前述の情報処理装置100に該当する。
記録ロボットサブシステム230は、レンダリングサブシステム220で生成された版下にしたがって、手書き文字風の文字を筆記して、文書を作成(印刷)する。前述の筆記装置180、出力モジュール185に該当する。
【0051】
図3は、本実施の形態を利用したより具体的な構成例を示す説明図である。
このシステム例では、ユーザーインターフェースモジュール310、組版制御モジュール320、フォント生成コントローラー330、AI動的フォント生成エンジン335、呼出モジュール340、記憶モジュール150、フォントバッファ365、レンダリングエンジン370、ロボット駆動ドライバー380、ペンプロッタ390を有している。
ユーザーインターフェースモジュール310は、受付モジュール110の機能を含み、ユーザーの操作によって、文字コードの入力、版下のプレビューの表示(版下ファイル375の出力画像の画面上での表示であり、確認させることになる)、ロボット駆動ドライバー380に筆記させること等の指示が行われる。
【0052】
組版制御モジュール320は、分類モジュール120の機能を含み、文字コードに応じて、フォント生成コントローラー330に手書き風フォントを生成させ、呼出モジュール340に固定フォント記憶モジュール350内の手書きフォントを呼び出させ、レイアウトを行って版下ファイル375を生成させる制御を行う。
フォント生成コントローラー330は、フォント生成モジュール130の機能を含み、AI動的フォント生成エンジン335に手書き風フォントを生成させ、手書き風フォントをフォントバッファ365に記憶させる。
AI動的フォント生成エンジン335は、フォント生成(A)モジュール132等の機能を含み、フォント生成コントローラー330の制御にしたがって、手書き風フォントを生成する。なお、
図3の例では、AI動的フォント生成エンジン335は1つであるが、前述したように文字種別に複数のAI動的フォント生成エンジン335であることが望ましい。
【0053】
呼出モジュール340は、呼出モジュール140の機能を含み、固定フォント記憶モジュール350から手書きフォントを呼び出す。手書きフォントをフォントバッファ365に記憶させること、又は、手書きフォントを変換モジュール360に渡す。
固定フォント記憶モジュール350は、記憶モジュール150の機能を含み、手書きフォントを記憶している。
変換モジュール360は、変換モジュール160の機能を含み、手書きフォントに対してアフィン変換又はホモグラフィー変換を行う。
【0054】
フォントバッファ365は、呼出モジュール340又は変換モジュール360からのフォント、フォント生成コントローラー330からのフォント、を受け取り記憶する。
レンダリングエンジン370は、フォントバッファ365内のフォントから画像を生成し、ユーザーインターフェースモジュール310にその画像(プレビュー画像)を表示させる。ユーザーがプレビュー画像を確認し、そのプレビュー画像で了解の指示があった場合は、版下ファイル375をロボット駆動ドライバー380に渡す。版下ファイル375として、例えば、SVGファイルである。
ロボット駆動ドライバー380は、版下ファイル375にしたがってペンプロッタ390にフォントを描画させる。ペンプロッタ390は、1ページに組版された版下ファイル375から記録出力が可能である。
【0055】
図4は、本実施の形態を利用したシステムとしての構成例を示す説明図である。
図4(a)は、スタンドアロン型のシステム構成とした場合の例を示すものである。
パソコン400(パソコンは、パーソナルコンピュータの略称)に情報処理装置100を内蔵(情報処理装置100のプログムラをインストール)させたものである。パソコン400とペンプロッタ390は、例えば、USBによって接続されている。
ユーザーは、パソコン400を操作して、ペンプロッタ390に文書を筆記させる。
【0056】
図4(b)は、ネットワーク型のシステム構成とした場合の例を示すものである。
版下作成サーバー410、パソコン420A、パソコン420Bは、通信回線495を介して接続されている。通信回線495は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよい。また、情報処理装置100による機能は、クラウドサービスとして実現してもよい。パソコン420Aとペンプロッタ390Aは接続されており、版下作成サーバー410とペンプロッタ390Cは接続されている。
版下作成サーバー410は、情報処理装置100を内蔵(情報処理装置100のプログムラをインストール)している。パソコン400とペンプロッタ390Cは、例えば、USBによって接続されている。なお、複数のペンプロッタ390が接続されていてもよい。
【0057】
パソコン420Aのユーザーは、WEBブラウザ等を用いて版下作成サーバー410に接続し、文字コードの入力等を行い、版下作成サーバー410に処理を依頼する。そして、版下生成モジュール170の生成した版下を版下作成サーバー410から受け取ってペンプロッタ390Aに文書を筆記させる。
パソコン420Bのユーザーは、WEBブラウザ等を用いて版下作成サーバー410に接続し、文字コードの入力等を行い、版下作成サーバー410に処理を依頼する。そして、版下作成サーバー410は、ペンプロッタ390Cに筆記させ、その筆記された文書をパソコン420Bのユーザーに郵送する。また、ハガキを宛先に直接郵送するサービスとすれば、ペンプロッタ390Cで筆記させたハガキを直接宛先に郵送するようにしてもよい。
なお、パソコン400、パソコン420としたが、ノートパソコンはもちろんのことながら、タブレット型端末、スマートフォン等であってもよい。
【0058】
図5は、本実施の形態によって筆記した例を示す説明図である。
図5の筆記実例500は、第1の文字と第2の文字が混用されている場合の本実施の形態による出力例を示したものである。つまり、第1の文字である英数字(「A4」、「Freehand」)と出現頻度の高い文字(ひらがな、漢字「書」)と、第2の文字である出現頻度の低い文字(漢字「絵」)が筆記されている。
なお、ユーザーが入力した文字には、改行が2個所(「PADに」の後、「絵が」の後)あり、3行目の前には空白文字(又はタブ)が挿入されている。
【0059】
図6は、本実施の形態による処理例を示すフローチャートである。
なお、フォント生成(A)モジュール132は、手書きの英数字で機械学習したモデルであり、フォント生成(B)モジュール134は、手書きのひらがなとカタカナで機械学習したモデルであり、フォント生成(C)モジュール136は、手書きの出現頻度の高い漢字で機械学習したモデルであるとする。
【0060】
ステップS602では、受付モジュール110は、ユーザーの操作に応じて、文字コードを受け付ける。
ステップS604では、分類モジュール120は、その文字コードは半角英数字であるか否かを判断する。半角英数字である場合(Y)はステップS606に進み、半角英数字でない場合(N、全角文字である場合)はステップS608に進む。
【0061】
ステップS606では、フォント生成モジュール130は、モデルA(フォント生成(A)モジュール132)を用いて手描き風フォントを生成させる。なお、半角英数字の文字列(単語)毎に生成させる。
ステップS608では、分類モジュール120は、その文字コードは出現頻度の高い文字を記憶しているテーブルに記憶されている文字であるか否かを判断する。そのテーブル内にある文字コードである場合(Y)はステップS610に進み、それ以外の場合(N、出現頻度の低い文字である場合)はステップS616に進む。
このテーブルは、フォント生成(B)モジュール134、フォント生成(C)モジュール136によってフォントを生成することができる文字コードが格納させている。
また、ステップS608の処理内容を、記憶モジュール150内に記憶されている固定フォントの文字コードであるか否かを判断するようにしてもよい。ただっし、その場合、フローチャート内の「Y」と「N」を逆にする。つまり、固定フォントの文字コードである場合(出現頻度の低い文字である場合)はステップS616へ進み、それ以外の場合(出現頻度の高い文字である場合)はステップS610へ進む。
【0062】
ステップS610では、分類モジュール120は、その文字コードは「ひらがな又はカタカナ」であるか否かを判断する。「ひらがな又はカタカナ」である場合(Y)はステップS612に進み、それ以外の場合(N、漢字である場合)はステップS614に進む。
ステップS612では、フォント生成モジュール130は、モデルB(フォント生成(B)モジュール134)を用いて手描き風フォントを生成させる。
ステップS614では、フォント生成モジュール130は、モデルC(フォント生成(C)モジュール136)を用いて手描き風フォントを生成させる。
【0063】
ステップS616では、呼出モジュール140は、記憶モジュール150(固定フォント記憶モジュール350)から文字コードに該当する手書きフォントを呼び出す。
ステップS618では、変換モジュール160は、アフィン変換又はホモグラフィー変換の係数を変更する。
ステップS620では、変換モジュール160は、ステップS616で呼び出したフォントに対して、ステップS618で変更した係数を用いてアフィン変換又はホモグラフィー変換を行って、フォントを生成する。
【0064】
ステップS622では、版下生成モジュール170は、筆記順になる番号を付与して、ファイル名にする。そのファイルにベクトル形式のフォント(ステップS606、ステップS612、ステップS614、ステップS620で生成されたフォント)を格納する。これらの処理(ステップS602からステップS622までの処理)を受け取った文字コード数分だけ繰り返す。
ステップS624では、ステップS622で生成したファイルを用いて版下を生成する。
【0065】
図7は、本実施の形態による処理例を示す説明図である。
受付モジュール110は、ユーザーのパソコン400又はパソコン420に印刷サービス画面700を表示する。印刷サービス画面700には、ページ種別指示欄710、文章入力欄720、生成ファイル形式指示欄730、ファイル生成ボタン740を表示する。
ページ種別指示欄710は、用紙サイズ、用紙の向き(縦向き、横向き)、縦書きか横書きかの指示を行う欄である。
文章入力欄720は、文章を入力する欄である。つまり、受付モジュール110が受け付ける文字コードが記入される。
生成ファイル形式指示欄730は、版下のファイル形式を指示する欄である。ファイル形式として、例えば、SVG、PDF等がある。なお、プレビューを表示させる指示にもなっている。
ファイル生成ボタン740は、版下を生成させる指示のボタンであり、ユーザーの操作によって選択された場合に、文章入力欄720内に記載された文字コードを対象として、
図6の例に示したフローチャートの処理によって版下を生成する。
なお、印刷サービス画面700内に、プレビューを表示する領域を設けるようにしてもよい。
【0066】
分類モジュール120、フォント生成モジュール130、呼出モジュール140、版下生成モジュール170の処理について詳細に説明する。
分類モジュール120は、半角英数字の場合は「単語単位」の文字コード列を、全角文字の場合は文字単位の文字コードとして分類する(
図6の例に示すステップS604参照)。具体例として、半角英数字はASCII、全角はUTF-16である。
分類モジュール120は、入力文字列が半角英数文字の場合は半角英数字用のフォント生成(A)モジュール132に処理を引き渡し、文字画像を生成させる。全角文字(JIS-I、JIS-II水準)を受け取った場合は、フォント生成(B)モジュール134、フォント生成(C)モジュール136又は呼出モジュール140に、一文字ずつのデータを引き渡し、一文字分のSVGファイルを生成させる。
生成した画像ファイルには画像生成の順番毎に100.svg,110.svg等と重複のないネーミングを与えて、メモリ(フォントバッファ365)に蓄積する。
【0067】
図8は、本実施の形態による処理例を示す説明図である。
分類モジュール120は、対象とする文字コードが半角英数字(第1の文字の1種)であれば英数字生成エンジン810(フォント生成(A)モジュール132に該当)に処理をさせる。
また、分類モジュール120は、文字コードが全角であれば、第1の文字(出現頻度の高い文字)であれば手書き風ひらがな・漢字生成エンジン820(フォント生成(B)モジュール134、フォント生成(C)モジュール136に該当)に処理をさせ、第2の文字(出現頻度の低い文字)であれば固定フォント抽出モジュール830(呼出モジュール140、又は、呼出モジュール140と変換モジュール160に該当)に処理させる。
そして、版下生成モジュール170は、英数字生成エンジン810、手書き風ひらがな・漢字生成エンジン820、固定フォント抽出モジュール830の出力に対して、「番号.svg」というファイルを生成する。
【0068】
図9は、本実施の形態による処理例を示す説明図である。
文章入力欄720内に「此節はA Happy birthday to you. というメッセージを・・・」と入力された場合の文字コードの振り分け例を示すものである。以下、行数は処理例900内おけるものである。
1行目は、「此」という文字コードは漢字であり、出現頻度の低い文字であるので、固定フォント抽出モジュール830に処理をさせていることを示している。
2行目は、「節」という文字コードは漢字であり、出現頻度の高い文字であるので、手書き風ひらがな・漢字生成エンジン820に処理をさせていることを示している。
3行目は、「は」という文字コードは漢字であり、出現頻度の高い文字であるので、手書き風ひらがな・漢字生成エンジン820に処理をさせていることを示している。
4行目は、「A」という文字コードは半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
5行目は、「 」(半角の空白文字)という文字コードは半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
6行目は、「happy」という文字コード列は半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
7行目は、「 」(半角の空白文字)という文字コードは半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
8行目は、「birthday」という文字コード列は半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
9行目は、「 」(半角の空白文字)という文字コードは半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
10行目は、「to」という文字コード列は半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
11行目は、「 」(半角の空白文字)という文字コードは半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
12行目は、「you.」という文字コード列は半角英数字であるので、英数字生成エンジン810に処理をさせていることを示している。
13行目は、「 」(全角の空白文字)という文字コードは漢字(又はひらがな)であり、出現頻度の高い文字であるので、手書き風ひらがな・漢字生成エンジン820に処理をさせていることを示している。
以下、同様に続く。もちろんのことながら、全角の文字であり(つまり、半角文字ではない文字であり)、出現頻度の低い文字(第2の文字)である場合は、固定フォント抽出モジュール830に処理をさせることになる。
図9の例では、固定フォント抽出モジュール830に処理をさせているのは1字であり、他は英数字生成エンジン810又は手書き風ひらがな・漢字生成エンジン820に処理をさせているので、全体的な印象として手書きであると認識させることができる。つまり、固定フォント抽出モジュール830によるフォントは、元々が手書きのフォントであり、生成する文書内でも出現頻度が低いのであるから(1つの文書内に同じ文字が複数回出現する確率はさらに低い)、機械的な印象を低下させている。さらに、前述したように、固定フォント抽出モジュール830によるフォントに対して、アフィン変換等を施せば、機械的な印象をいっそう低下させることができる。
【0069】
前述の実施の形態においては、ペンプロッタで出力する例を主に示したが、プリンタで出力するようにしてもよい。例えば、文書の本文部分は活字文字のフォントで印刷し、宛名、サイン等の一部分は、本実施の形態で生成したフォントで印刷するようにしてもよい。プリンタであるので、ペンプロッタよりは手書き感は薄れるが、全て活字のフォントよりは親しみを感じさせることができるようになる。具体的には、予め定められた領域(宛名、サイン等の領域)内の文字コードは、本実施の形態で処理を行い、その他の領域(本文の領域)内の文字コードについては、従来の活字文字のフォントで印刷するようにすればよい。
【0070】
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、
図10に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。つまり、具体例として、処理部(演算部)としてプロセッサであるCPU1001を用い、記憶装置(記憶モジュール150に該当)としてRAM1002、ROM1003、HD1004を用いている。HD1004として、例えばハードディスク、SSD(Solid State Drive)を用いてもよい。受付モジュール110、分類モジュール120、フォント生成モジュール130、呼出モジュール140、変換モジュール160、版下生成モジュール170、筆記装置180等のプログラムを実行するCPU1001と、そのプログラムやデータを記憶するRAM1002と、本コンピュータを起動するためのプログラム等が格納されているROM1003と、前記モジュールの処理結果等を記憶している補助記憶装置(フラッシュ・メモリ等であってもよい)であるHD1004と、キーボード、マウス、タッチスクリーン、マイク、カメラ(動画像撮影カメラ、視線検知カメラ等を含む)等に対する利用者の操作(動作、音声、視線等を含む)に基づいてデータを受け付ける受付装置1006と、液晶ディスプレイ、有機ELディスプレイ、プロジェクター、スピーカー、ペンプロッタ等の出力装置1005と、ネットワークインタフェースカード等の通信ネットワークと接続するための通信回線インタフェース1007、そして、それらをつないでデータのやりとりをするためのバス1008により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
【0071】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、
図10に示すハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、
図10に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えば特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続している形態でもよく、さらに
図10に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器(携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む)、情報家電、ロボット等に組み込まれていてもよい。
【0072】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD-R、DVD-RW、DVD-RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD-ROM)、CDレコーダブル(CD-R)、CDリライタブル(CD-RW)等、ブルーレイ・ディスク(Blu-ray(登録商標) Disc)、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM(登録商標))、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、SD(Secure Digitalの略)メモリーカード等が含まれる。
そして、前記のプログラムの全体又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分若しくは全部であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【0073】
100…情報処理装置
110…受付モジュール
120…分類モジュール
130…フォント生成モジュール
132…フォント生成(A)モジュール
134…フォント生成(B)モジュール
136…フォント生成(C)モジュール
140…呼出モジュール
150…記憶モジュール
160…変換モジュール
170…版下生成モジュール
180…筆記装置
185…出力モジュール
210…入力サブシステム
220…レンダリングサブシステム
230…記録ロボットサブシステム
310…ユーザーインターフェースモジュール
320…組版制御モジュール
330…フォント生成コントローラー
335…AI動的フォント生成エンジン
340…呼出モジュール
350…固定フォント記憶モジュール
360…変換モジュール
365…フォントバッファ
370…レンダリングエンジン
375…版下ファイル
380…ロボット駆動ドライバー
390…ペンプロッタ