tdf#156853: Fix PDF export of bitmap color fonts

Emoji bitmaps need to have their alpha mask inverted like is done
with transparent images and shapes. So, invert the alpha mask of
Type 3 font bitmaps.

Also, add links to test documents for future development and testing.

Regression from:

commit 81994cb2b8b32453a92bcb011830fcb884f22ff3
Date:   Fri Apr 16 20:33:10 2021 +0200

    Convert internal vcl bitmap formats transparency->alpha (II)

Change-Id: I18223a231ab751945883ede029d660949a406f7d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155960
Tested-by: Jenkins
Reviewed-by: خالد حسني <khaled@libreoffice.org>
Reviewed-by: Patrick Luby <plubius@neooffice.org>
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 2f74cfa..bf118a3 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -2713,7 +2713,18 @@ bool PDFWriterImpl::emitType3Font(const vcl::font::PhysicalFontFace* pFace,
                SvMemoryStream aStream(const_cast<uint8_t*>(rBitmapData.data()), rBitmapData.size(),
                                       StreamMode::READ);
                vcl::PngImageReader aReader(aStream);
                auto aBitmapEmit = createBitmapEmit(std::move(aReader.read()), Graphic(),

                // When rendering an image with an alpha mask during PDF
                // export, the alpha mask needs to be inverted
                BitmapEx aBitmapEx = std::move(aReader.read());
                if ( aBitmapEx.IsAlpha())
                {
                    AlphaMask aAlpha = aBitmapEx.GetAlphaMask();
                    aAlpha.Invert();
                    aBitmapEx = BitmapEx(aBitmapEx.GetBitmap(), aAlpha);
                }

                auto aBitmapEmit = createBitmapEmit(aBitmapEx, Graphic(),
                                                    aUsedBitmaps, aResourceDict, aOutputStreams);

                auto nObject = aBitmapEmit.m_aReferenceXObject.getObject();
diff --git a/vcl/source/gdi/pdfwriter_impl2.cxx b/vcl/source/gdi/pdfwriter_impl2.cxx
index 54ff220..cd46a6a 100644
--- a/vcl/source/gdi/pdfwriter_impl2.cxx
+++ b/vcl/source/gdi/pdfwriter_impl2.cxx
@@ -499,8 +499,13 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa

                                AlphaMask aAlpha(xVDev->GetBitmap(Point(), xVDev->GetOutputSizePixel()));
                                AlphaMask aPaintAlpha(aPaint.GetAlphaMask());
                                // The alpha mask is inverted from what
                                // is expected so invert it again
                                // The alpha mask is inverted from what is
                                // expected so invert it again. To test this
                                // code, export to PDF the transparent shapes,
                                // gradients, and images in the documents
                                // attached to the following bug reports:
                                //   https://bugs.documentfoundation.org/show_bug.cgi?id=155912
                                //   https://bugs.documentfoundation.org/show_bug.cgi?id=156630
                                aAlpha.Invert(); // convert to alpha
                                aAlpha.BlendWith(aPaintAlpha);
#if HAVE_FEATURE_SKIA
@@ -763,8 +768,13 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa
                {
                    const MetaBmpExAction*  pA = static_cast<const MetaBmpExAction*>(pAction);

                    // When rendering an image with an alpha mask during PDF
                    // export, the alpha mask needs to be inverted
                    // The alpha mask is inverted from what is
                    // expected so invert it again. To test this
                    // code, export to PDF the transparent shapes,
                    // gradients, and images in the documents
                    // attached to the following bug reports:
                    //   https://bugs.documentfoundation.org/show_bug.cgi?id=155912
                    //   https://bugs.documentfoundation.org/show_bug.cgi?id=156630
                    BitmapEx aBitmapEx( pA->GetBitmapEx() );
                    if ( aBitmapEx.IsAlpha())
                    {
@@ -784,8 +794,13 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa
                {
                    const MetaBmpExScaleAction* pA = static_cast<const MetaBmpExScaleAction*>(pAction);

                    // When rendering an image with an alpha mask during PDF
                    // export, the alpha mask needs to be inverted
                    // The alpha mask is inverted from what is
                    // expected so invert it again. To test this
                    // code, export to PDF the transparent shapes,
                    // gradients, and images in the documents
                    // attached to the following bug reports:
                    //   https://bugs.documentfoundation.org/show_bug.cgi?id=155912
                    //   https://bugs.documentfoundation.org/show_bug.cgi?id=156630
                    BitmapEx aBitmapEx( pA->GetBitmapEx() );
                    if ( aBitmapEx.IsAlpha())
                    {
@@ -803,8 +818,13 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa
                {
                    const MetaBmpExScalePartAction* pA = static_cast<const MetaBmpExScalePartAction*>(pAction);

                    // When rendering an image with an alpha mask during PDF
                    // export, the alpha mask needs to be inverted
                    // The alpha mask is inverted from what is
                    // expected so invert it again. To test this
                    // code, export to PDF the transparent shapes,
                    // gradients, and images in the documents
                    // attached to the following bug reports:
                    //   https://bugs.documentfoundation.org/show_bug.cgi?id=155912
                    //   https://bugs.documentfoundation.org/show_bug.cgi?id=156630
                    BitmapEx aBitmapEx( pA->GetBitmapEx() );
                    if ( aBitmapEx.IsAlpha())
                    {