src/lib/CDRParser.cpp | 6 ++++-- src/lib/CDRStylesCollector.cpp | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-)
New commits: commit 6db42e0a640ee09e04a1980675bc1df4f7b79099 Author: Fridrich Å trba <fridrich.st...@bluewin.ch> Date: Fri Mar 1 10:31:52 2013 +0100 Some more font encoding hackery diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp index 1ce77ae..99526c0 100644 --- a/src/lib/CDRParser.cpp +++ b/src/lib/CDRParser.cpp @@ -95,6 +95,8 @@ static void processNameForEncoding(WPXString &name, unsigned short &encoding) encoding = 0xcc; else if ((found=fontName.rfind(" Cyr")) != std::string::npos) encoding = 0xcc; + else if ((found=fontName.rfind(" CYR")) != std::string::npos) + encoding = 0xcc; else if ((found=fontName.rfind(" Baltic")) != std::string::npos) encoding = 0xba; else if ((found=fontName.rfind(" Greek")) != std::string::npos) @@ -2348,8 +2350,8 @@ void libcdr::CDRParser::readFont(WPXInputStream *input, unsigned length) { if (!_redirectX6Chunk(&input, length)) throw GenericException(); - unsigned fontId = readU32(input); - unsigned short fontEncoding = fontId >> 16; + unsigned short fontId = readU16(input); + unsigned short fontEncoding = readU16(input); input->seek(14, WPX_SEEK_CUR); WPXString name; if (m_version >= 1200) diff --git a/src/lib/CDRStylesCollector.cpp b/src/lib/CDRStylesCollector.cpp index 1bbb1ea..8b45750 100644 --- a/src/lib/CDRStylesCollector.cpp +++ b/src/lib/CDRStylesCollector.cpp @@ -241,7 +241,12 @@ void libcdr::CDRStylesCollector::collectPaletteEntry(unsigned colorId, unsigned void libcdr::CDRStylesCollector::collectFont(unsigned fontId, unsigned short encoding, const WPXString &font) { - m_ps.m_fonts[fontId] = CDRFont(font, encoding); + std::map<unsigned, CDRFont>::const_iterator iter = m_ps.m_fonts.find(fontId); + // Asume that the first font with the given ID is a font + // that we want, the others are substitution fonts. We might + // be utterly wrong in this one + if (iter == m_ps.m_fonts.end()) + m_ps.m_fonts[fontId] = CDRFont(font, encoding); } void libcdr::CDRStylesCollector::collectText(unsigned textId, unsigned styleId, const std::vector<unsigned char> &data,
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits