Как получить информацию о кернинге для GDI, чтобы затем использовать ее в GetKerningPairs? В 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);
Для этого, казалось бы, мне нужно будет использовать мои шрифты постоянного тока, как я могу это получить? – chadb
@chadb: создайте DC и выберите шрифт в нем. Обычно вы хотите использовать DC, совместимый с конечной целью, поэтому, если выход идет на экран, создайте DC, совместимый с экраном. Если принтер подходит к принтеру, создайте его для принтера. –
Хм, я попробовал это, и я все равно получаю 0. Я обновил свой код выше, так как он здесь не подходит. – chadb