我们有一个应用程序,允许我们的用户使用其客户通过在线电子商务网站输入的可变数据(名称,标题,电话号码等)生成打印PDF文档。为了方便可变数据,我们必须嵌入字体的整个字符映射。在Windows上,我们一直在使用Windows API函数GetFontData(...),像这样:是否有Mac OSX版本的Windows GetFontData函数?
#ifdef Q_WS_WIN
//this is windows specific code
HDC DC = CreateCompatibleDC(NULL);
HFONT hFont = font.handle();
HFONT oFont=(HFONT)SelectObject(DC,hFont);
DWORD fontLength = ::GetFontData(DC, 0, 0, 0, 0);
if(fontLength != GDI_ERROR)
{
fontData.GrowAllocation(fontLength);
if(::GetFontData(DC, 0, 0, fontData.GetBuffer(), fontLength) == GDI_ERROR)
{
fontData.Clear();
}
else
{
fontData.SetLength(fontLength);
returnVal = true;
}
}
SelectObject(DC,oFont);
DeleteDC(DC);
//End of windows specific code
#elif defined(Q_WS_MAC)
#endif
这种技术可以非常成功地在我们的窗口特定版本;不过,我们正在将应用程序移植到Qt,以定位Mac OSX平台。
我的第一个问题:是否有Qt方式来访问QFont,QFontDatabase等原始字体数据,我们可以使用它嵌入pdf中?我们一直无法找到方法。注意上面代码中的#ifdef包装。请注意,变量fontData是一个独立的内存缓冲区,用于管理自己的内存,请忽略。
我的第二个问题:如果没有Qt的方式访问字体数据在操作系统不可知的方式,什么是OSX等效于窗口GetFontData?
感谢
谢谢。我们已经看过NSFont和NSGraphicsContext以及ATSUI的函数,例如ATSFontActivateFromFileReference,无济于事。尽管我们没有经验丰富的Mac开发者,并且可能缺少一些基本概念。 – grayDad 2011-05-03 15:41:25