Subversion Repositories Scribus

Compare Revisions

Ignore whitespace Rev 11826 → Rev 11827

/branches/Version133x/Scribus/scribus/collect4output.cpp
234,10 → 234,75
{
QFileInfo itf = QFileInfo(prefsManager->appPrefs.AvailFonts[it3.key()]->fontFilePath());
copyFile(prefsManager->appPrefs.AvailFonts[it3.key()]->fontFilePath(), outputDirectory + itf.fileName());
if (prefsManager->appPrefs.AvailFonts[it3.key()]->typeCode == Foi::TYPE1)
{
QStringList metrics;
QString fontDir = itf.absFilePath();
QString fontFile = itf.fileName();
metrics += findFontMetrics(fontDir, fontFile);
if ( metrics.size() <= 0 )
{
QDir dir;
if (dir.exists(fontDir + "/AFMs"))
metrics += findFontMetrics(fontDir + "/AFMs", fontFile);
if (dir.exists(fontDir + "/afm") && metrics.size() <= 0)
metrics += findFontMetrics(fontDir + "/afm", fontFile);
if (dir.exists(fontDir + "/Pfm") && metrics.size() <= 0)
metrics += findFontMetrics(fontDir + "/Pfm", fontFile);
if (dir.exists(fontDir + "/pfm") && metrics.size() <= 0)
metrics += findFontMetrics(fontDir + "/pfm", fontFile);
}
for (uint a = 0; a < metrics.size(); a++)
{
QString origAFM = metrics[a];
QFileInfo fi(origAFM);
copyFile(origAFM, outputDirectory + fi.fileName());
}
}
}
return true;
}
 
QStringList CollectForOutput::findFontMetrics(const QString& baseDir, const QString& baseName) const
{
QStringList metricsFiles;
QString basePath = baseDir + "/" + baseName;
QString afnm = basePath.left(basePath.length()-3);
// Look for afm files
QString afmName(afnm+"afm");
if(QFile::exists(afmName))
metricsFiles.append(afmName);
else
{
afmName = afnm+"Afm";
if(QFile::exists(afmName))
metricsFiles.append(afmName);
else
{
afmName = afnm+"AFM";
if(QFile::exists(afmName))
metricsFiles.append(afmName);
}
}
// Look for pfm files
QString pfmName(afnm+"pfm");
if(QFile::exists(pfmName))
metricsFiles.append(pfmName);
else
{
pfmName = afnm+"Pfm";
if(QFile::exists(pfmName))
metricsFiles.append(pfmName);
else
{
afmName = afnm+"PFM";
if(QFile::exists(pfmName))
metricsFiles.append(pfmName);
}
}
return metricsFiles;
}
 
QString CollectForOutput::collectFile(QString oldFile, QString newFile)
{
uint cnt = 1;
/branches/Version133x/Scribus/scribus/collect4output.h
9,6 → 9,7
 
#include <qobject.h>
#include <qmap.h>
#include <qstringlist.h>
 
class QString;
class ScribusMainWindow;
65,6 → 66,8
/*! Collect used fonts if requested.
\retval true on success */
bool collectFonts();
/*! Helper function for collectFonts() */
QStringList findFontMetrics(const QString& baseDir, const QString& baseName) const;
/*! \brief Copy used file into new location with magic checks.
It looks into collectedFiles map. If there is newFile (key) already
found - it will construct new filename to prevent overwritting.