Though I resent the inevitable complications caused by the MS-workalike practice of Paragraph styles containing Font specifications, I had always thought of Character styles as a way to at least mitigate the problem, by defining attributes with respect to the Paragraph style to which they are applied. As the LibreOffice Writer 6.0 Guide puts it on page 204:
Character styles provide exceptions to the formatting in a paragraph style. They are applied to groups of characters, rather than whole paragraphs. They are mainly used when you want to change the appearance or attributes of parts of a paragraph without affecting other parts. ...
One key (as I understand it) is in the phrase "provide exceptions". "Exceptions" can be attributes that either:
(1) modify the Paragraph style's Font specification (like bold or italic), or
(2) replace the Paragraph style's Font specification (like a new Font specification).
Unfortunately, (1) and (2) are semantically inconsistent (a necessary consequence of Paragraph styles containing Font specifications), and inconsistent with respect to font design because so many font families contain bold and italic variants that are separate font faces. But the designers have done a good job of allowing users to ignore those fine points...
... right up to the problem of the Font tab's "Size <size>/%" attribute. By specifying a %-size, it appears to modify, rather than replace, the Paragraph style's Font specification. Except that it does not: <size>% modifies some other fixed font size not in the Paragraph style (and specifying "100%" will always revert to a fixed size).
So, for example, in a Character style that specifies two attributes -- like adding /Italic/ and making a relative size change (like 90%) -- the /Italic/ modifies the Paragraph Font, but the <size>% modifies something else. This means that if I go back to the Paragraph style and modify the base Font face, then part of the Character style (/Italic/) will immediately reflect the new font face, and part (<size>%) will not.
Put another way: the Paragraph style is the parent for only part of the Character style; something else is the parent for the %-size attribute. One solution appears to be to create a tree of Character styles with a complete Font specification at the root style; then every other Character style based on that root can modify with the <size>% attribute. Unfortunately, that only seems to work until the document is saved, then reopened -- and then the <size>% attribute (and /only that/ attribute) is no longer attached to the base Character style, but reverts to modifying some other fixed font size. Is there a clean way to handle this?
[Note: While researching this problem, I found a great discussion <https://ask.libreoffice.org/en/question/60567/writer-usage-of-percent-character-sizes-how-does-it-work/> between ajlittoz and Regina Henschel on this from four years ago. It was [closed] with an answer but no clean resolution. As I read the spec (<https://docs.oasis-open.org/office/OpenDocument/v1.3/cs01/part3-schema/OpenDocument-v1.3-cs01-part3-schema.html#__RefHeading__1419806_253892949> or earlier <https://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1419806_253892949> -- there is no change in this regard), the question is just which entity is the "parent" of the attribute -- and I don't understand why different attributes of a Character style have different parents.]
John