Add new paragraph justification option "Split compound words" for
custom compound-based "smart" hyphenation. Add compound-based "smart"
hyphenation support for Danish, Dutch, Esperanto, Estonian, German,
Norwegian, Swedish (and potentially, Icelandic, Finnish and
Latvian) languages by fixing Hunspell morphological analysis and the
associated lingucomponent code. (Previously compound-based "smart"
hyphenation was enabled only for Hungarian.)
With the new option it's possible to keep MSO/MS-DOCX interoperability,
also introducing a better hyphenation algorithm for several languages.
Details:
* Add check box to Alignment in paragraph formatting dialog window;
* Store properties in paragraph model:
css::style::ParagraphProperties::ParaIsCompoundBased
* Implement it by checking the new option in the previously
added commit f9f694f5d9f39c5801bc5fec45867252c293bbcb;
* Add ODF import/export (loext:compound-based);
* Add ODF unit tests by the new tdf173389_smart_hyphenation_nl.odt
and tdf173389_smart_hyphenation_hu.odt. Now use the previous
tdf119908_smart_hyphenation_hu for disabled compound-based "smart"
hyphenation, also the new tdf119908_smart_hyphenation_nl.odt.
Note: the Dutch test document results better compound-based
hyphenation in two positions.
* Add Hunspell patch to fix Danish, Dutch, Esperanto, Estonian,
German, Norwegian, Swedish (and future Icelandic, Latvian,
Finnish) morphological analysis for compound word constituents;
* hyphenimp.cxx hyphenate(): fix tokenization for consecutive
pa: elements, like resulted in the fixed Hunspell dictionaries.
Follow-up to commit f9f694f5d9
"tdf#173389 sw: add compound-based “smart” hyphenation for readability".
Change-Id: I4414bd588646ecf6dc86b77642833ac9c7820a98
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211341
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Similar to previous commit
Change-Id: I5db3a99bb8d78099e3b136cbcd402fe2ae49d49c
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Sat Sep 19 13:12:54 2026 +0200
[API CHANGE] Pass XAccessible to XAccessibleGroupPosition::getGroupPosition
, also pass an XAccessible instead of a uno::Any to
XAccessibleGroupPosition::getObjectLink.
See the above-mentioned commit for more background.
Change-Id: I8440b91eff66a18bc6e431a0ad91362e895d945c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211217
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Instead of passing an XAccessibleContext wrapped in a uno::Any,
pass the XAccessible. This drops an extra level of
wrapping/unwrapping.
The same will be done for XAccessibleGroupPosition::getObjectLink
in an upcoming commit.
Since the XAccessibleGroupPosition interface
(and the UNO a11y API in general) is unpublished
and meant for internal use only, changing it should
be unproblematic.
Change-Id: I5db3a99bb8d78099e3b136cbcd402fe2ae49d49c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211216
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
By now, XExtendedToolkit isn't used to implement
accessibility-related logic, so don't claim so in that
UNO interface's documentation.
Interestingly, the doc already mentions that the interface is deprecated:
> @deprecated
> This interface was only implemented in an intermediate developer
> release anyway.
Change-Id: I599941d2411daa57a75a78e9ca9d0cdcbb4fa811
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211200
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
The XAccessible UNO interface is unpublished. It exists
as an implementation detail of the current internal
a11y logic. That may change at any point in time.
Don't mention this unpublished interface as an optional
interface to be implemented by the published UnoControl service.
Since
commit 720a9455a6
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Sep 3 15:55:32 2026 +0200
a11y: Get UnoControl accessible without implementing XAccessible
, UnoControl doesn't implement the XAccessible interface
any more.
(Since it was already optional before, that didn't break
any guarantee previously given by the service documentation,
but clean that up now.)
Change-Id: Ia3ff7f2e57e7c9b3dd0a3753e57a6c315df09311
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211199
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
ODF has no name for this chart type, so the file says two things at once, the
way a histogram already does: chart:class names the scatter chart, which is the
nearest a reader that knows nothing of correlation circles can make of it, and
coext:class beside it names the type itself. A reader that knows the coext name
gets the chart back as it was saved.
The series need no new shape in the file. The feature column is the range of
the series and the two dimension columns are a domain each, which is where a
bubble chart already keeps its x and y values, so both the reading and the
writing of them follows the bubble path rather than a new logic.
The schema the tests validate against lists the values coext:class may take, so
the new one is added there beside the histogram.
The test document is one block of five columns: three features and then the two
dimensions, the shape the wizard asks for. The test checks after a round trip
that the chart type came back, that the file carries both class names, and that
every series still holds its feature column beside the two dimension columns.
Change-Id: Iac73ff357c7490b4f38a4390c63948cf148d8585
Signed-off-by: Dennis Francis <dennis.francis@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8106
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 4e59ea1c83e61b8dc2647f9a915884f9d461165d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210498
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Drop the unpublished service
"com.sun.star.awt.AccessibleWindow"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y classes
implementing the service.)
Change-Id: I958aeb6c6baaa48e2e02ab170b17db5c3510379b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210406
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished and unused UNO service
"com.sun.star.accessibility.AccessibleContext".
It is unnecessary and not used for implementing a11y support.
Previously some a11y implementations were declaring support for it
without that being used anywhere, but that has been dropped
in earlier commits.
What is relevant is the com.sun.star.accessibility.XAccessibleContext
interface instead, which remains in place.
Change-Id: I77584db1a6452ee3bf0a9fd7188271e4c658ed07
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210404
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleButton"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: If2b119a63cfcc67767bc6a07df68da4b060fd94b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210354
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleComboBox"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
In addition, VCLXAccessibleListBox::getSupportedServiceNames
was actually reporting a different service name:
"com.sun.star.accessibility.AccessibleComboBox"" instead of
"com.sun.star.awt.AccessibleComboBox".
Change-Id: I5b53dae6c6546ad9f8f641a64970389d308bc219
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210353
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Drop the unpublished service
"com.sun.star.awt.AccessibleCheckBox"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: I3dcf76edac0af2419a60c5be466783b9bc48a4b0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210352
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Drop the unpublished service
"com.sun.star.awt.AccessibleList"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
In addition, VCLXAccessibleListBox::getSupportedServiceNames
was actually reporting a different service name:
"com.sun.star.accessibility.AccessibleList" instead of
"com.sun.star.awt.AccessibleList".
Change-Id: Ie9fd59ce9078797baad4bd41c77350c0cdbe9ad4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210351
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleListBox"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
In addition, VCLXAccessibleListBox::getSupportedServiceNames
was actually reporting a different service name:
"com.sun.star.accessibility.AccessibleListBox" instead of
"com.sun.star.awt.AccessibleListBox".
Change-Id: I786e92d017cb3b28779c54f2a9cd01fc2501784d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210350
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleStatusBar"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: I0d1cb8353fac37a3db9833a06fa439cc94e6c9b3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210346
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleStatusBarItem"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: I6c6cf73aba24de5b1abb6851f34068a0d8e74e0a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210345
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleScrollBar"
because it's unnecessary. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Also drop VCLXAccessibleScrollBar::getImplementationName
as there is no need to report a different implementation name
than the base class implementation.
The only place that would use the implementation name is
for a special handling in the _XAccessibleValue Java
unit test logic, but that one is apparently not/no more
necessary as the a11y tests pass just fine without the special
handling. Therefore, drop that, too.
Change-Id: Idbbb77740085d349afa394fb1eec1c5a5eb6809b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210328
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleRadioButton"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Also drop VCLXAccessibleRadioButton::getImplementationName
as there is no need to report a different implementation name
than the base class implementation.
Change-Id: Id0f965c15d1539840691622d6f1df517d73c2208
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210326
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.drawing.AccessibleImageBullet"
because it's unused.
The AccessibleImageBullet class in svx which looks
like the most likely candidate doesn't declare
it supports that service.
Change-Id: If3ed5166fc1b8dabe1b4ffa2545a0b04d675113a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210312
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleTabBar"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: I45c91c50b72f8152e545ceb5fce88ec429e72390
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210311
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleTabControl"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Also drop VCLXAccessibleTabControl::getImplementationName
as there is no need to report a different implementation name
than the base class implementation.
Change-Id: I2141c452fdd37dba63a84be5c1d9c7ea1f81372d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210310
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleTabPage"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: Ice1567b8b639352658838f0c8983da2dddbfe046
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210309
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleTabBarPage"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: I7af89ae1202b6e33248587f71dd8a5b0e3558e7c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210307
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleTabBarPageList"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: I48ad71f52842efc5a8b30002e435c05be866a19c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210306
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleTextField"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Also drop VCLXAccessibleTextField::getImplementationName
as there is no need to report a different implementation name
than the base class implementation.
Change-Id: I1cbce092d21253411d5fe0ff3e0d16732fe10ff0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210032
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Drop the unpublished service
"com.sun.star.awt.AccessibleEdit"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Also drop VCLXAccessibleEdit::getImplementationName
as there is no need to report a different implementation name
than the base class implementation.
Change-Id: Ic48d51794b749e7bb58c788e038d49af726f6ca8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210031
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Drop the unpublished service
"com.sun.star.awt.AccessibleMenu"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: I40514c1fd6f7500247d630b93c03a377e6231521
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210029
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleMenuBar"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: Ibf1ef76b22b605ca84945e89e16d8f73c97b7f00
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210028
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessiblePopupMenu"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: Iba7a10799f1bf6d9edd7841ebf5736f11a587ca4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210027
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleMenuItem"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Change-Id: I5512dfd28e97b8a2a98a5f54181bdae3fdbf6e44
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210026
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleMenuSeparator"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
While at it, also drop explicit mentions/references of
some other services in UNO service documentations already
as the plan is to drop them in the future as well.
Change-Id: I78142e00914b26c1abe5549141ed2aa6b8a313c5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210025
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Drop the unpublished service
"com.sun.star.awt.AccessibleFixedText"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y class
implementing the service.)
Also drop VCLXAccessibleFixedText::getImplementationName
as there is no need to report a different implementation name
than the base class implementation.
Change-Id: I69ea1f87a39470c955ea2dff361e8e995ead9ffa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210023
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
The unpublished UNO enum
com::sun::star::drawing::framework::AnchorBindingMode
is only used inside sd and not relevant for any other UNO API.
Make it sd-internal, by removing the idl file and instead
defining an sd::framework::AnchorBindingMode enum class
in an sd-internal header.
Change-Id: Ic8b58d5eca0cb4f59f695630d15c2f361d2def4b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209358
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Adds a service to embindtest that implements XInvocation to handle all
possible method names and returns the name as a string. A Python unit
test then uses this. Without the fix pyuno would throw an exception when
it tries to use the XInvocation object that doesn’t also implement
XInvocation2 and return a valid reference for getIntrospection.
Change-Id: Icb3359c788acd5eda37980252e5fc5c956b38100
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209087
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Drop the unused and unpublished
com::sun::star::rendering::XSimpleCanvas interface.
The only implementation of the interface, which was itself
also unused was already dropped in previous commit
Change-Id: I301b3a42dfb6eacf6a9ef3a4851ed1d38f16ec66
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Jul 30 15:31:11 2026 +0200
canvas: Drop unused simplecanvas library/component
, see that one's commit message for more details/background.
A search in Google and on Ask [1] also didn't give
any results that would suggest this unpublished interface
could have been relevant for third party code.
[1] https://ask.libreoffice.org/
Change-Id: Ia8153013c405d8d1c34c21f4cab580860cb6af1a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208853
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
A presentation can reference sound files outside its own package, on a
slide transition, an animation, or a click action.
Linked graphics already come under link management, where the user
allows each external reference on its own.
Bring presentation sounds under the same link management. Each external
sound is registered as a link the user can allow through the link-update
infobar or "Edit, Links".
For the uno api move these sounds around as XSoundReference so their
allowed state can be moved with them. So that changes the property
from a string to an XInterface. Setter still accept a string, getter
returns the new XInterface, there's an acknowledged possibility of
incompatibility despite being technically api-change-passing
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: Ib7deea2f78cf5c5b9958e43adb8e6f46b1b31e80
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/6970
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 0aa870b7b5a6bda50bab50c7a0a41d28fdf4f6ab)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208430
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
When any2PyObject is given an interface which is actually an adapter for
a Python object, it now returns the original Python object instead of a
new wrapper for the object. This means that calling methods on the
returned object will be faster because they won’t involve UNO bridging.
It also means that Python implementations of UNO interfaces can detect
when they are given Python objects as a parameter and take advantage of
any internal private data attached to the object.
Change-Id: Ie13d0612f48e70973bd523e68710ec33a7875a16
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207507
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Adds an optional interface to BrowseNode that can be used to query
whether a node can be copied and also invoke the actual copy. The goal
is to use this from the macro dialogs in later patches to support drag
and drop of script files.
Change-Id: I396a493d704d481b8f0d52c16a77f6452159d76e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207736
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Adds optional concrete interfaces that can be added to implementations
of XBrowseNode to create, delete, edit or rename nodes. The comphelper
abstraction now uses these if the interface is implemented otherwise it
will fall back to the old method using XPropertySet and XInvocation so
that existing script providers will continue to work.
The goal is to avoid using XInvocation for duck-typed methods because
that breaks pyuno. It is also easier to implement the optional
interfaces than to use the previous approach.
Change-Id: Id59136152941fd232673ec4b9082a0be0cb6ca8d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207344
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Tested-by: Jenkins
To solve the trade-off between better spacing and less hyphenation,
support hyphenation level and its user interface, the hyphenation
slider, like DTP software do.
Add new paragraph property com::sun::star::text::ParaHyphenationLevel
The hyphenation slider is the basic interface of DTP software to adjust
single (or all) paragraphs using better word spacing (i.e. more
hyphenation) or less hyphenation (i.e. worse word spacing). It allows 1)
to choose the best from the near equally good layouts and 2) to solve an
extreme bad layout (caused by words without hyphenation or other corner
cases).
– 50% hyphenation level means disabled hyphenation, if minimum
and maximum word spacing settings allow to break the line within
words (default interoperability value).
– 100% hyphenation level means using extra hyphenation only if that
results better word spacing in the line, than breaking within words.
– Between 50% and 100% hyphenation level, use extra hyphenation only if
its weighted word spacing is better, than breaking the line between
words (weighting grows with the hyphenation level).
– Between 0% and 50% hyphenation level it means disabled hyphenation
with increased desired and maximum word spacing, depending on the
hyphenation level. At %0, the desired word spacing is enlarged to the
original maximum word spacing, while maximum word spacing is enlarged
by a single space.
For example, the original 4-page unit test document with the default 50%
hyphenation level contains 14 hyphenations. 100% hyphenation level
results in 22 hyphenations, while 0% only results in 8 hyphenations.
– sw/qa/extras/layout/data/tdf167648_minimum.fodt,
sw/qa/extras/layout/data/tdf169168_minimum.fodt: set maximum
word-spacing to 100% from 101% to limit the original unit test only
for minimum letter spacing.
More information: LO/COOL Book & Typography projects:
https://www.numbertext.org/typography/https://www.numbertext.org/book/
Follow-up to commit cf104be5cb "tdf#119908
tdf#166113 cool#15973 sw smart justify: fix DOCX hyphenation",
commit d572576dd6
"tdf#119908 cool#15973 sw smart justify: fix "smart" hyphenation",
commit 529755f091
"tdf#166113 sw smart justify: adjust algorithm for interoperability" and
commit 7d08767b89 "tdf#130088 tdf#119908
smart justify: fix DOCX line count + compat opt."
Change-Id: I84b3893ea6c5cd4eff74a73514722285e7071392
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207545
Reviewed-by: László Németh <nemeth@numbertext.org>
Tested-by: Jenkins
Add model properties for optional underflow and overflow bins on
histogram chart types, and expose them through the HistogramDiagram
wrapper.
Pass the new settings through the existing histogram pipeline:
HistogramChartType snapshots the properties, HistogramDataSequence keeps
that snapshot, and HistogramCalculator creates optional edge bins around
the normal bin range.
Generated category labels now distinguish special bins from normal ranges,
e.g. "<= 11", "(11-13]", and "> 14".
Add a model-level test that sets fixed bin width together with underflow
and overflow bins, then verifies that the generated bin labels are rebuilt
correctly.
Signed-off-by: Devansh Varshney <varshney.devansh614@gmail.com>
Change-Id: I65eac9607daa4f4be6320304c9e9682549f479a6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207151
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins