[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0' - 13 commits - configure.ac distro-configs/CPLinux-LOKit.conf download.lst drawinglayer/source external/Module_external.mk external/noto_font filter/source Makefile.fetch Repository.mk sd/qa solenv/flatpak-manifest.in vcl/headless vcl/inc vcl/osx vcl/qt5 vcl/quartz vcl/unx vcl/win
Caolán McNamara
caolanm at redhat.com
Mon Apr 23 14:47:03 UTC 2018
Makefile.fetch | 11 +
Repository.mk | 11 +
configure.ac | 18 ++
distro-configs/CPLinux-LOKit.conf | 1
download.lst | 22 ++
drawinglayer/source/primitive2d/metafileprimitive2d.cxx | 60 ++-----
drawinglayer/source/tools/emfpfont.cxx | 3
drawinglayer/source/tools/emfphelperdata.cxx | 104 ++++++++++--
drawinglayer/source/tools/emfphelperdata.hxx | 3
drawinglayer/source/tools/emfppath.cxx | 5
drawinglayer/source/tools/emfppen.cxx | 2
drawinglayer/source/tools/emfpstringformat.cxx | 16 +
drawinglayer/source/tools/emfpstringformat.hxx | 8
external/Module_external.mk | 1
external/noto_font/ExternalPackage_noto.mk | 134 ++++++++++++++++
external/noto_font/ExternalPackage_notosansjp.mk | 17 ++
external/noto_font/ExternalPackage_notosanskr.mk | 17 ++
external/noto_font/ExternalPackage_notosanssc.mk | 17 ++
external/noto_font/ExternalPackage_notosanstc.mk | 17 ++
external/noto_font/ExternalPackage_notoserifjp.mk | 17 ++
external/noto_font/ExternalPackage_notoserifkr.mk | 17 ++
external/noto_font/ExternalPackage_notoserifsc.mk | 17 ++
external/noto_font/ExternalPackage_notoseriftc.mk | 17 ++
external/noto_font/Makefile | 7
external/noto_font/Module_noto_font.mk | 33 +++
external/noto_font/README | 1
external/noto_font/UnpackedTarball_noto.mk | 46 +++++
external/noto_font/UnpackedTarball_notosansjp.mk | 14 +
external/noto_font/UnpackedTarball_notosanskr.mk | 14 +
external/noto_font/UnpackedTarball_notosanssc.mk | 14 +
external/noto_font/UnpackedTarball_notosanstc.mk | 14 +
external/noto_font/UnpackedTarball_notoserifjp.mk | 14 +
external/noto_font/UnpackedTarball_notoserifkr.mk | 14 +
external/noto_font/UnpackedTarball_notoserifsc.mk | 14 +
external/noto_font/UnpackedTarball_notoseriftc.mk | 14 +
filter/source/graphicfilter/icgm/actimpr.cxx | 6
filter/source/graphicfilter/icgm/class4.cxx | 14 -
filter/source/graphicfilter/icgm/outact.hxx | 2
sd/qa/unit/data/cgm/pass/binary_corvette.cgm |binary
solenv/flatpak-manifest.in | 10 -
vcl/headless/svpgdi.cxx | 20 +-
vcl/headless/svpinst.cxx | 6
vcl/headless/svpvd.cxx | 40 +++-
vcl/inc/headless/svpgdi.hxx | 1
vcl/inc/headless/svpvd.hxx | 9 -
vcl/osx/salframe.cxx | 12 -
vcl/qt5/Qt5Instance.cxx | 8
vcl/quartz/salbmp.cxx | 32 +++
vcl/unx/gtk/gtkinst.cxx | 2
vcl/win/app/salinst.cxx | 3
50 files changed, 776 insertions(+), 123 deletions(-)
New commits:
commit 33f943e14e27319848c925b9d06bf0cba7b5e1b5
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Apr 11 11:06:37 2018 +0100
Related: rhbz#1396729 use cairo_surface_create_similar
where we can
Change-Id: If6fd729a9cbf834faef33586b5bd886aad2fbe1d
Reviewed-on: https://gerrit.libreoffice.org/52726
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
(cherry picked from commit b524de950c6eb0bc61d05d41fe69b67ab59b16c6)
cairo_surface_create_similar_image is >= cairo 1.12.0
(cherry picked from commit 2ca4b505b25e13c9f422c28252f5b7533b8e3270)
Change-Id: I1805e5680beff6c632016686aa661efe25a8c2f8
Reviewed-on: https://gerrit.libreoffice.org/53021
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
(cherry picked from commit 28f2941680f850e88228e45699ac612ce036cf16)
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index d717dc7e39b3..eb352aeb3248 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -1351,7 +1351,13 @@ SalBitmap* SvpSalGraphics::getBitmap( long nX, long nY, long nWidth, long nHeigh
SalColor SvpSalGraphics::getPixel( long nX, long nY )
{
- cairo_surface_t *target = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1);
+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 12, 0)
+ cairo_surface_t *target = cairo_surface_create_similar_image(m_pSurface,
+#else
+ cairo_surface_t *target = cairo_image_surface_create(
+#endif
+ CAIRO_FORMAT_ARGB32, 1, 1);
+
cairo_t* cr = cairo_create(target);
cairo_rectangle(cr, 0, 0, 1, 1);
@@ -1515,9 +1521,15 @@ cairo_surface_t* SvpSalGraphics::createCairoSurface(const BitmapBuffer *pBuffer)
cairo_t* SvpSalGraphics::createTmpCompatibleCairoContext() const
{
- cairo_surface_t *target = cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
- m_aFrameSize.getX() * m_fScale,
- m_aFrameSize.getY() * m_fScale);
+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 12, 0)
+ cairo_surface_t *target = cairo_surface_create_similar_image(m_pSurface,
+#else
+ cairo_surface_t *target = cairo_image_surface_create(
+#endif
+ CAIRO_FORMAT_ARGB32,
+ m_aFrameSize.getX() * m_fScale,
+ m_aFrameSize.getY() * m_fScale);
+
#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0)
cairo_surface_set_device_scale(target, m_fScale, m_fScale);
#endif
diff --git a/vcl/headless/svpinst.cxx b/vcl/headless/svpinst.cxx
index 41bc04a2d3e4..c7cd3ae0f963 100644
--- a/vcl/headless/svpinst.cxx
+++ b/vcl/headless/svpinst.cxx
@@ -234,12 +234,14 @@ void SvpSalInstance::DestroyObject( SalObject* pObject )
#ifndef IOS
-SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics* /* pGraphics */,
+SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
long &nDX, long &nDY,
DeviceFormat eFormat,
const SystemGraphicsData* /* pData */ )
{
- SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice(eFormat, 1);
+ SvpSalGraphics *pSvpSalGraphics = dynamic_cast<SvpSalGraphics*>(pGraphics);
+ assert(pSvpSalGraphics);
+ SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice(eFormat, pSvpSalGraphics->getSurface());
pNew->SetSize( nDX, nDY );
return pNew;
}
diff --git a/vcl/headless/svpvd.cxx b/vcl/headless/svpvd.cxx
index cf78ebc8eb7d..4172fc383744 100644
--- a/vcl/headless/svpvd.cxx
+++ b/vcl/headless/svpvd.cxx
@@ -30,9 +30,18 @@
using namespace basegfx;
+SvpSalVirtualDevice::SvpSalVirtualDevice(DeviceFormat eFormat, cairo_surface_t* pRefSurface)
+ : m_eFormat(eFormat)
+ , m_pRefSurface(pRefSurface)
+ , m_pSurface(nullptr)
+{
+ cairo_surface_reference(m_pRefSurface);
+}
+
SvpSalVirtualDevice::~SvpSalVirtualDevice()
{
cairo_surface_destroy(m_pSurface);
+ cairo_surface_destroy(m_pRefSurface);
}
SalGraphics* SvpSalVirtualDevice::AcquireGraphics()
@@ -67,9 +76,6 @@ bool SvpSalVirtualDevice::SetSizeUsingBuffer( long nNewDX, long nNewDY,
{
m_aFrameSize = basegfx::B2IVector(nNewDX, nNewDY);
- nNewDX *= m_fScale;
- nNewDY *= m_fScale;
-
if (m_pSurface)
{
cairo_surface_destroy(m_pSurface);
@@ -77,23 +83,29 @@ bool SvpSalVirtualDevice::SetSizeUsingBuffer( long nNewDX, long nNewDY,
if (m_eFormat == DeviceFormat::BITMASK)
{
- m_pSurface = cairo_image_surface_create(CAIRO_FORMAT_A1,
+ m_pSurface = cairo_surface_create_similar(m_pRefSurface, CAIRO_CONTENT_ALPHA,
nNewDX, nNewDY);
}
- else
+ else if (pBuffer)
{
- m_pSurface = pBuffer ?
- cairo_image_surface_create_for_data(pBuffer, CAIRO_FORMAT_ARGB32,
- nNewDX, nNewDY,
- cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, nNewDX))
- :
- cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
- nNewDX, nNewDY);
- }
+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0)
+ double fXScale, fYScale;
+ cairo_surface_get_device_scale(m_pRefSurface, &fXScale, &fYScale);
+ nNewDX *= fXScale;
+ nNewDY *= fYScale;
+#endif
+
+ m_pSurface = cairo_image_surface_create_for_data(pBuffer, CAIRO_FORMAT_ARGB32,
+ nNewDX, nNewDY, cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, nNewDX));
#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0)
- cairo_surface_set_device_scale(m_pSurface, m_fScale, m_fScale);
+ cairo_surface_set_device_scale(m_pSurface, fXScale, fYScale);
#endif
+ }
+ else
+ {
+ m_pSurface = cairo_surface_create_similar(m_pRefSurface, CAIRO_CONTENT_COLOR_ALPHA, nNewDX, nNewDY);
+ }
// update device in existing graphics
for (auto const& graphic : m_aGraphics)
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index b14be042ed67..f8cee35ae9d6 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -93,6 +93,7 @@ class VCL_DLLPUBLIC SvpSalGraphics : public SalGraphics
public:
static GlyphCache& getPlatformGlyphCache();
void setSurface(cairo_surface_t* pSurface, const basegfx::B2IVector& rSize);
+ cairo_surface_t* getSurface() const { return m_pSurface; }
static cairo_user_data_key_t* getDamageKey();
private:
diff --git a/vcl/inc/headless/svpvd.hxx b/vcl/inc/headless/svpvd.hxx
index 704488cdfae0..51d6af9cb499 100644
--- a/vcl/inc/headless/svpvd.hxx
+++ b/vcl/inc/headless/svpvd.hxx
@@ -30,18 +30,13 @@ typedef struct _cairo_surface cairo_surface_t;
class VCL_DLLPUBLIC SvpSalVirtualDevice : public SalVirtualDevice
{
DeviceFormat m_eFormat;
+ cairo_surface_t* m_pRefSurface;
cairo_surface_t* m_pSurface;
basegfx::B2IVector m_aFrameSize;
- double m_fScale;
std::vector< SvpSalGraphics* > m_aGraphics;
public:
- SvpSalVirtualDevice(DeviceFormat eFormat, double fScale)
- : m_eFormat(eFormat)
- , m_pSurface(nullptr)
- , m_fScale(fScale)
- {
- }
+ SvpSalVirtualDevice(DeviceFormat eFormat, cairo_surface_t* pRefSurface);
virtual ~SvpSalVirtualDevice() override;
// SalVirtualDevice
diff --git a/vcl/qt5/Qt5Instance.cxx b/vcl/qt5/Qt5Instance.cxx
index c61a29a01935..0d128c2bc97c 100644
--- a/vcl/qt5/Qt5Instance.cxx
+++ b/vcl/qt5/Qt5Instance.cxx
@@ -84,13 +84,15 @@ SalObject* Qt5Instance::CreateObject(SalFrame* pParent, SystemWindowData*, bool
void Qt5Instance::DestroyObject(SalObject* pObject) { delete pObject; }
-SalVirtualDevice* Qt5Instance::CreateVirtualDevice(SalGraphics* /* pGraphics */, long& nDX,
- long& nDY, DeviceFormat eFormat,
+SalVirtualDevice* Qt5Instance::CreateVirtualDevice(SalGraphics* pGraphics, long& nDX, long& nDY,
+ DeviceFormat eFormat,
const SystemGraphicsData* /* pData */)
{
if (m_bUseCairo)
{
- SvpSalVirtualDevice* pVD = new SvpSalVirtualDevice(eFormat, 1);
+ SvpSalGraphics* pSvpSalGraphics = dynamic_cast<SvpSalGraphics*>(pGraphics);
+ assert(pSvpSalGraphics);
+ SvpSalVirtualDevice* pVD = new SvpSalVirtualDevice(eFormat, pSvpSalGraphics->getSurface());
pVD->SetSize(nDX, nDY);
return pVD;
}
diff --git a/vcl/unx/gtk/gtkinst.cxx b/vcl/unx/gtk/gtkinst.cxx
index 62b02a36a33f..ee03a340a12f 100644
--- a/vcl/unx/gtk/gtkinst.cxx
+++ b/vcl/unx/gtk/gtkinst.cxx
@@ -336,7 +336,7 @@ SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG,
(void) pGd;
SvpSalGraphics *pSvpSalGraphics = dynamic_cast<SvpSalGraphics*>(pG);
assert(pSvpSalGraphics);
- SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice(eFormat, pSvpSalGraphics->getScale());
+ SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice(eFormat, pSvpSalGraphics->getSurface());
pNew->SetSize( nDX, nDY );
return pNew;
#else
commit f2116ba0af70077f3039d73ca970febd96233c15
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Apr 20 14:58:57 2018 +0200
Adapt solenv/flatpak-manifest.in to recent download.lst change
...58433a8b88537a1a0883d107972de5c5fad59d4a "Upgrade to
language-subtag-registry-2018-03-30"
Change-Id: Ic58160a56e739d8850566bf67eaed5c981109eb1
(cherry picked from commit 6ea4b982fada0bbca957dfa0729e2c3225c8a460)
Reviewed-on: https://gerrit.libreoffice.org/53210
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
Tested-by: Jenkins <ci at libreoffice.org>
Tested-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>
(cherry picked from commit d1407aac59f3f218a311452fc7dcb7692fdf5285)
diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in
index 52b4c163c207..2134b139c7d6 100644
--- a/solenv/flatpak-manifest.in
+++ b/solenv/flatpak-manifest.in
@@ -266,10 +266,10 @@
"dest-filename": "external/tarballs/libfreehand-0.1.2.tar.xz"
},
{
- "url": "https://dev-www.libreoffice.org/src/language-subtag-registry-2017-12-14.tar.bz2",
- "sha256": "0f87b9428cbc2d96d8e4f54a07e3858b4a428e5fec9396bc3b52fb9f248be362",
+ "url": "https://dev-www.libreoffice.org/src/language-subtag-registry-2018-03-30.tar.bz2",
+ "sha256": "b7ad618b7db518155f00490a11b861496864f18b23b4b537eb80bfe84ca6f854",
"type": "file",
- "dest-filename": "external/tarballs/language-subtag-registry-2017-12-14.tar.bz2"
+ "dest-filename": "external/tarballs/language-subtag-registry-2018-03-30.tar.bz2"
},
{
"url": "https://dev-www.libreoffice.org/src/liblangtag-0.6.2.tar.bz2",
commit 59f707cc2a884eebbe91390e39d49839a0f86c11
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Apr 20 08:56:47 2018 +0200
Merge in Flatpak improvements
...from <https://github.com/flathub/org.libreoffice.LibreOffice/>:
commit 715fbcfb4e5c51d40387998932984e54639476a1
Author: Robert McQueen <rob at endlessm.com>
Date: Tue Apr 17 10:26:32 2018 +0100
edit .desktop files to add X-Endless-Alias with original names
Endless OS uses this to update icon grids & taskbar pins if the original files
have been removed. (Happy to update this to a more standardised key if a
consensus emerges.)
Change-Id: I646350090c38d84d1930c5afbec0ee500b60d0fb
(cherry picked from commit a161e41439fc6f9093c212a523154e5146bb1502)
Reviewed-on: https://gerrit.libreoffice.org/53198
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit e395b177ef34843e6f60e5802d640cb79aa8afae)
diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in
index 679ffa773872..52b4c163c207 100644
--- a/solenv/flatpak-manifest.in
+++ b/solenv/flatpak-manifest.in
@@ -577,7 +577,9 @@
"./autogen.sh --prefix=/run/build/libreoffice/inst --with-distro=LibreOfficeFlatpak --disable-symbols $(if test \"$(uname -m)\" = aarch64; then printf %s --disable-pdfium; fi)",
"make $(if test \"$(uname -i)\" = i386; then printf build-nocheck; fi)",
"make distro-pack-install",
- "make cmd cmd='$(SRCDIR)/solenv/bin/assemble-flatpak.sh'"
+ "make cmd cmd='$(SRCDIR)/solenv/bin/assemble-flatpak.sh'",
+ "desktop-file-edit --set-key=X-Endless-Alias --set-value=libreoffice-startcenter /app/share/applications/org.libreoffice.LibreOffice.desktop",
+ "for i in base calc draw impress math writer xsltfilter; do desktop-file-edit --set-key=X-Endless-Alias --set-value=libreoffice-$i /app/share/applications/org.libreoffice.LibreOffice-$i.desktop; done"
]
}
],
commit 1bd0d2dd62aa70c18212ce7f892714884c69dc11
Author: Eike Rathke <erack at redhat.com>
Date: Wed Apr 18 12:46:47 2018 +0200
Upgrade to language-subtag-registry-2018-03-30
Change-Id: I0cc3104cfccebe5d7e3fcafdb71d73a9d8d5e3d8
(cherry picked from commit 58433a8b88537a1a0883d107972de5c5fad59d4a)
Reviewed-on: https://gerrit.libreoffice.org/53095
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>
(cherry picked from commit ffe50e47aa04154e2643d9157760c83552ac0449)
diff --git a/download.lst b/download.lst
index ec7b714db49b..60700e7bace3 100644
--- a/download.lst
+++ b/download.lst
@@ -150,8 +150,8 @@ export JFREEREPORT_SAC_SHA256SUM := 085f2112c51fa8c1783fac12fbd45265059641512134
export JFREEREPORT_SAC_TARBALL := 39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip
export LIBJPEG_TURBO_SHA256SUM := 9098943b270388727ae61de82adec73cf9f0dbb240b3bc8b172595ebf405b528
export LIBJPEG_TURBO_TARBALL := libjpeg-turbo-1.5.2.tar.gz
-export LANGTAGREG_SHA256SUM := 0f87b9428cbc2d96d8e4f54a07e3858b4a428e5fec9396bc3b52fb9f248be362
-export LANGTAGREG_TARBALL := language-subtag-registry-2017-12-14.tar.bz2
+export LANGTAGREG_SHA256SUM := b7ad618b7db518155f00490a11b861496864f18b23b4b537eb80bfe84ca6f854
+export LANGTAGREG_TARBALL := language-subtag-registry-2018-03-30.tar.bz2
export LANGUAGETOOL_SHA256SUM := 48c87e41636783bba438b65fd895821e369ed139e1465fac654323ad93c5a82d
export LANGUAGETOOL_TARBALL := b63e6340a02ff1cacfeadb2c42286161-JLanguageTool-1.7.0.tar.bz2
export LCMS2_SHA256SUM := 66d02b229d2ea9474e62c2b6cd6720fde946155cd1d0d2bffdab829790a0fb22
commit 6d8c1e531e734ded83dd5bff1b02c1456171c9a2
Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
Date: Wed Apr 11 01:05:01 2018 +0200
tdf#113624 EMF+ Add support for different units conversion
With previous implementation only Pixel unit was supported.
Other units (eg. inch, milimeters, points, world) was treated
as Pixel.
With this patch the correct unit conversion was implemented to following records:
- FontObject
- PenObject
- SetWorldTransform
As a result records are properly scaled.
Tested with DrawString record from:
https://bugs.documentfoundation.org/attachment.cgi?id=140287
Change-Id: I77435ad8f1bbac08f298a03d91d0c7f1f1734e5c
Reviewed-on: https://gerrit.libreoffice.org/52825
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Bartosz Kosiorek <gang65 at poczta.onet.pl>
(cherry picked from commit e58dc868a6ac0df24adf88f32f90a9e4fc6fdae9)
diff --git a/drawinglayer/source/tools/emfpfont.cxx b/drawinglayer/source/tools/emfpfont.cxx
index 6c1b1a8e06c3..4c6d162dac11 100644
--- a/drawinglayer/source/tools/emfpfont.cxx
+++ b/drawinglayer/source/tools/emfpfont.cxx
@@ -49,6 +49,9 @@ namespace emfplushelper
SAL_INFO("drawinglayer", "EMF+\tfont\nEMF+\theader: 0x" << std::hex << (header >> 12) << " version: 0x" << (header & 0x1fff) << " size: " << std::dec << emSize << " unit: 0x" << std::hex << sizeUnit << std::dec);
SAL_INFO("drawinglayer", "EMF+\tflags: 0x" << std::hex << fontFlags << " reserved: 0x" << reserved << " length: 0x" << std::hex << length << std::dec);
+ //tdf#113624 Convert unit to Pixels
+ emSize = emSize * EmfPlusHelperData::getUnitToPixelMultiplier(static_cast<UnitType>(sizeUnit));
+
if (length > 0 && length < 0x4000)
{
rtl_uString *pStr = rtl_uString_alloc(length);
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx
index bd7b4d90a40f..ee0bf69c4ac0 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -114,6 +114,44 @@ namespace emfplushelper
StringAlignmentFar = 0x00000002
} StringAlignment;
+ float EmfPlusHelperData::getUnitToPixelMultiplier(const UnitType aUnitType)
+ {
+ switch (aUnitType)
+ {
+ case UnitTypePixel:
+ {
+ return 1.0f;
+ }
+ case UnitTypePoint:
+ {
+ SAL_INFO("drawinglayer", "EMF+\t Converting Points to Pixels.");
+ return 1.333333f;
+ }
+ case UnitTypeInch:
+ {
+ SAL_INFO("drawinglayer", "EMF+\t TODO Test Converting Inches to Pixels, if it is working correctly.");
+ return 96.0f;
+ }
+ case UnitTypeMillimeter:
+ {
+ SAL_INFO("drawinglayer", "EMF+\t TODO Test Converting Milimeters to Pixels, if it is working correctly.");
+ return 3.779528f;
+ }
+ case UnitTypeDocument:
+ {
+ SAL_INFO("drawinglayer", "EMF+\t TODO Test Converting Documents to Pixels, if it is working correctly.");
+ return 0.32f;
+ }
+ case UnitTypeWorld:
+ case UnitTypeDisplay:
+ default:
+ {
+ SAL_WARN("drawinglayer", "EMF+\tTODO Unimplemented support of Unit Type: 0x" << std::hex << aUnitType);
+ }
+ }
+ return 1.0f;
+ }
+
void EmfPlusHelperData::processObjectRecord(SvMemoryStream& rObjectStream, sal_uInt16 flags, sal_uInt32 dataSize, bool bUseWholeStream)
{
sal_uInt32 index;
@@ -1245,7 +1283,7 @@ namespace emfplushelper
}
else
{
- SAL_WARN("drawinglayer", "EMF+ DrawImage(Points) Wrong EMF+ file. Only Unit Type Pixel is support by EMF+ standard in DrawImage(Points)");
+ SAL_WARN("drawinglayer", "EMF+ DrawImage(Points) Wrong EMF+ file. Only Unit Type Pixel is support by EMF+ specification for DrawImage(Points)");
}
break;
}
@@ -1380,14 +1418,15 @@ namespace emfplushelper
SAL_INFO("drawinglayer", "EMF+ SetPageTransform");
SAL_INFO("drawinglayer", "EMF+\tscale: " << mfPageScale << " unit: " << flags);
- if (flags != UnitTypePixel)
+ if ((flags == UnitTypeDisplay) || (flags == UnitTypeWorld))
{
- SAL_WARN("drawinglayer", "EMF+\t TODO Only UnitTypePixel is supported. ");
+ SAL_WARN("drawinglayer", "EMF+ file error. UnitTypeDisplay and UnitTypeWorld are not supported by SetPageTransform in EMF+ specification.");
}
else
{
- mnMmX *= mfPageScale;
- mnMmY *= mfPageScale;
+ const float aPageScaleMul = mfPageScale * getUnitToPixelMultiplier(static_cast<UnitType>(flags));
+ mnMmX *= aPageScaleMul;
+ mnMmY *= aPageScaleMul;
mappingChanged();
}
break;
diff --git a/drawinglayer/source/tools/emfphelperdata.hxx b/drawinglayer/source/tools/emfphelperdata.hxx
index 3c03af6d17f3..b70730d64e39 100644
--- a/drawinglayer/source/tools/emfphelperdata.hxx
+++ b/drawinglayer/source/tools/emfphelperdata.hxx
@@ -262,6 +262,8 @@ namespace emfplushelper
static void ReadRectangle(SvStream& s, float& x, float& y, float &width, float& height, bool bCompressed = false);
static bool readXForm(SvStream& rIn, basegfx::B2DHomMatrix& rTarget);
::basegfx::B2DPolyPolygon const combineClip(::basegfx::B2DPolyPolygon const & leftPolygon, int combineMode, ::basegfx::B2DPolyPolygon const & rightPolygon);
+
+ static float getUnitToPixelMultiplier(const UnitType aUnitType);
};
}
diff --git a/drawinglayer/source/tools/emfppen.cxx b/drawinglayer/source/tools/emfppen.cxx
index ac9d63a202d9..eb655d674e09 100644
--- a/drawinglayer/source/tools/emfppen.cxx
+++ b/drawinglayer/source/tools/emfppen.cxx
@@ -171,6 +171,8 @@ namespace emfplushelper
SAL_INFO("drawinglayer", "EMF+\t graphics version: 0x" << std::hex << graphicsVersion << " type (must be set to zero): " << penType <<
" pen data flags: 0x" << penDataFlags << " unit: " << penUnit << " width: " << std::dec << penWidth);
+ penWidth = penWidth * EmfPlusHelperData::getUnitToPixelMultiplier(static_cast<UnitType>(penUnit));
+
if (penDataFlags & PenDataTransform)
{
EmfPlusHelperData::readXForm(s, pen_transformation);
commit aeefdb9325ac27c4a59b9484dfcca0e8fc380ced
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Apr 16 10:16:56 2018 +0100
Resolves: tdf#116999 fix reading cgm text at record bounds
Change-Id: Ibbff7b0a3c3447135e0f6c585914dc6018e51765
Reviewed-on: https://gerrit.libreoffice.org/52952
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
(cherry picked from commit a0c008175eee894f6b4a8975d6c0b4bec2592d08)
diff --git a/filter/source/graphicfilter/icgm/actimpr.cxx b/filter/source/graphicfilter/icgm/actimpr.cxx
index 9a0762905bab..7be62849f588 100644
--- a/filter/source/graphicfilter/icgm/actimpr.cxx
+++ b/filter/source/graphicfilter/icgm/actimpr.cxx
@@ -706,7 +706,7 @@ void CGMImpressOutAct::DrawPolyPolygon( tools::PolyPolygon const & rPolyPolygon
}
}
-void CGMImpressOutAct::DrawText( awt::Point const & rTextPos, awt::Size const & rTextSize, char const * pString, FinalFlag eFlag )
+void CGMImpressOutAct::DrawText(awt::Point const & rTextPos, awt::Size const & rTextSize, const OUString& rString, FinalFlag eFlag)
{
if ( ImplCreateShape( "com.sun.star.drawing.TextShape" ) )
{
@@ -796,8 +796,6 @@ void CGMImpressOutAct::DrawText( awt::Point const & rTextPos, awt::Size const &
uno::Any aFirstQuery( maXShape->queryInterface( cppu::UnoType<text::XText>::get()));
if( aFirstQuery >>= xText )
{
- OUString aStr(pString, rtl_str_getLength(pString), RTL_TEXTENCODING_ASCII_US);
-
uno::Reference< text::XTextCursor > aXTextCursor( xText->createTextCursor() );
{
aXTextCursor->gotoEnd( false );
@@ -833,7 +831,7 @@ void CGMImpressOutAct::DrawText( awt::Point const & rTextPos, awt::Size const &
aAny <<= true;
maXPropSet->setPropertyValue( "TextFitToSize", aAny );
}
- aCursorText->setString( aStr );
+ aCursorText->setString(rString);
aXTextCursor->gotoEnd( true );
ImplSetTextBundle( aCursorPropSet );
}
diff --git a/filter/source/graphicfilter/icgm/class4.cxx b/filter/source/graphicfilter/icgm/class4.cxx
index 0185f699014c..17a12de018ce 100644
--- a/filter/source/graphicfilter/icgm/class4.cxx
+++ b/filter/source/graphicfilter/icgm/class4.cxx
@@ -185,15 +185,14 @@ void CGM::ImplDoClass4()
sal_uInt32 nType = ImplGetUI16();
sal_uInt32 nSize = ImplGetUI( 1 );
- if (static_cast<sal_uIntPtr>(mpEndValidSource - (mpSource + mnParaSize)) <= nSize)
+ if (static_cast<sal_uIntPtr>(mpEndValidSource - (mpSource + mnParaSize)) < nSize)
throw css::uno::Exception("attempt to read past end of input", nullptr);
- mpSource[mnParaSize + nSize] = 0;
+ OUString aStr(reinterpret_cast<char*>(mpSource) + mnParaSize, nSize, RTL_TEXTENCODING_ASCII_US);
awt::Size aSize;
awt::Point aPoint( (long)aFloatPoint.X, (long)aFloatPoint.Y );
- mpOutAct->DrawText( aPoint, aSize,
- reinterpret_cast<char*>(mpSource) + mnParaSize, (FinalFlag)nType );
+ mpOutAct->DrawText(aPoint, aSize, aStr, (FinalFlag)nType);
mnParaSize = mnElementSize;
}
break;
@@ -223,15 +222,14 @@ void CGM::ImplDoClass4()
sal_uInt32 nType = ImplGetUI16();
sal_uInt32 nSize = ImplGetUI(1);
- if (static_cast<sal_uIntPtr>(mpEndValidSource - (mpSource + mnParaSize)) <= nSize)
+ if (static_cast<sal_uIntPtr>(mpEndValidSource - (mpSource + mnParaSize)) < nSize)
throw css::uno::Exception("attempt to read past end of input", nullptr);
- mpSource[ mnParaSize + nSize ] = 0;
+ OUString aStr(reinterpret_cast<char*>(mpSource) + mnParaSize, nSize, RTL_TEXTENCODING_ASCII_US);
awt::Point aPoint( (long)aFloatPoint.X, (long)aFloatPoint.Y );
awt::Size aSize((long)dx, (long)dy);
- mpOutAct->DrawText( aPoint, aSize ,
- reinterpret_cast<char*>(mpSource) + mnParaSize, (FinalFlag)nType );
+ mpOutAct->DrawText(aPoint, aSize , aStr, (FinalFlag)nType);
mnParaSize = mnElementSize;
}
break;
diff --git a/filter/source/graphicfilter/icgm/outact.hxx b/filter/source/graphicfilter/icgm/outact.hxx
index 98f02a6e124f..b05ee8afd558 100644
--- a/filter/source/graphicfilter/icgm/outact.hxx
+++ b/filter/source/graphicfilter/icgm/outact.hxx
@@ -89,7 +89,7 @@ public:
void DrawPolyLine( tools::Polygon& );
void DrawPolybezier( tools::Polygon& );
void DrawPolyPolygon( tools::PolyPolygon const & );
- void DrawText( css::awt::Point const & TextRectPos, css::awt::Size const & TextRectSize, char const * String, FinalFlag );
+ void DrawText(css::awt::Point const & TextRectPos, css::awt::Size const & TextRectSize, const OUString& rString, FinalFlag);
void AppendText( const char* String );
void FirstOutPut() { mpCGM->mbFirstOutPut = false; } ;
diff --git a/sd/qa/unit/data/cgm/pass/binary_corvette.cgm b/sd/qa/unit/data/cgm/pass/binary_corvette.cgm
new file mode 100644
index 000000000000..2b38c48345d3
Binary files /dev/null and b/sd/qa/unit/data/cgm/pass/binary_corvette.cgm differ
commit 4fa6b4c6d65596c256228bbd0cd696c1800b5214
Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
Date: Sun Apr 15 02:00:16 2018 +0200
tdf#53485 tdf#117015 EMF+ Fix for displaying EMF+ files where GetDC is used
With EMF+ Only mode, still the EMF records could be used for
displaying objects, by using Get Device Context (GetDC).
Files identified as EMF+ Only can contain both EMF+ records and EMF records. All EMF+
records are used to render the image. The EMF records that are part of the drawing are those
preceded by a Get Device Context record.
Unfortunately after finishing EMF drawing, the clip region was
not reset. As a result records after EMF record was not displayed.
With this patch, the issue was fixed by resetting clip region.
Change-Id: I998b14e7c3b56a7711ba6a7bec08ec2097e0dfce
Reviewed-on: https://gerrit.libreoffice.org/52897
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Bartosz Kosiorek <gang65 at poczta.onet.pl>
(cherry picked from commit a2851d562cdfaf06e5f767030677846f3f129b1c)
Reviewed-on: https://gerrit.libreoffice.org/53093
Reviewed-by: Armin Le Grand <Armin.Le.Grand at cib.de>
Tested-by: Bartosz Kosiorek <gang65 at poczta.onet.pl>
(cherry picked from commit 674e8c5412e938191ad3e928e9a52b5420bec85c)
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx
index 2b123372b908..bd7b4d90a40f 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -714,7 +714,8 @@ namespace emfplushelper
mMFlags(0),
mMStream(),
mrTargetHolders(rTargetHolders),
- mrPropertyHolders(rPropertyHolders)
+ mrPropertyHolders(rPropertyHolders),
+ bIsGetDCProcessing(false)
{
rMS.ReadInt32(mnFrameLeft).ReadInt32(mnFrameTop).ReadInt32(mnFrameRight).ReadInt32(mnFrameBottom);
SAL_INFO("drawinglayer", "EMF+ picture frame: " << mnFrameLeft << "," << mnFrameTop << " - " << mnFrameRight << "," << mnFrameBottom);
@@ -807,6 +808,12 @@ namespace emfplushelper
SAL_INFO("drawinglayer", "EMF+ record size: " << size << " type: " << emfTypeToName(type) << " flags: " << flags << " data size: " << dataSize);
+ if (bIsGetDCProcessing)
+ {
+ SAL_INFO("drawinglayer", "EMF+ Resets the current clipping region for the world space to infinity.");
+ wmfemfhelper::HandleNewClipRegion(::basegfx::B2DPolyPolygon(), mrTargetHolders, mrPropertyHolders);
+ bIsGetDCProcessing = false;
+ }
if (type == EmfPlusRecordTypeObject && ((mbMultipart && (flags & 0x7fff) == (mMFlags & 0x7fff)) || (flags & 0x8000)))
{
if (!mbMultipart)
@@ -881,6 +888,7 @@ namespace emfplushelper
}
case EmfPlusRecordTypeGetDC:
{
+ bIsGetDCProcessing = true;
SAL_INFO("drawinglayer", "EMF+ GetDC");
SAL_INFO("drawinglayer", "EMF+\talready used in svtools wmf/emf filter parser");
break;
diff --git a/drawinglayer/source/tools/emfphelperdata.hxx b/drawinglayer/source/tools/emfphelperdata.hxx
index ba58686088f9..3c03af6d17f3 100644
--- a/drawinglayer/source/tools/emfphelperdata.hxx
+++ b/drawinglayer/source/tools/emfphelperdata.hxx
@@ -223,6 +223,7 @@ namespace emfplushelper
/// data holders
wmfemfhelper::TargetHolders& mrTargetHolders;
wmfemfhelper::PropertyHolders& mrPropertyHolders;
+ bool bIsGetDCProcessing;
// readers
void processObjectRecord(SvMemoryStream& rObjectStream, sal_uInt16 flags, sal_uInt32 dataSize, bool bUseWholeStream = false);
commit e3cf9fe0057695a258ca66a710f48dfb61057549
Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
Date: Fri Apr 13 16:56:29 2018 +0200
tdf#55058 EMF+ Properly close shapes with "setClosed" method.
With previous implementation of closing shapes, we are adding
new line between last and first point.
It was causing wrong border shape during displaying.
With this patch proper method was used to fix that.
Change-Id: If0a084700401edd9d3b8a57cb27154079828e6ed
Reviewed-on: https://gerrit.libreoffice.org/52857
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Patrick Jaap <patrick.jaap at tu-dresden.de>
Reviewed-by: Armin Le Grand <Armin.Le.Grand at cib.de>
(cherry picked from commit 5024688f5e2d99b704fff05d2dddf12c397a4aa9)
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx
index 8991b2f381b9..2b123372b908 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -1020,7 +1020,7 @@ namespace emfplushelper
// Silent MSVC warning C4701: potentially uninitialized local variable 'brushIndexOrColor' used
sal_uInt32 brushIndexOrColor = 999;
sal_Int32 rectangles;
- bool isColor = (flags & 0x8000);
+ const bool isColor = (flags & 0x8000);
::basegfx::B2DPolygon polygon;
if (EmfPlusRecordTypeFillRects == type)
@@ -1040,14 +1040,14 @@ namespace emfplushelper
{
float x, y, width, height;
ReadRectangle(rMS, x, y, width, height, bool(flags & 0x4000));
-
+ polygon.clear();
polygon.append(Map(x, y));
polygon.append(Map(x + width, y));
polygon.append(Map(x + width, y + height));
polygon.append(Map(x, y + height));
- polygon.append(Map(x, y));
+ polygon.setClosed(true);
- SAL_INFO("drawinglayer", "EMF+\trectangle: " << x << ", " << width << "x" << height);
+ SAL_INFO("drawinglayer", "EMF+\t rectangle: " << x << ", "<< y << " " << width << "x" << height);
::basegfx::B2DPolyPolygon polyPolygon(polygon);
if (type == EmfPlusRecordTypeFillRects)
@@ -1059,13 +1059,13 @@ namespace emfplushelper
}
case EmfPlusRecordTypeFillPolygon:
{
- sal_uInt8 index = flags & 0xff;
+ const sal_uInt8 index = flags & 0xff;
sal_uInt32 brushIndexOrColor;
sal_Int32 points;
rMS.ReadUInt32(brushIndexOrColor);
rMS.ReadInt32(points);
- SAL_INFO("drawinglayer", "EMF+ FillPolygon in slot: " << +index << " points: " << points);
+ SAL_INFO("drawinglayer", "EMF+ FillPolygon in slot: " << index << " points: " << points);
SAL_INFO("drawinglayer", "EMF+\t: " << ((flags & 0x8000) ? "color" : "brush index") << " 0x" << std::hex << brushIndexOrColor << std::dec);
EMFPPath path(points, true);
diff --git a/drawinglayer/source/tools/emfppath.cxx b/drawinglayer/source/tools/emfppath.cxx
index 8e0d2b159a20..5ba8048d0bd4 100644
--- a/drawinglayer/source/tools/emfppath.cxx
+++ b/drawinglayer/source/tools/emfppath.cxx
@@ -156,10 +156,7 @@ namespace emfplushelper
// Draw an extra line between the last point and the first point, to close the shape.
if (bAddLineToCloseShape)
{
- if (bMapIt)
- polygon.append (rR.Map (pPoints [0], pPoints [1]) );
- else
- polygon.append (::basegfx::B2DPoint (pPoints [0], pPoints [1]) );
+ polygon.setClosed (true);
}
if (polygon.count ())
commit d5c6f6c83843b39ddc2f6919f167a6fe61e1d112
Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
Date: Tue Apr 10 22:15:01 2018 +0200
tdf#106084 EMF+ Implement String aligment and Leading/Trailing Margin.
Many users noticing that EMF DrawString is shifted horizontally in same cases.
It is caused by missing implementation of:
- StringAlignment:
Near: Alignment is to the left side of the layout rectangle
Center: Specifies that alignment is centered
between the origin and extent of the layout rectangle.
Far: Alignment is to the right side of the layout rectangle
- Leading Margin: specifies the length of the space to add
to the starting position of a string
- trailing Margin: Length of the space to leave following a string.
With this path this missing parameters are implemented.
It was tested with document:
https://bugs.documentfoundation.org/attachment.cgi?id=131334
In following document StringAlignmentCenter and LeadingMargin is not set:
https://bugs.documentfoundation.org/attachment.cgi?id=124180
I make sure that there is no regression (the image should be displayed
as without the patch.
Change-Id: I7909a1d02ffd558a3bf91bd41f6945830252724d
Reviewed-on: https://gerrit.libreoffice.org/52696
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Patrick Jaap <patrick.jaap at tu-dresden.de>
Reviewed-by: Bartosz Kosiorek <gang65 at poczta.onet.pl>
(cherry picked from commit ba662ea44083107f10184a4f01b94f9b8e3ed3dc)
Reviewed-on: https://gerrit.libreoffice.org/52808
Reviewed-by: Armin Le Grand <Armin.Le.Grand at cib.de>
(cherry picked from commit 32e7640dc6113945fcd48ce3c0e74cf095da9670)
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx
index 0afabe77302d..8991b2f381b9 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -107,6 +107,13 @@ namespace emfplushelper
{
}
+ typedef enum
+ {
+ StringAlignmentNear = 0x00000000,
+ StringAlignmentCenter = 0x00000001,
+ StringAlignmentFar = 0x00000002
+ } StringAlignment;
+
void EmfPlusHelperData::processObjectRecord(SvMemoryStream& rObjectStream, sal_uInt16 flags, sal_uInt32 dataSize, bool bUseWholeStream)
{
sal_uInt32 index;
@@ -1251,12 +1258,12 @@ namespace emfplushelper
SAL_INFO("drawinglayer", "EMF+ DrawString layoutRect: " << lx << "," << ly << " - " << lw << "x" << lh);
// parse the string
- OUString text = read_uInt16s_ToOUString(rMS, stringLength);
+ const OUString text = read_uInt16s_ToOUString(rMS, stringLength);
SAL_INFO("drawinglayer", "EMF+ DrawString string: " << text);
// get the stringFormat from the Object table ( this is OPTIONAL and may be nullptr )
- EMFPStringFormat *stringFormat = static_cast< EMFPStringFormat* >(maEMFPObjects[formatId & 0xff].get());
+ const EMFPStringFormat *stringFormat = static_cast< EMFPStringFormat* >(maEMFPObjects[formatId & 0xff].get());
// get the font from the flags
- EMFPFont *font = static_cast< EMFPFont* >( maEMFPObjects[flags & 0xff].get() );
+ const EMFPFont *font = static_cast< EMFPFont* >( maEMFPObjects[flags & 0xff].get() );
if (!font)
{
break;
@@ -1282,8 +1289,24 @@ namespace emfplushelper
false); // BiDiStrong
css::lang::Locale locale;
+ double stringAlignmentHorizontalOffset = 0.0;
if (stringFormat)
{
+ SAL_WARN_IF(stringFormat && stringFormat->DirectionRightToLeft(), "drawinglayer", "EMF+ DrawString Alignment TODO For a right-to-left layout rectangle, the origin should be at the upper right.");
+ if (stringFormat->stringAlignment == StringAlignmentNear)
+ // Alignment is to the left side of the layout rectangle (lx, ly, lw, lh)
+ {
+ stringAlignmentHorizontalOffset = stringFormat->leadingMargin * font->emSize;
+ } else if (stringFormat->stringAlignment == StringAlignmentCenter)
+ // Alignment is centered between the origin and extent of the layout rectangle
+ {
+ stringAlignmentHorizontalOffset = 0.5 * lw + stringFormat->leadingMargin * font->emSize - 0.3 * font->emSize * stringLength;
+ } else if (stringFormat->stringAlignment == StringAlignmentFar)
+ // Alignment is to the right side of the layout rectangle
+ {
+ stringAlignmentHorizontalOffset = lw - stringFormat->trailingMargin * font->emSize - 0.6 * font->emSize * stringLength;
+ }
+
LanguageTag aLanguageTag(static_cast< LanguageType >(stringFormat->language));
locale = aLanguageTag.getLocale();
}
@@ -1293,10 +1316,10 @@ namespace emfplushelper
locale = Application::GetSettings().GetLanguageTag().getLocale();
}
- basegfx::B2DHomMatrix transformMatrix = basegfx::utils::createScaleTranslateB2DHomMatrix(MapSize(font->emSize,font->emSize),Map(lx,ly+font->emSize));
+ const basegfx::B2DHomMatrix transformMatrix = basegfx::utils::createScaleTranslateB2DHomMatrix(
+ MapSize(font->emSize, font->emSize), Map(lx + stringAlignmentHorizontalOffset, ly + font->emSize));
const Color color = EMFPGetBrushColorOrARGBColor(flags, brushId);
-
mrPropertyHolders.Current().setTextColor(color.getBColor());
mrPropertyHolders.Current().setTextColorActive(true);
diff --git a/drawinglayer/source/tools/emfpstringformat.cxx b/drawinglayer/source/tools/emfpstringformat.cxx
index 3c83e0cfddc5..79696b7c3c47 100644
--- a/drawinglayer/source/tools/emfpstringformat.cxx
+++ b/drawinglayer/source/tools/emfpstringformat.cxx
@@ -35,7 +35,7 @@ namespace emfplushelper
, hotkeyPrefix(0)
, leadingMargin(0.0)
, trailingMargin(0.0)
- , tracking(0.0)
+ , tracking(1.0)
, trimming(0)
, tabStopCount(0)
, rangeCount(0)
@@ -52,10 +52,22 @@ namespace emfplushelper
language >>= 16;
digitLanguage >>= 16;
SAL_WARN_IF((header >> 12) != 0xdbc01, "drawinglayer", "Invalid header - not 0xdbc01");
- SAL_INFO("drawinglayer", "EMF+\t string format\nEMF+\theader: 0x" << std::hex << (header >> 12) << " version: 0x" << (header & 0x1fff) << " StringFormatFlags: " << std::dec << stringFormatFlags << " Language: " << language);
+ SAL_INFO("drawinglayer", "EMF+\t string format\nEMF+\theader: 0x" << std::hex << (header >> 12) << " version: 0x" << (header & 0x1fff) << " StringFormatFlags: 0x" << stringFormatFlags << std::dec << " Language: " << language);
SAL_INFO("drawinglayer", "EMF+\t StringAlignment: " << stringAlignment << " LineAlign: " << lineAlign << " DigitSubstitution: " << digitSubstitution << " DigitLanguage: " << digitLanguage);
SAL_INFO("drawinglayer", "EMF+\t FirstTabOffset: " << firstTabOffset << " HotkeyPrefix: " << hotkeyPrefix << " LeadingMargin: " << leadingMargin << " TrailingMargin: " << trailingMargin << " Tracking: " << tracking);
SAL_INFO("drawinglayer", "EMF+\t Trimming: " << trimming << " TabStopCount: " << tabStopCount << " RangeCount: " << rangeCount);
+
+ SAL_WARN_IF(stringAlignment, "drawinglayer", "EMF+\t TODO EMFPStringFormat:StringAlignment");
+ SAL_WARN_IF(lineAlign, "drawinglayer", "EMF+\t TODO EMFPStringFormat:lineAlign");
+ SAL_WARN_IF(digitSubstitution, "drawinglayer", "EMF+\t TODO EMFPStringFormat:digitSubstitution");
+ SAL_WARN_IF(firstTabOffset != 0.0, "drawinglayer", "EMF+\t TODO EMFPStringFormat:firstTabOffset");
+ SAL_WARN_IF(hotkeyPrefix, "drawinglayer", "EMF+\t TODO EMFPStringFormat:hotkeyPrefix");
+ SAL_WARN_IF(leadingMargin != 0.0, "drawinglayer", "EMF+\t TODO EMFPStringFormat:leadingMargin");
+ SAL_WARN_IF(trailingMargin != 0.0, "drawinglayer", "EMF+\t TODO EMFPStringFormat:trailingMargin");
+ SAL_WARN_IF(tracking != 1.0, "drawinglayer", "EMF+\t TODO EMFPStringFormat:tracking");
+ SAL_WARN_IF(trimming, "drawinglayer", "EMF+\t TODO EMFPStringFormat:trimming");
+ SAL_WARN_IF(tabStopCount, "drawinglayer", "EMF+\t TODO EMFPStringFormat:tabStopCount");
+ SAL_WARN_IF(rangeCount, "drawinglayer", "EMF+\t TODO EMFPStringFormat:StringFormatData");
}
}
diff --git a/drawinglayer/source/tools/emfpstringformat.hxx b/drawinglayer/source/tools/emfpstringformat.hxx
index 2a05f6dd75a3..a3d9cbc83978 100644
--- a/drawinglayer/source/tools/emfpstringformat.hxx
+++ b/drawinglayer/source/tools/emfpstringformat.hxx
@@ -29,14 +29,14 @@ namespace emfplushelper
sal_uInt32 header;
sal_uInt32 stringFormatFlags;
sal_uInt32 language;
- sal_uInt32 stringAlignment;
- sal_uInt32 lineAlign;
+ sal_uInt32 stringAlignment; // Horizontal alignment
+ sal_uInt32 lineAlign; // Vertical alignment
sal_uInt32 digitSubstitution;
sal_uInt32 digitLanguage;
float firstTabOffset;
sal_Int32 hotkeyPrefix;
- float leadingMargin;
- float trailingMargin;
+ float leadingMargin; // Length of the space to add to the starting position of a string.
+ float trailingMargin; // Length of the space to leave following a string.
float tracking;
sal_Int32 trimming;
sal_Int32 tabStopCount;
commit 805d01d6769a61d20763bf2c45138eaa4b88b418
Author: Michael Stahl <Michael.Stahl at cib.de>
Date: Tue Apr 17 18:41:39 2018 +0200
vcl: WNT: *really* avoid calling SHAddToRecentDocs() from unit tests
On Windows 10, Explorer spends ridiculous amounts of CPU with updating
its recent documents view while tests are running.
(cherry picked from commit 94c264859f621e8e7c793fad2beb6528659433bf)
It's much better to check IsHeadlessMode anyway because that is set in
more situations, and if you run soffice --headless you probably don't
want the corresponding files to show up in Explorer's Recently list.
(cherry picked from commit b07e8a7e16ba69e822a309ec280d1987f90021a3)
Change-Id: I8ada3659d05c94d072ba30859090e835a595e9ea
Reviewed-on: https://gerrit.libreoffice.org/53115
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
(cherry picked from commit c18be7816a253bb03675f74df38b41a999a02952)
diff --git a/vcl/win/app/salinst.cxx b/vcl/win/app/salinst.cxx
index b13360f40b16..dcea8d53f6d7 100644
--- a/vcl/win/app/salinst.cxx
+++ b/vcl/win/app/salinst.cxx
@@ -930,6 +930,9 @@ OUString WinSalInstance::GetConnectionIdentifier()
*/
void WinSalInstance::AddToRecentDocumentList(const OUString& rFileUrl, const OUString& /*rMimeType*/, const OUString& rDocumentService)
{
+ if (Application::IsHeadlessModeEnabled())
+ return;
+
OUString system_path;
osl::FileBase::RC rc = osl::FileBase::getSystemPathFromFileURL(rFileUrl, system_path);
commit 9e33e6d2cb11b80192ff8d4aaa757ca155763609
Author: Armin Le Grand <Armin.Le.Grand at cib.de>
Date: Mon Oct 30 16:29:09 2017 +0100
tdf#113197 Add MaskPrimitive (clip) to EMF/WMF if needed
Added code to quartz vcl implementation that takes care
when BitmapPalette.count != (depth^^2)-1 - which may
be the case anytime. If then a bitmap value exists that
goes beyond that count, a invalid access was executed
Change-Id: Iab332c91b8753aab85e9d365323f5c9e531efab2
Reviewed-on: https://gerrit.libreoffice.org/44058
Reviewed-by: Bartosz Kosiorek <gang65 at poczta.onet.pl>
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/53085
Reviewed-by: Armin Le Grand <Armin.Le.Grand at cib.de>
(cherry picked from commit 6e591f06e39c69c270c8c01e9ed138d315720624)
diff --git a/drawinglayer/source/primitive2d/metafileprimitive2d.cxx b/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
index bb3d243b4beb..5ace807a264d 100644
--- a/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
@@ -20,43 +20,10 @@
#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
#include <wmfemfhelper.hxx>
-//#include <basegfx/utils/canvastools.hxx>
#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-//#include <basegfx/color/bcolor.hxx>
-//#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-//#include <vcl/lineinfo.hxx>
-//#include <drawinglayer/attribute/lineattribute.hxx>
-//#include <drawinglayer/attribute/strokeattribute.hxx>
-//#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-//#include <vcl/metaact.hxx>
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-//#include <basegfx/matrix/b2dhommatrixtools.hxx>
-//#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-//#include <basegfx/polygon/b2dpolygontools.hxx>
-//#include <drawinglayer/primitive2d/discretebitmapprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-//#include <vcl/salbtype.hxx>
-//#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
-//#include <vcl/svapp.hxx>
-//#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/fillhatchprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-//#include <basegfx/polygon/b2dpolygonclipper.hxx>
-//#include <drawinglayer/primitive2d/invertprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/fillgraphicprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/wallpaperprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-//#include <drawinglayer/primitive2d/textdecoratedprimitive2d.hxx>
-//#include <i18nlangtag/languagetag.hxx>
-//#include <drawinglayer/primitive2d/textlineprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx>
-//#include <drawinglayer/primitive2d/epsprimitive2d.hxx>
-//#include <tools/fract.hxx>
-//#include <numeric>
-//#include <emfplushelper.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
using namespace com::sun::star;
@@ -74,6 +41,29 @@ namespace drawinglayer
{
// get target size
const ::tools::Rectangle aMtfTarget(getMetaFile().GetPrefMapMode().GetOrigin(), getMetaFile().GetPrefSize());
+ const basegfx::B2DRange aMtfRange(aMtfTarget.Left(), aMtfTarget.Top(), aMtfTarget.Right(), aMtfTarget.Bottom());
+
+ // tdf#113197 get content range and check if we have an overlap with
+ // defined target range (aMtfRange)
+ if (!aMtfRange.isEmpty())
+ {
+ const basegfx::B2DRange aContentRange(xRetval.getB2DRange(rViewInformation));
+
+ // also test equal since isInside gives also true for equal
+ if (!aMtfRange.equal(aContentRange) && !aMtfRange.isInside(aContentRange))
+ {
+ // contentRange is partly larger than aMtfRange (stuff sticks
+ // outside), clipping is needed
+ const drawinglayer::primitive2d::Primitive2DReference xMask(
+ new drawinglayer::primitive2d::MaskPrimitive2D(
+ basegfx::B2DPolyPolygon(
+ basegfx::utils::createPolygonFromRect(
+ aMtfRange)),
+ xRetval));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DContainer{ xMask };
+ }
+ }
// create transformation
basegfx::B2DHomMatrix aAdaptedTransform;
diff --git a/vcl/quartz/salbmp.cxx b/vcl/quartz/salbmp.cxx
index b96e25421686..a74f6096bf5a 100644
--- a/vcl/quartz/salbmp.cxx
+++ b/vcl/quartz/salbmp.cxx
@@ -451,11 +451,13 @@ class ImplPixelFormat8 : public ImplPixelFormat
private:
sal_uInt8* pData;
const BitmapPalette& mrPalette;
+ const sal_uInt8 mnPaletteCount;
public:
explicit ImplPixelFormat8( const BitmapPalette& rPalette )
: pData(nullptr)
, mrPalette(rPalette)
+ , mnPaletteCount(static_cast< sal_uInt8 >(rPalette.GetEntryCount()))
{
}
virtual void StartLine( sal_uInt8* pLine ) override { pData = pLine; }
@@ -465,7 +467,13 @@ public:
}
virtual ColorData ReadPixel() override
{
- return mrPalette[ *pData++ ].operator Color().GetColor();
+ const sal_uInt8 nIndex(*pData++);
+
+ // Caution(!) rPalette.GetEntryCount() may be != (depth^^2)-1 (!)
+ if(nIndex < mnPaletteCount)
+ return mrPalette[nIndex].operator Color().GetColor();
+ else
+ return Color(COL_BLACK).GetColor();
}
virtual void WritePixel( ColorData nColor ) override
{
@@ -481,6 +489,7 @@ class ImplPixelFormat4 : public ImplPixelFormat
private:
sal_uInt8* pData;
const BitmapPalette& mrPalette;
+ const sal_uInt8 mnPaletteCount;
sal_uInt32 mnX;
sal_uInt32 mnShift;
@@ -488,6 +497,7 @@ public:
explicit ImplPixelFormat4( const BitmapPalette& rPalette )
: pData(nullptr)
, mrPalette(rPalette)
+ , mnPaletteCount(static_cast< sal_uInt8 >(rPalette.GetEntryCount()))
, mnX(0)
, mnShift(0)
{
@@ -508,10 +518,15 @@ public:
}
virtual ColorData ReadPixel() override
{
- const BitmapColor& rColor = mrPalette[( pData[mnX >> 1] >> mnShift) & 0x0f];
+ // Caution(!) rPalette.GetEntryCount() may be != (depth^^2)-1 (!)
+ const sal_uInt8 nIndex(( pData[mnX >> 1] >> mnShift) & 0x0f);
mnX++;
mnShift ^= 4;
- return rColor.operator Color().GetColor();
+
+ if(nIndex < mnPaletteCount)
+ return mrPalette[nIndex].operator Color().GetColor();
+ else
+ return Color(COL_BLACK).GetColor();
}
virtual void WritePixel( ColorData nColor ) override
{
@@ -530,12 +545,14 @@ class ImplPixelFormat1 : public ImplPixelFormat
private:
sal_uInt8* pData;
const BitmapPalette& mrPalette;
+ const sal_uInt8 mnPaletteCount;
sal_uInt32 mnX;
public:
explicit ImplPixelFormat1( const BitmapPalette& rPalette )
: pData(nullptr)
, mrPalette(rPalette)
+ , mnPaletteCount(static_cast< sal_uInt8 >(rPalette.GetEntryCount()))
, mnX(0)
{
}
@@ -550,9 +567,14 @@ public:
}
virtual ColorData ReadPixel() override
{
- const BitmapColor& rColor = mrPalette[ (pData[mnX >> 3 ] >> ( 7 - ( mnX & 7 ) )) & 1];
+ // Caution(!) rPalette.GetEntryCount() may be != (depth^^2)-1 (!)
+ const sal_uInt8 nIndex( (pData[mnX >> 3 ] >> ( 7 - ( mnX & 7 ) )) & 1);
mnX++;
- return rColor.operator Color().GetColor();
+
+ if(nIndex < mnPaletteCount)
+ return mrPalette[nIndex].operator Color().GetColor();
+ else
+ return Color(COL_BLACK).GetColor();
}
virtual void WritePixel( ColorData nColor ) override
{
commit b9305fc56398a253d84cef3ac7120e10b8c9b4f3
Author: heiko tietze <tietze.heiko at gmail.com>
Date: Mon Apr 16 12:11:33 2018 +0200
tdf#117033 - Tooltips show the wrong symbol for MOD3 combinations
Symbol for MOD3 added
Change-Id: Idb76199fbff240fe39c96ed837db098a4283d70b
Reviewed-on: https://gerrit.libreoffice.org/52957
Reviewed-by: Tor Lillqvist <tml at collabora.com>
Tested-by: Tor Lillqvist <tml at collabora.com>
Tested-by: Jenkins <ci at libreoffice.org>
(cherry picked from commit e422efcaff1bf789343a73a16e46b00f303e3032)
Reviewed-on: https://gerrit.libreoffice.org/53015
Reviewed-by: Heiko Tietze <tietze.heiko at gmail.com>
(cherry picked from commit 54473bec1f419773dd0a44c3ed2754b7f7f7e840)
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index c029f25159ba..ef22d101cf6a 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -1026,13 +1026,13 @@ OUString AquaSalFrame::GetKeyName( sal_uInt16 nKeyCode )
if( it != aKeyMap.end() )
{
if( (nKeyCode & KEY_SHIFT) != 0 )
- aResult.append( u'\x21e7' );
+ aResult.append( u'\x21e7' ); //⇧
if( (nKeyCode & KEY_MOD1) != 0 )
- aResult.append( u'\x2318' );
- // we do not really handle Alt (see below)
- // we map it to MOD3, which is actually Command
- if( (nKeyCode & (KEY_MOD2|KEY_MOD3)) != 0 )
- aResult.append( u'\x2325' );
+ aResult.append( u'\x2318' ); //⌘
+ if( (nKeyCode & KEY_MOD2) != 0 )
+ aResult.append( u'\x2325' ); //⌥
+ if( (nKeyCode & KEY_MOD3) != 0 )
+ aResult.append( u'\x2303' ); //⌃
aResult.append( it->second );
}
commit 87fe6fc84a3542981f61ff3ff290ff74c5ceaff4
Author: Andras Timar <andras.timar at collabora.com>
Date: Mon Apr 23 16:41:51 2018 +0200
Optionally bundle even more Google Noto fonts
Change-Id: I6c08476710ab541ff9b9407f5d874dbb038990df
diff --git a/Makefile.fetch b/Makefile.fetch
index d0f9acb71b03..4bd75aaa02be 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -226,6 +226,17 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S
$(call fetch_Optional,ODFVALIDATOR,ODFVALIDATOR_JAR) \
$(call fetch_Optional,OFFICEOTRON,OFFICEOTRON_JAR) \
,$(call fetch_Download_item,https://dev-www.libreoffice.org/extern,$(item)))
+ $(foreach item, \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_MORE_TARBALL) \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_SANS_JP_TARBALL) \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_SANS_KR_TARBALL) \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_SANS_SC_TARBALL) \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_SANS_TC_TARBALL) \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_SERIF_JP_TARBALL) \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_SERIF_KR_TARBALL) \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_SERIF_SC_TARBALL) \
+ $(call fetch_Optional,NOTO_FONT,FONT_NOTO_SERIF_TC_TARBALL) \
+ ,$(call fetch_Download_item,https://noto-website-2.storage.googleapis.com/pkgs,$(item)))
@mkdir -p $(dir $@) && touch $@
@mkdir -p $(dir $@)/Executable
diff --git a/Repository.mk b/Repository.mk
index ead5c18c86aa..ec11fa4535a6 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -966,6 +966,17 @@ $(eval $(call gb_Helper_register_packages_for_install,ooo_fonts,\
fonts_sourcesans \
fonts_scheherazade \
) \
+ $(call gb_Helper_optional,NOTO_FONT,\
+ fonts_notomore \
+ fonts_notosansjp \
+ fonts_notosanskr \
+ fonts_notosanssc \
+ fonts_notosanstc \
+ fonts_notoserifjp \
+ fonts_notoserifkr \
+ fonts_notoserifsc \
+ fonts_notoseriftc \
+ ) \
))
$(eval $(call gb_Helper_register_packages_for_install,ooo_images,\
diff --git a/configure.ac b/configure.ac
index 9bf05a853406..f9c74db50a0c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1495,6 +1495,11 @@ libo_FUZZ_ARG_WITH(fonts,
known to be available on the system then you should use this option.]),
,)
+AC_ARG_ENABLE(noto-font,
+ AS_HELP_STRING([--enable-noto-font],
+ [Add more Google Noto fonts.]),
+,)
+
AC_ARG_WITH(epm,
AS_HELP_STRING([--with-epm],
[Decides which epm to use. Default is to use the one from the system if
@@ -11183,6 +11188,19 @@ fi
AC_SUBST(WITH_FONTS)
AC_DEFINE_UNQUOTED([TEST_FONTS_MISSING], $TEST_FONTS_MISSING)
+dnl Test whether to include more Google Noto fonts
+dnl ===================================================================
+AC_MSG_CHECKING([whether to include more Google Noto fonts])
+if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
+ AC_MSG_RESULT([no])
+ WITH_NOTO_FONT=
+else
+ AC_MSG_RESULT([yes])
+ WITH_NOTO_FONT=TRUE
+ BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
+ SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
+fi
+AC_SUBST(WITH_NOTO_FONT)
dnl ===================================================================
dnl Test whether to enable online update service
diff --git a/distro-configs/CPLinux-LOKit.conf b/distro-configs/CPLinux-LOKit.conf
index cc2571b28711..96f64a13b100 100644
--- a/distro-configs/CPLinux-LOKit.conf
+++ b/distro-configs/CPLinux-LOKit.conf
@@ -16,6 +16,7 @@
--without-help
--with-linker-hash-style=both
--with-fonts
+--enable-noto-font
--with-galleries=no
--with-theme=galaxy tango
--with-external-thes-dir=/usr/share/mythes
diff --git a/download.lst b/download.lst
index fc9c7456b0ca..ec7b714db49b 100644
--- a/download.lst
+++ b/download.lst
@@ -72,6 +72,24 @@ export FONT_EMOJIONE_COLOR_SHA256SUM := d1a08f7c10589f22740231017694af0a7a270760
export FONT_EMOJIONE_COLOR_TARBALL := EmojiOneColor-SVGinOT-1.3.tar.gz
export FONT_NOTO_SHA256SUM := 29acc15a4c4d6b51201ba5d60f303dfbc2e5acbfdb70413c9ae1ed34fa259994
export FONT_NOTO_TARBALL := noto-fonts-20171024.tar.gz
+export FONT_NOTO_MORE_SHA256SUM := 77decb00e17677b0f8182a9eeae7ddfaadfed064c926433bcc0c8617cd52899e
+export FONT_NOTO_MORE_TARBALL := Noto-hinted.zip
+export FONT_NOTO_SANS_JP_SHA256SUM := 6886c5526628c08f1e21a84f4658ab3daf6d0233de8dc54526ccf9f40bfab18e
+export FONT_NOTO_SANS_JP_TARBALL := NotoSansJP.zip
+export FONT_NOTO_SANS_KR_SHA256SUM := 5147b755c29f16f82b706b1c7ff7982894fccbebcf99e6c5fb0d48c315604b98
+export FONT_NOTO_SANS_KR_TARBALL := NotoSansKR.zip
+export FONT_NOTO_SANS_SC_SHA256SUM := bee1af8c0722cfb3eb1b2fa91a7f3dc011dca231c25c8fcd9d9d544699ababf9
+export FONT_NOTO_SANS_SC_TARBALL := NotoSansSC.zip
+export FONT_NOTO_SANS_TC_SHA256SUM := ec9e8a4156593e1b3ff7cff843989f43f114f96eff0b5db9691ef3c2bdefb73e
+export FONT_NOTO_SANS_TC_TARBALL := NotoSansTC.zip
+export FONT_NOTO_SERIF_JP_SHA256SUM := 362438901cb871bf84b01ff4734c668dab57b4905f39e5ec76d8b68a7a7b5fa8
+export FONT_NOTO_SERIF_JP_TARBALL := NotoSerifJP.zip
+export FONT_NOTO_SERIF_KR_SHA256SUM := 3c0d276fb05aaefbbca808b4f8c7b1520b4b4e7c0be46296d6e8a5e42f559f5c
+export FONT_NOTO_SERIF_KR_TARBALL := NotoSerifKR.zip
+export FONT_NOTO_SERIF_SC_SHA256SUM := 00ed5970680a82453619ac5952c5631ea138372bbb0f864d156d91a0fd9c8279
+export FONT_NOTO_SERIF_SC_TARBALL := NotoSerifSC.zip
+export FONT_NOTO_SERIF_TC_SHA256SUM := c33e04199f6d69056a6de0ebc5522dbe36e02f145208c71c9a4c803841151ad2
+export FONT_NOTO_SERIF_TC_TARBALL := NotoSerifTC.zip
export FONT_CULMUS_SHA256SUM := dcf112cfcccb76328dcfc095f4d7c7f4d2f7e48d0eed5e78b100d1d77ce2ed1b
export FONT_CULMUS_TARBALL := culmus-0.131.tar.gz
export FONT_LIBRE_HEBREW_SHA256SUM := f596257c1db706ce35795b18d7f66a4db99d427725f20e9384914b534142579a
diff --git a/external/Module_external.mk b/external/Module_external.mk
index 41b895751d82..2c79bc3a2bfc 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -74,6 +74,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
$(call gb_Helper_optional,MYSQL_CONNECTOR_CPP,mysql-connector-cpp) \
$(call gb_Helper_optional,MYTHES,mythes) \
$(call gb_Helper_optional,NEON,neon) \
+ $(call gb_Helper_optional,NOTO_FONT,noto_font) \
$(call gb_Helper_optional,NSS,nss) \
$(call gb_Helper_optional,ODFGEN,libodfgen) \
$(call gb_Helper_optional,OPENLDAP,openldap) \
diff --git a/external/noto_font/ExternalPackage_noto.mk b/external/noto_font/ExternalPackage_noto.mk
new file mode 100644
index 000000000000..c2b028e6e6a4
--- /dev/null
+++ b/external/noto_font/ExternalPackage_noto.mk
@@ -0,0 +1,134 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notomore,font_notomore))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notomore,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoColorEmoji.ttf \
+ NotoEmoji-Regular.ttf \
+ NotoNastaliqUrdu-Regular.ttf \
+ NotoSansAvestan-Regular.ttf \
+ NotoSansBalinese-Regular.ttf \
+ NotoSansBamum-Regular.ttf \
+ NotoSansBatak-Regular.ttf \
+ NotoSansBengali-Bold.ttf \
+ NotoSansBengali-Regular.ttf \
+ NotoSansBrahmi-Regular.ttf \
+ NotoSansBuginese-Regular.ttf \
+ NotoSansBuhid-Regular.ttf \
+ NotoSansCanadianAboriginal-Regular.ttf \
+ NotoSansCarian-Regular.ttf \
+ NotoSansCham-Bold.ttf \
+ NotoSansCham-Regular.ttf \
+ NotoSansCherokee-Regular.ttf \
+ NotoSansCoptic-Regular.ttf \
+ NotoSansCuneiform-Regular.ttf \
+ NotoSansCypriot-Regular.ttf \
+ NotoSansDeseret-Regular.ttf \
+ NotoSansDevanagari-Bold.ttf \
+ NotoSansDevanagari-Regular.ttf \
+ NotoSansEgyptianHieroglyphs-Regular.ttf \
+ NotoSansEthiopic-Bold.ttf \
+ NotoSansEthiopic-Regular.ttf \
+ NotoSansGlagolitic-Regular.ttf \
+ NotoSansGothic-Regular.ttf \
+ NotoSansGujarati-Bold.ttf \
+ NotoSansGujarati-Regular.ttf \
+ NotoSansGurmukhi-Bold.ttf \
+ NotoSansGurmukhi-Regular.ttf \
+ NotoSansHanunoo-Regular.ttf \
+ NotoSansImperialAramaic-Regular.ttf \
+ NotoSansInscriptionalPahlavi-Regular.ttf \
+ NotoSansInscriptionalParthian-Regular.ttf \
+ NotoSansJavanese-Regular.ttf \
+ NotoSansKaithi-Regular.ttf \
+ NotoSansKannada-Bold.ttf \
+ NotoSansKannada-Regular.ttf \
+ NotoSansKayahLi-Regular.ttf \
+ NotoSansKharoshthi-Regular.ttf \
+ NotoSansKhmer-Bold.ttf \
+ NotoSansKhmer-Regular.ttf \
+ NotoSansLepcha-Regular.ttf \
+ NotoSansLimbu-Regular.ttf \
+ NotoSansLinearB-Regular.ttf \
+ NotoSansLycian-Regular.ttf \
+ NotoSansLydian-Regular.ttf \
+ NotoSansMalayalam-Bold.ttf \
+ NotoSansMalayalam-Regular.ttf \
+ NotoSansMandaic-Regular.ttf \
+ NotoSansMeeteiMayek-Regular.ttf \
+ NotoSansMongolian-Regular.ttf \
+ NotoSansMyanmar-Bold.ttf \
+ NotoSansMyanmar-Regular.ttf \
+ NotoSansNewTaiLue-Regular.ttf \
+ NotoSansNKo-Regular.ttf \
+ NotoSansOgham-Regular.ttf \
+ NotoSansOlChiki-Regular.ttf \
+ NotoSansOldItalic-Regular.ttf \
+ NotoSansOldPersian-Regular.ttf \
+ NotoSansOldSouthArabian-Regular.ttf \
+ NotoSansOldTurkic-Regular.ttf \
+ NotoSansOriya-Bold.ttf \
+ NotoSansOriya-Regular.ttf \
+ NotoSansOsmanya-Regular.ttf \
+ NotoSansPhagsPa-Regular.ttf \
+ NotoSansPhoenician-Regular.ttf \
+ NotoSansRejang-Regular.ttf \
+ NotoSansRunic-Regular.ttf \
+ NotoSansSamaritan-Regular.ttf \
+ NotoSansSaurashtra-Regular.ttf \
+ NotoSansShavian-Regular.ttf \
+ NotoSansSinhala-Bold.ttf \
+ NotoSansSinhala-Regular.ttf \
+ NotoSansSundanese-Regular.ttf \
+ NotoSansSylotiNagri-Regular.ttf \
+ NotoSansSymbols-Regular.ttf \
+ NotoSansSyriacEastern-Regular.ttf \
+ NotoSansSyriacEstrangela-Regular.ttf \
+ NotoSansSyriacWestern-Regular.ttf \
+ NotoSansTagalog-Regular.ttf \
+ NotoSansTagbanwa-Regular.ttf \
+ NotoSansTaiLe-Regular.ttf \
+ NotoSansTaiTham-Regular.ttf \
+ NotoSansTaiViet-Regular.ttf \
+ NotoSansTamil-Bold.ttf \
+ NotoSansTamil-Regular.ttf \
+ NotoSansTelugu-Bold.ttf \
+ NotoSansTelugu-Regular.ttf \
+ NotoSansThaana-Bold.ttf \
+ NotoSansThaana-Regular.ttf \
+ NotoSansThai-Bold.ttf \
+ NotoSansThai-Regular.ttf \
+ NotoSansTibetan-Bold.ttf \
+ NotoSansTibetan-Regular.ttf \
+ NotoSansTifinagh-Regular.ttf \
+ NotoSansUgaritic-Regular.ttf \
+ NotoSansVai-Regular.ttf \
+ NotoSansYi-Regular.ttf \
+ NotoSerifBengali-Bold.ttf \
+ NotoSerifBengali-Regular.ttf \
+ NotoSerifDevanagari-Bold.ttf \
+ NotoSerifDevanagari-Regular.ttf \
+ NotoSerifGujarati-Bold.ttf \
+ NotoSerifGujarati-Regular.ttf \
+ NotoSerifKannada-Bold.ttf \
+ NotoSerifKannada-Regular.ttf \
+ NotoSerifKhmer-Bold.ttf \
+ NotoSerifKhmer-Regular.ttf \
+ NotoSerifMalayalam-Bold.ttf \
+ NotoSerifMalayalam-Regular.ttf \
+ NotoSerifTamil-Bold.ttf \
+ NotoSerifTamil-Regular.ttf \
+ NotoSerifTelugu-Bold.ttf \
+ NotoSerifTelugu-Regular.ttf \
+ NotoSerifThai-Bold.ttf \
+ NotoSerifThai-Regular.ttf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/ExternalPackage_notosansjp.mk b/external/noto_font/ExternalPackage_notosansjp.mk
new file mode 100644
index 000000000000..6ea62377932c
--- /dev/null
+++ b/external/noto_font/ExternalPackage_notosansjp.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notosansjp,font_notosansjp))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notosansjp,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoSansJP-Bold.otf \
+ NotoSansJP-Regular.otf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/ExternalPackage_notosanskr.mk b/external/noto_font/ExternalPackage_notosanskr.mk
new file mode 100644
index 000000000000..3669605ad336
--- /dev/null
+++ b/external/noto_font/ExternalPackage_notosanskr.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notosanskr,font_notosanskr))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notosanskr,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoSansKR-Bold.otf \
+ NotoSansKR-Regular.otf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/ExternalPackage_notosanssc.mk b/external/noto_font/ExternalPackage_notosanssc.mk
new file mode 100644
index 000000000000..5e03db1574d3
--- /dev/null
+++ b/external/noto_font/ExternalPackage_notosanssc.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notosanssc,font_notosanssc))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notosanssc,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoSansSC-Bold.otf \
+ NotoSansSC-Regular.otf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/ExternalPackage_notosanstc.mk b/external/noto_font/ExternalPackage_notosanstc.mk
new file mode 100644
index 000000000000..d230d7b07115
--- /dev/null
+++ b/external/noto_font/ExternalPackage_notosanstc.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notosanstc,font_notosanstc))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notosanstc,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoSansTC-Bold.otf \
+ NotoSansTC-Regular.otf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/ExternalPackage_notoserifjp.mk b/external/noto_font/ExternalPackage_notoserifjp.mk
new file mode 100644
index 000000000000..2b9502c74849
--- /dev/null
+++ b/external/noto_font/ExternalPackage_notoserifjp.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notoserifjp,font_notoserifjp))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notoserifjp,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoSerifJP-Bold.otf \
+ NotoSerifJP-Regular.otf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/ExternalPackage_notoserifkr.mk b/external/noto_font/ExternalPackage_notoserifkr.mk
new file mode 100644
index 000000000000..84b893537ac9
--- /dev/null
+++ b/external/noto_font/ExternalPackage_notoserifkr.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notoserifkr,font_notoserifkr))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notoserifkr,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoSerifKR-Bold.otf \
+ NotoSerifKR-Regular.otf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/ExternalPackage_notoserifsc.mk b/external/noto_font/ExternalPackage_notoserifsc.mk
new file mode 100644
index 000000000000..73e2af1217f3
--- /dev/null
+++ b/external/noto_font/ExternalPackage_notoserifsc.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notoserifsc,font_notoserifsc))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notoserifsc,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoSerifSC-Bold.otf \
+ NotoSerifSC-Regular.otf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/ExternalPackage_notoseriftc.mk b/external/noto_font/ExternalPackage_notoseriftc.mk
new file mode 100644
index 000000000000..0e74e6c97bff
--- /dev/null
+++ b/external/noto_font/ExternalPackage_notoseriftc.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,fonts_notoseriftc,font_notoseriftc))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_notoseriftc,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+ NotoSerifTC-Bold.otf \
+ NotoSerifTC-Regular.otf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/Makefile b/external/noto_font/Makefile
new file mode 100644
index 000000000000..e4968cf85fb6
--- /dev/null
+++ b/external/noto_font/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/Module_noto_font.mk b/external/noto_font/Module_noto_font.mk
new file mode 100644
index 000000000000..d6fbcf8e37a0
--- /dev/null
+++ b/external/noto_font/Module_noto_font.mk
@@ -0,0 +1,33 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Module_Module,noto_font))
+
+$(eval $(call gb_Module_add_targets,noto_font,\
+ ExternalPackage_noto \
+ ExternalPackage_notosansjp \
+ ExternalPackage_notosanskr \
+ ExternalPackage_notosanssc \
+ ExternalPackage_notosanstc \
+ ExternalPackage_notoserifjp \
+ ExternalPackage_notoserifkr \
+ ExternalPackage_notoserifsc \
+ ExternalPackage_notoseriftc \
+ UnpackedTarball_noto \
+ UnpackedTarball_notosansjp \
+ UnpackedTarball_notosanskr \
+ UnpackedTarball_notosanssc \
+ UnpackedTarball_notosanstc \
+ UnpackedTarball_notoserifjp \
+ UnpackedTarball_notoserifkr \
+ UnpackedTarball_notoserifsc \
+ UnpackedTarball_notoseriftc \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/README b/external/noto_font/README
new file mode 100644
index 000000000000..96377c3d86e5
--- /dev/null
+++ b/external/noto_font/README
@@ -0,0 +1 @@
+This module packages Google Noto fonts.
diff --git a/external/noto_font/UnpackedTarball_noto.mk b/external/noto_font/UnpackedTarball_noto.mk
new file mode 100644
index 000000000000..6202fbb59468
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_noto.mk
@@ -0,0 +1,46 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notomore))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notomore,$(FONT_NOTO_MORE_TARBALL),0))
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notosansjp))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notosansjp,$(FONT_NOTO_SANS_JP_TARBALL),0))
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notosanskr))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notosanskr,$(FONT_NOTO_SANS_KR_TARBALL),0))
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notosanssc))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notosanssc,$(FONT_NOTO_SANS_SC_TARBALL),0))
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notosanstc))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notosanstc,$(FONT_NOTO_SANS_TC_TARBALL),0))
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notoserifjp))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notoserifjp,$(FONT_NOTO_SERIF_JP_TARBALL),0))
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notoserifkr))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notoserifkr,$(FONT_NOTO_SERIF_KR_TARBALL),0))
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notoserifsc))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notoserifsc,$(FONT_NOTO_SERIF_SC_TARBALL),0))
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notoseriftc))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notoseriftc,$(FONT_NOTO_SERIF_TC_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/UnpackedTarball_notosansjp.mk b/external/noto_font/UnpackedTarball_notosansjp.mk
new file mode 100644
index 000000000000..ed4b2275f71e
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_notosansjp.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notosansjp))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notosansjp,$(FONT_NOTO_SANS_JP_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/UnpackedTarball_notosanskr.mk b/external/noto_font/UnpackedTarball_notosanskr.mk
new file mode 100644
index 000000000000..0af2842bfb4f
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_notosanskr.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notosanskr))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notosanskr,$(FONT_NOTO_SANS_KR_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/UnpackedTarball_notosanssc.mk b/external/noto_font/UnpackedTarball_notosanssc.mk
new file mode 100644
index 000000000000..0e15ef6fc8e0
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_notosanssc.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notosanssc))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notosanssc,$(FONT_NOTO_SANS_SC_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/UnpackedTarball_notosanstc.mk b/external/noto_font/UnpackedTarball_notosanstc.mk
new file mode 100644
index 000000000000..702f04f79960
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_notosanstc.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notosanstc))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notosanstc,$(FONT_NOTO_SANS_TC_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/UnpackedTarball_notoserifjp.mk b/external/noto_font/UnpackedTarball_notoserifjp.mk
new file mode 100644
index 000000000000..44909731b26a
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_notoserifjp.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notoserifjp))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notoserifjp,$(FONT_NOTO_SERIF_JP_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/UnpackedTarball_notoserifkr.mk b/external/noto_font/UnpackedTarball_notoserifkr.mk
new file mode 100644
index 000000000000..dcc9ae8b7df8
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_notoserifkr.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notoserifkr))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notoserifkr,$(FONT_NOTO_SERIF_KR_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/UnpackedTarball_notoserifsc.mk b/external/noto_font/UnpackedTarball_notoserifsc.mk
new file mode 100644
index 000000000000..2564a414300c
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_notoserifsc.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notoserifsc))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notoserifsc,$(FONT_NOTO_SERIF_SC_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/noto_font/UnpackedTarball_notoseriftc.mk b/external/noto_font/UnpackedTarball_notoseriftc.mk
new file mode 100644
index 000000000000..5d960ab6057b
--- /dev/null
+++ b/external/noto_font/UnpackedTarball_notoseriftc.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,font_notoseriftc))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,font_notoseriftc,$(FONT_NOTO_SERIF_TC_TARBALL),0))
+
+# vim: set noet sw=4 ts=4:
More information about the Libreoffice-commits
mailing list