[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: [PATCH] Qt PostScript font names
From: James Richard Tyrer <tyrerj () acm ! org>
Date: 2003-08-16 9:37:20
[Download RAW message or body]
I attach my "proof of concept" patch for Qt-3.1.2 to fix the PostScript
names in PS data files WITHOUT embedded fonts.
I have only tested this on US English and Type1 (PFB) & TrueType font files,
It appears to work on my desktop system which has FontConfig-2.2,
FreeType-2.1.4 and XFree86-4.3.0 all built from source. I would expect
that there would be problems on systems that are not up to date.
--
JRT
["qt-x11-free-3.1.2-PSfontname.patch" (text/plain)]
diff -Naur qt-x11-free-3.1.2.old/src/kernel/qpsprinter.cpp \
qt-x11-free-3.1.2/src/kernel/qpsprinter.cpp
--- qt-x11-free-3.1.2.old/src/kernel/qpsprinter.cpp Tue Aug 12 05:32:57 2003
+++ qt-x11-free-3.1.2/src/kernel/qpsprinter.cpp Sat Aug 16 09:31:31 2003
@@ -95,8 +95,10 @@
extern bool qt_has_xft;
#endif
-static bool qt_gen_epsf = FALSE;
+static bool embedFonts;
+static bool embedFonts_0;
+static bool qt_gen_epsf = FALSE;
void qt_generate_epsf( bool b )
{
qt_gen_epsf = b;
@@ -1386,8 +1388,6 @@
int scriptUsed;
QFont currentSet;
float scale;
-
- bool embedFonts;
QStringList fontpath;
};
@@ -1411,6 +1411,7 @@
virtual unsigned short glyph_for_unicode(unsigned short unicode) { return \
unicode; } unsigned short insertIntoSubset( unsigned short unicode );
virtual bool embedded() { return FALSE; }
+ bool NoEmbedFonts() { return ! embedFonts_0 ; }
bool operator == ( const QPSPrinterFontPrivate &other ) {
return other.psname == psname;
@@ -1596,6 +1597,13 @@
s << "\n] d\n";
}
+static void emitPSFontNameList( QTextStream &s, const QString &psname )
+{
+ s << "/" << psname << "List [\n";
+ s << "[ /" << psname << " 1.0 0.0 ]";
+ s << "\n] d\n";
+}
+
static float pointSize( const QFont &f, float scale )
{
float psize;
@@ -1903,7 +1911,7 @@
s << psname;
s << "-ENC-";
s << toHex((uchar)(range + rangeOffset));
- if ( embedded() ) {
+ if ( embedded() && (! NoEmbedFonts() )) {
s << " /";
s << psname;
s << " MFEmb\n";
@@ -2309,6 +2317,12 @@
void QPSPrinterFontTTF::download(QTextStream& s,bool global)
{
+ if ( NoEmbedFonts() ) {
+ emitPSFontNameList( s, psname);
+ downloadMapping(s, global);
+ return;
+ }
+
//qDebug("downloading ttf font %s", psname.latin1() );
//qDebug("target type=%d", target_type);
global_dict = global;
@@ -3861,6 +3875,12 @@
void QPSPrinterFontPFA::download(QTextStream& s, bool global)
{
+ if ( NoEmbedFonts() ) {
+ emitPSFontNameList( s, psname);
+ downloadMapping(s, global);
+ return;
+ }
+
//qDebug("downloading pfa font %s", psname.latin1() );
char* p = data.data();
@@ -3922,6 +3942,12 @@
void QPSPrinterFontPFB::download(QTextStream& s, bool global)
{
+ if ( NoEmbedFonts() ) {
+ emitPSFontNameList( s, psname);
+ downloadMapping(s, global);
+ return;
+ }
+
//qDebug("downloading pfb font %s", psname.latin1() );
unsigned char* p = (unsigned char*) data.data();
int pos;
@@ -4672,7 +4698,7 @@
#ifdef Q_WS_X11
bool xlfd = FALSE;
- if ( priv->embedFonts ) {
+ if ( embedFonts ) {
f.d->load( (QFont::Script)script );
QFontStruct *fs = f.d->x11data.fontstruct[script];
//qDebug("fs = %p, script=%d", fs, script);
@@ -4762,7 +4788,7 @@
return;
#ifdef Q_WS_X11
- if ( priv->embedFonts && xlfd ) {
+ if ( embedFonts && xlfd ) {
for (QStringList::Iterator it=priv->fontpath.begin(); it!=priv->fontpath.end() && \
fontfilename.isEmpty(); ++it) {
if ((*it).left(1) != "/") continue; // not a path name, a font server
@@ -4918,7 +4944,8 @@
// append qsettings fontpath
QSettings settings;
embedFonts = settings.readBoolEntry( "/qt/embedFonts", TRUE );
-
+ embedFonts_0 = embedFonts;
+ embedFonts = TRUE;
if ( embedFonts ) {
int npaths;
char** font_path;
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic