[Interest] Text rendering problem.
Elvis Stansvik
elvstone at gmail.com
Sat Jul 18 12:34:56 CEST 2015
2015-07-18 1:13 GMT+02:00 Bill Crocker <william.crocker at analog.com>:
>
> Hello:
>
> I am having a text rendering problem.
>
> The following code creates a QLabel and QGraphicsTextItem.
> The QLabel text is 60 pt. The QGraphicsTextItem text size is 6 pt,
> but then the view is scaled up by 10x. So, in the end both
> pieces of text are the same size on the screen.
>
> For me the QLabel text looks good while the
> QGraphicsTextItem is very badly kerned (char spacing).
>
> Does anyone know what is wrong
> with the QGraphicsTextItem implementation?
>From some googling, I think it's because the hinting values are
obtained when unscaled, and then used even when scaled.
What you can do in your example is
scene_font.setHintingPreference(QFont::PreferNoHinting);
to prefer that hinting not be used at all. I tested this on X11/Linux.
I'm attaching the before/after results.
I'm not sure what effect this setting has on all the platforms, but
it's just a hint so I guess it might be ignored on some of them.
Cheers,
Elvis
>
>
> (For all I know the QLabel text would be badly kerned
> at 6pt as well, but it is hard to see.)
>
> Qt 4.8.6, RHEL 5.10
>
> Thanks.
>
> Bill
>
> -------------------------
> int
> main( int argc, char **argv ) {
> QApplication app(argc,argv);
>
> int sz = 6, scale = 10;
> QString text = QString("Impedance");
>
> // Text size is 60.
> // This text renders well.
> QFont label_font = QFont("Arial",scale*sz,QFont::Bold);
> QLabel *label = new QLabel(text);
> label->setFont(label_font);
>
> // Text size is 6, then the view is zoomed in x10.
> // This text is not properly kerned.
> QFont scene_font = QFont("Arial",sz,QFont::Bold);
> QTextDocument *html = new QTextDocument;
> html->setDefaultFont(scene_font);
> html->setHtml(text);
> QGraphicsTextItem *gi = new QGraphicsTextItem;
> gi->setDocument(html);
> QGraphicsScene *sp = new QGraphicsScene;
> sp->addItem(gi);
> QGraphicsView *view = new QGraphicsView;
> view->setScene(sp);
> view->scale(scale,scale);
>
> QHBoxLayout *hbox = new QHBoxLayout;
> hbox->addWidget(label);
> hbox->addWidget(view);
>
> QWidget *wp = new QWidget;
> wp->setLayout(hbox);
> wp->show();
>
> app.exec();
> }
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
-------------- next part --------------
A non-text attachment was scrubbed...
Name: before_after.png
Type: image/png
Size: 49378 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150718/d934e283/attachment.png>
More information about the Interest
mailing list