diff --git a/common/eda_text.cpp b/common/eda_text.cpp index 65fef87371..4215ea30d7 100644 --- a/common/eda_text.cpp +++ b/common/eda_text.cpp @@ -564,11 +564,18 @@ BOX2I EDA_TEXT::GetTextBox( int aLine, bool aInvertY ) const wxSize textsize = wxSize( extents.x, extents.y ); VECTOR2I pos = drawPos; + if( font->IsStroke() ) + { + int fudgeFactor = extents.y * 0.17; + textsize.y += fudgeFactor; + pos.y += fudgeFactor / 2; + } + if( IsMultilineAllowed() && aLine > 0 && aLine < (int) strings.GetCount() ) pos.y -= KiROUND( aLine * font->GetInterline( fontSize.y ) ); if( text.Contains( wxT( "~{" ) ) ) - overbarOffset = extents.y / 14; + overbarOffset = extents.y / 6; if( aInvertY ) pos.y = -pos.y; @@ -576,7 +583,7 @@ BOX2I EDA_TEXT::GetTextBox( int aLine, bool aInvertY ) const bbox.SetOrigin( pos ); // for multiline texts and aLine < 0, merge all rectangles (aLine == -1 signals all lines) - if( IsMultilineAllowed() && aLine < 0 && strings.GetCount() ) + if( IsMultilineAllowed() && aLine < 0 && strings.GetCount() > 1 ) { for( unsigned ii = 1; ii < strings.GetCount(); ii++ ) { @@ -590,6 +597,8 @@ BOX2I EDA_TEXT::GetTextBox( int aLine, bool aInvertY ) const textsize.y += KiROUND( ( strings.GetCount() - 1 ) * font->GetInterline( fontSize.y ) ); } + textsize.y += overbarOffset; + bbox.SetSize( textsize ); /* @@ -621,11 +630,11 @@ BOX2I EDA_TEXT::GetTextBox( int aLine, bool aInvertY ) const break; case GR_TEXT_V_ALIGN_CENTER: - bbox.SetY( bbox.GetY() - ( bbox.GetHeight() + overbarOffset ) / 2 ); + bbox.SetY( bbox.GetY() - bbox.GetHeight() / 2 ); break; case GR_TEXT_V_ALIGN_BOTTOM: - bbox.SetY( bbox.GetY() - ( bbox.GetHeight() + overbarOffset ) ); + bbox.SetY( bbox.GetY() - bbox.GetHeight() ); break; }