diff --git a/.gitignore b/.gitignore index 3cdc329..e419b09 100644 --- a/.gitignore +++ b/.gitignore @@ -5,9 +5,9 @@ /185d60944ea767075d27247c3162b3bc-unowinreg.dll /49a64f3bcf20a7909ba2751349231d6652ded9cd2840e961b5164d09de3ffa63-opens___.ttf /libreoffice-multiliblauncher.sh -/libreoffice-6.2.5.2.tar.xz -/libreoffice-6.2.5.2.tar.xz.asc -/libreoffice-help-6.2.5.2.tar.xz -/libreoffice-help-6.2.5.2.tar.xz.asc -/libreoffice-translations-6.2.5.2.tar.xz -/libreoffice-translations-6.2.5.2.tar.xz.asc +/libreoffice-6.3.0.1.tar.xz +/libreoffice-6.3.0.1.tar.xz.asc +/libreoffice-help-6.3.0.1.tar.xz +/libreoffice-help-6.3.0.1.tar.xz.asc +/libreoffice-translations-6.3.0.1.tar.xz +/libreoffice-translations-6.3.0.1.tar.xz.asc diff --git a/0001-Adapt-to-upcoming-Python-3.8.patch b/0001-Adapt-to-upcoming-Python-3.8.patch deleted file mode 100644 index f3ad825..0000000 --- a/0001-Adapt-to-upcoming-Python-3.8.patch +++ /dev/null @@ -1,179 +0,0 @@ -From 6330ded7e48442f351a79d61b9439b30a2c8c24f Mon Sep 17 00:00:00 2001 -From: Stephan Bergmann -Date: Fri, 7 Jun 2019 15:57:13 +0200 -Subject: [PATCH] Adapt to upcoming Python 3.8 - -...which changed PyTypeObject in "bpo-36974: implement PEP 590 -(GH-13185)". - -Change-Id: I687ec38aeda05d0747b9ed08221db75a758bed51 ---- - pyuno/source/module/pyuno.cxx | 9 ++++++++- - pyuno/source/module/pyuno_callable.cxx | 9 ++++++++- - pyuno/source/module/pyuno_iterator.cxx | 18 ++++++++++++++++-- - pyuno/source/module/pyuno_runtime.cxx | 9 ++++++++- - pyuno/source/module/pyuno_struct.cxx | 9 ++++++++- - 5 files changed, 48 insertions(+), 6 deletions(-) - -diff --git a/pyuno/source/module/pyuno.cxx b/pyuno/source/module/pyuno.cxx -index f5f23bf058fa..e59319030eb8 100644 ---- a/pyuno/source/module/pyuno.cxx -+++ b/pyuno/source/module/pyuno.cxx -@@ -1636,7 +1636,11 @@ static PyTypeObject PyUNOType = - sizeof (PyUNO), - 0, - PyUNO_del, -- nullptr, -+#if PY_VERSION_HEX >= 0x03080000 -+ 0, // Py_ssize_t tp_vectorcall_offset -+#else -+ nullptr, // printfunc tp_print -+#endif - PyUNO_getattr, - PyUNO_setattr, - /* this type does not exist in Python 3: (cmpfunc) */ nullptr, -@@ -1680,6 +1684,9 @@ static PyTypeObject PyUNOType = - , 0 - #if PY_VERSION_HEX >= 0x03040000 - , nullptr -+#if PY_VERSION_HEX >= 0x03080000 -+ , nullptr // vectorcallfunc tp_vectorcall -+#endif - #endif - }; - -diff --git a/pyuno/source/module/pyuno_callable.cxx b/pyuno/source/module/pyuno_callable.cxx -index 6519d20734c9..656d1c84cb0e 100644 ---- a/pyuno/source/module/pyuno_callable.cxx -+++ b/pyuno/source/module/pyuno_callable.cxx -@@ -181,7 +181,11 @@ static PyTypeObject PyUNO_callable_Type = - sizeof (PyUNO_callable), - 0, - ::pyuno::PyUNO_callable_del, -- nullptr, -+#if PY_VERSION_HEX >= 0x03080000 -+ 0, // Py_ssize_t tp_vectorcall_offset -+#else -+ nullptr, // printfunc tp_print -+#endif - nullptr, - nullptr, - nullptr, -@@ -225,6 +229,9 @@ static PyTypeObject PyUNO_callable_Type = - , 0 - #if PY_VERSION_HEX >= 0x03040000 - , nullptr -+#if PY_VERSION_HEX >= 0x03080000 -+ , nullptr // vectorcallfunc tp_vectorcall -+#endif - #endif - }; - -diff --git a/pyuno/source/module/pyuno_iterator.cxx b/pyuno/source/module/pyuno_iterator.cxx -index 5f643c13b67e..a7862857d719 100644 ---- a/pyuno/source/module/pyuno_iterator.cxx -+++ b/pyuno/source/module/pyuno_iterator.cxx -@@ -118,7 +118,11 @@ static PyTypeObject PyUNO_iterator_Type = - sizeof (PyUNO_iterator), - 0, - PyUNO_iterator_del, -- nullptr, -+#if PY_VERSION_HEX >= 0x03080000 -+ 0, // Py_ssize_t tp_vectorcall_offset -+#else -+ nullptr, // printfunc tp_print -+#endif - nullptr, - nullptr, - nullptr, -@@ -162,6 +166,9 @@ static PyTypeObject PyUNO_iterator_Type = - 0 - #if PY_VERSION_HEX >= 0x03040000 - , nullptr -+#if PY_VERSION_HEX >= 0x03080000 -+ , nullptr // vectorcallfunc tp_vectorcall -+#endif - #endif - }; - -@@ -248,7 +255,11 @@ static PyTypeObject PyUNO_list_iterator_Type = - sizeof (PyUNO_list_iterator), - 0, - PyUNO_list_iterator_del, -- nullptr, -+#if PY_VERSION_HEX >= 0x03080000 -+ 0, // Py_ssize_t tp_vectorcall_offset -+#else -+ nullptr, // printfunc tp_print -+#endif - nullptr, - nullptr, - nullptr, -@@ -292,6 +303,9 @@ static PyTypeObject PyUNO_list_iterator_Type = - 0 - #if PY_VERSION_HEX >= 0x03040000 - , nullptr -+#if PY_VERSION_HEX >= 0x03080000 -+ , nullptr // vectorcallfunc tp_vectorcall -+#endif - #endif - }; - -diff --git a/pyuno/source/module/pyuno_runtime.cxx b/pyuno/source/module/pyuno_runtime.cxx -index 9887c1fbc828..d307f9af363c 100644 ---- a/pyuno/source/module/pyuno_runtime.cxx -+++ b/pyuno/source/module/pyuno_runtime.cxx -@@ -75,7 +75,11 @@ static PyTypeObject RuntimeImpl_Type = - sizeof (RuntimeImpl), - 0, - RuntimeImpl::del, -- nullptr, -+#if PY_VERSION_HEX >= 0x03080000 -+ 0, // Py_ssize_t tp_vectorcall_offset -+#else -+ nullptr, // printfunc tp_print -+#endif - nullptr, - nullptr, - nullptr, -@@ -119,6 +123,9 @@ static PyTypeObject RuntimeImpl_Type = - , 0 - #if PY_VERSION_HEX >= 0x03040000 - , nullptr -+#if PY_VERSION_HEX >= 0x03080000 -+ , nullptr // vectorcallfunc tp_vectorcall -+#endif - #endif - }; - -diff --git a/pyuno/source/module/pyuno_struct.cxx b/pyuno/source/module/pyuno_struct.cxx -index 7088fc346145..9ad9439318ce 100644 ---- a/pyuno/source/module/pyuno_struct.cxx -+++ b/pyuno/source/module/pyuno_struct.cxx -@@ -296,7 +296,11 @@ static PyTypeObject PyUNOStructType = - sizeof (PyUNO), - 0, - PyUNOStruct_del, -- nullptr, -+#if PY_VERSION_HEX >= 0x03080000 -+ 0, // Py_ssize_t tp_vectorcall_offset -+#else -+ nullptr, // printfunc tp_print -+#endif - PyUNOStruct_getattr, - PyUNOStruct_setattr, - /* this type does not exist in Python 3: (cmpfunc) */ nullptr, -@@ -340,6 +344,9 @@ static PyTypeObject PyUNOStructType = - , 0 - #if PY_VERSION_HEX >= 0x03040000 - , nullptr -+#if PY_VERSION_HEX >= 0x03080000 -+ , nullptr // vectorcallfunc tp_vectorcall -+#endif - #endif - }; - --- -2.21.0 - diff --git a/0001-Related-rhbz-1718063-look-for-pkg-config-python-vers.patch b/0001-Related-rhbz-1718063-look-for-pkg-config-python-vers.patch deleted file mode 100644 index 664cc6c..0000000 --- a/0001-Related-rhbz-1718063-look-for-pkg-config-python-vers.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 8c9cd3856067b8cbac26cb6228b2fce786001a3c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Mon, 10 Jun 2019 20:11:48 +0100 -Subject: [PATCH] Related: rhbz#1718063 look for pkg-config - python-version-embed - -Change-Id: I7048171501e32d29f9d5a58f0d5fc0b96b318a4e ---- - configure.ac | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/configure.ac b/configure.ac -index e14d3b4f4d45..fa58f9ff3591 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -8462,6 +8462,9 @@ if test $enable_python = system; then - if test -z "$PKG_CONFIG"; then - PYTHON_CFLAGS="-I$python_include" - PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs" -+ elif $PKG_CONFIG --exists python-$python_version-embed; then -+ PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`" -+ PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs" - elif $PKG_CONFIG --exists python-$python_version; then - PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`" - PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs" --- -2.21.0 - diff --git a/0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch b/0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch deleted file mode 100644 index d17e9c0..0000000 --- a/0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch +++ /dev/null @@ -1,26 +0,0 @@ -From b54cfe9d3d22fdd40f7015bd343df8620c983779 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Mon, 27 Mar 2017 11:47:01 +0100 -Subject: [PATCH] Resolves: rhbz#1432468 disable opencl by default - -Change-Id: Ie037fcabdd219f195425979dd721501fb5527573 ---- - officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs -index 946bd32..284d694 100644 ---- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs -+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs -@@ -5670,7 +5670,7 @@ - Determines whether OpenCL can be used, when available, to speed up - some operations. - -- true -+ false - - - --- -2.9.3 - diff --git a/0001-Resolves-rhbz-1712823-prefer-help-strings-to-a11y-st.patch b/0001-Resolves-rhbz-1712823-prefer-help-strings-to-a11y-st.patch deleted file mode 100644 index 3da687a..0000000 --- a/0001-Resolves-rhbz-1712823-prefer-help-strings-to-a11y-st.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 623ad17227406b30e53436046831c43f160a6486 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Fri, 29 Mar 2019 15:23:28 +0000 -Subject: [PATCH] Resolves: rhbz#1712823 prefer help strings to a11y strings - when available -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Reviewed-on: https://gerrit.libreoffice.org/69934 -Tested-by: Jenkins -Reviewed-by: Caolán McNamara -Tested-by: Caolán McNamara -(cherry picked from commit b70053ba681a9b62afd6fa700ad94256d98d8dc7) - -Change-Id: I50b36f697b8dd9ff8108392d48a7050702edbfbe ---- - vcl/unx/gtk3/gtk3gtkinst.cxx | 29 ++++++++++++++++++----------- - 1 file changed, 18 insertions(+), 11 deletions(-) - -diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx -index a69e4df05806..5123db7c9f2e 100644 ---- a/vcl/unx/gtk3/gtk3gtkinst.cxx -+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx -@@ -6514,6 +6514,13 @@ public: - return OUString(pStr, pStr ? strlen(pStr) : 0, RTL_TEXTENCODING_UTF8); - } - -+ virtual OUString get_accessible_description() const override -+ { -+ AtkObject* pAtkObject = default_drawing_area_get_accessible(m_pWidget); -+ const char* pStr = pAtkObject ? atk_object_get_description(pAtkObject) : nullptr; -+ return OUString(pStr, pStr ? strlen(pStr) : 0, RTL_TEXTENCODING_UTF8); -+ } -+ - virtual ~GtkInstanceDrawingArea() override - { - g_object_steal_data(G_OBJECT(m_pDrawingArea), "g-lo-GtkInstanceDrawingArea"); -@@ -7579,16 +7586,7 @@ namespace - const ImplSVData* pSVData = ImplGetSVData(); - if (pSVData->maHelpData.mbBalloonHelp) - { -- /*This is how I would prefer things to be, only a few like this though*/ -- AtkObject* pAtkObject = gtk_widget_get_accessible(pWidget); -- const char* pDesc = pAtkObject ? atk_object_get_description(pAtkObject) : nullptr; -- if (pDesc) -- { -- gtk_tooltip_set_text(tooltip, pDesc); -- return true; -- } -- -- /*So fallback to existing mechanism which needs help installed*/ -+ /*Current mechanism which needs help installed*/ - OString sHelpId = ::get_help_id(pWidget); - Help* pHelp = !sHelpId.isEmpty() ? Application::GetHelp() : nullptr; - if (pHelp) -@@ -7600,10 +7598,19 @@ namespace - return true; - } - } -+ -+ /*This is how I would prefer things to be, only a few like this though*/ -+ AtkObject* pAtkObject = gtk_widget_get_accessible(pWidget); -+ const char* pDesc = pAtkObject ? atk_object_get_description(pAtkObject) : nullptr; -+ if (pDesc && pDesc[0]) -+ { -+ gtk_tooltip_set_text(tooltip, pDesc); -+ return true; -+ } - } - - const char* pDesc = gtk_widget_get_tooltip_text(pWidget); -- if (pDesc) -+ if (pDesc && pDesc[0]) - { - gtk_tooltip_set_text(tooltip, pDesc); - return true; --- -2.21.0 - diff --git a/0001-Resolves-rhbz-1713827-protect-against-null-ViewShell.patch b/0001-Resolves-rhbz-1713827-protect-against-null-ViewShell.patch deleted file mode 100644 index 1564563..0000000 --- a/0001-Resolves-rhbz-1713827-protect-against-null-ViewShell.patch +++ /dev/null @@ -1,84 +0,0 @@ -From ffab9dc94dd82e71586e999175fe5172504df443 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Sun, 26 May 2019 14:18:03 +0100 -Subject: [PATCH] Resolves: rhbz#1713827 protect against null ViewShell - -like SfxHintId::ScAccCursorChanged does - -Change-Id: I75ab2da866a345d817e39536ac966d3edf24b90a ---- - .../Accessibility/AccessibleSpreadsheet.cxx | 55 ++++++++++--------- - 1 file changed, 29 insertions(+), 26 deletions(-) - -diff --git a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx -index 269379812e6f..adbf5d041d0d 100644 ---- a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx -+++ b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx -@@ -651,35 +651,38 @@ void ScAccessibleSpreadsheet::Notify( SfxBroadcaster& rBC, const SfxHint& rHint - CommitTableModelChange(maRange.aStart.Row(), maRange.aStart.Col(), maRange.aEnd.Row(), maRange.aEnd.Col(), AccessibleTableModelChangeType::UPDATE); - else - mbDelIns = false; -- ScViewData& rViewData = mpViewShell->GetViewData(); -- ScAddress aNewCell = rViewData.GetCurPos(); -- if( maActiveCell == aNewCell) -+ if (mpViewShell) - { -- ScDocument* pScDoc= GetDocument(mpViewShell); -- if (pScDoc) -+ ScViewData& rViewData = mpViewShell->GetViewData(); -+ ScAddress aNewCell = rViewData.GetCurPos(); -+ if( maActiveCell == aNewCell) - { -- OUString valStr(pScDoc->GetString(aNewCell.Col(),aNewCell.Row(),aNewCell.Tab())); -- if(m_strCurCellValue != valStr) -- { -- AccessibleEventObject aEvent; -- aEvent.EventId = AccessibleEventId::VALUE_CHANGED; -- mpAccCell->CommitChange(aEvent); -- m_strCurCellValue=valStr; -- } -- OUString tabName; -- pScDoc->GetName( maActiveCell.Tab(), tabName ); -- if( m_strOldTabName != tabName ) -+ ScDocument* pScDoc= GetDocument(mpViewShell); -+ if (pScDoc) - { -- AccessibleEventObject aEvent; -- aEvent.EventId = AccessibleEventId::NAME_CHANGED; -- OUString sOldName(ScResId(STR_ACC_TABLE_NAME)); -- sOldName = sOldName.replaceFirst("%1", m_strOldTabName); -- aEvent.OldValue <<= sOldName; -- OUString sNewName(ScResId(STR_ACC_TABLE_NAME)); -- sOldName = sNewName.replaceFirst("%1", tabName); -- aEvent.NewValue <<= sNewName; -- CommitChange( aEvent ); -- m_strOldTabName = tabName; -+ OUString valStr(pScDoc->GetString(aNewCell.Col(),aNewCell.Row(),aNewCell.Tab())); -+ if(m_strCurCellValue != valStr) -+ { -+ AccessibleEventObject aEvent; -+ aEvent.EventId = AccessibleEventId::VALUE_CHANGED; -+ mpAccCell->CommitChange(aEvent); -+ m_strCurCellValue=valStr; -+ } -+ OUString tabName; -+ pScDoc->GetName( maActiveCell.Tab(), tabName ); -+ if( m_strOldTabName != tabName ) -+ { -+ AccessibleEventObject aEvent; -+ aEvent.EventId = AccessibleEventId::NAME_CHANGED; -+ OUString sOldName(ScResId(STR_ACC_TABLE_NAME)); -+ sOldName = sOldName.replaceFirst("%1", m_strOldTabName); -+ aEvent.OldValue <<= sOldName; -+ OUString sNewName(ScResId(STR_ACC_TABLE_NAME)); -+ sOldName = sNewName.replaceFirst("%1", tabName); -+ aEvent.NewValue <<= sNewName; -+ CommitChange( aEvent ); -+ m_strOldTabName = tabName; -+ } - } - } - } --- -2.21.0 - diff --git a/0001-Resolves-tdf-125099-round-duration-results-in-interp.patch b/0001-Resolves-tdf-125099-round-duration-results-in-interp.patch deleted file mode 100644 index 6aaad5f..0000000 --- a/0001-Resolves-tdf-125099-round-duration-results-in-interp.patch +++ /dev/null @@ -1,1750 +0,0 @@ -From f01e31762b02b8b896e726238eb2475c0e01ef82 Mon Sep 17 00:00:00 2001 -From: Eike Rathke -Date: Tue, 7 May 2019 23:17:45 +0200 -Subject: [PATCH] Resolves: tdf#125099 round duration results in interpreter - already -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - - This is a combination of 3 commits. - -Resolves: tdf#125099 round duration results in interpreter already - -So wall clock time formats less likely display a one-off value, -duration formats are too rarely used if the expected duration is -less than 24 hours. - -Reviewed-on: https://gerrit.libreoffice.org/71909 -Tested-by: Jenkins -Reviewed-by: Eike Rathke -(cherry picked from commit 85c0521f01f5c726e9f754b3175a550121e566c8) - -Test RANK(), not the underlying floating point representation of duration - -The RANK() results depended on the floating point representation -of time differences (durations), which for visually equal MM:SS -display values don't have to be equal if similar durations result -from different start and end times. Change that to a well defined -duration in seconds. - -b69a6b43f48abd2d4fe605021acfd2800e75b5e1 -Reviewed-on: https://gerrit.libreoffice.org/71926 -Reviewed-by: Eike Rathke -Tested-by: Jenkins -(cherry picked from commit 8de7949050d63fd9f7ac41e1a2442849580b86fa) - -Fix typed flags bitmask, tdf#125099 follow-up - -25327cfcafc9e1f2e88b388677853c638dd9b0e6 -Reviewed-on: https://gerrit.libreoffice.org/71946 -Reviewed-by: Eike Rathke -Tested-by: Jenkins -(cherry picked from commit d27ad84ec7a0aafb07d6a6152c686f4bc802f661) - -Change-Id: I9b0872420699b17e3ed3f20993f8cfe02761f862 -Reviewed-on: https://gerrit.libreoffice.org/71935 -Tested-by: Jenkins -Reviewed-by: Caolán McNamara -Tested-by: Caolán McNamara ---- - include/svl/zforlist.hxx | 7 +- - offapi/com/sun/star/util/NumberFormat.idl | 7 + - .../data/functions/statistical/fods/rank.fods | 739 +++++++----------- - sc/source/core/tool/interpr4.cxx | 21 +- - sc/source/core/tool/interpr5.cxx | 9 +- - 5 files changed, 317 insertions(+), 466 deletions(-) - -diff --git a/include/svl/zforlist.hxx b/include/svl/zforlist.hxx -index 143d14e03f50..cf7b1dec34a9 100644 ---- a/include/svl/zforlist.hxx -+++ b/include/svl/zforlist.hxx -@@ -109,9 +109,14 @@ enum class SvNumFormatType : sal_Int16 - @since LibreOffice 5.1 - */ - EMPTY = css::util::NumberFormat::EMPTY, // 4096 -+ /** @internal selects a time duration format. -+ 8192 + TIME (4) -+ @since LibreOffice 6.2 -+ */ -+ DURATION = css::util::NumberFormat::DURATION, // 8196 - }; - namespace o3tl { -- template<> struct typed_flags : is_typed_flags {}; -+ template<> struct typed_flags : is_typed_flags {}; - } - - /** enum values for SvNumberFormatter::GetFormatIndex -diff --git a/offapi/com/sun/star/util/NumberFormat.idl b/offapi/com/sun/star/util/NumberFormat.idl -index 2bc297aed425..e66a59d7e215 100644 ---- a/offapi/com/sun/star/util/NumberFormat.idl -+++ b/offapi/com/sun/star/util/NumberFormat.idl -@@ -99,6 +99,13 @@ published constants NumberFormat - */ - const short EMPTY = 4096; - -+ -+ /** @internal selects a time duration format. -+ 8192 + TIME (4) -+ @since LibreOffice 6.2 -+ */ -+ const short DURATION = 8196; -+ - }; - - -diff --git a/sc/qa/unit/data/functions/statistical/fods/rank.fods b/sc/qa/unit/data/functions/statistical/fods/rank.fods -index 880f3659032b..d12703d5ee55 100644 ---- a/sc/qa/unit/data/functions/statistical/fods/rank.fods -+++ b/sc/qa/unit/data/functions/statistical/fods/rank.fods -@@ -1,12 +1,12 @@ - - - -- 2017-01-02T17:08:37.518406343P0D1LibreOfficeDev/5.4.0.0.alpha0$Linux_X86_64 LibreOffice_project/ea860d52ade14b4a16289c81a0f8586799c6617f -+ 2017-01-02T17:08:37.518406343P0D1LibreOfficeDev/6.1.6.3.0$Linux_X86_64 LibreOffice_project/47b704879f52819423702f4efa17cbae8d7b7afa - - - 0 - 0 -- 58986 -+ 53248 - 8995 - - -@@ -32,7 +32,7 @@ - - - 4 -- 1 -+ 10 - 0 - 0 - 0 -@@ -50,7 +50,7 @@ - - - Sheet2 -- 1241 -+ 1861 - 0 - 100 - 60 -@@ -58,7 +58,7 @@ - true - true - true -- 12632256 -+ 12632256 - true - true - true -@@ -77,24 +77,13 @@ - - - 7 -- false -- false - true -- true -- false -- false -- false -- 1270 -- 1270 -- true -- true -- true -- true -- true - false -- 12632256 -- false -- Lexmark-E352dn -+ false -+ 0 -+ false -+ lwH+/0dlbmVyaWMgUHJpbnRlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU0dFTlBSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAMAuAAAAAAAAAAIAFZUAAAkbQAASm9iRGF0YSAxCnByaW50ZXI9R2VuZXJpYyBQcmludGVyCm9yaWVudGF0aW9uPVBvcnRyYWl0CmNvcGllcz0xCmNvbGxhdGU9ZmFsc2UKbWFyZ2luZGFqdXN0bWVudD0wLDAsMCwwCmNvbG9yZGVwdGg9MjQKcHNsZXZlbD0wCnBkZmRldmljZT0xCmNvbG9yZGV2aWNlPTAKUFBEQ29udGV4RGF0YQpQYWdlU2l6ZTpMZXR0ZXIAABIAQ09NUEFUX0RVUExFWF9NT0RFDwBEdXBsZXhNb2RlOjpPZmY= -+ Generic Printer - - - cs -@@ -125,16 +114,28 @@ - - - -- true -- true -+ true - 3 -- 1 - true -+ false -+ true -+ true -+ 12632256 -+ true -+ true -+ false -+ true -+ false -+ true -+ false -+ true - 1 -- true -- lgH+/0xleG1hcmstRTM1MmRuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ1VQUzpMZXhtYXJrLUUzNTJkbgAAAAAAAAAAAAAAAAAWAAMAtwAAAAAAAAAIAFZUAAAkbQAASm9iRGF0YSAxCnByaW50ZXI9TGV4bWFyay1FMzUyZG4Kb3JpZW50YXRpb249UG9ydHJhaXQKY29waWVzPTEKY29sbGF0ZT1mYWxzZQptYXJnaW5kYWp1c3RtZW50PTAsMCwwLDAKY29sb3JkZXB0aD0yNApwc2xldmVsPTAKcGRmZGV2aWNlPTEKY29sb3JkZXZpY2U9MApQUERDb250ZXhEYXRhClBhZ2VTaXplOkxldHRlcgAAEgBDT01QQVRfRFVQTEVYX01PREUPAER1cGxleE1vZGU6Ok9mZg== -- false -- 0 -+ false -+ 1270 -+ 1270 -+ false -+ 1 -+ true - - - -@@ -159,9 +160,11 @@ - - - -+ - - - -+ - - - -@@ -2971,6 +2974,9 @@ - - - -+ -+ -+ - - - -@@ -3100,9 +3106,6 @@ - - - -- -- -- - - - -@@ -3163,31 +3166,25 @@ - - - -- -+ - - -- -+ - - - - -+ -+ -+ - -- -+ - - -- -- -- -- -- -- -- -- -- - - -- -- -+ -+ - - - -@@ -3215,13 +3212,6 @@ - - - -- -- -- -- -- -- -- - - - -@@ -3253,26 +3243,19 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -- -- -- -- -- -- - - - -@@ -3389,15 +3372,15 @@ - - - -- ??? (???) -+ ???(???) - - -- 00/00/0000, 00:00:00 -+ 00/00/0000, 00:00:00 - - - - -- Page 1 / 99 -+ Page 1/ 99 - - - -@@ -3449,7 +3432,7 @@ - - - -- -+ - - Sheet - -@@ -3460,11 +3443,11 @@ - Description - - -- -+ - - 1 - -- -+ - TRUE - - -@@ -3481,27 +3464,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -3513,16 +3476,11 @@ - - - -- -+ - - - - -- -- -- -- -- - - - -@@ -3538,16 +3496,15 @@ - - - -- - -- -+ - - -- -+ - -- -+ - -- -+ - - Function - -@@ -3581,7 +3538,7 @@ - finish time - - -- time taken -+ time taken (s) - - - -@@ -3592,17 +3549,17 @@ - - - -- -+ - - -- -+ - - 4 - - - 4 - -- -+ - TRUE - - -@@ -3633,18 +3590,18 @@ - - - -- -+ - - - -- -+ - - 3 - - - 3 - -- -+ - TRUE - - -@@ -3667,8 +3624,8 @@ - - 34:45 - -- -- 17:34 -+ -+ 1054 - - - -@@ -3683,17 +3640,17 @@ - - - -- -+ - - -- -+ - - 3 - - - 3 - -- -+ - TRUE - - -@@ -3714,8 +3671,8 @@ - - 34:47 - -- -- 17:35 -+ -+ 1055 - - - -@@ -3729,17 +3686,17 @@ - - - -- -+ - - -- -+ - - 5 - - - 5 - -- -+ - TRUE - - -@@ -3757,8 +3714,8 @@ - - 34:45 - -- -- 17:32 -+ -+ 1052 - - - -@@ -3768,17 +3725,17 @@ - - - -- -+ - - -- -- -- 6 -+ -+ -+ 5 - -- -- 6 -+ -+ 5 - -- -+ - TRUE - - -@@ -3796,8 +3753,8 @@ - - 34:43 - -- -- 17:29 -+ -+ 1049 - - - -@@ -3805,17 +3762,17 @@ - - - -- -+ - - -- -+ - - 7 - - - 7 - -- -+ - TRUE - - -@@ -3831,24 +3788,24 @@ - - 34:50 - -- -- 17:34 -+ -+ 1054 - - - - - -- -+ - - -- -+ - - 4 - - - 4 - -- -+ - TRUE - - -@@ -3865,8 +3822,8 @@ - - 34:45 - -- -- 17:28 -+ -+ 1048 - - - -@@ -3874,17 +3831,17 @@ - - - -- -+ - - -- -+ - - 2 - - - 2 - -- -+ - TRUE - - -@@ -3900,8 +3857,8 @@ - - 34:47 - -- -- 17:29 -+ -+ 1049 - - - -@@ -3909,17 +3866,17 @@ - - - -- -+ - - -- -+ - - 5 - - - 5 - -- -+ - TRUE - - -@@ -3934,17 +3891,17 @@ - - - -- -+ - - -- -+ - - 1 - - - 1 - -- -+ - TRUE - - -@@ -3956,22 +3913,22 @@ - - - -- -+ - - - - -- -+ - - -- -- -- 3 -+ -+ -+ 2 - -- -- 3 -+ -+ 2 - -- -+ - TRUE - - -@@ -3985,21 +3942,21 @@ - - - -- -+ - - - -- -+ - - -- -+ - - #VALUE! - - - #VALUE! - -- -+ - TRUE - - -@@ -4010,20 +3967,20 @@ - - - -- -+ - - -- -+ - - -- -+ - - 3 - - - 3 - -- -+ - TRUE - - -@@ -4034,20 +3991,20 @@ - - - -- -+ - - -- -+ - - -- -+ - - 3 - - - 3 - -- -+ - TRUE - - -@@ -4060,16 +4017,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -4078,16 +4035,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -4097,16 +4054,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -4116,16 +4073,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -4134,16 +4091,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -4152,32 +4109,32 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -4186,16 +4143,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -4204,64 +4161,64 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - -@@ -4270,80 +4227,80 @@ - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - -@@ -4352,382 +4309,242 @@ - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - -- -+ - - -- -+ - - -- -- -+ -+ - -- -+ - - - -- -+ - - -- -+ - - -- -+ - -- -+ - - - -- -+ - - -- -+ - - -- -+ - -- -+ - - - - -- -+ - - -- -+ - - -- -+ - -- -+ - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx -index cc3672cbdbeb..57ab5aec29a2 100644 ---- a/sc/source/core/tool/interpr4.cxx -+++ b/sc/source/core/tool/interpr4.cxx -@@ -4433,6 +4433,7 @@ StackVar ScInterpreter::Interpret() - case SvNumFormatType::DATE: - case SvNumFormatType::TIME: - case SvNumFormatType::DATETIME: -+ case SvNumFormatType::DURATION: - nRetIndexExpr = nFuncFmtIndex; - break; - default: -@@ -4547,13 +4548,26 @@ StackVar ScInterpreter::Interpret() - // unnecessarily duplicate the information. - if (pCur->GetDoubleType() != 0) - { -- const double fVal = PopDouble(); -+ double fVal = PopDouble(); - if (!bForcedResultType) - { - if (nCurFmtType != nFuncFmtType) - nRetIndexExpr = 0; // carry format index only for matching type - nRetTypeExpr = nFuncFmtType = nCurFmtType; - } -+ if (nRetTypeExpr == SvNumFormatType::DURATION) -+ { -+ // Round the duration in case a wall clock time -+ // display format is used instead of a duration -+ // format. To micro seconds which then catches -+ // the converted hh:mm:ss.9999997 cases. -+ if (fVal != 0.0) -+ { -+ fVal *= 86400.0; -+ fVal = rtl::math::round( fVal, 6); -+ fVal /= 86400.0; -+ } -+ } - PushTempToken( CreateFormulaDoubleToken( fVal)); - } - if ( nFuncFmtType == SvNumFormatType::UNDEFINED ) -@@ -4663,6 +4677,11 @@ StackVar ScInterpreter::Interpret() - else - nRetFmtType = SvNumFormatType::NUMBER; - -+ // Currently (2019-05-06) nothing else can cope with a duration format -+ // type, change to time as it was before. -+ if (nRetFmtType == SvNumFormatType::DURATION) -+ nRetFmtType = SvNumFormatType::TIME; -+ - if (nGlobalError != FormulaError::NONE && GetStackType() != svError ) - PushError( nGlobalError); - -diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx -index b18ddd7fb673..aefb26c920e3 100644 ---- a/sc/source/core/tool/interpr5.cxx -+++ b/sc/source/core/tool/interpr5.cxx -@@ -1129,15 +1129,16 @@ ScMatrixRef ScInterpreter::MatConcat(const ScMatrixRef& pMat1, const ScMatrixRef - return xResMat; - } - --// for DATE, TIME, DATETIME -+// for DATE, TIME, DATETIME, DURATION - static void lcl_GetDiffDateTimeFmtType( SvNumFormatType& nFuncFmt, SvNumFormatType nFmt1, SvNumFormatType nFmt2 ) - { - if ( nFmt1 != SvNumFormatType::UNDEFINED || nFmt2 != SvNumFormatType::UNDEFINED ) - { - if ( nFmt1 == nFmt2 ) - { -- if ( nFmt1 == SvNumFormatType::TIME || nFmt1 == SvNumFormatType::DATETIME ) -- nFuncFmt = SvNumFormatType::TIME; // times result in time -+ if ( nFmt1 == SvNumFormatType::TIME || nFmt1 == SvNumFormatType::DATETIME -+ || nFmt1 == SvNumFormatType::DURATION ) -+ nFuncFmt = SvNumFormatType::DURATION; // times result in time duration - // else: nothing special, number (date - date := days) - } - else if ( nFmt1 == SvNumFormatType::UNDEFINED ) -@@ -1181,6 +1182,7 @@ void ScInterpreter::CalculateAddSub(bool _bSub) - case SvNumFormatType::DATE : - case SvNumFormatType::TIME : - case SvNumFormatType::DATETIME : -+ case SvNumFormatType::DURATION : - nFmt2 = nCurFmtType; - break; - case SvNumFormatType::CURRENCY : -@@ -1203,6 +1205,7 @@ void ScInterpreter::CalculateAddSub(bool _bSub) - case SvNumFormatType::DATE : - case SvNumFormatType::TIME : - case SvNumFormatType::DATETIME : -+ case SvNumFormatType::DURATION : - nFmt1 = nCurFmtType; - break; - case SvNumFormatType::CURRENCY : --- -2.21.0 - diff --git a/0001-rhbz-1690732-basic-font-variation-support.patch b/0001-rhbz-1690732-basic-font-variation-support.patch deleted file mode 100644 index 7843b35..0000000 --- a/0001-rhbz-1690732-basic-font-variation-support.patch +++ /dev/null @@ -1,507 +0,0 @@ -From f13d0ae5a68c3ae93d2839a1cc8ff3fe96622a6e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Wed, 20 Mar 2019 15:41:20 +0000 -Subject: [PATCH] rhbz#1690732 basic font variation support - -on the fontconfig/harfbuzz/cairo drawing path for preset variations - -Related: rhbz#1690732 FC_INDEX doesn't mean exactly what it used to mean - -its been repurposed to hold font face variation information too - -(cherry picked from commit 3681e8d8e6270912090b22445e67899bc2207e39) - -Change-Id: I95ef68aecfd59687ae9aae58e01e394c83c6ea9e ---- - vcl/inc/unx/fc_fontoptions.hxx | 2 +- - vcl/inc/unx/fontmanager.hxx | 6 +- - vcl/inc/unx/freetype_glyphcache.hxx | 9 +-- - vcl/inc/unx/glyphcache.hxx | 8 ++- - vcl/unx/generic/fontmanager/fontconfig.cxx | 54 ++++++++++++------ - vcl/unx/generic/fontmanager/fontmanager.cxx | 20 ++++++- - vcl/unx/generic/gdi/cairotextrender.cxx | 3 +- - .../generic/glyphs/freetype_glyphcache.cxx | 55 +++++++++++++++++-- - vcl/unx/generic/glyphs/glyphcache.cxx | 5 +- - vcl/unx/generic/print/genpspgraphics.cxx | 3 +- - 10 files changed, 129 insertions(+), 36 deletions(-) - -diff --git a/vcl/inc/unx/fc_fontoptions.hxx b/vcl/inc/unx/fc_fontoptions.hxx -index 4e21a4d28c3e..c5ea38ce4f54 100644 ---- a/vcl/inc/unx/fc_fontoptions.hxx -+++ b/vcl/inc/unx/fc_fontoptions.hxx -@@ -34,7 +34,7 @@ public: - mpPattern(pPattern) {} - ~FontConfigFontOptions(); - -- void SyncPattern(const OString& rFileName, int nFontFace, bool bEmbolden); -+ void SyncPattern(const OString& rFileName, sal_uInt32 nFontFace, sal_uInt32 nFontVariation, bool bEmbolden); - FcPattern* GetPattern() const; - static void cairo_font_options_substitute(FcPattern* pPattern); - private: -diff --git a/vcl/inc/unx/fontmanager.hxx b/vcl/inc/unx/fontmanager.hxx -index e19b5f3fc9ae..d796aba7e944 100644 ---- a/vcl/inc/unx/fontmanager.hxx -+++ b/vcl/inc/unx/fontmanager.hxx -@@ -131,6 +131,7 @@ class VCL_PLUGIN_PUBLIC PrintFontManager - int m_nDirectory; // atom containing system dependent path - OString m_aFontFile; // relative to directory - int m_nCollectionEntry; // 0 for regular fonts, 0 to ... for fonts stemming from collections -+ int m_nVariationEntry; // 0 for regular fonts, 0 to ... for fonts stemming from font variations - - explicit PrintFont(); - }; -@@ -154,7 +155,7 @@ class VCL_PLUGIN_PUBLIC PrintFontManager - bool analyzeSfntFile(PrintFont* pFont) const; - // finds the font id for the nFaceIndex face in this font file - // There may be multiple font ids for font collections -- fontID findFontFileID( int nDirID, const OString& rFile, int nFaceIndex ) const; -+ fontID findFontFileID(int nDirID, const OString& rFile, int nFaceIndex, int nVariationIndex) const; - - // There may be multiple font ids for font collections - std::vector findFontFileIDs( int nDirID, const OString& rFile ) const; -@@ -242,6 +243,9 @@ public: - // get the ttc face number - int getFontFaceNumber( fontID nFontID ) const; - -+ // get the ttc face variation -+ int getFontFaceVariation( fontID nFontID ) const; -+ - // get a specific fonts ascend - int getFontAscend( fontID nFontID ) const; - -diff --git a/vcl/inc/unx/freetype_glyphcache.hxx b/vcl/inc/unx/freetype_glyphcache.hxx -index 774eec877957..3c09fe9b4157 100644 ---- a/vcl/inc/unx/freetype_glyphcache.hxx -+++ b/vcl/inc/unx/freetype_glyphcache.hxx -@@ -55,10 +55,9 @@ private: - class FreetypeFontInfo - { - public: -- FreetypeFontInfo( const FontAttributes&, -- const OString& rNativeFileName, -- int nFaceNum, sal_IntPtr nFontId); -- ~FreetypeFontInfo(); -+ FreetypeFontInfo(const FontAttributes&, const OString& rNativeFileName, -+ int nFaceNum, int nFaceVariation, sal_IntPtr nFontId); -+ ~FreetypeFontInfo(); - - const unsigned char* GetTable( const char*, sal_uLong* pLength) const; - -@@ -67,6 +66,7 @@ public: - - const OString& GetFontFileName() const { return mpFontFile->GetFileName(); } - int GetFontFaceIndex() const { return mnFaceNum; } -+ int GetFontFaceVariation() const { return mnFaceVariation; } - sal_IntPtr GetFontId() const { return mnFontId; } - bool IsSymbolFont() const { return maDevFontAttributes.IsSymbolFont(); } - const FontAttributes& GetFontAttributes() const { return maDevFontAttributes; } -@@ -80,6 +80,7 @@ private: - FT_FaceRec_* maFaceFT; - FreetypeFontFile* const mpFontFile; - const int mnFaceNum; -+ const int mnFaceVariation; - int mnRefCount; - sal_IntPtr const mnFontId; - FontAttributes maDevFontAttributes; -diff --git a/vcl/inc/unx/glyphcache.hxx b/vcl/inc/unx/glyphcache.hxx -index 59811d6a144a..77a764e6e058 100644 ---- a/vcl/inc/unx/glyphcache.hxx -+++ b/vcl/inc/unx/glyphcache.hxx -@@ -57,9 +57,9 @@ public: - - static GlyphCache& GetInstance(); - -- void AddFontFile( -- const OString& rNormalizedName, -- int nFaceNum, sal_IntPtr nFontId, -+ void AddFontFile(const OString& rNormalizedName, -+ int nFaceNum, int nVariantNum, -+ sal_IntPtr nFontId, - const FontAttributes&); - - void AnnounceFonts( PhysicalFontCollection* ) const; -@@ -98,6 +98,7 @@ public: - - const OString& GetFontFileName() const; - int GetFontFaceIndex() const; -+ int GetFontFaceVariation() const; - bool TestFont() const { return mbFaceOk;} - FT_Face GetFtFace() const; - int GetLoadFlags() const { return (mnLoadFlags & ~FT_LOAD_IGNORE_TRANSFORM); } -@@ -117,6 +118,7 @@ public: - - FreetypeFontInstance* GetFontInstance() const { return mpFontInstance.get(); } - -+ void SetFontVariationsOnHBFont(hb_font_t* pHbFace) const; - private: - friend class GlyphCache; - friend class FreetypeFontInstance; -diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx b/vcl/unx/generic/fontmanager/fontconfig.cxx -index 76598746bec6..7205ef386668 100644 ---- a/vcl/unx/generic/fontmanager/fontconfig.cxx -+++ b/vcl/unx/generic/fontmanager/fontconfig.cxx -@@ -467,6 +467,22 @@ static void lcl_FcFontSetRemove(FcFontSet* pFSet, int i) - memmove(pFSet->fonts + i, pFSet->fonts + i + 1, nTail*sizeof(FcPattern*)); - } - -+namespace -+{ -+ // for variable fonts, FC_INDEX has been changed such that the lower half is now the -+ // index of the font within the collection, and the upper half has been repurposed -+ // as the index within the variations -+ unsigned int GetCollectionIndex(unsigned int nEntryId) -+ { -+ return nEntryId & 0xFFFF; -+ } -+ -+ unsigned int GetVariationIndex(unsigned int nEntryId) -+ { -+ return nEntryId >> 16; -+ } -+} -+ - void PrintFontManager::countFontconfigFonts( std::unordered_map& o_rVisitedPaths ) - { - int nFonts = 0; -@@ -487,7 +503,7 @@ void PrintFontManager::countFontconfigFonts( std::unordered_map& o - int weight = 0; - int width = 0; - int spacing = 0; -- int nCollectionEntry = -1; -+ int nEntryId = -1; - FcBool outline = false; - - FcResult eFileRes = FcPatternGetString(pFSet->fonts[i], FC_FILE, 0, &file); -@@ -500,7 +516,7 @@ void PrintFontManager::countFontconfigFonts( std::unordered_map& o - FcResult eWidthRes = FcPatternGetInteger(pFSet->fonts[i], FC_WIDTH, 0, &width); - FcResult eSpacRes = FcPatternGetInteger(pFSet->fonts[i], FC_SPACING, 0, &spacing); - FcResult eOutRes = FcPatternGetBool(pFSet->fonts[i], FC_OUTLINE, 0, &outline); -- FcResult eIndexRes = FcPatternGetInteger(pFSet->fonts[i], FC_INDEX, 0, &nCollectionEntry); -+ FcResult eIndexRes = FcPatternGetInteger(pFSet->fonts[i], FC_INDEX, 0, &nEntryId); - FcResult eFormatRes = FcPatternGetString(pFSet->fonts[i], FC_FONTFORMAT, 0, &format); - - if( eFileRes != FcResultMatch || eFamilyRes != FcResultMatch || eOutRes != FcResultMatch ) -@@ -565,8 +581,9 @@ void PrintFontManager::countFontconfigFonts( std::unordered_map& o - else // more than one font - { - // a collection entry, get the correct index -- if( eIndexRes == FcResultMatch && nCollectionEntry != -1 ) -+ if( eIndexRes == FcResultMatch && nEntryId != -1 ) - { -+ int nCollectionEntry = GetCollectionIndex(nEntryId); - for (auto & font : aFonts) - { - if( font->m_nCollectionEntry == nCollectionEntry ) -@@ -583,14 +600,14 @@ void PrintFontManager::countFontconfigFonts( std::unordered_map& o - // additional entries will be created in the cache - // if this is a new index (that is if the loop above - // ran to the end of the list) -- xUpdate->m_nCollectionEntry = nCollectionEntry; -+ xUpdate->m_nCollectionEntry = GetCollectionIndex(nEntryId); - } - else - { - SAL_INFO( - "vcl.fonts", - "multiple fonts for file, but no index in fontconfig pattern ! (index res =" -- << eIndexRes << " collection entry = " << nCollectionEntry -+ << eIndexRes << " collection entry = " << nEntryId - << "; file will not be used"); - // we have found more than one font in this file - // but fontconfig will not tell us which index is meant -@@ -610,9 +627,9 @@ void PrintFontManager::countFontconfigFonts( std::unordered_map& o - if( eSlantRes == FcResultMatch ) - xUpdate->m_eItalic = convertSlant(slant); - if( eStyleRes == FcResultMatch ) -- { - xUpdate->m_aStyleName = OStringToOUString( OString( reinterpret_cast(style) ), RTL_TEXTENCODING_UTF8 ); -- } -+ if( eIndexRes == FcResultMatch ) -+ xUpdate->m_nVariationEntry = GetVariationIndex(nEntryId); - - // sort into known fonts - fontID aFont = m_nNextFontID++; -@@ -933,16 +950,16 @@ void PrintFontManager::Substitute(FontSelectPattern &rPattern, OUString& rMissin - //extract the closest match - FcChar8* file = nullptr; - FcResult eFileRes = FcPatternGetString(pSet->fonts[0], FC_FILE, 0, &file); -- int nCollectionEntry = 0; -- FcResult eIndexRes = FcPatternGetInteger(pSet->fonts[0], FC_INDEX, 0, &nCollectionEntry); -+ int nEntryId = 0; -+ FcResult eIndexRes = FcPatternGetInteger(pSet->fonts[0], FC_INDEX, 0, &nEntryId); - if (eIndexRes != FcResultMatch) -- nCollectionEntry = 0; -+ nEntryId = 0; - if( eFileRes == FcResultMatch ) - { - OString aDir, aBase, aOrgPath( reinterpret_cast(file) ); - splitPath( aOrgPath, aDir, aBase ); - int nDirID = getDirectoryAtom( aDir ); -- fontID aFont = findFontFileID( nDirID, aBase, nCollectionEntry ); -+ fontID aFont = findFontFileID(nDirID, aBase, GetCollectionIndex(nEntryId), GetVariationIndex(nEntryId)); - if( aFont > 0 ) - { - FastPrintFontInfo aInfo; -@@ -1060,12 +1077,13 @@ FcPattern *FontConfigFontOptions::GetPattern() const - return mpPattern; - } - --void FontConfigFontOptions::SyncPattern(const OString& rFileName, int nIndex, bool bEmbolden) -+void FontConfigFontOptions::SyncPattern(const OString& rFileName, sal_uInt32 nIndex, sal_uInt32 nVariation, bool bEmbolden) - { - FcPatternDel(mpPattern, FC_FILE); - FcPatternAddString(mpPattern, FC_FILE, reinterpret_cast(rFileName.getStr())); - FcPatternDel(mpPattern, FC_INDEX); -- FcPatternAddInteger(mpPattern, FC_INDEX, nIndex); -+ sal_uInt32 nFcIndex = (nVariation << 16) | nIndex; -+ FcPatternAddInteger(mpPattern, FC_INDEX, nFcIndex); - FcPatternDel(mpPattern, FC_EMBOLDEN); - FcPatternAddBool(mpPattern, FC_EMBOLDEN, bEmbolden ? FcTrue : FcFalse); - } -@@ -1145,16 +1163,18 @@ void PrintFontManager::matchFont( FastPrintFontInfo& rInfo, const css::lang::Loc - //extract the closest match - FcChar8* file = nullptr; - FcResult eFileRes = FcPatternGetString(pSet->fonts[0], FC_FILE, 0, &file); -- int nCollectionEntry = 0; -- FcResult eIndexRes = FcPatternGetInteger(pSet->fonts[0], FC_INDEX, 0, &nCollectionEntry); -+ int nEntryId = 0; -+ FcResult eIndexRes = FcPatternGetInteger(pSet->fonts[0], FC_INDEX, 0, &nEntryId); - if (eIndexRes != FcResultMatch) -- nCollectionEntry = 0; -+ nEntryId = 0; - if( eFileRes == FcResultMatch ) - { - OString aDir, aBase, aOrgPath( reinterpret_cast(file) ); - splitPath( aOrgPath, aDir, aBase ); - int nDirID = getDirectoryAtom( aDir ); -- fontID aFont = findFontFileID( nDirID, aBase, nCollectionEntry ); -+ fontID aFont = findFontFileID(nDirID, aBase, -+ GetCollectionIndex(nEntryId), -+ GetVariationIndex(nEntryId)); - if( aFont > 0 ) - getFontFastInfo( aFont, rInfo ); - } -diff --git a/vcl/unx/generic/fontmanager/fontmanager.cxx b/vcl/unx/generic/fontmanager/fontmanager.cxx -index 394c5484a5bd..16e8b786dc88 100644 ---- a/vcl/unx/generic/fontmanager/fontmanager.cxx -+++ b/vcl/unx/generic/fontmanager/fontmanager.cxx -@@ -108,6 +108,7 @@ PrintFontManager::PrintFont::PrintFont() - , m_nYMax(0) - , m_nDirectory(0) - , m_nCollectionEntry(0) -+, m_nVariationEntry(0) - { - } - -@@ -278,7 +279,7 @@ std::vector> PrintFontManager::anal - return aNewFonts; - } - --fontID PrintFontManager::findFontFileID( int nDirID, const OString& rFontFile, int nFaceIndex ) const -+fontID PrintFontManager::findFontFileID(int nDirID, const OString& rFontFile, int nFaceIndex, int nVariationIndex) const - { - fontID nID = 0; - -@@ -293,7 +294,9 @@ fontID PrintFontManager::findFontFileID( int nDirID, const OString& rFontFile, i - continue; - PrintFont* const pFont = (*it).second.get(); - if (pFont->m_nDirectory == nDirID && -- pFont->m_aFontFile == rFontFile && pFont->m_nCollectionEntry == nFaceIndex) -+ pFont->m_aFontFile == rFontFile && -+ pFont->m_nCollectionEntry == nFaceIndex && -+ pFont->m_nVariationEntry == nVariationIndex) - { - nID = it->first; - if (nID) -@@ -838,6 +841,19 @@ int PrintFontManager::getFontFaceNumber( fontID nFontID ) const - return nRet; - } - -+int PrintFontManager::getFontFaceVariation( fontID nFontID ) const -+{ -+ int nRet = 0; -+ PrintFont* pFont = getFont( nFontID ); -+ if (pFont) -+ { -+ nRet = pFont->m_nVariationEntry; -+ if (nRet < 0) -+ nRet = 0; -+ } -+ return nRet; -+} -+ - FontFamily PrintFontManager::matchFamilyName( const OUString& rFamily ) - { - typedef struct { -diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx -index c8956d02226b..f9e6a0a522a1 100644 ---- a/vcl/unx/generic/gdi/cairotextrender.cxx -+++ b/vcl/unx/generic/gdi/cairotextrender.cxx -@@ -408,12 +408,13 @@ void CairoTextRender::GetDevFontList( PhysicalFontCollection* pFontCollection ) - - // normalize face number to the GlyphCache - int nFaceNum = rMgr.getFontFaceNumber( aInfo.m_nID ); -+ int nVariantNum = rMgr.getFontFaceVariation( aInfo.m_nID ); - - // inform GlyphCache about this font provided by the PsPrint subsystem - FontAttributes aDFA = GenPspGraphics::Info2FontAttributes( aInfo ); - aDFA.IncreaseQualityBy( 4096 ); - const OString& rFileName = rMgr.getFontFileSysPath( aInfo.m_nID ); -- rGC.AddFontFile( rFileName, nFaceNum, aInfo.m_nID, aDFA ); -+ rGC.AddFontFile( rFileName, nFaceNum, nVariantNum, aInfo.m_nID, aDFA ); - } - - // announce glyphcache fonts -diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx -index 42bf6d0a98b9..1fcb0938ef77 100644 ---- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx -+++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx -@@ -47,6 +47,7 @@ - #include - #include FT_FREETYPE_H - #include FT_GLYPH_H -+#include FT_MULTIPLE_MASTERS_H - #include FT_OUTLINE_H - #include FT_SIZES_H - #include FT_SYNTHESIS_H -@@ -166,11 +167,12 @@ void FreetypeFontFile::Unmap() - } - - FreetypeFontInfo::FreetypeFontInfo( const FontAttributes& rDevFontAttributes, -- const OString& rNativeFileName, int nFaceNum, sal_IntPtr nFontId) -+ const OString& rNativeFileName, int nFaceNum, int nFaceVariation, sal_IntPtr nFontId) - : - maFaceFT( nullptr ), - mpFontFile( FreetypeFontFile::FindFontFile( rNativeFileName ) ), - mnFaceNum( nFaceNum ), -+ mnFaceVariation( nFaceVariation ), - mnRefCount( 0 ), - mnFontId( nFontId ), - maDevFontAttributes( rDevFontAttributes ) -@@ -194,12 +196,50 @@ FT_FaceRec_* FreetypeFontInfo::GetFaceFT() - mpFontFile->GetFileSize(), mnFaceNum, &maFaceFT ); - if( (rc != FT_Err_Ok) || (maFaceFT->num_glyphs <= 0) ) - maFaceFT = nullptr; -+ -+ if (maFaceFT && mnFaceVariation) -+ { -+ FT_MM_Var *pFtMMVar; -+ if (FT_Get_MM_Var(maFaceFT, &pFtMMVar) == 0) -+ { -+ if (static_cast(mnFaceVariation) <= pFtMMVar->num_namedstyles) -+ { -+ FT_Var_Named_Style *instance = &pFtMMVar->namedstyle[mnFaceVariation - 1]; -+ FT_Set_Var_Design_Coordinates(maFaceFT, pFtMMVar->num_axis, instance->coords); -+ } -+ FT_Done_MM_Var(aLibFT, pFtMMVar); -+ } -+ } - } - - ++mnRefCount; - return maFaceFT; - } - -+void FreetypeFont::SetFontVariationsOnHBFont(hb_font_t* pHbFace) const -+{ -+ sal_uInt32 nFaceVariation = mpFontInfo->GetFontFaceVariation(); -+ if (maFaceFT && nFaceVariation) -+ { -+ FT_MM_Var *pFtMMVar; -+ if (FT_Get_MM_Var(maFaceFT, &pFtMMVar) == 0) -+ { -+ if (nFaceVariation <= pFtMMVar->num_namedstyles) -+ { -+ FT_Var_Named_Style *instance = &pFtMMVar->namedstyle[nFaceVariation - 1]; -+ std::vector aVariations(pFtMMVar->num_axis); -+ for (FT_UInt i = 0; i < pFtMMVar->num_axis; ++i) -+ { -+ aVariations[i].tag = pFtMMVar->axis[i].tag; -+ aVariations[i].value = instance->coords[i] / 65536.0; -+ } -+ hb_font_set_variations(pHbFace, aVariations.data(), aVariations.size()); -+ } -+ FT_Done_MM_Var(aLibFT, pFtMMVar); -+ } -+ } -+} -+ - void FreetypeFontInfo::ReleaseFaceFT() - { - if (--mnRefCount <= 0) -@@ -289,8 +329,8 @@ FT_Face FreetypeFont::GetFtFace() const - return maFaceFT; - } - --void GlyphCache::AddFontFile( const OString& rNormalizedName, -- int nFaceNum, sal_IntPtr nFontId, const FontAttributes& rDevFontAttr) -+void GlyphCache::AddFontFile(const OString& rNormalizedName, -+ int nFaceNum, int nVariantNum, sal_IntPtr nFontId, const FontAttributes& rDevFontAttr) - { - if( rNormalizedName.isEmpty() ) - return; -@@ -299,7 +339,7 @@ void GlyphCache::AddFontFile( const OString& rNormalizedName, - return; - - FreetypeFontInfo* pFontInfo = new FreetypeFontInfo( rDevFontAttr, -- rNormalizedName, nFaceNum, nFontId); -+ rNormalizedName, nFaceNum, nVariantNum, nFontId); - m_aFontInfoList[ nFontId ].reset(pFontInfo); - if( m_nMaxFontId < nFontId ) - m_nMaxFontId = nFontId; -@@ -441,7 +481,7 @@ const FontConfigFontOptions* FreetypeFont::GetFontOptions() const - if (!mxFontOptions) - { - mxFontOptions.reset(GetFCFontOptions(mpFontInfo->GetFontAttributes(), mpFontInstance->GetFontSelectPattern().mnHeight)); -- mxFontOptions->SyncPattern(GetFontFileName(), GetFontFaceIndex(), NeedsArtificialBold()); -+ mxFontOptions->SyncPattern(GetFontFileName(), GetFontFaceIndex(), GetFontFaceVariation(), NeedsArtificialBold()); - } - return mxFontOptions.get(); - } -@@ -461,6 +501,11 @@ int FreetypeFont::GetFontFaceIndex() const - return mpFontInfo->GetFontFaceIndex(); - } - -+int FreetypeFont::GetFontFaceVariation() const -+{ -+ return mpFontInfo->GetFontFaceVariation(); -+} -+ - FreetypeFont::~FreetypeFont() - { - if( maSizeFT ) -diff --git a/vcl/unx/generic/glyphs/glyphcache.cxx b/vcl/unx/generic/glyphs/glyphcache.cxx -index b541fe1861fe..d4a32f30a521 100644 ---- a/vcl/unx/generic/glyphs/glyphcache.cxx -+++ b/vcl/unx/generic/glyphs/glyphcache.cxx -@@ -298,7 +298,10 @@ static hb_blob_t* getFontTable(hb_face_t* /*face*/, hb_tag_t nTableTag, void* pU - - hb_font_t* FreetypeFontInstance::ImplInitHbFont() - { -- return InitHbFont(hb_face_create_for_tables(getFontTable, this, nullptr)); -+ hb_font_t* pRet = InitHbFont(hb_face_create_for_tables(getFontTable, this, nullptr)); -+ assert(mpFreetypeFont); -+ mpFreetypeFont->SetFontVariationsOnHBFont(pRet); -+ return pRet; - } - - bool FreetypeFontInstance::ImplGetGlyphBoundRect(sal_GlyphId nId, tools::Rectangle& rRect, bool bVertical) const -diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx -index e40b9fd5cc82..c5675bfa3bcd 100644 ---- a/vcl/unx/generic/print/genpspgraphics.cxx -+++ b/vcl/unx/generic/print/genpspgraphics.cxx -@@ -694,9 +694,10 @@ bool GenPspGraphics::AddTempDevFontHelper( PhysicalFontCollection* pFontCollecti - aDFA.IncreaseQualityBy( 5800 ); - - int nFaceNum = rMgr.getFontFaceNumber( aInfo.m_nID ); -+ int nVariantNum = rMgr.getFontFaceVariation( aInfo.m_nID ); - - const OString& rFileName = rMgr.getFontFileSysPath( aInfo.m_nID ); -- rGC.AddFontFile( rFileName, nFaceNum, aInfo.m_nID, aDFA ); -+ rGC.AddFontFile( rFileName, nFaceNum, nVariantNum, aInfo.m_nID, aDFA ); - } - - // announce new font to device's font list --- -2.21.0 - diff --git a/libreoffice.spec b/libreoffice.spec index 264f74a..e9a33f3 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -3,7 +3,7 @@ %global _python_bytecompile_extra 1 # download path contains version without the last (fourth) digit -%global libo_version 6.2.5 +%global libo_version 6.3.0 # Should contain .alphaX / .betaX, if this is pre-release (actually # pre-RC) version. The pre-release string is part of tarball file names, # so we need a way to define it easily at one place. @@ -53,7 +53,7 @@ Summary: Free Software Productivity Suite Name: libreoffice Epoch: 1 -Version: %{libo_version}.2 +Version: %{libo_version}.1 Release: 1%{?libo_prerelease}%{?dist} License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and MPLv2.0 and CC0 URL: http://www.libreoffice.org/ @@ -240,14 +240,6 @@ Requires: %{name}-emailmerge%{?_isa} = %{epoch}:%{version}-%{release} # not upstreamed: upstream wants an automatic restart after a crash; we # want a nice abrt report Patch0: 0001-don-t-suppress-crashes.patch -# not upstreamed -Patch1: 0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch -Patch2: 0001-rhbz-1690732-basic-font-variation-support.patch -Patch3: 0001-Resolves-rhbz-1712823-prefer-help-strings-to-a11y-st.patch -Patch4: 0001-Resolves-tdf-125099-round-duration-results-in-interp.patch -Patch5: 0001-Resolves-rhbz-1713827-protect-against-null-ViewShell.patch -Patch6: 0001-Adapt-to-upcoming-Python-3.8.patch -Patch7: 0001-Related-rhbz-1718063-look-for-pkg-config-python-vers.patch %if 0%{?rhel} # not upstreamed @@ -2142,6 +2134,9 @@ done %{_includedir}/LibreOfficeKit %changelog +* Tue Jul 16 2019 Caolán McNamara - 1:6.3.0.1-1 +- move rawhide to 6.3.0 + * Tue Jul 16 2019 Caolán McNamara - 1:6.2.5.2-1 - latest stable diff --git a/sources b/sources index 423694a..91de75a 100644 --- a/sources +++ b/sources @@ -6,15 +6,9 @@ SHA512 (a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip) = 2d3835f7ac356805025 SHA512 (0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz) = b9c02d63e9b47a838dbe67c05b9e9e4983d13b9d74794e1c30c73d341c3bc905c9edec3a72fa339ae8c0e06d97e69ac2ea23bf51336b77af14cab7ae67721a46 SHA512 (49a64f3bcf20a7909ba2751349231d6652ded9cd2840e961b5164d09de3ffa63-opens___.ttf) = 359ba0314a0e5094aa2a10067e5613b10cb9044dca04d49bae68afd8a49d88e070b9a5321b77fd15ef5685109f664409ae1af24d40edd7b462f1366a1967b0e2 SHA512 (libreoffice-multiliblauncher.sh) = db532afdf5000bc66f9e02c7d0ab586468466f63f8f0bdb204832581e8277c5c59f688fa096548d642411cb8c46e8de4a744676b4e624c075262cfd6945138cd -SHA512 (libreoffice-6.2.4.2.tar.xz) = d3c28629315fa78c1a18384b9c4144773f573c9721cb33f2c1b2beccbaa73068b1096c7009353261b1a8993f1bf5296e9dfc4279605572938b749ce9c39026e5 -SHA512 (libreoffice-6.2.4.2.tar.xz.asc) = 73b44ce03e79008bf9cec402b70cc0a0975e66a682a59ef71c307f96b36d5e3fd32668b90ffa4ba1ab897608f6441d2c40f313803a1f05d49ec9f47d27573a75 -SHA512 (libreoffice-help-6.2.4.2.tar.xz) = d93a3cac65659575fb0a17528c5d5c0cfdf6d20b8b694908b9795cac1f1b4f2122c849a31a9e5d04f579c8a27b2b1913ec7474560300ee0fbf4e0f39d3937048 -SHA512 (libreoffice-help-6.2.4.2.tar.xz.asc) = b666111d683170a625173870dca5f8dc2e31bfb43161b3efe4eb905b01b1722dd05ba818f61286164a72184301a189f45bc0f5cb23878ab8dc20c1ad92f3b39e -SHA512 (libreoffice-translations-6.2.4.2.tar.xz) = f7c45d26364ac813eb77d020410542622989d809413dde0deea4c54bbf289dcf577b4ebd77490af691bc9cbec541da219d5e7bc64e67bf5b724f19e3c3272bd0 -SHA512 (libreoffice-translations-6.2.4.2.tar.xz.asc) = 064a3bc608df74c4fca4a2cb173a0730dabeb9c7f2b14bec39bd24f77de65b11d99b16be508b976a92a3c0eb20196d7c13fed8590c032bf223de96772f7e4116 -SHA512 (libreoffice-6.2.5.2.tar.xz) = b46b6731c415ab354ad7d876cb8905cb9eae2ca71639abf049ea7f5930601c957cc0eb04a2cd06949073ba5e94778ecdb449692ed8bbfbd95b05f6e7980d8d10 -SHA512 (libreoffice-6.2.5.2.tar.xz.asc) = b11a63adf03d3c377427c3082d71158b6cd12c186201ac890f4dbf465e276f7a5d58b74ae5c98ab03828b35190127d2c8928aca956aff4a01a3b8db11abe087b -SHA512 (libreoffice-help-6.2.5.2.tar.xz) = 14f964161bd827a5846ec667ae1dac80d1485450e172da44010103e31f3872df62595e8b1b1d45c720caac9256d2adaf8f5a0bb80d059d35f1c560b533eb764c -SHA512 (libreoffice-help-6.2.5.2.tar.xz.asc) = b696ddcc127149b8f1cda1e24f7b72eca731bf735dc074226b9a604f97a7019256102529ef5e0575f05755dd1351ec2900a69568d966d3e66e273ce602e74a98 -SHA512 (libreoffice-translations-6.2.5.2.tar.xz) = 64297ccfe4a219764364434eab167947a75441a978c0564efae2f2f975bcae7ebfade70504641145ff4c25258276261dc1ad4aefdc930f20726c8bf7c381adf2 -SHA512 (libreoffice-translations-6.2.5.2.tar.xz.asc) = bc28d6f61e077f15a435bb0dfa97ae8546380a2a2c74b41ba938569b5e2f85f8d2a94a3bec6bf36ca48ba5533b26a92dbb9aaa258a02aaa1d0157278a1db10f4 +SHA512 (libreoffice-6.3.0.1.tar.xz) = cfd82ddc8d372f92539bc5d9e50afad4623a6a59b9b1986a487bc7c55bbf72fed9b7923aa16c26d8a230774b4103e8fae89e04b0f3f4158fd3bf484b14b147f8 +SHA512 (libreoffice-6.3.0.1.tar.xz.asc) = 284702a231a16b113fbb5ca845875b1cd5d0995d916880463ab051b52ce7672fa29878ed8090694cf212879754c9990fd6fd658f9939081dd6d94dd8d6dc878a +SHA512 (libreoffice-help-6.3.0.1.tar.xz) = 2384fe9e0288cc759f7884901c25a1a5fadfbf7ea01844e5a77bb1e7dbd78242d47c19bd4c6ba8bdc9a8883ee6d9e94da96ff16366614100fc1f9097f329ee8f +SHA512 (libreoffice-help-6.3.0.1.tar.xz.asc) = 03d4cbf705c7754652e03860444b4e5ef772cff23ff733501ec8c5e9a630da7aba04be70ad3eb892cb3c3f64601ac753ae1de119c58d3476e98fee895220559e +SHA512 (libreoffice-translations-6.3.0.1.tar.xz) = 68a9d231f4485603abfb2f5286860e7c6a2d4fba8fe78d4d4f0d243484ae752357799e6286570f21a6c883a2f829cd60b47e79daa3621253fa13524b0745816b +SHA512 (libreoffice-translations-6.3.0.1.tar.xz.asc) = 3d6ea0d8854c3b3c33523a6705b091254306a12789a24d9e1f03576e909d097a97afeb7de0d7d7bf8adf27fcb1bdd8b501b0a6589e2897237ba87971e9c8d477