diff --git a/common/eda_text.cpp b/common/eda_text.cpp index 9db0ea5c1f..766066cedf 100644 --- a/common/eda_text.cpp +++ b/common/eda_text.cpp @@ -355,13 +355,15 @@ void EDA_TEXT::SetLineSpacing( double aLineSpacing ) } -void EDA_TEXT::SetTextSize( VECTOR2I aNewSize ) +void EDA_TEXT::SetTextSize( VECTOR2I aNewSize, bool aEnforceMinTextSize ) { - if( m_IuScale.get().IU_PER_MM != unityScale.IU_PER_MM ) - { - // Plotting uses unityScale and independently scales the text. If we clamp here we'll - // clamp to *really* small values. + // Plotting uses unityScale and independently scales the text. If we clamp here we'll + // clamp to *really* small values. + if( m_IuScale.get().IU_PER_MM == unityScale.IU_PER_MM ) + aEnforceMinTextSize = false; + if( aEnforceMinTextSize ) + { int min = m_IuScale.get().MilsToIU( TEXT_MIN_SIZE_MILS ); int max = m_IuScale.get().MilsToIU( TEXT_MAX_SIZE_MILS ); diff --git a/eeschema/sch_io/kicad_sexpr/sch_io_kicad_sexpr_parser.cpp b/eeschema/sch_io/kicad_sexpr/sch_io_kicad_sexpr_parser.cpp index 0419cd5c5a..b1eb503990 100644 --- a/eeschema/sch_io/kicad_sexpr/sch_io_kicad_sexpr_parser.cpp +++ b/eeschema/sch_io/kicad_sexpr/sch_io_kicad_sexpr_parser.cpp @@ -678,7 +678,8 @@ void SCH_IO_KICAD_SEXPR_PARSER::parseFill( FILL_PARAMS& aFill ) } -void SCH_IO_KICAD_SEXPR_PARSER::parseEDA_TEXT( EDA_TEXT* aText, bool aConvertOverbarSyntax ) +void SCH_IO_KICAD_SEXPR_PARSER::parseEDA_TEXT( EDA_TEXT* aText, bool aConvertOverbarSyntax, + bool aEnforceMinTextSize ) { wxCHECK_RET( aText && ( CurTok() == T_effects || CurTok() == T_href ), "Cannot parse " + GetTokenString( CurTok() ) + " as an EDA_TEXT." ); @@ -723,7 +724,7 @@ void SCH_IO_KICAD_SEXPR_PARSER::parseEDA_TEXT( EDA_TEXT* aText, bool aConvertOve VECTOR2I sz; sz.y = parseInternalUnits( "text height" ); sz.x = parseInternalUnits( "text width" ); - aText->SetTextSize( sz ); + aText->SetTextSize( sz, aEnforceMinTextSize ); NeedRIGHT(); break; } @@ -1540,7 +1541,7 @@ LIB_PIN* SCH_IO_KICAD_SEXPR_PARSER::parsePin() // so duplicate parsing is not required. EDA_TEXT text( schIUScale ); - parseEDA_TEXT( &text, true ); + parseEDA_TEXT( &text, true, false ); pin->SetNameTextSize( text.GetTextHeight() ); NeedRIGHT(); } @@ -1574,7 +1575,7 @@ LIB_PIN* SCH_IO_KICAD_SEXPR_PARSER::parsePin() // so duplicate parsing is not required. EDA_TEXT text( schIUScale ); - parseEDA_TEXT( &text, false ); + parseEDA_TEXT( &text, false, false ); pin->SetNumberTextSize( text.GetTextHeight() ); NeedRIGHT(); } diff --git a/eeschema/sch_io/kicad_sexpr/sch_io_kicad_sexpr_parser.h b/eeschema/sch_io/kicad_sexpr/sch_io_kicad_sexpr_parser.h index a64a2d3dd5..dc05b6164c 100644 --- a/eeschema/sch_io/kicad_sexpr/sch_io_kicad_sexpr_parser.h +++ b/eeschema/sch_io/kicad_sexpr/sch_io_kicad_sexpr_parser.h @@ -180,7 +180,8 @@ private: void parseFill( FILL_PARAMS& aFill ); - void parseEDA_TEXT( EDA_TEXT* aText, bool aConvertOverbarSyntax ); + void parseEDA_TEXT( EDA_TEXT* aText, bool aConvertOverbarSyntax, + bool aEnforceMinTextSize = true ); void parsePinNames( std::unique_ptr& aSymbol ); LIB_FIELD* parseProperty( std::unique_ptr& aSymbol ); diff --git a/include/eda_text.h b/include/eda_text.h index 4243c36249..e74ef03114 100644 --- a/include/eda_text.h +++ b/include/eda_text.h @@ -214,7 +214,7 @@ public: void SetLineSpacing( double aLineSpacing ); double GetLineSpacing() const { return m_attributes.m_LineSpacing; } - void SetTextSize( VECTOR2I aNewSize ); + void SetTextSize( VECTOR2I aNewSize, bool aEnforceMinTextSize = true ); VECTOR2I GetTextSize() const { return m_attributes.m_Size; } void SetTextWidth( int aWidth );