https://bugs.documentfoundation.org/show_bug.cgi?id=149271

--- Comment #5 from ajlittoz <[email protected]> ---
Writer is base on a layered model: paragraph, character, Internet Link, direct
(from bottom to top).

You may be surprised to note I grant special status to "Internet Link"
character style. It has a unique property that any link created by
Insert>Hyperlink receives an extra character style above the standard style.

Since paragraphs are the basic unit of writing, I don't see what a "combining"
style application could do on paragraphs. Semantically, a paragraph is
"atomic". A paragraph style is applied over the whole extent of the paragraph.
If your goal is to override a few parameters, you can do this with style
inheritance.

A paragraph style also defines a default character style. This default can be
overridden by applying an explicit character style. The parameters which are in
"transparent state" won't change those in the paragraph style. Unfortunately,
this "transparent state" is not highlighted in any way in the UI. You can force
it by pressing "Reset to Parent" but few users understand the result of it.

Multiple applications of character styles is surely a desirable enhancement.
Presently, only a single style can be applied which necessitates to statically
combine the attribute into separate styles leading to a combinatorial
explosion. However one must be careful in defining "multiple application". It
is rather straightforward if set attributes are not conflicting (IOW no same
parameters are set to different values). Otherwise, as Mike Kaganski states it
under the "last wins and overrides everything from previous ones" effect,
formatting result will depend on the order of application. What is
non-deterministic must be avoided. Technically, it may become extremely
difficult to recombine the <span>…</span> when editing the document in order to
avoid fragmenting these sequences (with the ultimate result of getting single
character spans).

You mention in another bug report the inconvenience for character styles to be
unrelated to the default defined in the paragraph style.

I understand the present simplicity in character style inheritance as an easy
track for developers. Character styles inherit between themselves.
Top-of-hierarchy styles inherit from defaults defined in Tools>Options, LO
Writer>Basic Fonts. Unfortunately, all computations involving %-sizes are made
at creation time leading to static immutable sizes.

On the contrary, in paragraph styles, the default character parameters remain
"dynamic" and are recomputed when their base changes. Surely a first
improvement in character styles would be to keep this auto-recomputation
feature so that changing something in the ancestor cascades down to the
children.

And if dynamic behaviour is accepted and implemented, nothing could prevent
from considering that the top-of-hierarchy character style inherits from the
paragraph default style. This enhancement would solve a blatant difficulty when
using two different font faces in the same paragraph (e.g. a serif one and a
monospace one to "quote" computer output). More than often the x-heights are
not the same. The Source Text character style (as an example) bears the
monospace font face and the size should be adjusted to say 80%. Presently, the
font size is computed when the style is modified, full stop. This makes the
character style usable in a single paragraph style, like Text Body, but not in
footnotes where the font size is usually smaller than in the narrative.

This a serious hindrance to semantic styling. The workaround is either to
reconsider the face choice (difficult due the restricted choice in open & free
type faces or for aesthetic reasons) or to create "context-dependent" character
styles which goes against the principle of "generic" semantic styling.

There is also a difficulty with character styles I have no solution for. In
typography, a portion of text can be "emphasised". This translates as using a
different font variant. E.g. if text is Roman, use Italic; if text is Italic,
use Roman. This can't be done presently:
1 - there is no provision to "probe" the ancestor style and set a different
value for an attribute (this goes beyond simply toggling a binary attribute as
font variants are numerous)
2 - a character style is unaware of what is presently active in the paragraph
default character style because a character style doesn't inherit from a
paragraph one (see above).

Regarding pages, the biggest shortcoming is the absence of inheritance between
styles.

Personally, I don't see what "composite page styles" would do. If the goal is
to modify geometrical aspect of an area within the page, there are two ways to
do this: a frame or a section. A frame creates a secondary text flow
independent from the main flow, so this is probably not what you are looking
for. A section can modify margins (through its indent parameters) and number of
columns. A section has no header/footer of its own. If you need such, then this
is a role for a page style.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to