2011-05-03 99 views
3

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

感謝

回答

0

我只脫脂文檔GetFontData,我不知道很多關於Qt(儘管它聽起來像一個Qt解決方案將是可取的),但你可能想看看ObjC班級字體,NSFont

+0

謝謝。我們已經看過NSFont和NSGraphicsContext以及ATSUI的函數,例如ATSFontActivateFromFileReference,無濟於事。儘管我們沒有經驗豐富的Mac開發者,並且可能缺少一些基本概念。 – grayDad 2011-05-03 15:41:25

0

最新(直到蘋果聘請新的字體的人,並感染未發明的疾病再次)文本和字體的API是Core Text。自從追逐蘋果的心情危害我個人和組織的財務狀況以來,我從未使用過它,我停止使用任何僅限Apple的API。 :)

除了開玩笑,它看起來像CTFont確實提供訪問字體中的所有表。我沒有看到任何準備嵌入字體的東西,但這可能會給你最好的機會。

相關問題