FreeTypeを使う 新しいページはコチラ
提供: yonewiki
(→サンプル3.公式サイトのErik Mollerさん作成 Qt版) |
(→サンプル4.公式サイトのErik Mollerさん作成その2 Qt版) |
||
1,163行: | 1,163行: | ||
上記のようなプログラムで更に、いろいろと必要なプログラムをつまびかないと動作させられませんでした。 | 上記のようなプログラムで更に、いろいろと必要なプログラムをつまびかないと動作させられませんでした。 | ||
− | プロジェクトにftimege.hとftmisc.h | + | プロジェクトにftimege.hとftmisc.hとfutil.cをライブラリディレクトリからコピーしてmain.cppと同じフォルダに追加。 |
+ | |||
+ | プロジェクトのフォルダの中にftraster.cをコピーする必要があり、このファイルはインクルードすることでコンパリンの対象になります。そして、以下のインクルードをftraster.cの中に記載。 | ||
+ | |||
+ | #include "C:\xxx\xxx\xxx\xxx\freetype-2.9.1\include\freetype\internal\internal.h" | ||
+ | #include "C:\xxx\xxx\xxx\xxx\freetype-2.9.1\include\freetype\internal\ftdebug.h" | ||
+ | #include "C:\xxx\xxx\xxx\xxx\freetype-2.9.1\include\freetype\internal\ftcalc.h" | ||
+ | |||
+ | 編集するファイルはすべて、このディレクトリに移動します。本格的にB/Wラスタライズ機能を繰り返し使う場合は、もっと構成を簡単に綺麗にした方がよいでしょう。自分は無理やりでも動かしてやるということに集中しました。正直、なんにも文献もないのに、全貌を読み解くのは面倒です。簡単には使えないということを理解しました。美しい使い方については、自分もスタンドアロンB/Wラスタライズを使うときに考えたいと思います。 | ||
+ | |||
+ | FT_THROWは存在しない構文としてエラーになって面倒だったので、消しました。例外エラーがでたときにわかりやすくなる命令ではありますが、なくても問題ない。return FT_THROW(... となっている場合はreturn 1;に置き換え。if文の中に1行だけある場合は、int ii = 1; のような疑似プログラムを追加。 | ||
+ | |||
+ | 取り込んだftmisc.hも | ||
+ | |||
+ | <Syntaxhighlight2 lang="cpp" line="1"> | ||
+ | /* | ||
+ | typedef struct FT_MemoryRec_ | ||
+ | { | ||
+ | void* user; | ||
+ | |||
+ | FT_Alloc_Func alloc; | ||
+ | FT_Free_Func free; | ||
+ | FT_Realloc_Func realloc; | ||
+ | |||
+ | } FT_MemoryRec; | ||
+ | */ | ||
+ | </Syntaxhighlight2> | ||
+ | |||
+ | の部分をコメントアウトが必要になります。重複する部分になります。 | ||
+ | |||
+ | ftobjs.hも | ||
+ | |||
+ | <Syntaxhighlight2 lang="cpp" line="1"> | ||
+ | #define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h> | ||
+ | #include FT_INTERNAL_MEMORY_H | ||
+ | #define FT_INTERNAL_GLYPH_LOADER_H <freetype/internal/ftgloadr.h> | ||
+ | #include FT_INTERNAL_GLYPH_LOADER_H | ||
+ | #define FT_INTERNAL_DRIVER_H <freetype/internal/ftdrv.h> | ||
+ | #include FT_INTERNAL_DRIVER_H | ||
+ | #define FT_INTERNAL_AUTOHINT_H <freetype/internal/autohint.h> | ||
+ | #include FT_INTERNAL_AUTOHINT_H | ||
+ | #define FT_INTERNAL_SERVICE_H <freetype/internal/ftserv.h> | ||
+ | #include FT_INTERNAL_SERVICE_H | ||
+ | #define FT_INTERNAL_PIC_H <freetype/internal/ftpic.h> | ||
+ | #include FT_INTERNAL_PIC_H | ||
+ | #define FT_INTERNAL_CALC_H <freetype/internal/ftcalc.h> | ||
+ | #include FT_INTERNAL_CALC_H | ||
+ | </Syntaxhighlight2> | ||
+ | |||
+ | #defineの行を追加しなければならないところが発生しました。 | ||
+ | |||
+ | |||
+ | ftutil.hも | ||
+ | |||
+ | <Syntaxhighlight2 lang="cpp" line="1"> | ||
+ | #include "C:\xxx\xxx\xxx\xxx\freetype-2.9.1\include\freetype\internal\ftdebug.h" | ||
+ | #include "C:\xxx\xxx\xxx\xxx\freetype-2.9.1\include\freetype\internal\ftmemory.h" | ||
+ | #include ".\ftobjs.h" | ||
+ | </Syntaxhighlight2> | ||
+ | |||
+ | のように編集が必要なヘッダファイルはプロジェクト内のものを相対パス参照で、編集が不要でインクルードが必要なモノはライブラリのものを読み込みます。絶対パスでxxxになっているところは、各自の環境に合わせてください。 | ||
+ | |||
+ | |||
+ | これで編集が必要だった箇所を全部を書いたかはわかりませんが、基本的にはやることは同じです。コンパリンエラーになった結果にもとづいて、定義が見つからない場合は、必要なインクルードファイルを追記。リンクエラーになる場合は宣言しか読み込めていないってことなので、プログラムファイルを探して読み込みという感じの作業をします。ファイルの編集が必要な場合はライブラリのものは触らず、ファイルを自分のプロジェクトにコピーしてきて、それを使うように読み込みする仕組みにしたうえで編集をします。 | ||
+ | |||
+ | |||
+ | こういう作業をすることは勉強にはなりません。これを当たり前のようにこなしてから、どうすることが正しかったのかを考えることが大事です。でも今回は管理人には必要ない知識なので、ここではやりません。人が作ったものを使いこなすのは大変だということです。ユーザ数が少ない。文献がすくなければなおさら面倒です。必要に駆られるまで手は出さない。動けばいいな。程度。1週間やってもだめなら諦めますね。パズルと同じです。 | ||
+ | |||
[[フォント TrueType 構造解析]]に戻る。 | [[フォント TrueType 構造解析]]に戻る。 |