mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Editor plugin: WIP
This commit is contained in:
@ -564,9 +564,10 @@ QString PDFSystemFontInfoStorage::getFontPostscriptName(QString fontName)
|
||||
return fontName.remove(QChar(' ')).remove(QChar('-')).remove(QChar(',')).trimmed();
|
||||
}
|
||||
|
||||
PDFFont::PDFFont(CIDSystemInfo CIDSystemInfo, FontDescriptor fontDescriptor) :
|
||||
PDFFont::PDFFont(CIDSystemInfo CIDSystemInfo, QByteArray fontId, FontDescriptor fontDescriptor) :
|
||||
m_CIDSystemInfo(qMove(CIDSystemInfo)),
|
||||
m_fontDescriptor(qMove(fontDescriptor))
|
||||
m_fontDescriptor(qMove(fontDescriptor)),
|
||||
m_fontId(qMove(fontId))
|
||||
{
|
||||
|
||||
}
|
||||
@ -1284,7 +1285,12 @@ CIDSystemInfo PDFFont::readCIDSystemInfo(const PDFObject& cidSystemInfoObject, c
|
||||
return cidSystemInfo;
|
||||
}
|
||||
|
||||
PDFFontPointer PDFFont::createFont(const PDFObject& object, const PDFDocument* document)
|
||||
QByteArray PDFFont::getFontId() const
|
||||
{
|
||||
return m_fontId;
|
||||
}
|
||||
|
||||
PDFFontPointer PDFFont::createFont(const PDFObject& object, QByteArray fontId, const PDFDocument* document)
|
||||
{
|
||||
const PDFObject& dereferencedFontDictionary = document->getObject(object);
|
||||
if (!dereferencedFontDictionary.isDictionary())
|
||||
@ -1763,7 +1769,7 @@ PDFFontPointer PDFFont::createFont(const PDFObject& object, const PDFDocument* d
|
||||
toUnicodeCMap = PDFFontCMap::createFromData(decodedStream);
|
||||
}
|
||||
|
||||
return PDFFontPointer(new PDFType0Font(qMove(cidSystemInfo), qMove(fontDescriptor), qMove(cmap), qMove(toUnicodeCMap), qMove(cidToGidMapper), defaultWidth, qMove(advances)));
|
||||
return PDFFontPointer(new PDFType0Font(qMove(cidSystemInfo), qMove(fontId), qMove(fontDescriptor), qMove(cmap), qMove(toUnicodeCMap), qMove(cidToGidMapper), defaultWidth, qMove(advances)));
|
||||
}
|
||||
|
||||
case FontType::Type3:
|
||||
@ -1853,7 +1859,7 @@ PDFFontPointer PDFFont::createFont(const PDFObject& object, const PDFDocument* d
|
||||
}
|
||||
|
||||
std::vector<PDFReal> widthsF3 = fontLoader.readNumberArrayFromDictionary(fontDictionary, "Widths");
|
||||
return PDFFontPointer(new PDFType3Font(qMove(fontDescriptor), firstCharF3, lastCharF3, fontMatrix, qMove(characterContentStreams), qMove(widthsF3), document->getObject(fontDictionary->get("Resources")), qMove(toUnicodeCMap)));
|
||||
return PDFFontPointer(new PDFType3Font(qMove(fontDescriptor), qMove(fontId), firstCharF3, lastCharF3, fontMatrix, qMove(characterContentStreams), qMove(widthsF3), document->getObject(fontDictionary->get("Resources")), qMove(toUnicodeCMap)));
|
||||
}
|
||||
|
||||
default:
|
||||
@ -1867,10 +1873,10 @@ PDFFontPointer PDFFont::createFont(const PDFObject& object, const PDFDocument* d
|
||||
{
|
||||
case FontType::Type1:
|
||||
case FontType::MMType1:
|
||||
return PDFFontPointer(new PDFType1Font(fontType, qMove(cidSystemInfo), qMove(fontDescriptor), qMove(name), qMove(baseFont), firstChar, lastChar, qMove(widths), encoding, simpleFontEncodingTable, standardFont, glyphIndexArray));
|
||||
return PDFFontPointer(new PDFType1Font(fontType, qMove(fontId), qMove(cidSystemInfo), qMove(fontDescriptor), qMove(name), qMove(baseFont), firstChar, lastChar, qMove(widths), encoding, simpleFontEncodingTable, standardFont, glyphIndexArray));
|
||||
|
||||
case FontType::TrueType:
|
||||
return PDFFontPointer(new PDFTrueTypeFont(qMove(cidSystemInfo), qMove(fontDescriptor), qMove(name), qMove(baseFont), firstChar, lastChar, qMove(widths), encoding, simpleFontEncodingTable, glyphIndexArray));
|
||||
return PDFFontPointer(new PDFTrueTypeFont(qMove(cidSystemInfo), qMove(fontId), qMove(fontDescriptor), qMove(name), qMove(baseFont), firstChar, lastChar, qMove(widths), encoding, simpleFontEncodingTable, glyphIndexArray));
|
||||
|
||||
default:
|
||||
{
|
||||
@ -1883,6 +1889,7 @@ PDFFontPointer PDFFont::createFont(const PDFObject& object, const PDFDocument* d
|
||||
}
|
||||
|
||||
PDFSimpleFont::PDFSimpleFont(CIDSystemInfo cidSystemInfo,
|
||||
QByteArray fontId,
|
||||
FontDescriptor fontDescriptor,
|
||||
QByteArray name,
|
||||
QByteArray baseFont,
|
||||
@ -1892,7 +1899,7 @@ PDFSimpleFont::PDFSimpleFont(CIDSystemInfo cidSystemInfo,
|
||||
PDFEncoding::Encoding encodingType,
|
||||
encoding::EncodingTable encoding,
|
||||
GlyphIndices glyphIndices) :
|
||||
PDFFont(qMove(cidSystemInfo), qMove(fontDescriptor)),
|
||||
PDFFont(qMove(cidSystemInfo), qMove(fontId), qMove(fontDescriptor)),
|
||||
m_name(qMove(name)),
|
||||
m_baseFont(qMove(baseFont)),
|
||||
m_firstChar(firstChar),
|
||||
@ -1976,6 +1983,7 @@ void PDFSimpleFont::dumpFontToTreeItem(ITreeFactory* treeFactory) const
|
||||
}
|
||||
|
||||
PDFType1Font::PDFType1Font(FontType fontType,
|
||||
QByteArray fontId,
|
||||
CIDSystemInfo cidSystemInfo,
|
||||
FontDescriptor fontDescriptor,
|
||||
QByteArray name,
|
||||
@ -1987,7 +1995,7 @@ PDFType1Font::PDFType1Font(FontType fontType,
|
||||
encoding::EncodingTable encoding,
|
||||
StandardFontType standardFontType,
|
||||
GlyphIndices glyphIndices) :
|
||||
PDFSimpleFont(qMove(cidSystemInfo), qMove(fontDescriptor), qMove(name), qMove(baseFont), firstChar, lastChar, qMove(widths), encodingType, encoding, glyphIndices),
|
||||
PDFSimpleFont(qMove(cidSystemInfo), qMove(fontId), qMove(fontDescriptor), qMove(name), qMove(baseFont), firstChar, lastChar, qMove(widths), encodingType, encoding, glyphIndices),
|
||||
m_fontType(fontType),
|
||||
m_standardFontType(standardFontType)
|
||||
{
|
||||
@ -2068,7 +2076,7 @@ void PDFFontCache::setDocument(const PDFModifiedDocument& document)
|
||||
}
|
||||
}
|
||||
|
||||
PDFFontPointer PDFFontCache::getFont(const PDFObject& fontObject) const
|
||||
PDFFontPointer PDFFontCache::getFont(const PDFObject& fontObject, const QByteArray& fontId) const
|
||||
{
|
||||
if (fontObject.isReference())
|
||||
{
|
||||
@ -2081,7 +2089,7 @@ PDFFontPointer PDFFontCache::getFont(const PDFObject& fontObject) const
|
||||
if (it == m_fontCache.cend())
|
||||
{
|
||||
// We must create the font
|
||||
PDFFontPointer font = PDFFont::createFont(fontObject, m_document);
|
||||
PDFFontPointer font = PDFFont::createFont(fontObject, fontId, m_document);
|
||||
|
||||
if (m_fontCacheShrinkDisabledObjects.empty() && m_fontCache.size() >= m_fontCacheLimit)
|
||||
{
|
||||
@ -2096,7 +2104,7 @@ PDFFontPointer PDFFontCache::getFont(const PDFObject& fontObject) const
|
||||
else
|
||||
{
|
||||
// Object is not a reference. Create font directly and return it.
|
||||
return PDFFont::createFont(fontObject, m_document);
|
||||
return PDFFont::createFont(fontObject, fontId, m_document);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2611,6 +2619,7 @@ PDFReal PDFType0Font::getGlyphAdvance(CID cid) const
|
||||
}
|
||||
|
||||
PDFType3Font::PDFType3Font(FontDescriptor fontDescriptor,
|
||||
QByteArray fontId,
|
||||
int firstCharacterIndex,
|
||||
int lastCharacterIndex,
|
||||
QTransform fontMatrix,
|
||||
@ -2618,7 +2627,7 @@ PDFType3Font::PDFType3Font(FontDescriptor fontDescriptor,
|
||||
std::vector<double>&& widths,
|
||||
const PDFObject& resources,
|
||||
PDFFontCMap toUnicode) :
|
||||
PDFFont(CIDSystemInfo(), qMove(fontDescriptor)),
|
||||
PDFFont(CIDSystemInfo(), qMove(fontId), qMove(fontDescriptor)),
|
||||
m_firstCharacterIndex(firstCharacterIndex),
|
||||
m_lastCharacterIndex(lastCharacterIndex),
|
||||
m_fontMatrix(fontMatrix),
|
||||
|
Reference in New Issue
Block a user