Windows – QT5字体渲染在各种平台上不同
我想对某些自定义小部件渲染进行可重复的测试.为了做到这一点,我将它们绘制成一个Q
Image,并将结果保存为PNG.与MacOSX相比,Windows的输出真的不同.
我照顾: >在所有平台上选择相同的字体(我提供“TTF”字体文件并将代码指向它) 我如何确保渲染在所有平台上完全一样,以便我的测试运行是可重复的?换句话说,是否可能强制QT5在所有平台上使用相同的字体引擎(例如freetype)? ** 我把这个问题解决了一个简单的渲染测试程序. QFontDatabase fontDb; fontDb.addApplicationFont(".../fonts/Vera.ttf"); QImage result(width,height,QImage::Format_RGB32); QPainter painter(&result); painter.setRenderHint(QPainter::Antialiasing); painter.setRenderHint(QPainter::TextAntialiasing); QBrush background(QColor(205,205,205)); painter.fillRect(0,800,600,background); QFont font = fontDb.font("Bitstream Vera Sans","Normal",10); painter.setFont(font); painter.setPen(QColor(0,0)); painter.drawText(10,10,"ABCD abcd 01234567"); Bitstream Vera字体可以在fontsquirel.com上下载. 看到MacOSX(左)和Win32(右)的结果,这是非常不同的: 在下面的N1ghtLight的回答和评论之后,在阅读他建议的链接之后,我更改了代码以获得字体: QFont font = fontDb_->font(("Bitstream Vera Sans",-1); qreal screenDPI = QApplication::primaryScreen()->physicalDotsPerInch(); qreal RENDER_DPI = 72; int pixelSize = (int)((qreal)10 * screenDPI / RENDER_DPI); font.setPixelSize(pixelSize); 这似乎主要是解决了大小不一的字体的问题.至少在MacOSX上,现在的字体正好是10像素高.在Windows上,虽然字体更薄,更小一些.我还是迷路和困惑… 这是新的结果(左边的MacOSX,右边的Windows).白色刻度表示真正的10像素大小. 以下G_G下面的回答我调整了代码(Linux?移动平台呢?这很复杂…).现在,Windows和MacOSX的输出中的字体都是10个像素,仍然很不一样(左边是MacOSX,右边是Windows). 谢谢.
您的渲染DPI变量对于Windows应为96,对于OSX应为72
根据:
QFont font = fontDb_->font(("Bitstream Vera Sans",-1); qreal screenDPI = QApplication::primaryScreen()->physicalDotsPerInch(); #ifdef WINDOWS qreal RENDER_DPI = 96; #else qreal RENDER_DPI = 72; #endif int pixelSize = (int)((qreal)10 * screenDPI / RENDER_DPI); font.setPixelSize(pixelSize); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008-r2 – 非域客户端的RemoteApps
- xaml – 如何在Windows Store Universal App(W8.1 WP8.1)中
- 双系统安装,引导被覆盖-如何解决?
- Windows Phone 7 / Silverlight:如何进行导航?
- 如何在Windows上的Jenkins配置中设置PATH环境变量?
- 有没有什么像Windows的xvfb或xnest?
- Windows XP中的Symlink
- windows-service – 在LocalService帐户下运行的Win Servic
- Windows上的gRPC C.
- windows-update – 是否有“wusa.exe”的完整返回代码列表?
- Windows防火墙,Tinywall和GIT
- RF上传图片各种失败坑,使用pywin32来操作window
- 如何使用Microsoft AD为内部PHP应用程序实施单点
- Windows服务 – ServiceController似乎无法停止服
- win7 windows server 2008R2下 https SSL证书安装
- Windows 多线程编程入门(2)
- wpf – 如何在共享ResourceDictionary中定义窗口
- windows-7 – 如何创建客户端证书以通过SSL本地测
- windows-server-2008-r2 – 如何在Windows Serve
- windows-server-2008 – 在Windows服务器中等效的