Commit Graph
1756 Commits
Author SHA1 Message Date
Samuel Mehrbrodt 9fc9e5bc9e tdf#173381 PDF export: Make sure that link contents are always set
Use name, link text or the link itself - depending on what is available.

Change-Id: Iea6654e2aae22d39c031b2cb953c34a5a1ce42ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210458
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@collabora.com>
2026-09-07 08:07:57 +02:00
Xisco Fauli eb0c65a1a1 UnoApiTest: pass PDFium to parsePDFExport as parameter
so we can check if it's not a nullptr at test level

Change-Id: Icfe580b27f3ad4a28b328f0fac8cf93e05c50b54
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210484
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-04 15:32:19 +02:00
Miklos Vajna 4eb008acce pdfium: update to 7988
- fix build against our bundled ICU
- update external/pdfium/extractpatterns.patch to work after the
  upstream commit fc790866bf26d977b2ea3a0c3938bb52895309ea (Consolidate
  CFX_RenderDevice and remove CPDF_WindowsRenderDevice, 2026-06-29), which
  folded CFX_DefaultRenderDevice into CFX_RenderDevice.
- update CppunitTest_vcl_pdfexport2: mostly likely needed after the
  upstream commit 2f7a54a926a1b8e51aff9ac2aca5cccb29920aae (Partially
  fix RTL character and line reading order in CPDF_TextPage, 2026-07-24)
- CppunitTest_vcl_pdfexport: same

Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
Change-Id: I25612e6696a24588b9bf045e666047e6c2955d7c
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8557
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit a7149002917e82ef07250d2e964537118294993a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210417
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-03 15:51:52 +02:00
Andrea Gelmini 0974df2160 Fix typos
Change-Id: Icd5b8ad9f175c85ac1d8df644679fab945c0de0e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210373
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-02 15:33:22 +02:00
Andrea Gelmini 31ad0ae961 Fix typos
Change-Id: Ideff976ff571a2bf0797051de1432ed59a982d85
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210213
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-29 16:19:26 +02:00
Andrea Gelmini c1f805eb9a Fix typos
Change-Id: I84385927a1cac6b9eac2a6b1fdef659336b4c2dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210214
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-29 15:21:49 +02:00
Andrea Gelmini b0483fcff5 Fix typos
Change-Id: I2f0e2e45af1aa91cb5d06271e2c6893e5e2c42f5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210079
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-08-27 14:11:46 +02:00
Jesus Solis 54156526c0 tdf#156931 unit tests for importing JPEG XL images
Change-Id: If664eca6fd5f6b4ec715e87452bcb401301a3058
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208999
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-27 09:55:10 +02:00
Andrea Gelmini b347ac4e58 Fix typos
Change-Id: I636b87d5935fc197dbca9a0af1c738f98f6027ab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209749
Tested-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-25 14:51:04 +02:00
Andrea Gelmini 1bb9c04b05 Fix typos
Change-Id: I6519ca8172ea154dab73810c1e470da6cb3dc101
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209926
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-25 09:11:31 +02:00
Aya Jamal b1e06017de tdf#103680: Rendering fractions using OpenType math constants
Change-Id: Ie409c86fa0899641cfb5bee87e8cb328081e3300
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209116
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-08-24 14:10:19 +02:00
Manish Bera 6f61236fd9 Add drop cap paint tests
Change-Id: Ifc1647aa684a89558646cfb536a046ff9b37131b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209132
Reviewed-by: Jonathan Clark <jonathan@libreoffice.org>
Tested-by: Jenkins
2026-08-21 14:35:27 +02:00
Michael Stahl a3623692c3 vcl: fix PDFEncryptorR6 padding
RFC 8018 / PKCS #5 as referenced in ISO-32000-2:2020 "7.6.3.1 General"
always adds padding.

Signed-off-by: Michael Stahl <michael.stahl@collabora.com>
Change-Id: I2bd783a19a9aaf8276dc4e81cfa26239e1c11a0d
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8626
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit d998d34f568fabd2de918b761f30a1277942aeb4)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209278
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-19 11:31:20 +02:00
Michael Stahl 01de4c0213 vcl: PDFEncryptorR6: fix subtle off-by-one in computeHashR6
The end condition `E.back() > (nRound - 32)` is using the wrong value of
`nRound` and so the loop can end too early.

This has caused a few CI builds to fail after pushing the padding fix,
as the input to `computeHashR6` includes a random IV it happened rarely.

Fix it by counting the iterations of the loop that have been done.

Signed-off-by: Michael Stahl <michael.stahl@collabora.com>
Change-Id: I8bbdc85439789db3753942b1292ba48d39b76541
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8625
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 082e5a49669e2d9058c2b3675c829a495b2044f3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209277
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-19 00:20:39 +02:00
Aya Jamal 46b82d1313 tdf#103680: Add unit tests for SupportsOpenTypeMath & GetOpenTypeMathConstant
Change-Id: Ia079ff0e19417c69a0b93855aeffbdd9d72a3228
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208984
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-08-11 23:26:14 +02:00
Christian Lohmaier 507604d8f7 pdfexport2.cxx: fix type mismatch on 32bit Windows vs 64bit size_t
vcl/qa/cppunit/pdfexport/pdfexport2.cxx(5438): error C2672: 'CppUnit::assertEquals': no matching overloaded function found
workdir/UnpackedTarball/cppunit/include\cppunit/TestAssert.h(161): note: could be 'void CppUnit::assertEquals(const T &,const T &,CppUnit::SourceLine,const std::string &)'
vcl/qa/cppunit/pdfexport/pdfexport2.cxx(5438): note: 'void CppUnit::assertEquals(const T &,const T &,CppUnit::SourceLine,const std::string &)': template parameter 'T' is ambiguous
vcl/qa/cppunit/pdfexport/pdfexport2.cxx(5438): note: could be 'sal_uInt64'
vcl/qa/cppunit/pdfexport/pdfexport2.cxx(5438): note: or       'size_t'
vcl/qa/cppunit/pdfexport/pdfexport2.cxx(5438): note: 'void CppUnit::assertEquals(const T &,const T &,CppUnit::SourceLine,const std::string &)': could not deduce template argument for 'const T &' from 'sal_uInt64'

the aCIDSet.GetSize is a sal_uInt64, but size_t is only 32bit on Windows x86

Change-Id: I9d1f6a99f8badbf1c191abf7ebe3235a6b24917c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209079
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
2026-08-11 17:09:20 +02:00
Khaled Hosny 9061517ef3 vcl: Drop the now unused CFF charset parser
Change-Id: Idd4e33fa413b9a00391b9c1f57c29404bfa6a0aa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208914
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-08-01 15:04:18 +02:00
Khaled Hosny be4a7b0793 tdf#171869: Embed fonts with glyf outlines as composite fonts too
Their subsets were embedded as simple TrueType fonts. Simple TrueType
fonts select glyphs through the cmap table of the subset font, and we
had to give the subset font a fake cmap table that mapped codes to glyph
ID sequentially. This was a gross hack.

Embedding them as CIDFontType2 instead lets the CMap and the CIDToGIDMap
do the mapping, as they now already for fonts with a CFF table. The cmap
table is not needed as all now.

PDFium grows the top of the glyph bounding box by a 64th for composite
fonts but not for simple ones, which makes many tests to now fail. We
now patch that out to keep both kinds of embedding measuring glyphs the
same.

Change-Id: I4d136b0e5d2c63afd56e25a81aec16364e570cca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208839
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-07-31 07:07:11 +02:00
Khaled Hosny f889fe0a21 tdf#171869: Write a CIDSet for composite font subsets in PDF/A-1
PDF/A-1 requires the font descriptor of a subsetted CIDFont to have a
CIDSet listing the CIDs of its font program, and fonts with a CFF table
are now embedded as CIDFont subsets.

PDF/A-2 and PDF/A-3 do not require one, and PDF 2.0 deprecates it.

Change-Id: I34fc883ec5b10b404b48b3b9a5dd816fabb28940
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208835
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-07-31 07:07:02 +02:00
Khaled Hosny be1a60ef33 tdf#171869: Embed CFF fonts in PDF without converting to Type 1
Instead of converting CFF table to a Type 1 font and embedding that, we
now embed the CFF table directly without modification.

This allows us to get rid of the CFF parsing code with its security
issues.

The CFF table is embedded as FontFile3 (/Subtype/CIDFontType0C) stream
of a CIDFontType0.

This is a rework of previous attempt in:

    commit d9a6a3f7f0
    Author: Khaled Hosny <khaled@aliftype.com>
    Date:   Sun Apr 12 18:46:43 2026 +0200

        vcl: embed fonts with CFF table as OpenType fonts

That tried to embed them as full OpenType fonts, which was broken for
CID-keyed fonts and got reverted in:

commit 4c3c87e79d
Author: Khaled Hosny <khaled@aliftype.com>
Date:   Thu Apr 30 02:56:06 2026 +0300

    tdf#171869 vcl: restore Type1 PFB conversion for CFF fonts

Next version of harfbuzz-subset library will have an option to write an
identity charset (GID == CID) for CID-keyed fonts, so embedded as CFF
table will now work equally for both name-keyed and CID-keyed fonts.

As in interim solution (until we can require that version of HarfBuzz),
we now have a small module that parses only the CFF charset to get CID
mapping.

Change-Id: I57b0f722174613b91373c972e0c8eba3efeea5f4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208804
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-07-31 07:06:52 +02:00
Karthik b7b2913bdc tdf#172730: Add a fast scanline paths for premultiplied 32-bit bitmaps
Since BitmapEx was unified into a single premultiplied 32-bit BGRA
Bitmap, converting such a bitmap runs a per-pixel loop that builds a
BitmapColor and dispatches through the `GetPixelFromData` /
`SetPixelOnData`, (un)premultiplying one channel at a time.

Add a fast scanline path for the common case, a premultiplied 32-bit
truecolor bitmap (ABGR/ARGB/BGRA/RGBA). It resolves each channel's
byte offset once and then moves the scanline bytes directly, using the
premultiply / unpremultiply lookup tables.

Signed-off-by: Karthik <karthik.godha@collabora.com>
Change-Id: Ie8ee47055bdffca9e06d48955fdc0b61b34e08ac
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/6752
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 54c68922eaa2d2c4e20e10091ad4911e8d32aed2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208641
Tested-by: Jenkins
2026-07-30 18:08:49 +02:00
Caolán McNamara 778fd158b5 crashtesting: tag a nested table in a repeated header row only once
reproduce by exporting to tagged PDF/UA a document where an outer table
spans more than one page and its repeated header row carries a nested
table.

 #4  SwTaggedPDFHelper::BeginTag (...) at engine/sw/source/core/text/EnhancedPDFExportHelper.cxx:627
 #5  SwTaggedPDFHelper::BeginBlockStructureElements (...) at engine/sw/source/core/text/EnhancedPDFExportHelper.cxx:1827
 #6  SwTaggedPDFHelper::SwTaggedPDFHelper (...) at engine/sw/source/core/text/EnhancedPDFExportHelper.cxx:460
 #7  SwLayoutFrame::PaintSwFrame (...) at engine/sw/source/core/layout/paintfrm.cxx:3659
 #8  SwTabFrame::PaintSwFrame (...) at engine/sw/source/core/layout/paintfrm.cxx:4649

the header row is laid out again on each page, so the nested table gets
a master frame per page. the follow-headline check only looked at the
innermost enclosing table, so a nested table inside an outer table's
headline was not recognised as a repeat and was tagged once per page.

tagging the same frame a second time aborts on the assert that each
frame is tagged only once, so walk every enclosing table and treat the
frame as an artifact when any of them is a repeated follow headline.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I173c229fc46b8fbf7575c6a19293f54431dbe0e9
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/5967
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
(cherry picked from commit 9c31ded970a549fac846ad4f45349c70fde114d4)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208731
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-07-28 14:36:56 +02:00
Andras Timar b2828755fc cool#16022 pass PDF password through to the version downgrade on import
Opening a password-protected PDF that is newer than version 1.6
failed with "loadComponentFromURL returned an empty reference":
the correct password was rejected. Online exports encrypted PDFs
as 1.7 by default, so this hit every password-protected PDF it
produced.

On import a too-new PDF is downgraded to 1.6 by
convertToHighestSupported, which for an encrypted stream has to
decrypt it (saveWithVersion with security removed). That needs
the password, but the Draw import path (SdPdfFilter::Import ->
ImportPDFUnloaded -> createBinaryDataContainer) passed neither
a password nor an interaction handler, so the downgrade bailed
out ("no Int handler for pass"), returned an empty container and
the load failed.

Thread the password already collected during type detection
(medium SID_PASSWORD), plus the interaction handler, from
SdPdfFilter down to convertToHighestSupported and pre-seed its
password loop with it. Passing the known password matters: the
kit treats a second password callback as a wrong-password retry
and aborts, so re-prompting via the handler alone would turn the
correct password into a spurious rejection.

Add a unit test covering ImportPDFUnloaded on an encrypted 1.7 PDF:
it yields no pages without a password and one page with the right one.

Fixes https://github.com/CollaboraOnline/online/issues/16022

Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: I6d605c3495a6af2f1763fda2b8f57a058f70c402
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/7711
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 1f96e3d85a55bc1d6cf437fc96f729b44dbf8ce2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208625
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-27 15:47:20 +02:00
Caolán McNamara 928a715ddf register writer XATTR_FILLBITMAP URLs as SvBaseLinks via SwFormat...
...and SwContentNode

rather than digging around via pool ItemSurrogates for these writer
elements

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I4222cc9aeda1335252f48c4242edfc5fc71a60f0
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3471
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit d8a09afac6108d7ba23b253ed83b564af8a31c55)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208082
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-25 01:47:59 +02:00
Khaled Hosny 0162dbc58c tdf#171737: Improve PDF text extraction a bit
If we decide /AxtualText tags are needed, then the ToUnicode map for the
given glyph is broken and there is no point in keeping it.

Previously we kept it for tools that don’t support /ActualText, but this
seem to actually make things worse for tools that support it. Tools that
don’t support /ActualText are broken and can’t be helped anyway, so we
now drop the ToUnicode mapping in this case.

Change-Id: Ie223dbb24c307398c70099ca2e58c56ec791ae8c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208547
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-07-24 23:44:34 +02:00
Khaled Hosny 199adf1343 vcl: Use HarfBuzz to get font variations on Linux
Read a named instance’s variation coordinates with HarfBuzz in
FreetypeFontFace::GetVariations() instead of FreeType.

This is our last direct use of FreeType, so we can now drop it entirely.

Change-Id: Ia41c7622c45c923208bd028254fe4163b56fe210
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208541
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-07-24 17:03:03 +02:00
Khaled Hosny 73c8a0e52b vcl: Use HarfBuzz to get the font metric
One less source of cross-platform discrepancies.

Change-Id: I19c14e4cde61c5618704b412e569b293c78be7e7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208537
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-07-24 17:02:55 +02:00
Khaled Hosny 931625d10e vcl: Use HarfBuzz to get glyph outlines
One less source of cross-platform discrepancies. Also HarfBuzz is likely
to be more up to date with additions to OpenType spec, so we can get new
features faster.

Change-Id: Icf2e6ad982ca6b7cfd2de574153d48da4dbb7e69
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208536
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-07-24 17:02:46 +02:00
Khaled Hosny 9d6fe8f519 vcl: make GenerateVariableFontPSName() consistent across platforms
Sort axes by fvar order, so the order in the variations list does not
matter. Also filter-out default axis values in
WinFontFace::GetVariations(), so that default instance returns no
variations like other platforms.

This makes text expectations for 3 tests match on Windows now.

Change-Id: I1dcd01a4620376ea6e27e573212f3d6347d454c6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208465
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-07-23 09:29:42 +02:00
Khaled Hosny a89d18c5d0 vcl: Enable testTdf155161 on Windows
It was disabled on Windows from the start, but it passes now thanks to
the recent fixes to Windows font code.

Change-Id: Id6a824955ef70c42d83f4175105eb313d51aa70c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208470
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-07-22 18:53:17 +02:00
Xisco Fauli bab072a4a1 Revert "vcl: Read font data with DirectWrite on Windows"
This reverts commit c223e23aaa.

This also reverts:

Revert "CppunitTest_sw_globalfilter: fix test on Windows"

This reverts commit ac64d1a9eb.

Revert "CppunitTest_sc_pdf_export: fix test on Windows"

This reverts commit 380c2e88a3.

Revert "CppunitTest_vcl_pdfexport: disable test on Windows"

This reverts commit bc1a3afa6e.

Revert "CppunitTest_vcl_pdfexport2: disable test on Windows"

This reverts commit a9b98f039c.

Revert "CppunitTest_sw_core_text: disable test on Windows"

This reverts commit 63584e7f9f.

Some tests in vcl/qa/cppunit/pdfexport/pdfexport.cxx
needed to be adapted

Change-Id: Ib7d8a0e7debdc4bb2241f8e73004fb10810e2db1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208235
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-19 02:06:35 +02:00
Xisco Fauli a9b98f039c CppunitTest_vcl_pdfexport2: disable test on Windows
gerrit_windows_wsl was configure to build with 'make build'
so this failure wasn't caught in time.
Now gerrit_windows_wsl builds with 'make build unitcheck slowcheck'
and it fails with
[_RUN_____] `anonymous namespace'::testTdf144222::TestBody
warn:vcl:5064:1724:vcl/win/window/salframe.cxx:1046: WinSalFrame::SetIcon(): Could not load large icon !
warn:vcl:5064:1724:vcl/win/window/salframe.cxx:1047: WinSalFrame::SetIcon(): Could not load small icon !
*** Exception 0xc0000005 occurred ***

	at _NLG_Return2, address 0x7FFE9FAD0357 in C:\WINDOWS\SYSTEM32\VCRUNTIME140D.dll
	at hb_memcpy in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-algs.hh: line: 1137:
	at hb_array_t<char const >::copy<hb_serialize_context_t,char const ,0> in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-array.hh: line: 346:
	at OT::glyf_impl::SubsetGlyph::serialize in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\OT\glyf\SubsetGlyph.hh: line: 30:
	at OT::glyf::serialize<hb_array_t<OT::glyf_impl::SubsetGlyph const > > in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\OT\glyf\glyf.hh: line: 58:
	at OT::glyf::subset in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\OT\glyf\glyf.hh: line: 130:
	at _hb_subset_table_try<OT::glyf> in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset-table.hh: line: 46:
	at _hb_subset_table<OT::glyf const > in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset-table.hh: line: 168:
	at _hb_subset_table_other in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset-table-other.cc: line: 17:
	at _subset_table in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset.cc: line: 270:
	at hb_subset_plan_execute_or_fail in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset.cc: line: 433:
	at hb_subset_or_fail in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset.cc: line: 359:
	at vcl::font::PhysicalFontFace::CreateFontSubset in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\font\PhysicalFontFace.cxx: line: 573:
	at vcl::PDFWriterImpl::emitFonts in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter_impl.cxx: line: 2093:
	at vcl::PDFWriterImpl::emitResources in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter_impl.cxx: line: 2300:
	at vcl::PDFWriterImpl::emitCatalog in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter_impl.cxx: line: 4254:
	at vcl::PDFWriterImpl::emit in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter_impl.cxx: line: 5392:
	at vcl::pdf::PDFWriter::Emit in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter.cxx: line: 55:
	at PDFExport::Export in E:\jenkins\workspace\gerrit_windows_wsl\filter\source\pdf\pdfexport.cxx: line: 1198:
	at PDFFilter::implExport in E:\jenkins\workspace\gerrit_windows_wsl\filter\source\pdf\pdffilter.cxx: line: 183:
	at PDFFilter::filter in E:\jenkins\workspace\gerrit_windows_wsl\filter\source\pdf\pdffilter.cxx: line: 248:
	at SfxObjectShell::ExportTo in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objstor.cxx: line: 2746:
	at SfxObjectShell::SaveTo_Impl in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objstor.cxx: line: 1861:
	at SfxObjectShell::PreDoSaveAs_Impl in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objstor.cxx: line: 3266:
	at SfxObjectShell::CommonSaveAs_Impl in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objstor.cxx: line: 3054:
	at SfxObjectShell::APISaveAs_Impl in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objserv.cxx: line: 330:
	at SfxBaseModel::impl_store in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\sfxbasemodel.cxx: line: 3247:
	at SfxBaseModel::storeToURL in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\sfxbasemodel.cxx: line: 1830:
	at UnoApiTest::save in E:\jenkins\workspace\gerrit_windows_wsl\test\source\unoapi_test.cxx: line: 376:
	at `anonymous namespace'::testTdf144222::TestBody in E:\jenkins\workspace\gerrit_windows_wsl\vcl\qa\cppunit\pdfexport\pdfexport2.cxx: line: 4584:
	at std::invoke<void (__cdecl `anonymous namespace'::testTdf144222::*&)(void),A0xfeb83449::testTdf144222 * &> in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\type_traits: line: 1686:
	at std::_Invoker_ret<std::_Unforced>::_Call<void (__cdecl `anonymous namespace'::testTdf144222::*&)(void),A0xfeb83449::testTdf144222 * &> in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 2117:
	at std::_Call_binder<std::_Unforced,0,void (__cdecl `anonymous namespace'::testTdf144222::*)(void),std::tuple<`anonymous namespace'::testTdf144222 *>,std::tuple<> > in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 2127:
	at std::_Binder<std::_Unforced,void (__cdecl `anonymous namespace'::testTdf144222::*&)(void),A0xfeb83449::testTdf144222 * &>::operator()<> in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 2181:
	at std::invoke<std::_Binder<std::_Unforced,void (__cdecl `anonymous namespace'::testTdf144222::*&)(void),A0xfeb83449::testTdf144222 * &> &> in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\type_traits: line: 1670:
	at std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void (__cdecl `anonymous namespace'::testTdf144222::*&)(void),A0xfeb83449::testTdf144222 * &>,void>::_Do_call in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 880:
	at std::_Func_class<void>::operator() in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 926:
	at CppUnit::TestCaller<`anonymous namespace'::testTdf144222>::runTest in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\include\cppunit\TestCaller.h: line: 175:
	at CppUnit::TestCaseMethodFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestCase.cpp: line: 33:
	at `anonymous namespace'::Protector::protect in E:\jenkins\workspace\gerrit_windows_wsl\test\source\vclbootstrapprotector.cxx: line: 37:
	at CppUnit::ProtectorChain::ProtectFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 21:
	at `anonymous namespace'::Prot::protect in E:\jenkins\workspace\gerrit_windows_wsl\unotest\source\cpp\unobootstrapprotector\unobootstrapprotector.cxx: line: 79:
	at CppUnit::ProtectorChain::ProtectFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 21:
	at `anonymous namespace'::Prot::protect in E:\jenkins\workspace\gerrit_windows_wsl\unotest\source\cpp\unoexceptionprotector\unoexceptionprotector.cxx: line: 181:
	at CppUnit::ProtectorChain::ProtectFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 21:
	at CppUnit::DefaultProtector::protect in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\DefaultProtector.cpp: line: 15:
	at CppUnit::ProtectorChain::ProtectFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 21:
	at CppUnit::ProtectorChain::protect in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 86:
	at CppUnit::TestResult::protect in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestResult.cpp: line: 184:
	at CppUnit::TestCase::run in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestCase.cpp: line: 91:
	at CppUnit::TestComposite::doRunChildTests in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestComposite.cpp: line: 64:
	at CppUnit::TestComposite::run in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestComposite.cpp: line: 24:
	at CppUnit::TestComposite::doRunChildTests in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestComposite.cpp: line: 64:
	at CppUnit::TestComposite::run in E:\jwarn:svl.items:5064:1724:svl/source/items/style.cxx:55: SfxStyleSheetBase left 23; SfxStyleSheetBasePool left 1
warn:unotools.config:5064:1724:unotools/source/config/configmgr.cxx:147: ConfigManager not empty
enkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestComposite.cpp: line: 24:
	at CppUnit::TestRunner::WrappingSuite::run in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestRunner.cpp: line: 47:
	at CppUnit::TestResult::runTest in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestResult.cpp: line: 152:
	at CppUnit::TestRunner::run in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestRunner.cpp: line: 96:
	at `anonymous namespace'::ProtectedFixtureFunctor::run in E:\jenkins\workspace\gerrit_windows_wsl\sal\cppunittester\cppunittester.cxx: line: 328:
	at main2 in E:\jenkins\workspace\gerrit_windows_wsl\sal\cppunittester\cppunittester.cxx: line: 482:
	at sal_main in E:\jenkins\workspace\gerrit_windows_wsl\sal\cppunittester\cppunittester.cxx: line: 612:
	at main in E:\jenkins\workspace\gerrit_windows_wsl\sal\cppunittester\cppunittester.cxx: line: 602:
	at invoke_main in D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl: line: 79:
	at __scrt_common_main_seh in D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl: line: 288:
	at __scrt_common_main in D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl: line: 331:
	at mainCRTStartup in D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp: line: 17:
	at BaseThreadInitThunk, address 0x7FFEB411E8D7 in C:\WINDOWS\System32\KERNEL32.DLL
	at RtlUserThreadStart, address 0x7FFEB5ACC53C in C:\WINDOWS\SYSTEM32\ntdll.dll

Change-Id: I5452bb65f62e632b7d4d473849830c1d0d45b6c4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208202
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-17 12:50:42 +02:00
Xisco Fauli bc1a3afa6e CppunitTest_vcl_pdfexport: disable test on Windows
gerrit_windows_wsl was configure to build with 'make build'
so this failure wasn't caught in time.
Now gerrit_windows_wsl builds with 'make build unitcheck slowcheck'
and it fails with
[_RUN_____] `anonymous namespace'::testTdf106702::TestBody
warn:sfx.doc:13248:244:sfx2/source/doc/doctemplates.cxx:480: init_Impl(): Could not create root
warn:vcl:13248:244:vcl/win/window/salframe.cxx:1046: WinSalFrame::SetIcon(): Could not load large icon !
warn:vcl:13248:244:vcl/win/window/salframe.cxx:1047: WinSalFrame::SetIcon(): Could not load small icon !
*** Exception 0xc0000005 occurred ***

	at _NLG_Return2, address 0x7FFE7D410357 in C:\WINDOWS\SYSTEM32\VCRUNTIME140D.dll
	at hb_memcpy in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-algs.hh: line: 1137:
	at hb_array_t<char const >::copy<hb_serialize_context_t,char const ,0> in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-array.hh: line: 346:
	at OT::glyf_impl::SubsetGlyph::serialize in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\OT\glyf\SubsetGlyph.hh: line: 30:
	at OT::glyf::serialize<hb_array_t<OT::glyf_impl::SubsetGlyph const > > in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\OT\glyf\glyf.hh: line: 58:
	at OT::glyf::subset in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\OT\glyf\glyf.hh: line: 130:
	at _hb_subset_table_try<OT::glyf> in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset-table.hh: line: 46:
	at _hb_subset_table<OT::glyf const > in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset-table.hh: line: 168:
	at _hb_subset_table_other in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset-table-other.cc: line: 17:
	at _subset_table in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset.cc: line: 270:
	at hb_subset_plan_execute_or_fail in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset.cc: line: 433:
	at hb_subset_or_fail in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\harfbuzz\src\hb-subset.cc: line: 359:
	at vcl::font::PhysicalFontFace::CreateFontSubset in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\font\PhysicalFontFace.cxx: line: 573:
	at vcl::PDFWriterImpl::emitFonts in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter_impl.cxx: line: 2093:
	at vcl::PDFWriterImpl::emitResources in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter_impl.cxx: line: 2300:
	at vcl::PDFWriterImpl::emitCatalog in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter_impl.cxx: line: 4254:
	at vcl::PDFWriterImpl::emit in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter_impl.cxx: line: 5392:
	at vcl::pdf::PDFWriter::Emit in E:\jenkins\workspace\gerrit_windows_wsl\vcl\source\pdf\pdfwriter.cxx: line: 55:
	at PDFExport::Export in E:\jenkins\workspace\gerrit_windows_wsl\filter\source\pdf\pdfexport.cxx: line: 1198:
	at PDFFilter::implExport in E:\jenkins\workspace\gerrit_windows_wsl\filter\source\pdf\pdffilter.cxx: line: 183:
	at PDFFilter::filter in E:\jenkins\workspace\gerrit_windows_wsl\filter\source\pdf\pdffilter.cxx: line: 248:
	at SfxObjectShell::ExportTo in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objstor.cxx: line: 2746:
	at SfxObjectShell::SaveTo_Impl in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objstor.cxx: line: 1861:
	at SfxObjectShell::PreDoSaveAs_Impl in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objstor.cxx: line: 3266:
	at SfxObjectShell::CommonSaveAs_Impl in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objstor.cxx: line: 3054:
	at SfxObjectShell::APISaveAs_Impl in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\objserv.cxx: line: 330:
	at SfxBaseModel::impl_store in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\sfxbasemodel.cxx: line: 3247:
	at SfxBaseModel::storeToURL in E:\jenkins\workspace\gerrit_windows_wsl\sfx2\source\doc\sfxbasemodel.cxx: line: 1830:
	at UnoApiTest::save in E:\jenkins\workspace\gerrit_windows_wsl\test\source\unoapi_test.cxx: line: 376:
	at `anonymous namespace'::testTdf106702::TestBody in E:\jenkins\workspace\gerrit_windows_wsl\vcl\qa\cppunit\pdfexport\pdfexport.cxx: line: 2284:
	at std::invoke<void (__cdecl `anonymous namespace'::testTdf106702::*&)(void),A0xeeec7064::testTdf106702 * &> in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\type_traits: line: 1686:
	at std::_Invoker_ret<std::_Unforced>::_Call<void (__cdecl `anonymous namespace'::testTdf106702::*&)(void),A0xeeec7064::testTdf106702 * &> in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 2117:
	at std::_Call_binder<std::_Unforced,0,void (__cdecl `anonymous namespace'::testTdf106702::*)(void),std::tuple<`anonymous namespace'::testTdf106702 *>,std::tuple<> > in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 2127:
	at std::_Binder<std::_Unforced,void (__cdecl `anonymous namespace'::testTdf106702::*&)(void),A0xeeec7064::testTdf106702 * &>::operator()<> in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 2181:
	at std::invoke<std::_Binder<std::_Unforced,void (__cdecl `anonymous namespace'::testTdf106702::*&)(void),A0xeeec7064::testTdf106702 * &> &> in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\type_traits: line: 1670:
	at std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void (__cdecl `anonymous namespace'::testTdf106702::*&)(void),A0xeeec7064::testTdf106702 * &>,void>::_Do_call in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 880:
	at std::_Func_class<void>::operator() in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\functional: line: 926:
	at CppUnit::TestCaller<`anonymous namespace'::testTdf106702>::runTest in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\include\cppunit\TestCaller.h: line: 175:
	at CppUnit::TestCaseMethodFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestCase.cpp: line: 33:
	at `anonymous namespace'::Protector::protect in E:\jenkins\workspace\gerrit_windows_wsl\test\source\vclbootstrapprotector.cxx: line: 37:
	at CppUnit::ProtectorChain::ProtectFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 21:
	at `anonymous namespace'::Prot::protect in E:\jenkins\workspace\gerrit_windows_wsl\unotest\source\cpp\unobootstrapprotector\unobootstrapprotector.cxx: line: 79:
	at CppUnit::ProtectorChain::ProtectFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 21:
	at `anonymous namespace'::Prot::protect in E:\jenkins\workspace\gerrit_windows_wsl\unotest\source\cpp\unoexceptionprotector\unoexceptionprotector.cxx: line: 181:
	at CppUnit::ProtectorChain::ProtectFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 21:
	at CppUnit::DefaultProtector::protect in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\DefaultProtector.cpp: line: 15:
	at CppUnit::ProtectorChain::ProtectFunctor::operator() in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 21:
	at CppUnit::ProtectorChain::protect in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\ProtectorChain.cpp: line: 86:
	at CppUnit::TestResult::protect in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestResult.cpp: line: 184:
	at CppUnit::TestCase::run in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestCase.cpp: line: 91:
	at CppUnit::TestComposite::doRunChildTests in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestComposite.cpp: line: 64:
	at CppUnit::TestComposite::run in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestComposite.cpp: line: 24:
	at CppUnit::TestComposite::doRunChildTests in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestComposite.cpp: line: 64:
	at CppUnit::TestComposite::run in E:\jewarn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:legacy.osl:13248:244:sw/source/core/layout/newfrm.cxx:315: Who didn't deregister?
warn:sal.osl:13248:244:sal/osl/all/debugbase.cxx:106: unexpected number of class SvxUnoTextRangeBase: 2; Expected: 0
warn:svl.items:13248:244:svl/source/items/style.cxx:55: SfxStyleSheetBase left 1; SfxStyleSheetBasePool left 2
warn:unotools.config:13248:244:unotools/source/config/configmgr.cxx:147: ConfigManager not empty
nkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestComposite.cpp: line: 24:
	at CppUnit::TestRunner::WrappingSuite::run in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestRunner.cpp: line: 47:
	at CppUnit::TestResult::runTest in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestResult.cpp: line: 152:
	at CppUnit::TestRunner::run in E:\jenkins\workspace\gerrit_windows_wsl\workdir\UnpackedTarball\cppunit\src\cppunit\TestRunner.cpp: line: 96:
	at `anonymous namespace'::ProtectedFixtureFunctor::run in E:\jenkins\workspace\gerrit_windows_wsl\sal\cppunittester\cppunittester.cxx: line: 328:
	at main2 in E:\jenkins\workspace\gerrit_windows_wsl\sal\cppunittester\cppunittester.cxx: line: 482:
	at sal_main in E:\jenkins\workspace\gerrit_windows_wsl\sal\cppunittester\cppunittester.cxx: line: 612:
	at main in E:\jenkins\workspace\gerrit_windows_wsl\sal\cppunittester\cppunittester.cxx: line: 602:
	at invoke_main in D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl: line: 79:
	at __scrt_common_main_seh in D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl: line: 288:
	at __scrt_common_main in D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl: line: 331:
	at mainCRTStartup in D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp: line: 17:
	at BaseThreadInitThunk, address 0x7FFE8F63E8D7 in C:\WINDOWS\System32\KERNEL32.DLL
	at RtlUserThreadStart, address 0x7FFE90A8C53C in C:\WINDOWS\SYSTEM32\ntdll.dll

Change-Id: Idac749da0d53abc3187943f73cb737c827e662d6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208201
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-17 12:50:28 +02:00
Christopher Sherlock 9a3ad0812d vcl: simplify B2DPolygon scaling and fix asymmetric DPI issues
Simplifies OutputDevice::ImplLogicToDevicePixel for B2DPolygons by
delegating coordinate transformation to the CoordinateMapper. By using
LogicToDevicePixelX and LogicToDevicePixelY, we eliminate redundant
if/else branching and ensure that window and pixel offsets are
consistently applied across both axes.

This refactoring also addresses systemic X/Y scaling mix-ups where the
horizontal scaler was being used for vertical coordinates, a bug
identified through failures in PDF export integration tests.

Changes:
* Simplified B2DPolygon transformation loop in map.cxx.
* Removed private visibility (SAL_DLLPRIVATE) from the B2DPolyPolygon
  overload of LogicToPixel to allow for external unit testing.
* Added a new unit test fixture 'testB2DPolygonAsymmetricDPI' in
  vclmaptest.cxx to verify scaling accuracy on asymmetric displays
  (e.g., 100x200 DPI) and prevent future axis-specific regressions.

Change-Id: I718df9af8e5d8b2a446be74223047bdaa20ed148
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207555
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
2026-07-16 13:47:42 +02:00
Khaled Hosny ef3c39851d vcl: Rename Font::Set/GetAverageFontWidth to Set/GetFontWidth
It is a misnomer now, so return to the original name.

Also drop the redundant private Font::GetAverageFontSize().

Change-Id: I67495fa675091b459a4e90ac09665489cc61fdd9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207991
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-07-14 00:16:59 +02:00
Khaled Hosny aa1e992c23 vcl: Scale stretched fonts relative to the height on Windows
The font width used to mean the average character width on Windows,
like GDI’s LOGFONT lfWidth. This complicates things cross-platform, and
also DirectWrite does not expose such info.

Drop the whole average character width nonsense and align Windows to
other platforms, keeping the already existing cross-platforms
workarounds for EMF/WMF that are now applied also to Windows.

Change-Id: I750d42ad090bb9d0f776e80609b7a67b8ac38aac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207990
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-07-14 00:16:49 +02:00
Khaled Hosny b0205de279 tdf#172647: Enumerate fonts with DirectWrite on Windows
GDI supports only legacy R/B/I/BI families, and any extended family or
variable font instances are split into R/B/I/BI-compatible families.

Switch to the modern DirectWrite API that does not have this limitation
and now matches the other two font backends.

This is a limited change to use DirectWrite only for font enumeration
and each face keeps the LOGFONT that GDI selects it with, so font
selection and rendering are unaffected.

Change-Id: I459c99f83e7972f3caf6f3298ab089b4f43d8e0c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207742
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-07-14 00:16:20 +02:00
Khaled Hosny 2ce2aafc65 tdf#172647: Resolve and match fonts by their typographic names
Identify a font by its typographic family (name ID 16) and subfamily
(name ID 17), falling back to legacy names (name ID 1 and 2), so we can
interoperate with systems that use legacy names, while using typographic
names internally.

Change-Id: Ie51c8c14fe91e7e314d9a4b4808485ea4483b524
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207546
Tested-by: Khaled Hosny <khaled@libreoffice.org>
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-07-14 00:14:34 +02:00
Neil Roberts 64df8d7617 tdf#172670 TreeView: Make iter_n_children return 0 with children on demand
On at least the GTK and gen plugins, iter_n_children was returning 1
when the node has children on demand but then iter_children will return
false in order to ignore the dummy node. This was causing an infinite
recursion when iter_previous is called and the previous node has
on-demand children because that uses the result of iter_n_children to
determine if the node has children and then uses iter_children to move
to a child node without checking the return value. That meant the
iterator wouldn’t move and it would keep searching from the same place
forever.

This patch fixes it by making iter_n_children non-virtual and making it
bail out early with 0 if the node has children on demand. Otherwise it
will ask the backend via a virtual function which has been renamed to
do_iter_n_children so that it is similar to how do_iter_children works.

Change-Id: Ie9a3d5d51c9eae0789048fa5240441663642595d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207589
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-07-08 09:48:49 +02:00
Christopher Sherlock 90951d958c vcl: rename X-axis origin methods to Get/SetDeviceOriginX
Rename GetOutOffXPixel() and SetOutOffXPixel() to GetDeviceOriginX()
and SetDeviceOriginX() across OutputDevice, Window, and CoordinateMapper.

The legacy "OutOff" naming convention obscured the difference between
system-level window positioning offsets and internal content scrolling
(SetPixelOffset). The new nomenclature explicitly communicates that
these metrics strictly govern the device coordinate space origin.

This patch focuses strictly on the X-axis coordinate reads and cleans
up duplicated formatting signatures inside the CoordinateMapper header.

Impacted modules:
* include/vcl: Update public declarations in outdev.hxx and window.hxx.
* vcl/inc: Clean up CoordinateMapper.hxx whitespace and scaling hooks.
* Global: Patch dependent pixel coordinate reads across desktop, editeng,
  sc, sfx2, svx, and vcl.

Change-Id: I546e1d255887e3b280ff15caca2e27ef10de52d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206509
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
2026-07-07 14:14:50 +02:00
Justin Luth 83303053d7 tdf#172169 sw ms import: line portion IsUsedToCalcLineSpacingHeight
Most of this patch is just No-Functional-Change cleanup/renaming.
The only change is the new function IsUsedToCalcLineSpacingHeight.

This fixes (only for non-ODF formats and new documents)
a LO 7.1 regression from
commit d336e6c260
which caused intra-paragraph line-spacing calculations
to ignore the size of most non-plain-text content.

Specifically broken for both ODT and Microsoft formats
were things like fields, content controls, and FieldMarkCheckboxes.

But that 'regression' also had some 'good' results.
Things that it accidentally fixed (in terms of Microsoft interop)
were Tabstops, Hidden text, and Footnote/Endnote markers.

P.S. No attempt was made to 'fix' regressed ODT files.

SAFETY FACTOR: Very safe
It fixes MS formats - and doesn't affect previous ODT files.

make CppunitTest_sw_ooxmlexport25 \
    CPPUNIT_TEST_NAME=testTdf172169_intraLinespacing

The VCL test is hit because the .fodt has no config:config-item,
so it picks up the new default.
This is a reference field with 1.15 line spacing and 96pt font.
make CppunitTest_vcl_pdfexport CPPUNIT_TEST_NAME=testTdf142806

Change-Id: I24cb1af505550b47fae8e7b61b3345f0346da52d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205456
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2026-06-27 01:30:42 +02:00
Khaled Hosny 0cac02101f tdf#152396: Simplify PhysicalFontFace::IsBetterMatch()
With the splitting of maTargetName gone in the previous commit, we can
pass FontSelectPattern directly to PhysicalFontFace::IsBetterMatch() and
simplify the code.

Change-Id: I6bc27cb69c44bba4317ddd184a27607629ed0fe7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207321
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-06-26 09:33:09 +02:00
Khaled Hosny 216cb7fd36 tdf#152396: Select the font face by the requested style name
FindBestFontFace derived its target style by splitting the "FamilyName
StyleName" search string and ignored the style name the request already
carries, so width styles like "Condensed" was never used to pick the
face. We have the style name, so lets use it.

FindBestFontFace is exported so it can be used in unit tests.

Change-Id: I656b6b268391e454a2b8c54891d6fde29b71b7fb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207320
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-06-26 09:33:01 +02:00
Khaled Hosny 723ee19c9c tdf#152396: Make font width matching request-aware
Matching always preferred normal/semi widths and ignored the requested
width, so a condensed or expanded request could not pick the matching
face. Score by closeness to the requested width instead.

If no width is requested, the previous behaviour is kept.

Change-Id: I140d4b480fc5b0ef9af0b21a58ebd20a94eee3c7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207319
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-06-26 09:32:52 +02:00
Khaled Hosny 0291262da0 tdf#152396: Let font width participate in font identity
Font::GetFontAttributes hard-coded WIDTH_DONTKNOW, and the FontSelectPattern
hash and equality ignored width, so two fonts differing only in width
compared equal.

Change-Id: If1e511cefea1876df64c368dc17feda3103252b9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207294
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-06-26 09:32:38 +02:00
Tomaž Vajngerl 4b445e5a0c vcl: make WebP images native
The WebP filter only attached a NativeWebp GfxLink when running
unit tests, so older readers would not get .webp images in saved
ODT files. WebP is widely supported now, so drop the gate. The
native bytes survive import and export writes the picture back as
.webp instead of re-encoding it to PNG.

Tests: testLoadWEBP now also checks the imported Graphic carries
a NativeWebp GfxLink. testWebpImageRoundtrip inserts a WebP into
a Writer document, saves as ODT and reloads, then checks the
picture is stored as .webp with no .png fallback and that the
reloaded graphic reports image/webp and keeps its NativeWebp
GfxLink.

Signed-off-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Change-Id: I7874a121ce414da2ff37444a5e725771daf7d79e
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/4748
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
(cherry picked from commit b10e1a22c7c1f8b9d9053dd938a117d763e89588)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206996
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-22 16:04:24 +02:00
Andras Timar af0be53ef9 vcl: fix CairoCommon::drawMask byte order for ENABLE_CAIRO_RGBA builds
The mask-pixel write used hardcoded BGRA offsets (data[0]=Blue,
data[2]=Red), which is wrong when SVP_CAIRO_FORMAT is N32BitTcRgba (as
in the CPLinux-LOKit config with --enable-cairo-rgba). The result was
that mask colors came back with R and B swapped, e.g. COL_LIGHTBLUE
rendered as red.

Use the SVP_CAIRO_* indices so the write tracks the surface byte order,
matching the read above. Drop the !ENABLE_CAIRO_RGBA guard from
testDrawMask24bpp that was papering over this bug.

Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: Ie3153e4e4e4634a00e837c27050d07c69b30f5de
(cherry picked from commit b454754b72ed3153c88565965474a93efc12291b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207024
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-06-20 14:20:21 +02:00
Miklos Vajna 619b0b8339 pdfium: update to 7795
Upstream now has a theoretical build config where the rendering is
handled via skia and not agg; use -DPDF_USE_AGG to keep things
unchanged.

Also it now depends on harfbuzz, use our harfbuzz instead of the bundled
one.

This reverts the:
- vcl/qa/cppunit/VectorGraphicSearchTest.cxx
- vcl/qa/cppunit/PDFiumLibraryTest.cxx
- sw/qa/extras/uiwriter/uiwriter11.cxx
- sc/qa/extras/scpdfexport.cxx
- sd/qa/unit/export-tests.cxx
parts of commit 4731284939ce286316738d1fced7f16e9b91028b (pdfium: update
to 7691, 2026-02-19), since they are not necessary, probably after
pdfium.git commit 4a298961558e1e54fde965d133d61f90df2431bc (Revert
"Reland "Remove character width check from cpdf_textpage.cpp"",
2026-03-10).

Change-Id: I9c62dc5251aa91a1178c32ca9e5f440269b6071f
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/1131
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1173
Reviewed-by: Andras Timar <andras.timar@collabora.com>
(cherry picked from commit 06d0ffcd63f1cb3133a7920e116bd5a88f6cc714)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207006
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-19 16:47:18 +02:00
alohapeakina 8162048246 tdf#168520 rename testTdf136171 to more descriptive name
Change-Id: I8798fa822254d0318f0a3f3f60b136f3d34fe587
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206607
Tested-by: Jenkins
Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2026-06-16 15:18:25 +02:00
Jonathan Clark 943c5248c7 tdf#146572 sw: Fix extra spaces at the end of wrapped bidi portions
Regression due to the following commit:

 commit 93d7bdcb85
 Author: Bartosz Kosiorek <gang65@o2.pl>
 Date:   Mon May 2 14:59:26 2011 +0200

     fdo#33167, i#20878: Show spaces at the end of line

     The spaces weren't shown at the end of lines when viewing the document
     with the non-printing characters. This helps editing the spaces after a
     line in left aligned paragraphs.

This change effectively reverts what is still left of that commit in the
Writer code. It was likely useful at some point, but in testing it no
longer seems to have any user-facing effect other than causing tdf#146572.

As a side effect of this change, certain left-aligned LTR lines that
wrapped at spaces will now end with a hole portion. A number of tests
had to be updated to account for this extra portion.

Change-Id: Ia3cf2beae45f6dbe429ef9305de98b9ab99f59e0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206258
Tested-by: Jenkins
Reviewed-by: Jonathan Clark <jonathan@libreoffice.org>
2026-06-09 17:31:58 +02:00