Win32 APIとFreeTypeの知識を前提とした、少し高度な課題があります。ここではFreeTypeとは、フリーのフォントレンダリングエンジンのことです。
まずは、次の四部の参考資料にさっと目を通して下さい。
https://www.microsoft.com/typography/otspec/TTCH01.htm
https://www.freetype.org/freetype2/docs/documentation.html
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145037.aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145132.aspx
次に、次の未完成のレポジトリをご覧下さい。
https://github.com/katahiromz/TwinMetric
https://github.com/katahiromz/TwinMetric/blob/master/TwinMetric.cpp
ファイル「TwinMetric.cpp」の「...(1)...」の部分を変更して、どんなフォントを選んでも、sizWin.cxとsizFT.cxが、そしてsizWin.cyとsizFT.cyがなるべく近い値になるようにして下さい。ただし、「...(1)...」の部分では、FreeTypeの関数を使うものとします。
正解者には、高評価を付けます。よろしくお願いします。
(追記)
ヒントを出します。まず、FT_Set_Char_Size、FT_Set_Pixel_Sizes、FT_Request_Sizeのいずれかの関数を使ってタイプフェイスのサイズをリクエストされた通りに変更して下さい。次に、テキストの高さをFT_Face構造体の情報を使って求めた後、FT_Get_Char_IndexとFT_Load_Glyph関数を使って各文字に対応するグリフを読み込み、グリフの幅を加算して、テキストの幅を求めて下さい。
回答1件
あなたの回答
tips
プレビュー