Добрый день всем.
Возникла небольшая сложность с использование QFontMetrics может кто сталкивался. Пример:
QPixmap pix ( maxw, h, 1 );
for (i = 0; i < (int) chars.count (); i++ )
{
ch_img = NULL;
ch = QChar ( chars [ i ] );
if ( m.inFont ( ch ) )
{
if ( ! p.begin (&pix, false) ) continue;
p.setFont ( font );
p.setBackgroundColor ( Qt::color0 );
p.setPen( QPen (Qt::color1) );
p.eraseRect ( 0, 0, pix.width (), pix.height () );
QString s;
s += ch;
p.drawText ( 0, 0, pix.width (), pix.height (), Qt::AlignLeft | Qt::AlignTop, s );
p.end ();
QFontMetrics m1 = p.fontMetrics ();
mfont->data [ i + 1 ].code = ch.unicode ();
mfont->data [ i + 1 ].width = m1.width ( ch );
chw = mfont->data [ i + 1 ].width;
mfont->data [ i + 1 ].rpel = m1.rightBearing ( ch );
mfont->data [ i + 1 ].lpel = m1.leftBearing ( ch );
ch_img_w = chw + abs (mfont->data [ i + 1 ].rpel) + abs (mfont->data [ i + 1 ].lpel);
mfont->data [ i + 1 ].line_len = ( ch_img_w % 8 == 0 ) ? (ch_img_w / 8 ) : (ch_img_w / 8 + 1);
}
}
Прошу строго не судить, долго не думал :oops: .
Проблема в том что m1.rightBearing ( ch ) и m1.leftBearing ( ch ) всегда дают 0. Программка собиралась и на Win и на Linux результат один и тот же.
В доках Qt есть пример qfd, многое взято оттуда, но пример работает,
а эта моя программулина нет, в чем дело понять не могу...