我們有一個應用程序,允許我們的用戶使用其客戶通過在線電子商務網站輸入的可變數據(名稱,標題,電話號碼等)生成打印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