2011-05-03 95 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确实提供访问字体中的所有表。我没有看到任何准备嵌入字体的东西,但这可能会给你最好的机会。

相关问题