我正试图从记忆中装上字体。 参考书界定了如下内容:
ID_FONT CUSTOM_RC "res/Montserrat-Regular.ttf"
当时,我试图装上像这样的老资源:
IDWriteFactory5* dwFactory = nullptr;
DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory5),
reinterpret_cast<IUnknown**>(&dwFactory));
HRSRC resourceInfo = FindResourceW(instance, MAKEINTRESOURCEW(ID_FONT),
L"CUSTOM_RC");
HGLOBAL resourceData = LoadResource(instance, resourceInfo);
LPVOID resource = LockResource(resourceData);
DWORD size = SizeofResource(instance, resourceInfo);
DWORD fonts = 0;
HANDLE font = AddFontMemResourceEx(resource, size, 0, &fonts);
随后,我设立了IDWriteTextFormat。
IDWriteTextFormat* format;
dwFactory->CreateTextFormat(L"Montserrat", nullptr, DWRITE_FONT_WEIGHT_REGULAR,
DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, 20.0f, L"en-us",
&format);
I get no issues loading the resource, but when I try to use the font, it doesn t work. It just gives me a different font, which I think is Ariel.
我也试图装上这样的字体:
IDWriteInMemoryFontFileLoader* loader = nullptr;
dwFactory->CreateInMemoryFontFileLoader(&loader);
dwFactory->RegisterFontFileLoader(loader);
IDWriteFontFile* fontFile = nullptr;
loader->CreateInMemoryFontFileReference(dwFactory, resource, size, nullptr,
&fontFile);
但是,现在我有一个IDWriteFontFile,我不敢肯定我应如何从中提取一个IDWriteTextFormat,或者如果它甚至是装上资源的适当途径。
我不敢肯定我做的是错做的,或从这里去做的。