11 #include <QStringList>
16 #include FT_FREETYPE_H
20 #include "scribusapi.h"
21 #include "fpointarray.h"
34 ScFace_postscript(QString fam, QString sty, QString alt, QString scname, QString psname, QString path,
int face) :
35 FtFace(fam,sty,alt,scname,psname,path,face)
38 typeCode = ScFace::TYPE1;
41 virtual QStringList findFontMetrics(
const QString& fontPath)
const;
42 virtual QStringList findFontMetrics(
const QString& baseDir,
const QString& baseName)
const;
43 virtual bool loadFontMetrics(FT_Face face,
const QString& fontPath)
const;
45 virtual void load()
const
49 FT_Face face = ftFace();
53 qDebug(
"%s", QObject::tr(
"Font %1 is broken (no Face), discarding it").arg(fontFile).toLocal8Bit().constData());
56 if (loadFontMetrics(face, fontFile))
113 ScFace_pfb(QString fam, QString sty, QString alt, QString scname, QString psname, QString path,
int face) :
116 formatCode = ScFace::PFB;
119 virtual bool EmbedFont(QByteArray &str)
const
124 if ((bb.size() > 2) && (bb[0] ==
char(0x80)) && (static_cast<int>(bb[1]) == 1))
129 for (posi = 6; posi < bb.size(); ++posi)
131 if ((bb[posi] ==
char(0x80)) && (posi+1 < bb.size()) && (static_cast<int>(bb[posi+1]) == 2))
136 if (posi+6 < bb.size())
138 ulen = bb[posi+2] & 0xff;
139 ulen |= (bb[posi+3] << 8) & 0xff00;
140 ulen |= (bb[posi+4] << 16) & 0xff0000;
141 ulen |= (bb[posi+5] << 24) & 0xff000000;
143 if (posi + ulen > bb.size())
144 ulen = bb.size() - posi - 1;
147 for (
int j = 0; j < ulen; ++j)
149 unsigned char u=bb[posi];
150 linebuf[cxxc]=((u >> 4) & 15) +
'0';
151 if(u>0x9f) linebuf[cxxc]+=
'a'-
':';
153 u&=15; linebuf[cxxc]=u +
'0';
154 if(u>0x9) linebuf[cxxc]+=
'a'-
':';
159 linebuf[cxxc++]=
'\n';
170 for (
int j = posi; j < bb.size(); ++j)
172 if ((bb[j] == static_cast<char>(0x80)) && (j+1 < bb.size()) && (static_cast<int>(bb[j+1]) == 3))
185 qDebug(
"%s", QObject::tr(
"Font %1 cannot be read, no embedding").arg(fontFile).toLatin1().constData());
200 ScFace_pfa(QString fam, QString sty, QString alt, QString scname, QString psname, QString path,
int face) :
203 formatCode = ScFace::PFA;
205 virtual bool EmbedFont(QByteArray &str)
const
209 if (bb.size() > 2 && bb[0] ==
'%' && bb[1] ==
'!')
215 qDebug(
"%s", QObject::tr(
"Font %1 cannot be read, no embedding").arg(fontFile).toLatin1().constData());
Definition: scface_ps.h:31
Base Class FtFace provides an ScFace private implementation for Freetype based fonts. Subclasses are ScFace_ps and ScFace_ttf.
Definition: ftface.h:53
Definition: scface_ps.h:197
Definition: scface_ps.h:110