FreeTypeをコンパイル 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(ページの作成:「== '''概要''' ==  PDFで日本語フォントを埋め込みたい!というところに端を発して、フォントファイルの操作をするべくFreeType...」)
 
(FreeTypeに必要なアプリlibpngとzlibのビルド方法)
 
1行: 1行:
 +
[[フォント TrueType 構造解析]]に戻る。
 +
 +
 
== '''概要''' ==
 
== '''概要''' ==
 
 PDFで日本語フォントを埋め込みたい!というところに端を発して、フォントファイルの操作をするべくFreeTypeをコンパイルできるような環境を構築してみようという作業です。
 
 PDFで日本語フォントを埋め込みたい!というところに端を発して、フォントファイルの操作をするべくFreeTypeをコンパイルできるような環境を構築してみようという作業です。
5行: 8行:
 
 2022年8月現在 Windows10 の Visual Studio 2019を使っての作業です。
 
 2022年8月現在 Windows10 の Visual Studio 2019を使っての作業です。
  
 
+
=== '''FreeTypeに必要なアプリlibpngとzlibのビルド方法''' ===
 [https://freetype.org/ FreeType]は現在 Version1.12.1 で カラー絵文字の操作を含めるなら [https://sourceforge.net/projects/libpng/files/ libpng]  ライブラリが必要とのこと。さらには[zlib https://github.com/madler/zlib/tree/v1.2.8]も必要なんだって。道のり長くなっていくなぁ。zlibの最新版を最初はダウンロードしたんだけど、カスタムビルドステップの
+
 [https://freetype.org/ FreeType]は現在 Version1.12.1 で カラー絵文字の操作を含めるなら [https://sourceforge.net/projects/libpng/files/ libpng]  ライブラリが必要とのこと。さらには[https://github.com/madler/zlib/tree/v1.2.8 zlib]も必要なんだって。道のり長くなっていくなぁ。zlibの最新版を最初はダウンロードしたんだけど、カスタムビルドステップの
  
  
55行: 58行:
 
{
 
{
 
 
<Syntaxhighlight2>
+
</Syntaxhighlight2>
  
 
 c言語の記述方法になっているので、引数の型を関数名の横のカッコ無いで設定してc++言語向けにする。いらなくなったところをコメント化しています。
 
 c言語の記述方法になっているので、引数の型を関数名の横のカッコ無いで設定してc++言語向けにする。いらなくなったところをコメント化しています。
67行: 70行:
 
{
 
{
 
 
<Syntaxhighlight2>
+
</Syntaxhighlight2>
  
 
 VERSIONの指定方法が間違えているようです。
 
 VERSIONの指定方法が間違えているようです。
94行: 97行:
  
 
 これでソリューション全体のビルドができるようになったハズです。
 
 これでソリューション全体のビルドができるようになったハズです。
 +
 +
=== '''FreeTypeのプロジェクト設定''' ===
 +
 +
 +
 次にFreeTypeをlibpngありの設定にします。
 +
 +
 include\freetype\config\ftoption.hを以下の通りに変更します。
 +
<Syntaxhighlight2 lang="cpp" line=255>
 +
  /*************************************************************************/
 +
  /*                                                                      */
 +
  /* PNG bitmap support.                                                  */
 +
  /*                                                                      */
 +
  /*  FreeType now handles loading color bitmap glyphs in the PNG format. */
 +
  /*  This requires help from the external libpng library.  Uncompressed  */
 +
  /*  color bitmaps do not need any external libraries and will be        */
 +
  /*  supported regardless of this configuration.                        */
 +
  /*                                                                      */
 +
  /*  Define this macro if you want to enable this `feature'.            */
 +
  /*                                                                      */
 +
  /*  If you use a build system like cmake or the `configure' script,    */
 +
  /*  options set by those programs have precendence, overwriting the    */
 +
  /*  value here with the configured one.                                */
 +
  /*                                                                      */
 +
#define FT_CONFIG_OPTION_USE_PNG
 +
</Syntaxhighlight2>
 +
 +
 
 +
 まずはincludeファイルでlibpngの動作を有効にする宣言がある箇所があるので、そこのコメント化されている部分を外します。
 +
 +
 +
 次に、以下のファイルにアクセスできるようにします。
 +
 +
lpng\png.h
 +
lpng\pngconf.h
 +
lpng\pnglibconf.h
 +
zlib\zconf.h
 +
zlib\zlib.h
 +
lpng\Release Library\libpng.lib
 +
lpng\Debug Library\libpng.lib
 +
lpng\Release Library\zlib.lib
 +
lpng\Debug Library\zlib.lib
 +
 +
 FreeTypeのプロジェクトの設定にライブラリの絶対パスを設定したり、優先度を低めにして、ヘッダファイルの絶対パスを通したりします。コピーして放り込んだり、いろいろな人のやり方があると思うので、ここは流儀が分かれます。デメリットは関係ないインクルードファイルまで参照できるようにしてしまうことです。でもこれはFreeType自体のプログラムを追加編集しないという今回のケースでは小さな問題であるはずです。
 +
 +
 +
 自分のやり方ですけど。
 +
 +
 +
 1.プロジェクトのインクルード設定を変更します。
 +
 +
 
 +
 インクルードパスはFreeTypeのプロジェクトの構成プロパティ画面のVC++ディレクトリに設定します。一つ一つ設定するのは大変なので、ダイアログ上部の構成選択リストで[全て]を選択し、プラットフォームも[全て]のを選択します。この状態で[VC++ディレクトリ]の項目の中の[外部インクルードディレクトリ]の編集を行います。項目を選択してテキストカーソルをあてるダイレクト編集は、間違いの元なので、項目の一番右あたりにカーソルをもっていったときに表示される[▼]ボタンを押して、表示される項目の[編集]を選択して表示される専用ダイアログから編集しましょう。
 +
 +
 +
 $(WindowsSDK_IncludePath)の次の行に
 +
 +
 +
C:\...\...\...\...\lpng
 +
C:\...\...\...\...\zlib
 +
 +
 +
 のように絶対パスを追加します。それぞれのプロジェクトのルートの下にヘッダファイルがありますので、階層は深くないです。ルートフォルダの名前にはデフォルトではバージョン番号がついていましたが、自分は消したので上記の例のような名前になります。絶対パスではなく、相対パスでもいいのですが、FreeTypeのプロジェクトが更新されると階層構造にも変更が発生し、汎用性がないので、同じ作業ディレクトリを使うという信念に基づくなら絶対パスがいいかなと思って、絶対パスを使います。include文は外部ディレクトリの参照使用 #include "..\..\png.h" みたいなものも警告にする昨今です。何が正しいのかわからない。..\ とかダメなんだってさ。
 +
 +
 +
 とにもかくにも、これですべてのヘッダファイルは見つかるようになったわけです。よきよき。
 +
 +
 +
 次にライブラリです。
 +
 +
 +
 インクルード設定をしたプロジェクトのプロパティ構成画面と同じところで今度はは構成の選択を[Debug]にします。さっきは全てを選択していました。*.libファイルはDebug版とRelease版とで分かれているからです。x64とWin32<span>(</span>x86<span>)</span>とで同じlibを使うのでプラットフォームは全てのままでよいでしょう。libpngやzlibには32ビット版しかないので、これをダイナミックリンクで使うときには64bit版でも32bitプログラムとして動作しちゃうわけですね。libをくっつけてスタティックリンクで出力したら64bit版のFreeTypeができるのかな。
 +
 +
 +
 この状態で項目の[リンカー]-[入力]の[追加の依存ファイル]の項目にさっきとおなじように編集して
 +
 +
 構成のDebugに対しては
 +
 +
C:\…\…\…\…\lpng\projects\vstudio\Debug Library\libpng16.lib
 +
C:\…\…\…\…\lpng\projects\vstudio\Debug Library\zlib.lib
 +
 +
 +
 構成のRelease対しては
 +
 +
C:\…\…\…\…\lpng\projects\vstudio\Release Library\libpng16.lib
 +
C:\…\…\…\…\lpng\projects\vstudio\Relsese Library\zlib.lib
 +
 +
 を絶対パスで追加しちゃいましょう。
 +
 +
 +
 これで、FreeTypeのスタティックライブラリ libとダイナミックリンクライブラリ dll とが生成されました。ここからは実際にFreeTypeを使ったプログラミングで遊べます。
 +
 +
 
 +
 +
[[フォント TrueType 構造解析]]に戻る。
 +
 

2022年8月10日 (水) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス