qt 字体不随dpi_Windows – QT5字体渲染在各种平台上不同

在QT5中,开发者遇到字体在Windows和MacOSX上渲染不一致的问题,尤其是字体大小和样式。文章通过代码示例展示了如何尝试确保跨平台的渲染效果相同,包括使用QFontDatabase加载字体,设置抗锯齿提示,并根据屏幕DPI调整字体像素大小。尽管如此,Windows和MacOSX之间仍存在差异。作者分享了调整后的结果并寻求进一步的解决方案。
摘要由CSDN通过智能技术生成

我想对某些自定义小部件渲染进行可重复的测试.为了做到这一点,我将它们绘制成一个Q

Image,并将结果保存为PNG.与MacOSX相比,Windows的输出真的不同.

我照顾:

>在所有平台上选择相同的字体(我提供“TTF”字体文件并将代码指向它)

>绘制QImage而不是QPixmap,正如文档所述,QImage画家应该是平台独立的

>我还选择了Antialisating和TextAntialiasing提示

>通过QFontDatabase :: font()请求字体,以便指定pointSize而不是pixelSize

我如何确保渲染在所有平台上完全一样,以便我的测试运行是可重复的?换句话说,是否可能强制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).

谢谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值