configure.ac | 2 sdext/source/pdfimport/wrapper/wrapper.cxx | 52 ------------------ sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx | 18 +++--- 3 files changed, 11 insertions(+), 61 deletions(-)
New commits: commit b4b82ce9e09c285fc4f0c859d4203a54df54ed50 Author: Andras Timar <andras.ti...@collabora.com> AuthorDate: Sat Mar 25 22:12:32 2023 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sat Mar 25 22:12:32 2023 +0100 Bump version to 6.4-65 Change-Id: Ida38dda000cbe1ad8294ac7b2262cc1a6d393efc diff --git a/configure.ac b/configure.ac index 29de3ccf316e..1b29e4c0f74c 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,7 @@ dnl in order to create a configure script. # several non-alphanumeric characters, those are split off and used only for the # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea. -AC_INIT([Collabora Office],[6.4.10.64],[],[],[https://collaboraoffice.com/]) +AC_INIT([Collabora Office],[6.4.10.65],[],[],[https://collaboraoffice.com/]) dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard commit dc24c4cbf5f7720318032849b693f0661ead0c57 Author: Kevin Suo <suokunl...@126.com> AuthorDate: Sat Jul 10 11:47:39 2021 +0800 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sat Mar 25 20:49:57 2023 +0100 tdf#78427 sdext.pdfimport: No need to read a font file for the purpose of... ...determining the bold/italic/underline etc. The purpose for reading a font file is that in case the font attributes determined by the xpdfimport process is not enough, then we use the lo core font classes which read in the font file and then determine whether it is bold, italic etc. However, while this works in some cases, it does not work in many cases when the font file was actually a subset and a toUnicode map is followed in the PDF, see tdf#78427. In addition, in case the information collected from the xpdfimport process is enough, there is no need to read the font file. This commit removes the read of font file part. Also, this commit uses gfxFont->getNameWithoutSubsetTag() to get the font name with the subset tags removed, thus simplified the code in wrapper.cxx while also improves performace as the remove of subset tags is only run when the font is a subset (the previous code did this for all the font names). Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118733 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins (cherry picked from commit da59686672fd2bc98f8cb28d5f04dc978b50ac13) restore compatibility with older popplers with poppler 20.09: /home/rene/LibreOffice/git/libreoffice-7-2/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx: In member function 'int pdfi::PDFOutDev::parseFont(long long int, GfxFont*, GfxState*) const': /home/rene/LibreOffice/git/libreoffice-7-2/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx:438:39: error: 'class GfxFont' has no member named 'getNameWithoutSubsetTag' https://www.google.com/search?q=getNameWithoutSubsetTag&oq=getNameWithoutSubsetTag&aqs=chrome..69i57.784j0j7&sourceid=chrome&ie=UTF-8 suggests it was added in 20.12 Change-Id: I4eacd2d740cb689ff9b3c6cab59376e01b1ba162 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118977 Tested-by: René Engelhard <r...@debian.org> Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit 07087041610ca8351d764c838ae07fa58f3bdf9e) diff --git a/sdext/source/pdfimport/wrapper/wrapper.cxx b/sdext/source/pdfimport/wrapper/wrapper.cxx index 3d36e77110be..ad25b2edd85b 100644 --- a/sdext/source/pdfimport/wrapper/wrapper.cxx +++ b/sdext/source/pdfimport/wrapper/wrapper.cxx @@ -486,12 +486,6 @@ void Parser::parseFontFamilyName( FontAttributes& rResult ) const sal_Unicode* pCopy = rResult.familyName.getStr(); sal_Int32 nLen = rResult.familyName.getLength(); - // parse out truetype subsets (e.g. BAAAAA+Thorndale) - if( nLen > 8 && pCopy[6] == '+' ) - { - pCopy += 7; - nLen -= 7; - } // TODO: Looks like this block needs to be refactored while( nLen ) @@ -613,52 +607,6 @@ void Parser::readFont() // extract textual attributes (bold, italic in the name, etc.) parseFontFamilyName(aResult); - // need to read font file? - if( nFileLen ) - { - uno::Sequence<sal_Int8> aFontFile(nFileLen); - readBinaryData( aFontFile ); - - awt::FontDescriptor aFD; - uno::Sequence< uno::Any > aArgs(1); - aArgs[0] <<= aFontFile; - - try - { - uno::Reference< beans::XMaterialHolder > xMat( - m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext( - "com.sun.star.awt.FontIdentificator", aArgs, m_xContext ), - uno::UNO_QUERY ); - if( xMat.is() ) - { - uno::Any aRes( xMat->getMaterial() ); - if( aRes >>= aFD ) - { - if (!aFD.Name.isEmpty()) - { - aResult.familyName = aFD.Name; - parseFontFamilyName(aResult); - } - aResult.isBold = (aFD.Weight > 100.0); - aResult.isItalic = (aFD.Slant == awt::FontSlant_OBLIQUE || - aFD.Slant == awt::FontSlant_ITALIC ); - aResult.isUnderline = false; - aResult.size = 0; - } - } - } - catch( uno::Exception& ) - { - } - - if( aResult.familyName.isEmpty() ) - { - // last fallback - aResult.familyName = "Arial"; - aResult.isUnderline = false; - } - - } if (!m_xDev) m_xDev.disposeAndReset(VclPtr<VirtualDevice>::Create()); diff --git a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx index d621aabc8204..676aefe91859 100644 --- a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx +++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx @@ -432,14 +432,19 @@ int PDFOutDev::parseFont( long long nNewId, GfxFont* gfxFont, GfxState* state ) FontAttributes aNewFont; int nSize = 0; -#if POPPLER_CHECK_VERSION(0, 64, 0) - const +#if POPPLER_CHECK_VERSION(20, 12, 0) + std::string familyName = gfxFont->getNameWithoutSubsetTag(); +#else + std::string familyName = gfxFont->getName()->toStr(); + if (familyName.length() > 7 && familyName.at(6) == '+') + { + familyName = familyName.substr(7); + } #endif - GooString* pFamily = gfxFont->getName(); - if( pFamily ) + if( familyName != "" ) { aNewFont.familyName.clear(); - aNewFont.familyName.append( gfxFont->getName() ); + aNewFont.familyName.append( familyName ); } else { @@ -823,9 +828,6 @@ void PDFOutDev::updateFont(GfxState *state) aEsc.data() ); } printf( "\n" ); - - if( nEmbedSize ) - writeFontFile(gfxFont); } void PDFOutDev::updateRender(GfxState *state)