1 /****************************************************************************
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the tools applications of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file. Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights. These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
40 ****************************************************************************/
45 #include "mainwindow.h"
47 #include <private/qfontengine_p.h>
54 printf("makeqpf fontname pixelsize [italic] [bold] [--exclude-cmap] [-v]\n");
55 printf("makeqpf -dump [-v] file.qpf2\n");
59 static int gui(const QString
&customFont
= QString())
61 MainWindow
mw(customFont
);
68 int main(int argc
, char **argv
)
72 QApplication
app(argc
, argv
);
73 app
.setOrganizationName(QLatin1String("Trolltech"));
74 app
.setApplicationName(QLatin1String("MakeQPF"));
76 const QStringList arguments
= app
.arguments();
78 if (arguments
.count() <= 1) {
80 } else if (arguments
.count() == 2
81 && QFile::exists(arguments
.at(1))) {
82 return gui(arguments
.at(1));
85 const QString
&firstArg
= arguments
.at(1);
86 if (firstArg
== QLatin1String("-h") || firstArg
== QLatin1String("--help"))
88 if (firstArg
== QLatin1String("-dump")) {
90 for (int i
= 2; i
< arguments
.count(); ++i
) {
91 if (arguments
.at(i
).startsWith(QLatin1String("-v")))
92 QPF::debugVerbosity
+= arguments
.at(i
).length() - 1;
93 else if (file
.isEmpty())
94 file
= arguments
.at(i
);
103 if (!f
.open(QIODevice::ReadOnly
)) {
104 printf("cannot open %s\n", qPrintable(file
));
108 QByteArray qpf
= f
.readAll();
115 if (arguments
.count() < 3) help();
119 QString fontName
= firstArg
;
120 if (QFile::exists(fontName
)) {
121 int id
= QFontDatabase::addApplicationFont(fontName
);
123 printf("cannot open font %s", qPrintable(fontName
));
126 QStringList families
= QFontDatabase::applicationFontFamilies(id
);
127 if (families
.isEmpty()) {
128 printf("cannot find any font families in %s", qPrintable(fontName
));
131 fontName
= families
.first();
133 font
.setFamily(fontName
);
136 int pixelSize
= arguments
.at(2).toInt(&ok
);
138 font
.setPixelSize(pixelSize
);
140 int generationOptions
= QPF::IncludeCMap
| QPF::RenderGlyphs
;
142 for (int i
= 3; i
< arguments
.count(); ++i
) {
143 const QString
&arg
= arguments
.at(i
);
144 if (arg
== QLatin1String("italic")) {
145 font
.setItalic(true);
146 } else if (arg
== QLatin1String("bold")) {
148 } else if (arg
== QLatin1String("--exclude-cmap")) {
149 generationOptions
&= ~QPF::IncludeCMap
;
150 } else if (arg
== QLatin1String("--exclude-glyphs")) {
151 generationOptions
&= ~QPF::RenderGlyphs
;
152 } else if (arg
== QLatin1String("-v")) {
153 ++QPF::debugVerbosity
;
155 printf("unknown option %s\n", qPrintable(arg
));
160 font
.setStyleStrategy(QFont::NoFontMerging
);
162 QList
<QPF::CharacterRange
> ranges
;
163 ranges
.append(QPF::CharacterRange()); // default range from 0 to 0xffff
166 QByteArray qpf
= QPF::generate(font
, generationOptions
, ranges
, &origFont
);
168 QString fileName
= QPF::fileNameForFont(font
);
170 f
.open(QIODevice::WriteOnly
| QIODevice::Truncate
);
174 if (generationOptions
& QPF::IncludeCMap
) {
175 printf("Created %s from %s\n", qPrintable(fileName
), qPrintable(origFont
));
177 printf("Created %s from %s excluding the character-map\n", qPrintable(fileName
), qPrintable(origFont
));
178 printf("The TrueType font file is therefore required for the font to work\n");