|
|
|
@ -775,18 +775,22 @@ void PDF_PLOTTER::Text( const wxPoint& aPos, |
|
|
|
aMultilineAllowed = false; // the text has only one line.
|
|
|
|
|
|
|
|
// Emit native PDF text (if requested)
|
|
|
|
// Currently: does not work: disable it
|
|
|
|
bool use_native = false; // = m_textMode != PLOTTEXTMODE_STROKE && !aMultilineAllowed;
|
|
|
|
// Currently: is not supported, because only our stroke font is alloxed: disable it
|
|
|
|
// However, shadowed texts (searchable texts) works reasonably well because
|
|
|
|
// pixel accurate precision is not requested, so we add searchable texts
|
|
|
|
// behind our stroked font texts
|
|
|
|
bool use_native_font = false; |
|
|
|
// render_mode 0 shows the text, render_mode 3 is invisible
|
|
|
|
int render_mode = use_native_font ? 0 : 3; |
|
|
|
|
|
|
|
if( use_native ) |
|
|
|
{ |
|
|
|
const char *fontname = aItalic ? (aBold ? "/KicadFontBI" : "/KicadFontI") |
|
|
|
: (aBold ? "/KicadFontB" : "/KicadFont"); |
|
|
|
|
|
|
|
// Compute the copious tranformation parameters
|
|
|
|
// Compute the copious tranformation parameters of the Curent Transform Matrix
|
|
|
|
double ctm_a, ctm_b, ctm_c, ctm_d, ctm_e, ctm_f; |
|
|
|
double wideningFactor, heightFactor; |
|
|
|
computeTextParameters( aPos, aText, aOrient, aSize, aH_justify, |
|
|
|
|
|
|
|
computeTextParameters( aPos, aText, aOrient, aSize, m_plotMirror, aH_justify, |
|
|
|
aV_justify, aWidth, aItalic, aBold, |
|
|
|
&wideningFactor, &ctm_a, &ctm_b, &ctm_c, |
|
|
|
&ctm_d, &ctm_e, &ctm_f, &heightFactor ); |
|
|
|
@ -798,20 +802,18 @@ void PDF_PLOTTER::Text( const wxPoint& aPos, |
|
|
|
coordinate system will be used for the overlining. Also the %f |
|
|
|
for the trig part of the matrix to avoid %g going in exponential |
|
|
|
format (which is not supported) |
|
|
|
Rendermode 0 shows the text, rendermode 3 is invisible */ |
|
|
|
render_mode 0 shows the text, render_mode 3 is invisible */ |
|
|
|
fprintf( workFile, "q %f %f %f %f %g %g cm BT %s %g Tf %d Tr %g Tz ", |
|
|
|
ctm_a, ctm_b, ctm_c, ctm_d, ctm_e, ctm_f, |
|
|
|
fontname, heightFactor, |
|
|
|
(m_textMode == PLOTTEXTMODE_NATIVE) ? 0 : 3, |
|
|
|
fontname, heightFactor, render_mode, |
|
|
|
wideningFactor * 100 ); |
|
|
|
|
|
|
|
// The text must be escaped correctly
|
|
|
|
fputsPostscriptString( workFile, aText ); |
|
|
|
fputs( " Tj ET\n", workFile ); |
|
|
|
|
|
|
|
/* We are still in text coordinates, plot the overbars (if we're
|
|
|
|
* not doing phantom text) */ |
|
|
|
if( m_textMode == PLOTTEXTMODE_NATIVE ) |
|
|
|
// We are in text coordinates, plot the overbars, if we're not doing phantom text
|
|
|
|
if( use_native_font ) |
|
|
|
{ |
|
|
|
std::vector<int> pos_pairs; |
|
|
|
postscriptOverlinePositions( aText, aSize.x, aItalic, aBold, &pos_pairs ); |
|
|
|
@ -831,10 +833,9 @@ void PDF_PLOTTER::Text( const wxPoint& aPos, |
|
|
|
|
|
|
|
// Stroke and restore the CTM
|
|
|
|
fputs( "S Q\n", workFile ); |
|
|
|
} |
|
|
|
|
|
|
|
// Plot the stroked text (if requested)
|
|
|
|
if( !use_native ) |
|
|
|
if( !use_native_font ) |
|
|
|
{ |
|
|
|
PLOTTER::Text( aPos, aColor, aText, aOrient, aSize, aH_justify, aV_justify, |
|
|
|
aWidth, aItalic, aBold, aMultilineAllowed ); |
|
|
|
|