【解決手段】フォント生成システムは、複数の単位文字をコンポーネント単位で分解し、分解されたコンポーネントそれぞれから書体の情報を抽出するエンコーダ部110と、抽出された書体の情報を分解されたコンポーネントとマッピングして保存するメモリ部120と、メモリ部に保存された書体の情報を利用して、複数の単位文字の書体と対応する書体を有する複数の文字を生成するデコーダ部130とを含む。
【発明を実施するための形態】
【0017】
以下、添付図を参照として本明細書に開示された実施例を詳細に説明し、図面符号に関係なく、同一又は類似の構成要素には同一の参照番号を付与し、これに対する重複する説明は省略することとする。以下の説明で使用される構成要素に対する接尾辞「モジュール」及び「部」は、明細書の作成における容易さのみを考慮して付与されたり混用されるものであって、それ自体で互いに区別される意味又は役割を有するものではない。また、本明細書に開示された実施例を説明するにあたって、関連した公知技術に対する具体的な説明が本明細書に開示された実施例の要旨をぼやかすことがあると判断される場合、その詳細な説明を省略する。また、添付図は、本明細書に開示された実施例を容易に理解できるようにするためのものであるだけで、添付図により本明細書に開示された技術的思想が制限されず、本発明の思想及び技術範囲に含まれる全ての変更、均等物乃至代替物を含むものと理解されるべきである。
【0018】
第1、第2などのように序数を含む用語は、様々な構成要素を説明するために使用され得るが、前記構成要素は前記用語により限定されない。前記用語は、1つの構成要素を他の構成要素から区別する目的としてのみ使用される。
【0019】
ある構成要素が他の構成要素に「連結されて」いるか、「接続されて」いると言及された際には、その他の構成要素に直接的に連結されている、又は接続されていることもあるが、中間に他の構成要素が存在することもあると理解されるべきである。反面、ある構成要素が他の構成要素に「直接連結されて」いるか、「直接接続されて」いると言及された際には、中間に他の構成要素が存在しないものと理解されるべきである。
【0020】
単数の表現は、文脈上明らかに異なる意味ではない限り、複数の表現を含む。
【0021】
本出願で、「含む」又は「有する」等の用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品、又はこれらを組み合わせたものが存在するということを指定しようとするものであり、一つ又はそれ以上の異なる特徴や数字、段階、動作、構成要素、部品、又はこれらを組み合わせたものの存在又は付加の可能性を予め排除しないものと理解されるべきである。
【0022】
本発明は、特定の書体を有する文字(特定の書体が反映された一部の文字)を利用して、該当文字の書体が反映された様々な文字を生成することができるフォント生成方法及びシステムを提供するものである。
【0023】
このような一部の文字は、サンプル文字と名付けられ、本発明はこのようなサンプル文字として利用し、サンプル文字の書体が反映された様々な文字を生成することができるフォント生成方法及びシステムを提供する。
【0024】
さらに、本発明は、人の手書きに該当するサンプル文字を利用して、該当手書きの書体が反映された様々な文字を生成することができるフォント生成方法及びシステムを提供する。
【0025】
特に、本発明は、サンプル文字に含まれていない文字にも、サンプル文字の書体を反映することができるフォント生成方法及びシステムを提供する。
【0026】
このため、本発明は、最小のサンプル文字を利用して、サンプル文字に含まれていない文字を生成するのに活用できる書体の情報を獲得することが可能なフォント生成方法及びシステムを提供する。
【0027】
さらに、本発明は、サンプル文字から、サンプル文字の書体と類似度の高い様々な文字を生成するようにする学習アルゴリズムが反映されたフォント生成方法及びシステムを提供する。
【0028】
ここで、特定の書体を有する文字は、人により書かれた手書きを含み得る。この場合、本発明は、手書きのイメージから書体の情報を抽出し、手書きに該当するフォントを生成することによって、コンピュータ上でも手書きと同一又は類似の書体を利用することができるようにする方法を提供することができる。
【0029】
本発明で、手書きとは、人により書かれたり、デジタル化されていない文字を意味するものと理解され得る。手書きは、同じ内容の文字であっても、書く人のスタイルに応じて、その視覚的外観が異なる特性を有するので、手書きの書体は文字を書く人の個性を反映することができる。
【0030】
一方、特定の書体を有する文字、例えば、手書きに該当する文字をデータ化するためには、特定言語を構成する全ての文字に該当する手書きの情報を収集し、収集された情報をデジタル化すべきであるので、非常に多くの努力が必要である。よって、本発明では、最小限の入力文字を利用して、入力された文字の特性を最大限にうまく反映した全ての組み合わせの文字を生成することができるフォント生成方法及びシステムについてみて見る。
【0031】
本発明で、「文字(glyph)」とは、言葉を書く一定の体系の符号に関し、言語に応じてその符号が異なり得る。例えば、「韓国語」と「英語」は互いに異なる言語に関するものであって、韓国語と英語は互いに異なる体系の符号を有する文字で構成されることができる。韓国語の場合、「ハングル」の符号を利用して表現され、英語の場合、「スペリング」の符号を利用して表現される。
【0032】
このように、言語に応じて互いに異なる符号体系を有することがあり、一部言語による文字は、複数の構成要素による組み合わせによって1つの文字が形成される組み合わせ文字からなり得る。例えば、韓国語、タイ語、中国語等がその例である。
【0033】
一例として、ハングルの場合、1つの完成した文字、例えば、
【0034】
[外1]
を形成するためには、複数のコンポーネント(例えば、
【0035】
[外2]
)を組み合わせるべきである組み合わせ文字に該当する。
【0036】
この際、複数のコンポーネントは、字母と名付けられ、このような複数のコンポーネントは、互いに異なるコンポーネントタイプに該当し得る。即ち、組み合わせ文字は、互いに異なるコンポーネントタイプによる複数のコンポーネントが組み合わせられ、1つの文字を形成する特性を有し得る。
【0037】
例えば、ハングルの場合、1つの文字を形成するためには、少なくとも2つの互いに異なるコンポーネントタイプに該当するコンポーネントの組み合わせが必要である。ハングルの場合、互いに異なるコンポーネントタイプは、三つの種類のタイプを有し得る。より具体的に、第1タイプは「初声」、第2タイプは「中声」、第3タイプは「終声」とそれぞれ区分できる。一方、組み合わせ文字がどの言語であるかに応じて、そのコンポーネントタイプの種類は変更され得る。
【0038】
一方、このような組み合わせ文字の場合、互いに異なるコンポーネントのタイプに該当するコンポーネントの組み合わせにより新たな文字が形成されるので、そのコンポーネントの数に応じて様々な文字が形成される。例えば、ハングルの場合、初声19個、中声21個、及び終声28(終声を含んでいない場合の数「1」追加される)個が形成し得る文字の組み合わせは11,172個であり、一組のフォントを生成するためには、計11,172個の文字に対する生成が必要である。
【0039】
一方、本発明で「フォント(font)」とは、文字の模様を意味するものであって、共通の特徴を有する書体からなる活字一組を意味し得る。ここで、「活字一組」とは、「特定言語を表現するのに使用される文字一セット」とも理解され得る。
【0040】
前記で見たように、組み合わせ文字の場合、ハングルで、一組のフォントを生成するためには、11,172個の文字が必要であるが、実質的に11,172個の文字を収集し、これをデータ化するのは非常に難しいことが実情である。
【0041】
よって、本発明は、組み合わせ文字に該当するフォントをより効率的に生成することができる方法及びシステムを提案する。例えば、本発明は、
図1の(a)に示すように、
【0042】
[外3]
という9個の文字100を複数の単位文字として入力を受けた場合(例えば、手書きで入力され得る)、入力された複数の単位文字をコンポーネント別に分解し、分解されたコンポーネントを利用して、新たな文字を生成することに関する。より具体的に、本発明は、
図1の(b)に示すように、入力された手書きと同一又は類似の書体を有する
【0043】
[外4]
という文字を生成することができるフォント生成方法及びシステムに関する。
図1の(b)で生成された文字を見ると、
【0044】
[外5]
という文字は、入力された複数の単位文字に存在するが、
【0045】
[外6]
は、入力された複数の単位文字に存在しない文字である。しかし、生成された文字に該当する
【0047】
[外8]
は、入力された複数の単位文字に含まれていたコンポーネントである。
【0048】
このように、本発明は、文字を構成するコンポーネントを利用して、フォントを生成することができる方法及びシステムを提供するものであって、以下では、添付図と共に、本発明にかかるフォントを生成する方法について、添付図と共により具体的に見てみる。
図2a、
図2b、及び
図2cは、本発明にかかるフォント生成システムを説明するための概念図である。
【0049】
以下の説明では、「ハングル」を例に挙げて説明するが、本発明は、ハングルだけでなく、複数のコンポーネントタイプによって組み合わせられる組み合わせ文字(例えば、タイ語、中国語等)に共通して活用できることは勿論である。
【0050】
まず、
図2aを見ると、本発明にかかるフォント生成システムは、エンコーダ部110、メモリ部120、及びデコーダ部130のうち少なくとも1つを含み得る。
【0051】
エンコーダ部110は、エンコーダ部110に入力される複数の単位文字100をエンコーディングする役割を行い、より具体的には、複数の単位文字をコンポーネント単位で分解し、分解されたコンポーネントそれぞれから書体の情報を抽出する役割を行うことができる。本発明では、説明の便宜のために、エンコーダ部110に入力される文字を、状況に応じて、単位文字、入力された文字、又は入力文字と表現することとする。
【0052】
従って、エンコーダ部110に「複数の文字が入力された」というのは、「複数の単位文字が入力された」と理解され得る。
【0053】
さらに、複数の文字又は複数の単位文字は、「サンプル文字」又は「生成の対象になる文字」とも名付けられる。
【0054】
一方、エンコーダ部110に入力される複数の単位文字は、人により書かれた手書きからなり得、これは、アナログデータからなり得る。エンコーダ部110には、手書きに該当するイメージ形式の複数の単位文字が入力され得、エンコーダ部110は、このような複数の単位文字に対応するイメージから、文字を認識し、データ化又はデジタル化する役割を行うことができる。
【0055】
一方、エンコーダ部110から抽出された、複数の単位文字を形成するコンポーネントの書体の情報は、メモリ部120に保存され得る。
【0056】
メモリ部120は、コンポーネント単位で書体の情報を保存するようになっており、それぞれのコンポーネントは互いに異なるアクセスアドレス(access address)を有し得る。
【0057】
さらに、メモリ部120には、コンポーネントが有する固有の模様の情報が保存され得る。このような書体の情報及び固有の模様の情報は、1つの統合されたメモリ構造を有するメモリ部120上に、コンポーネント単位で区分されて保存され得る。
【0058】
さらに、このような書体の情報及び固有の模様の情報は、デュアルメモリ構造を有するメモリ部120にそれぞれ区分されて保存され得る。
【0059】
この際、メモリ部120は、エンコーダ部110から抽出された書体の情報を保存する第1メモリ部、及びコンポーネントが有する固有の模様の情報を保存する第2メモリ部を含み得る。
【0060】
第1メモリ部は、「ダイナミックメモリ(dynamic memory)」又は「エピソードメモリ(episodic memory)」と名付けられる。さらに、第2メモリ部は、「パーシステントメモリ(persistent memory)」とも名付けられる。
【0061】
一方、第1及び第2メモリ部にそれぞれ保存された書体の情報及び固有の模様の情報は、コンポーネント単位で互いに異なるアクセスアドレスを有し得る。第1及び第2メモリ部のそれぞれのアクセスアドレスは、コンポーネントを基準に互いにマッピング(mapping)され得る。第1及び第2メモリ部でのコンポーネント単位のマッピングは、ユニコード(UNICODE)を利用してなり得る。
【0062】
一方、本発明で「書体の情報」は、文字を書く人によって変更可能な情報であって、文字のスタイル、雰囲気のように外向的な要素に対することを意味し得る。
【0063】
即ち、同じ内容を有する文字であっても、互いに異なる書体の情報に該当する文字は、その視覚的外観が異なり得る。しかし、互いに異なる書体を有するが、その文字のコンポーネントの構成が同一である場合、該当文字を見る人は、全て同じ意味で理解したり、発音し得る。即ち、本発明で「書体」は、文字を形成するためのコンポーネント固有の模様は損なわないとともに、文字を構成するコンポーネントの細部的な模様(画の方向、画の長さ、文字の厚さ、文字の大きさ等)に対することを意味し得る。
【0064】
反面、「固有の模様の情報」は、書体の情報と関係なく、該当コンポーネント又は文字が持つべきである固有の模様に対するものであって、特定の言語体系により約束した模様に対する情報又は符号を意味し得る。
【0065】
例えば、
図2bの(a)に示すように、
【0066】
[外9]
というコンポーネント710の場合、固有の模様の情報は、i)第1画711の右側終端で第2画712と所定の角度をなす、ii)第2画712の上端は、第1画711の右側終端と互いに接する等のように、該当言語体系で、該当コンポーネントの模様に設定した規則による情報を含み得る。
【0067】
このような固有の模様の情報は、書体の情報が変更されても、変更されないことがある。即ち、固有の模様の情報は、書体の情報に関係なく、同じ言語に該当する同一のコンポーネントであれば、共通に適用され得る情報を意味し得る。
【0068】
反面、書体の情報は(
図2bの(a)の図面符号720を参照)、固有の模様の情報に基づくとともに、コンポーネントに対するディテールな模様の情報を意味し得る。このような書体の情報は、コンポーネントを構成する画の厚さ、複数の画間の配置位置、配置間隔、画の斜め程度、画の長さ、画の曲がり程度、コンポーネントの大きさ程度のように、コンポーネント又は文字の個性を示し得る情報を含み得る。書体の情報に含まれる情報は、前記で挙げられた情報以外にも非常に多様なことがある。
【0069】
例えば、
図2bの(a)の図面符号720を参照すると、同一のコンポーネント
【0070】
[外10]
であっても、異なる書体の情報に応じて、互いに視覚的な外観および雰囲気を有することが分かる。このような書体の情報は、手書き毎の固有のスタイル、個性を反映する情報であって、手書きからどれだけ正確に書体の情報を抽出するかによって、実際の人の手書きと類似度の高いフォントを生成することができる。
【0071】
他の例として、
図2bの(b)を見ると、
【0072】
[外11]
のコンポーネント730もやはり、固有の模様の情報(例えば、円の記号733の上端に、2つの画731、732が配置される)を有し、
図2bの(b)の図面符号740を参照すると、互いに異なる視覚的な外観を有するように示し得る。これは、同一である固有の模様の情報を有しても、互いに異なる書体の情報を有するためである。
【0073】
従って、このような書体の情報によると、
図2cの(a)、(b)、(c)、及び(d)に示すように、同じ意味を有する文字であっても(例えば、
【0074】
[外12]
)、互いに異なる模様、即ち、互いに異なる書体又はスタイルを有する文字を形成することができる。
【0075】
次に、デコーダ部130は、メモリ部120に保存された書体の情報及び固有の模様の情報のうち少なくとも一つを利用して、エンコーダ部110に入力された複数の単位文字の書体と対応する書体を有する複数の文字を生成するようになり得る。ここで、対応する書体とは、入力された文字の書体と類似又は同一の書体を意味するものであってもよい。
【0076】
デコーダ部130は、エンコーダ部110に入力された複数の単位文字から分解されたコンポーネントの書体の情報を利用し、前記複数の単位文字と同一又は類似の書体を有する文字を生成できる。この際、本発明にかかるデコーダ部130は、前記複数の単位文字と少なくとも1つの他の文字を生成できる。即ち、デコーダ部130は、入力された文字でなくても、入力された文字から抽出した書体の情報を利用し、入力された文字と類似又は同一の書体を有する文字を生成できる。
【0077】
例えば、
図1で見たように、入力文字として
【0078】
[外13]
が入力された場合(
図1の(a)参照)、入力された文字に含まれているコンポーネントを利用し、入力された文字
【0079】
[外14]
と、入力された文字に含まれていない
【0080】
[外15]
(
図1の(b)参照)を生成できる。
【0081】
従って、本発明にかかるフォント生成システムによると、特定言語を構成する全ての文字に対するデータがなくても、特定言語に該当する全ての文字を生成することが可能である。以下では、前記で見てみた本発明にかかるフォント生成システムを参照し、フォントを生成する方法について添付図と共により具体的に見てみる。
図3は、本発明にかかるフォント生成方法を説明するためのフローチャートであり、
図4a及び
図4bは、本発明にかかるフォント生成方法及びシステムで、文字から分解されたコンポーネントを説明するための概念図である。さらに、
図5は、本発明にかかるフォント生成方法及びシステムで、文字をエンコーディングする方法を説明するための概念図であり、
図6a、
図6b、
図6c、
図7a、
図7b、及び
図7cは、本発明にかかるフォント生成方法及びシステムで、メモリ構造を説明するための概念図である。
【0082】
本発明にかかるフォント生成方法によると、複数の単位文字の入力を受ける過程が進められる(S310)。ここで、複数の単位文字は、イメージ形式で存在し得る。本発明で、複数の単位文字が有する実質的な意味は重要ではなくてもよい。
【0083】
一方、本発明にかかる複数の単位文字は、前記で見たように、複数のコンポーネントタイプを有する特定言語の文字体系(例えば、韓国語、タイ語、中国語等)に沿う文字からなり得る。
【0084】
このような複数の単位文字は、複数のコンポーネントタイプのそれぞれに該当するコンポーネントを少なくとも1つ以上含むようになり得る。
【0085】
例えば、
図4aの(a)に示すように、複数の文字の入力を受けた場合、
図4aの(b)に示すように、複数の文字を構成するコンポーネントは、複数のコンポーネントタイプ(例えば、第1乃至第3タイプ)に該当するコンポーネントを少なくとも1つ以上は含むようになり得る。
【0086】
一方、複数の単位文字それぞれは、互いに異なるコンポーネントタイプを有する少なくとも2つのコンポーネントの組み合わせにより形成され得る。この際、前記少なくとも2つのコンポーネント間の相対位置は、前記少なくとも2つのコンポーネントのコンポーネントタイプによって決定され得る。
【0087】
複数のコンポーネントタイプは、組み合わせ文字でコンポーネント別に共通する性質によって分類したものであって、ハングルの場合、音を構成する原理によって区分される複数のコンポーネントタイプを有し得る。例えば、ハングルの場合、第1乃至3タイプ(又はコンポーネントタイプ)で構成されたコンポーネントタイプを有し得る。ここで、第1タイプは、「初声」を構成するコンポーネントを分類するタイプであり、第2タイプは、「中声」を構成するコンポーネントを分類するタイプであり、第3タイプは「終声」を構成するコンポーネントを分類するタイプであり得る。
【0088】
ここで、「初声」、即ち、第1タイプに該当するコンポーネントは単位音を構成する音節で最初の音を構成するものであって、子音のコンポーネントからなり得る。
【0089】
次に、「中声」、即ち、第2タイプに該当するコンポーネントは、単位音を構成する音節で中間音を構成するものであって、母音のコンポーネントからなり得る。
【0090】
最後に、「終声」、即ち、第3タイプに該当するコンポーネントは、単位音を構成する音節で最後の音を構成するものであって、子音のコンポーネントからなり得る。
【0091】
例えば、ハングルの場合、
図4bに示すように、第1タイプのコンポーネントは19個の子音を含み、第2タイプのコンポーネントは21個の母音を含み、第3タイプのコンポーネントは28(終声を含んでいない場合の数「1」追加される(これは図示せず))個の子音を含み得る。
【0092】
このように、本発明で、エンコーダ部110に入力される複数の単位文字は、 複数のコンポーネントタイプに含まれたそれぞれのコンポーネントが少なくとも1回以上含まれた文字からなり得る。即ち、複数の単位文字には、第1タイプによる子音19個が少なくとも1つ以上含まれ得る。
【0093】
また、第2タイプによる母音21個が少なくとも1つ以上含まれ得る。
【0094】
さらに、第3タイプによる子音28個(終声を含んでいない場合の数「1」追加される)が少なくとも1つ以上含まれ得る。これは、本発明にかかるフォント生成システムで、全てのコンポーネントに対する情報を確保するためである。
【0095】
一方、このように、複数のコンポーネントタイプによる全てのコンポーネントが少なくとも1つ以上含まれるために最小に必要な文字の数は、複数のコンポーネントタイプのうち最も多くのコンポーネントを含んでいるコンポーネントタイプによって決定され得る。本発明では、フォントの生成のための入力データとして、コンポーネントそのものではなく、文字単位のデータを利用することができる。従って、本発明で、全てのコンポーネントに対する情報を確保するためには、最も多くのコンポーネントを含んでいるコンポーネントタイプに含まれたコンポーネントの数だけの文字を入力データとして入力を受けることができる。
【0096】
結果として、ハングルの場合、第3タイプ(終声)の場合、第1及び第2タイプ(初声及び中声)より多くの28個のコンポーネントを有するので、28個の文字を入力データとして入力を受けることができる。従って、入力される複数の単位文字は、少なくとも28個の文字である。もちろん、28個以上の文字が入力されることもまた可能である。一方、28個の文字で、少なくとも1つの文字は、第3タイプ(終声)を含んでいない文字を含み得る。
【0097】
一方、このように、複数の単位文字が入力されると、複数の単位文字をコンポーネント単位で分解する過程、及び分解されたコンポーネントのそれぞれから書体の情報を抽出する過程が進められる(S320、S330)。
【0098】
エンコーダ部110は、
図5に示すように、エンコーダ部110に入力される複数の単位文字100をエンコーディングする役割を行うことができる。より具体的に、エンコーダ部110は、複数の単位文字をコンポーネント単位で分解(
図5の図面符号500による表参照)し、分解されたコンポーネントそれぞれから書体の情報を抽出することができる。
【0099】
エンコーダ部110は、複数の単位文字をコンポーネント単位で分解し、分解されたコンポーネントから書体の情報を抽出するが、この際、コンポーネントタイプ別に区分し、書体の情報を抽出することができる。
【0100】
このため、エンコーダ部110は、複数のヘッド111、112、113の構造を有するようになり得る。複数のヘッド111、112、113は、複数のコンポーネントタイプのいずれかとマッチングされるようになり得る。複数のヘッド111、112、113それぞれでは、それぞれのヘッドにマッチングされたコンポーネントタイプの書体の情報が抽出されるようになる。
【0101】
この際、複数のヘッド111、112、113それぞれにマッチングされたコンポーネントタイプは互いに異なって設定され、それぞれのヘッドでは互いに異なるコンポーネントタイプの書体の情報が出力できる。
【0102】
即ち、複数のヘッド111、112、113それぞれは、前記複数のコンポーネントタイプのいずれかのコンポーネントタイプとマッチングされるようになり得る。例えば、第1ヘッド111には、第1コンポーネントタイプ(又は第1タイプ)がマッチングされ、第2ヘッド112には第2コンポーネントタイプ(又は第2タイプ)がマッチングされ、かつ第3ヘッド113には、第3コンポーネントタイプ(又は第3タイプ)がマッチングされ得る。
【0103】
従って、各ヘッドでは、複数のコンポーネントタイプのうち、既にマッチングされたコンポーネントタイプの書体の情報が抽出及び出力され得る。
【0104】
従って、
図5に示すように、エンコーダ部110は、第1ヘッド111を介して、前記分解されたコンポーネントのうち第1コンポーネントタイプ(例えば、「初声」)に該当するコンポーネント(図面符号111a参照:
【0105】
[外16]
)の書体の情報を抽出し、第2ヘッド112を介して、前記複数のコンポーネントタイプのうち、前記第1コンポーネントタイプ(例えば、「初声」)と異なる第2コンポーネントタイプ(例えば、「中声」)に該当するコンポーネント(図面符号112a参照:
【0106】
[外17]
)の書体の情報を抽出するようになり得る。この際、各ヘッドで出力される書体の情報はベクトル構造をなし得る。
【0107】
示していないものの、本発明にかかるエンコーダ部110は、複数のコンポーネントタイプに該当する全てのコンポーネントに対してエンコーディングを行うことによって、全てのコンポーネントに対する書体の情報を抽出することができる。
【0108】
一方、前記の例では、エンコーダ部110がコンポーネントタイプにそれぞれマッチングされた複数のヘッド構造を有することについて見てみたが、エンコーダ部110は、コンポーネントタイプにそれぞれマッチングされたヘッドだけでなく、さらなるヘッドをさらに含み得る。この場合、さらなるヘッドでは、エンコーダ部に入力される複数の単位文字が共通に有する書体の情報が抽出され得る。このような書体の情報は、文字の大きさ、文字の画の厚さ、文字内で各コンポーネント間の配置割合等に対する情報が含まれ得る。このような書体の情報は、デコーダ部130で文字を生成するのに活用されることができる。
【0109】
一方、エンコーダ部110を介したエンコーディングを介して書体の情報が抽出されると、抽出された書体の情報を、それぞれのコンポーネントとマッピングして保存する過程が進められる(S340)。
【0110】
メモリ部120は、コンポーネント単位で書体の情報を保存するようになり、それぞれのコンポーネントは互いに異なるアクセスアドレス(access address)を有し得る。このようなアクセスアドレスは、デコーダ130でそれぞれのコンポーネントに対する書体の情報を呼び出すのに利用されることができる。
【0111】
メモリ部120は、
図6a乃至
図6cに示すように、コンポーネント単位で書体の情報が保存されるように、コンポーネント単位でそれぞれ空間が割り当てられて存在し得る。従って、コンポーネントそれぞれに対する書体の情報は、それぞれのコンポーネントに割り当てられた空間にマッピングされて保存され得る(
図6a乃至
図6cの表で、「メモリ部」列の表示は、互いに異なる書体の情報であることを表現するための概念であり、実質的なデータの構造はこれと異なり得る)。
【0112】
メモリ部120は、コンポーネントの種類及び数を基準に、保存空間が予め区分されて存在し得る。従って、エンコーダ部110から抽出された書体の情報は、メモリ部120上にコンポーネントを基準に割り当てられた複数の空間のうち、前記抽出された書体の情報に対応するコンポーネントに割り当てられた空間に保存され得る。このように、メモリ部120は、コンポーネント単位で書体の情報を保存するようになっており、これを介してコンポーネントと書体の情報が互いにマッピングされて存在し得る。
【0113】
一方、エンコーダ部から抽出された書体の情報が、メモリ部120の既に割り当てられた空間に保存されるためには、抽出された書体の情報がどのコンポーネントに対する書体の情報であるかラベリングをする過程が必要であるかもしれない。このようなラベルの過程を、本発明では「書体の情報にアクセスアドレス」を割り当てる(又は付与、生成)と表現し得る。
【0114】
それぞれのコンポーネントから抽出された書体の情報に対する互いに異なるアクセスアドレスは、エンコーダ部110で、複数の単位文字を分解する過程で付与され得る。
【0115】
示していないものの、本発明にかかるフォント生成システムは、それぞれのコンポーネントから抽出される書体の情報に対して、コンポーネント単位でアクセスアドレスを付与(又は割り当て、生成)するメモリアドレッサ(memory addressor)をさらに含み得る。
【0116】
従って、抽出された書体の情報は、前記アクセスアドレスを根拠に、メモリ部120上に、抽出された書体の情報に対応するコンポーネントのために割り当てられた空間に保存され得る。
【0117】
一方、メモリアドレッサは、エンコーダ部110に含まれる概念とも理解され得る。この場合、エンコーダ部110は、メモリアドレッサの役割を行うようになり得る。
【0118】
一方、それぞれのコンポーネントから抽出された書体の情報に対するアクセスアドレスは、ユニコード(Unicode)を使用して生成され得る。
【0119】
より具体的に、抽出された書体の情報に対するアクセスアドレスを割り当てるために、メモリアドレッサは、複数の文字それぞれに該当するユニコードを抽出することができる。ユニコードは、各国別の言語をコンピュータが認識することができるように表現したコード体系であって、エンコーダ部110に入力される複数の文字それぞれは、いずれもユニコードで表現され得る。
【0120】
メモリアドレッサは、複数の文字それぞれに対するユニコードを抽出することによって、該当文字にどのコンポーネントが含まれているかを把握することができる。
【0121】
この際、複数の文字それぞれに対するユニコードは、エンコーダ部110から抽出されることも可能である。即ち、エンコーダ部110で入力された複数の単位文字それぞれに対するユニコードを抽出し、メモリアドレッサは、抽出されたユニコードを利用してコンポーネントそれぞれに対するアクセスアドレスを生成することができる。
【0122】
一方、ユニコードを利用する場合、メモリアドレッサは、エンコーダ部110に入力された複数の単位文字がそれぞれどのコンポーネントで構成されているか分かるようになる。従って、本発明にかかるフォント生成システムは、コンポーネント別にメモリ空間が割り当てられたメモリ部120にそれぞれのコンポーネントに対応する書体の情報を正確に保存できるようになる。
【0123】
一方、メモリアドレッサは、コンポーネント単位でメモリアクセスアドレスを割り当てることができる。このため、メモリアドレッサは、文字に対するユニコードと共に、文字を構成するコンポーネントのコンポーネントタイプを利用して、コンポーネント別にメモリアクセスアドレスを割り当てることができる。
【0124】
この際、メモリアドレッサは、エンコーダ部110の複数のヘッド111、112、113を基準に、コンポーネントそれぞれに対するメモリアクセスアドレスを割り当てることができる。
【0125】
即ち、複数のヘッド111、112、113は、それぞれ互いに異なるコンポーネントタイプにマッチングされている。従って、メモリアドレッサは、複数のヘッド111、112、113のうちどのヘッドから書体の情報が出力されているかによって、該当書体の情報が特定文字のどのコンポーネントタイプの情報であるかを認知することができるようになる。例えば、特定文字が
【0126】
[外18]
である場合、第1ヘッドでは、第1コンポーネントタイプ(例えば、初声)に該当する
【0127】
[外19]
の書体の情報が抽出され得、第2ヘッドでは、第2コンポーネントタイプ(例えば、中声)に該当する
【0128】
[外20]
の書体の情報が抽出され得る。
【0129】
従って、メモリアドレッサは、文字に対するユニコードと複数のヘッドのうち、どのヘッドから書体の情報が出力されるかに対する情報を組み合わせることができる。その結果、メモリアドレッサは、エンコーダ110から抽出される書体の情報が、メモリ部120上でどこに保存されるべきであるかを指すメモリアクセスアドレスを生成することができる。
【0130】
このように、それぞれのコンポーネントに対する書体の情報が抽出され、抽出された書体の情報に対するメモリアクセスアドレスが割り当てられると(即ち、ラベリングが行われると)、抽出された書体の情報は、メモリアクセスアドレスに基づき、
図6a、
図6b及び
図6cに示すように、コンポーネント単位でメモリ部120上に書体の情報を保存するように構成されることができる。この際、
図6a、
図6b及び
図6cに示す「address」列に表示されたデータは、概念的に示したものであって、実際のアクセスアドレスは異なり得る。
【0131】
一方、本発明にかかるメモリ部120は、
図7a、
図7b及び
図7cに示すように、第1及び第2メモリ部を含むデュアルメモリ部の構造を有し得る。示すように、メモリ部120は、エンコーダ部110から抽出された書体の情報を保存する第1メモリ部、及びコンポーネントが有する固有の模様の情報を保存する第2メモリ部を含み得る。第1及び第2メモリ部に保存された書体の情報及び固有の模様の情報は、前記で見たように、コンポーネント単位で互いに異なるアクセスアドレスを有し得る。第1及び第2メモリ部のそれぞれのアクセスアドレスはコンポーネントを基準に互いにマッピングされ得る。
【0132】
第1及び第2メモリ部は、それぞれのコンポーネントに該当するユニコードを基準に互いにマッピングされ得る。即ち、第1及び第2メモリ部で、同一のコンポーネントには、同一のユニコードによるアクセスアドレスが割り当てられ得る。
【0133】
言い換えると、エンコーダから分解されたコンポーネントから抽出された書体の情報それぞれは、前記複数の単位文字に該当するユニコードを根拠に設定された互いに異なるラベル(互いに異なるアクセスアドレス)を有し得る。
【0134】
さらに、前記第1メモリ部に保存された書体の情報、及び前記第2メモリ部に保存された模様の情報(又は固有の模様の情報)は、前記ラベルに基づき、互いに対応するコンポーネント同士に互いにマッピングされ得る。
【0135】
一方、前記第2メモリ部に保存された前記固有の模様の情報は、コンポーネント間の配置情報をさらに含み得る。ここで、コンポーネント間の配置情報は、特定文字でコンポーネント間の配置関係、又は配置規則に対するものであり得る。
【0136】
一方、このような固有の配置関係内で、互いに異なる書体毎のディテールな配置関係の情報は、第1メモリ部に保存された書体の情報に含まれ得る。
【0137】
一方、第1メモリ部に保存される書体の情報は、エンコーディング部110を介したエンコーディング過程で抽出及び保存され得る。これと異なり、第2メモリ部に保存された固有の模様の情報は、エンコーディング過程と別個に保存又は学習され得る。さらに、第2メモリ部に保存された固有の模様の情報は、互いに異なる書体に対して共通的に活用され得る。
【0138】
一方、第2メモリ部は、前記で見てみたエンコーディングの過程と別個の過程として情報が抽出又は学習され得る。即ち、固有の模様の情報は、エンコーディングの際に入力される複数の文字以外に、他の文字から情報が抽出又は学習され得る。
【0139】
第2メモリ部に保存される固有の模様の情報を獲得するために、別個のエンコーダ部が存在し得る。このような別個のエンコーダ部は、前記で見てみた本発明にかかるエンコーダ部110の動作に影響を与えない。
【0140】
前記の別個のエンコーダ部には、前記で見てみたコンポーネントタイプ別に区分される全てのコンポーネント間の組み合わせにより生成される文字が入力データとして入力され得る。この場合、別個のエンコーダ部は、コンポーネント固有の模様、コンポーネントのなす文字でコンポーネント間の配置関係等を学習するようになり得る。
【0141】
但し、本発明では、このような固有の模様の情報を獲得する方法と独立して、第2メモリ部に既に獲得された固有の模様の情報が存在することを前提に説明する。
【0142】
このように、前記で見たように、書体の情報の抽出が完了すると、保存された書体を利用して、入力された複数の単位文字の書体と対応する書体を有する複数の文字を生成する過程が進められる(S350)。
【0143】
ここで、生成される文字は、ターゲット文字とも名付けられる。文字の生成は、デコーダ部130でなされることができる。デコーダ部130は、メモリに保存された書体の情報及び固有の模様の情報を利用して、文字を生成するようになることができる。
【0144】
一方、本発明では、デコーダ部130で生成される文字を、「ターゲット文字」と名付けることができる。
【0145】
より具体的に、デコーダ部130は、前記で見てみた第1メモリ部に保存された書体の情報、及び第2メモリ部に保存された模様の情報を利用して、複数の文字、即ち、ターゲット文字を生成し得る。
【0146】
この際、本発明にかかるデコーダ部130は、前記複数の単位文字と少なくとも1つの他の文字を生成し得る。即ち、デコーダ部130は、デコーダ部を介して入力された文字ではなくても、入力された文字から抽出した書体の情報を利用して、入力された文字と類似又は同一の書体を有する文字を生成し得る。
【0147】
例えば、前記
図1で見たように、入力文字として
【0148】
[外21]
の入力を受けた場合(
図1の(a)参照)、デコーダ部130は入力を受けた文字に含まれているコンポーネントを利用し、入力された文字
【0149】
[外22]
と、入力された文字に含まれていない
【0150】
[外23]
(
図1の(b)参照)を生成することができる。
【0151】
デコーダ部130は、メモリ部120でそれぞれのコンポーネントに対してアクセスするためのアクセスアドレスを有している。デコーダ部130は、このようなアクセスアドレスを利用し、生成しようとするターゲット文字の書体の情報及び固有の模様の情報を呼び出すことによって、ターゲット文字を生成することができる。
【0152】
前記で見てみた方法を通じて、本発明ではコンポーネント単位で保存された書体の情報及び固有の模様の情報を利用し、デコーダ部130で特定言語に対する一組のフォントを生成することができる。この際、デコーダ部130には、一組のフォントを生成するためのターゲット文字に対する情報を予め保存していることがある。
【0153】
一方、本発明にかかるフォント生成方法及びシステムは、前記で見た方法で書体の情報を抽出し、これを保存することによって、特定言語に対する一組のフォントを生成することができる。さらに、本発明では、見てみたフォント生成システムをより高度化するために、エンコーダ部110、メモリ部120、及びデコーダ部130の少なくとも1つをアップデートする過程を行うことができる。このようなアップデートを介して、本発明にかかるフォント生成システムは、フォントの生成の対象になる文字の書体とさらに類似する書体を有するフォントを生成することができる。
【0154】
このようなアップデートの過程は、デコーダ部130を介して生成された文字と、基準文字(例えば、生成された文字に対する手書き)を利用した学習を介してなることができる。
【0155】
本発明では、このような学習を介して、デコーダ部130を介して生成された文字と基準文字との誤差を減らすことによって、フォントの生成の対象になる文字とさらに類似するフォントを生成することができる。
【0156】
ここで、基準文字は、「グラウンドトゥルース(ground truth)」又は「グラウンドトゥルース(ground truth)データ」又は「正答データ」とも名付けられる。
【0157】
以下では、学習を行う方法について添付図とともにより具体的に見てみる。
図8は、本発明にかかるフォント生成方法及びシステムを介して生成された文字を利用し、学習を行う方法を説明するための概念図である。
【0158】
本発明にかかるフォント生成システムでの学習は、特定言語を構成する全てのコンポーネントに対するエンコーディングが完了した後、又は完了する前であっても可能である。即ち、本発明にかかる学習過程は、メモリ部120上に一部のコンポーネントに対してのみ書体の情報が保存された状態でも可能である。
【0159】
本発明で学習の目標は、i)デコーダ部130を介して生成される文字が有するコンポーネントの書体又は文字が、実際の手書きが有するコンポーネントの書体又は文字とさらに類似するようにし、ii)エンコーダ部110を介して抽出された書体の情報が、抽出された書体の情報と対応するコンポーネントに割り当てられたメモリに正確にマッピングされるようにし、iii)エンコーダ部110に入力されない文字であっても、入力された文字の書体とさらに類似の書体を有するようにするためである。
【0160】
一方、学習の過程は、学習部800(又は制御部)により制御され得る。
【0161】
学習の過程についてより具体的に見てみると、学習部800はデコーダ部130を介して生成された複数の文字のうち、エンコーダ部110を介して入力されない文字、即ち、実際の手書きデータが存在しない文字を学習の対象に設定できる。本明細書で、学習の対象に設定された文字は、「学習対象の文字」と名付けられる。この際、学習部800は、エンコーダ部110を介して入力された文字に含まれているコンポーネントを利用して生成することができる文字は「学習対象の文字」と決定し、これに対する文字をデコーダ部130を介して生成することができる。
【0162】
デコーダ部130は、学習部800の制御下に、エンコーダ部110に入力された文字
【0163】
[外24]
を構成するコンポーネントのうち一部のコンポーネントの書体の情報を利用し、学習対象の文字を生成できる。この際、学習対象の文字には、前記入力された文字と同じ文字が含まれないことがある。即ち、学習部800は、本発明にかかるフォント生成システムにより新たに生成された文字を学習対象として選択できる。
【0164】
例えば、学習のために、デコーダ部130は、エンコーダから入力された
【0165】
[外25]
から分解されたコンポーネントのうち、複数のコンポーネント(例えば、
【0172】
[外32]
807)に該当する書体の情報をメモリ部120からロードし、学習対象の文字
【0174】
学習部800は、デコーダ部130を介して学習された学習対象の文字と、実際の手書きに該当する基準文字810を利用し、学習対象の文字に対する学習を行うことができる。また、学習部800は学習結果を利用し、エンコーダ部110、メモリ部120、及びデコーダ部130のうち少なくとも1つをアップデートすることができる。
【0175】
この際、学習対象の文字と基準文字は、それぞれイメージ形式を有し得る。
【0176】
学習部800は、学習対象の文字と基準文字間のイメージ比較できる。そして、学習部800は、前記比較を通じて、前記学習対象の文字と前記基準文字との差異値を抽出する学習を行うことができる。学習部800は、デコーダ部130で新たな文字が生成される場合、前記差異値が最小化されるように、前記エンコーダ部110、前記メモリ部120及び前記デコーダ部130のうち少なくとも1つをアップデートできる。
【0177】
この際、「エンコーダ部110をアップデートする」という意味は、エンコーダ部110で書体の情報をよりうまく抽出するために、エンコーダ部110のパラメータを補正又は調整することを意味し得る。即ち、学習部800は、前記差異値を最小化するためのエンコーダ部110のパラメータを補正又は調整できる。前記差異値が最小化されるエンコーダ部110のパラメータの補正(又は調整)は、エンコーダ部110でコンポーネントの書体の情報を抽出する際、どんな情報をどのように抽出すべきであるかに対するパラメータに対する補正(又は調整)を意味し得る。
【0178】
さらに、「メモリ部120をアップデートする」ということは、メモリ部120に保存された書体の情報及び固有の模様の情報のうち少なくとも1つに関する情報をアップデートすることを意味し得る。この際、メモリ部120はコンポーネント単位でアップデートされ得る。
【0179】
さらに、「デコーダ部130をアップデートする」という意味は、デコーダ部130で文字を生成する際、実際の手書きデータとより類似する文字を生成するために、デコーダ部130のパラメータを補正又は調整することを意味し得る。即ち、学習部800は、前記差異値を最小化するためのデコーダ部130のパラメータを補正又は調整できる。前記差異値が最小化されるデコーダ部130のパラメータの補正(又は調整)は、デコーダ部130で文字を生成することと関連し得る。即ち、前記差異値が最小化されるデコーダ部130のパラメータの補正(又は調整)は、メモリ部120に保存された書体の情報及び固有のフォント情報を利用し、コンポーネントをどのように組み合わせて文字を実際の手書きデータとさらに類似の文字を生成するかと関連したパラメータに対する補正(又は調整)を意味し得る。
【0180】
一方、学習部800は、様々な学習アルゴリズムで学習を行うことができ、学習のために、鑑別部(discriminator)及びコンポーネント分類器(component classifier)を含み得る。
【0181】
鑑別部(discriminator)で、鑑別のためのデータを生成する生成器(generator)は、デコーダ部130に代替され得る。即ち、鑑別部(discriminator)は、デコーダ部130で生成された学習対象の文字を、基準文字と比較することによって、学習を行うことができる。
【0182】
このような鑑別部は、複数の鑑別過程に区分されることができ、複数の鑑別過程は、学習対象の文字と基準文字間の誤差又はロス(loss)を減らすための過程であると理解され得る。
【0183】
例えば、複数の鑑別過程のために、様々なロス関数又はロスアルゴリズムによるディープラーニング学習技法が活用でき、例えば、このような関数は、GAN loss、Feature matching loss、L1 loss、AC loss等が存在し得る。
【0184】
さらに、学習部800は、デコーダ部130から生成された学習対象の文字をエンコーダ部110を介して、再度コンポーネント単位で分解できる。また、学習部800は、コンポーネント分類器(component classifier)を介して、分解されたコンポーネントが、学習対象の文字を構成するコンポーネントで構成されているか判断できる。さらに、学習部800は、判断結果を利用して、エンコーダ部110、メモリ部120、及びデコーダ部130のうち少なくとも1つのパラメータを調整又は補正できる。
【0185】
このように、本発明にかかるフォント生成システムは、前記で見てみた学習過程を介して、より実際のデータと類似する書体を有するフォントを生成することが可能である。
【0186】
一方、本発明にかかるフォント生成システムで、学習が完了すると、フォントを生成するためには、メモリ部120に含まれた情報及びデコーダ130のみ活用されることが可能である。
【0187】
以上で見てみたように、本発明にかかるフォント生成方法及びシステムは、特定言語の文字体系をなす全てのコンポーネントが少なくとも1回以上含まれた複数の文字の入力を受けることによって、特定言語の文字体系をなす全てのコンポーネントに対する書体の情報を確保することができる。
【0188】
より具体的に、本発明にかかるフォント生成方法及びシステムは、入力された文字をコンポーネント単位で分解し、分解されたコンポーネントそれぞれから、書体の情報を抽出することによって、特定の言語の文字体系をなす全てのコンポーネントに対する書体の情報をコンポーネント単位で確保できる。
【0189】
従って、本発明にかかるフォント生成方法及びシステムは、事前に入力を受けていない文字を生成する場合であっても、コンポーネント単位で確保された書体の情報を利用することによって、事前に入力を受けた文字の書体と類似度が非常に高い新たな文字を生成できる。
【0190】
結果として、本発明にかかるフォント生成方法及びシステムは、特定言語の文字体系をなす、全ての文字に対する書体の情報が確保されていない場合であっても、いくつかの文字を活用し、統一性のある書体を有する様々な文字を生成することが可能である。
【0191】
さらに、本発明にかかるフォント生成方法及びシステムは、前記で見てみた方法で新たに生成された文字と事前に入力を受けた文字間の差異を抽出し、抽出された情報をアップデートする学習を介して、事前に入力を受けた文字の書体とさらに類似の書体の文字を生成することが可能である。