GetKerningPairsで使用するGDIのカーニング情報を取得するにはどうすればよいですか? documentationは、そのことを述べていますカーニング情報の取得
lpkrnpair配列のペア数です。フォントに 以上のnNumPairsカーニングペアがある場合、関数はエラーを返します。
しかし、どのくらいの数のペアが渡されるのかわかりません。私はそれを照会する方法がありません。ここで
EDIT#2
これは常にペアの数の任意のフォントに0を生産している、私も試してみました、私のフィルアプリケーションです。 GetLastErrorは常に0も返します。私は次のことを実行しようとしました
#include <windows.h>
#include <Gdiplus.h>
#include <iostream>
using namespace std;
using namespace Gdiplus;
int main(void)
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Font* myFont = new Font(L"Times New Roman", 12);
Bitmap* bitmap = new Bitmap(256, 256, PixelFormat32bppARGB);
Graphics* g = new Graphics(bitmap);
//HDC hdc = g->GetHDC();
HDC hdc = GetDC(NULL);
SelectObject(hdc, myFont->Clone());
DWORD numberOfKerningPairs = GetKerningPairs(hdc, INT_MAX, NULL);
cout << GetLastError() << endl;
cout << numberOfKerningPairs << endl;
GdiplusShutdown(gdiplusToken);
return 0;
}
EDIT は、しかし、それはまだ私には0
Font* myFont = new Font(L"Times New Roman", 10);
Bitmap* bitmap = new Bitmap(256, 256, PixelFormat32bppARGB);
Graphics* g = new Graphics(bitmap);
SelectObject(g->GetHDC(), myFont);
//DWORD numberOfKerningPairs = GetKerningPairs(g->GetHDC(), -1, NULL);
DWORD numberOfKerningPairs = GetKerningPairs(g->GetHDC(), INT_MAX, NULL);
それを動作させるには、フォントdcを使用する必要があるようですが、どうすればそれを得ることができますか? – chadb
@chadb:DCを作成し、その中のフォントを選択します。最終的なターゲットと互換性のあるDCを使用したいので、出力が画面に表示される場合は、画面と互換性のあるDCを作成します。プリンタに接続する場合は、プリンタ用にプリンタを作成します。 –
うーん、私はそれを試して、私はまだ0を得る。私はここに適合しないので、上記の私のコードを更新しました。 – chadb