summaryrefslogtreecommitdiffstats
path: root/kdvi/fontEncoding.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdvi/fontEncoding.cpp')
-rw-r--r--kdvi/fontEncoding.cpp87
1 files changed, 87 insertions, 0 deletions
diff --git a/kdvi/fontEncoding.cpp b/kdvi/fontEncoding.cpp
new file mode 100644
index 00000000..0ca83372
--- /dev/null
+++ b/kdvi/fontEncoding.cpp
@@ -0,0 +1,87 @@
+// fontEncoding.cpp
+//
+// Part of KDVI - A DVI previewer for the KDE desktop environemt
+//
+// (C) 2003 Stefan Kebekus
+// Distributed under the GPL
+
+#include <config.h>
+#ifdef HAVE_FREETYPE
+
+#include <kdebug.h>
+#include <kprocio.h>
+#include <qfile.h>
+#include <qstringlist.h>
+
+#include "fontEncoding.h"
+
+//#define DEBUG_FONTENC
+
+fontEncoding::fontEncoding(const QString &encName)
+{
+#ifdef DEBUG_FONTENC
+ kdDebug(4300) << "fontEncoding( " << encName << " )" << endl;
+#endif
+
+ _isValid = false;
+ // Use kpsewhich to find the encoding file.
+ KProcIO proc;
+ QString encFileName;
+ proc << "kpsewhich" << encName;
+ if (proc.start(KProcess::Block) == false) {
+ kdError(4300) << "fontEncoding::fontEncoding(...): kpsewhich could not be started." << endl;
+ return;
+ }
+ proc.readln(encFileName);
+ encFileName = encFileName.stripWhiteSpace();
+
+ if (encFileName.isEmpty()) {
+ kdError(4300) << QString("fontEncoding::fontEncoding(...): The file '%1' could not be found by kpsewhich.").arg(encName) << endl;
+ return;
+ }
+
+#ifdef DEBUG_FONTENC
+ kdDebug(4300) << "FileName of the encoding: " << encFileName << endl;
+#endif
+
+ QFile file( encFileName );
+ if ( file.open( IO_ReadOnly ) ) {
+ // Read the file (excluding comments) into the QString variable
+ // 'fileContent'
+ QTextStream stream( &file );
+ QString fileContent;
+ while ( !stream.atEnd() )
+ fileContent += stream.readLine().section('%', 0, 0); // line of text excluding '\n' until first '%'-sign
+ file.close();
+
+ fileContent = fileContent.stripWhiteSpace();
+
+ // Find the name of the encoding
+ encodingFullName = fileContent.section('[', 0, 0).simplifyWhiteSpace().mid(1);
+#ifdef DEBUG_FONTENC
+ kdDebug(4300) << "encodingFullName: " << encodingFullName << endl;
+#endif
+
+ fileContent = fileContent.section('[', 1, 1).section(']',0,0).simplifyWhiteSpace();
+ QStringList glyphNameList = QStringList::split( '/', fileContent );
+
+ int i = 0;
+ for ( QStringList::Iterator it = glyphNameList.begin(); (it != glyphNameList.end())&&(i<256); ++it ) {
+ glyphNameVector[i] = (*it).simplifyWhiteSpace();
+#ifdef DEBUG_FONTENC
+ kdDebug(4300) << i << ": " << glyphNameVector[i] << endl;
+#endif
+ i++;
+ }
+ for(; i<256; i++)
+ glyphNameVector[i] = ".notdef";
+ } else {
+ kdError(4300) << QString("fontEncoding::fontEncoding(...): The file '%1' could not be opened.").arg(encFileName) << endl;
+ return;
+ }
+
+ _isValid = true;
+}
+
+
+#endif // HAVE_FREETYPE