1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
Description: try to make PDFs generated independent of the screen,
the QT_QPA_PLATFORM device, and ideally the -D option’s DPI
Author: mirabilos <tg@debian.org>
Forwarded: no
--- a/libmscore/lyricsline.cpp
+++ b/libmscore/lyricsline.cpp
@@ -417,7 +417,7 @@ void LyricsLineSegment::layout()
}
else { // dash(es)
// set conventional dash Y pos
- rypos() -= MScore::pixelRatio * lyr->fontMetrics().xHeight() * score()->styleD(Sid::lyricsDashYposRatio);
+ rypos() -= score()->styleD(Sid::lyricsDashYposRatio) * lyr->fontMetrics().xHeight() * DPI / lyr->fontMetrics().fontDpi();
_dashLength = score()->styleP(Sid::lyricsDashMaxLength) * mag(); // and dash length
qreal len = pos2().x();
qreal minDashLen = score()->styleS(Sid::lyricsDashMinLength).val() * sp;
--- a/libmscore/textbase.cpp
+++ b/libmscore/textbase.cpp
@@ -1660,7 +1660,7 @@ void TextBase::layoutFrame()
qreal TextBase::lineSpacing() const
{
- return fontMetrics().lineSpacing() * MScore::pixelRatio;
+ return fontMetrics().lineSpacing() * DPI / fontMetrics().fontDpi();
}
//---------------------------------------------------------
@@ -2477,7 +2477,7 @@ QFont TextBase::font() const
QFontMetricsF TextBase::fontMetrics() const
{
- return QFontMetricsF(font());
+ return QFontMetricsF(font(), MScore::paintDevice());
}
//---------------------------------------------------------
--- a/mscore/file.cpp
+++ b/mscore/file.cpp
@@ -2062,7 +2062,9 @@ bool MuseScore::savePdf(Score* cs_, QPri
printer.setResolution(preferences.getInt(PREF_EXPORT_PDF_DPI));
QSizeF size(cs_->styleD(Sid::pageWidth), cs_->styleD(Sid::pageHeight));
- printer.setPaperSize(size, QPrinter::Inch);
+ QPageSize ps(QPageSize::id(size, QPageSize::Inch, QPageSize::FuzzyOrientationMatch));
+ printer.setPageSize(ps);
+ printer.setPageOrientation(size.width() > size.height() ? QPageLayout::Landscape : QPageLayout::Portrait);
printer.setFullPage(true);
printer.setColorMode(QPrinter::Color);
#if defined(Q_OS_MAC)
@@ -2097,7 +2099,10 @@ bool MuseScore::savePdf(Score* cs_, QPri
p.setWindow(QRect(0.0, 0.0, size.width() * DPI, size.height() * DPI));
double pr = MScore::pixelRatio;
- MScore::pixelRatio = DPI / printer.logicalDpiX();
+ double mag_ = printer.logicalDpiX() / DPI;
+ MScore::pixelRatio = 1.0 / mag_;
+ //p.scale(mag_, mag_);
+ qDebug("not scaling by mag(%f) pixelRatio(%f)", mag_, MScore::pixelRatio);
const QList<Page*> pl = cs_->pages();
int pages = pl.size();
@@ -2177,7 +2182,11 @@ bool MuseScore::savePdf(QList<Score*> cs
size1.height() * printer.logicalDpiY()));
p.setWindow(QRect(0.0, 0.0, size1.width() * DPI, size1.height() * DPI));
- MScore::pixelRatio = DPI / printer.logicalDpiX();
+ double mag_ = printer.logicalDpiX() / DPI;
+ MScore::pixelRatio = 1.0 / mag_;
+ //p.scale(mag_, mag_);
+ qDebug("not scaling by mag(%f) pixelRatio(%f)", mag_, MScore::pixelRatio);
+
const QList<Page*> pl = s->pages();
int pages = pl.size();
for (int n = 0; n < pages; ++n) {
--- a/mscore/musescore.cpp
+++ b/mscore/musescore.cpp
@@ -1023,7 +1023,7 @@ MuseScore::MuseScore()
guiScaling = 1.0;
}
- MScore::pixelRatio = DPI / screen->logicalDotsPerInch();
+ MScore::pixelRatio = DPI / (userDPI ? userDPI : screen->logicalDotsPerInch());
setObjectName("MuseScore");
_sstate = STATE_INIT;
|