<div dir="ltr"><div><div><div><div><div><div><div><div>Hello everyone,<br><br></div>I'm using Qt5 in Linux (Mint 16) and Windows (7). In both cases it has been downloaded and installed from the Qt Project website (not the package manager). The following code produces different results on each system:<br>
<br>QFont font("Liberation Mono", 18, QFont::Normal, false);<br>QFontMetrics metrics(font);<br>int x = metrics.height();<br><br></div>On Windows x equals 27, which seems to be the correct value, but on Linux it equals 28. The font file used by the two systems is the same one (I've even done a binary comparison which found no differences).<br>
<br></div>What I'm trying to do is create a widget that displays a grid of characters with no gaps between them. The size of the cells in the grid is decided by QFontMetrics.height() and QFontMetrics.width(QChar(0x2588)).<br>
<br></div>(0x2588 is the "Full Block" character in UTF-16, which is supposed to take up the full width and height of the character. Unfortunately many fonts don't implement it correctly, such as Vera Sans Mono, which has a large gap at the top).<br>
<br></div>If I fill my grid with Full Block characters, it appears correctly in Windows but when run in Linux there are 1-pixel-wide gaps between each line.<br><br></div>Is this a bug in Qt or are the results produced by QFontMetrics not certain to be the same across platforms? If it's the latter case, is there a more accurate way to determine what size each cell in my grid should be?<br>
<br></div>If it's any help, this is how I draw my characters:<br><br>for(int i = 0; i < gridSize; ++i) //gridSize is the number of cells in the grid<br>{<br>    int x = i % getGridWidth(); // the grid width is the number of cells in a line.<br>
</div>// x is the horizontal position of the current cell.<br><div>    int y = i / getGridWidth(); // y is the vertical position of the current cell.<br>    QRect rect(x * getCellWidth(), y * getCellHeight(), getCellWidth(), getCellHeight());<br>
    painter.setBrush(getBgColour());<br>    painter.setPen(getBgColour());<br>    painter.drawRect(rect);<br>    painter.setPen(getFgColour());<br>    painter.drawText(rect, Qt::AlignBottom | Qt::AlignHCenter, QChar(0x2588)); // I've tried aligning to the top and left too, no change.<br>
}<br><br></div><div>I would be grateful for any advice.<br><div><div><div><div><div><div><div><div><div>--<br>Yours sincerely,<br>George Tasopoulos<br></div>

</div></div></div></div></div></div></div></div></div></div>