Hi Kohei,
thank you for looking at it.
Kohei Yoshida schrieb am 23.04.2025 um 04:20:
Hi Regina,
On 4/22/25 11:29, Regina Henschel wrote:
Hi all,
The ODF TC currently discusses OFFICE-2317 "Text distribute
justification" [1]. The issue is about the proposal in the OASIS-Wiki
[2].
I can see myself being the author of this proposal... This was authored
almost 15 years ago. I must say I could have added a bit more detail in
this proposal to make less open to interpretation, but alas, I can't go
back in time to fix it. :-)
The ODF TC makes some house keeping and examines those proposals that do
not yet have a decision whether to accept them.
(A)
The proposal wants to introduce a new attribute "css3t:text-justify"
with values "auto" and "distribute".
Problem is, that the actual CSS3 draft [3] has the values "auto",
"none", "inter-word" and "inter-character". The draft states in
addition, that a UA must additionally support "distribute" and treat
it as "inter-character".
CCS3's "inter-character" appears to correspond with the "distribute"
mode. So I would say ODF can also inherit this "inter-character" value
here instead of the old "distribute" value as specified in the
proposal. When I authored this proposal I chose the value "distribute"
likely because the CSS3 draft proposal available back then also used
that word. The latest CCS2 draft still references the word "distribute"
as the legacy value to support.
We can likely add into the text, that consumers shall accept the value
"distribute" in addition.
(B)
The proposal wants to introduce a special attribute
style:vertical-justify for use in style:vertical-align. There has been
some work on this in bug tdf#45450. On the other hand, bug tdf#112843
was rejected.
Is such property really needed?
Yes, but only when the text is oriented 90 degrees or 270 degrees i.e.
flows either either top-to-bottom or bottom-to-top, or when the text is
vertically stacked. This feature is useful at least in Japanese
setting. I can't speak for Chinese or Korean settings, but it may be
relevant in those languages as well, or not. I'm not really sure.
I disagree her. The proposal misunderstands fo:text-align and
style:vertical-align attributes.
The fo:text-align attribute (current values start, end, left, right,
center or justify) always works in line direction and the line direction
is given by the style:writing-mode attribute.
The style:vertical-align attribute is orthogonal to the line direction.
It determines how the entire text content is positioned in the cell
area. Current values are top, middle, bottom or automatic.
If we really want to distribute the lines of the text content, then it
would be enough to add a new value "distributed" to the
style:vertical-align attribute of the <style:table-cell-properties>
without any further attributes. In case the new value "distributed" is
set, any line spacing and margin related attributes of the
<style:paragraph-properties> element assigned to the text in the cell
has to be ignored.
The result of such distribution is ugly for normal text. It might be
useful for "stacked" characters to have something compatible to Excel.
Albeit, currently LibreOffice has no wrap for "stacked" characters in Calc.
If we have a vertical writing mode (in ODF 1.4 these are tb-rl, tb-lr,
sideways-rl, sideways-lr), then the fo:text-align attribute still works
in line direction and with value 'justify' the text is aligned with the
top and bottom edge of the cell. That does neither require a new
css3t:text-justify nor a new style:vertical-justify attribute.
And in case of paragraph-properties, a value of "justify" for attribute
style:vertical-align makes no sense at all. The attribute
style:vertical-align (20.396.1 ODF 1.4) of a
<style:paragraph-properties> element specifies the position of a
_character_ relative to the line to which the character belongs.
When the text flows horizontally i.e. not vertically stacked, the
vertically distributed justification works identically to the normal
vertical justification. There is no difference between these two modes.
You can try this in Calc by putting some Japanese sentence into a cell,
go to the Format Cells dialog, switch to the Alignment tab and check the
"Vertically stacked" check box in the Text Orientation section. Or
leave the check box unchecked, and change the text orientation to either
90 degrees or 270 degrees. Set the vertical text alignment to
"Distributed" and compare how that differs from the "Justified"
alignment. Change the row height if you have difficulty seeing the
effect of this distributed alignment.
There are two problems:
- The current implementation does not use the attribute
style:writing-mode to describe vertical writing modes, but a workaround
with attributes style:glyph-orientation="auto" and
style:direction="ttb". But this workaround has not the ability to
distinguish whether the block direction is from right-to-left or
left-to-right.
- As far as I see, the values "justified" and "distributed" in the UI
are only different in the way the last line of a paragraph is handled.
But the method for handling the last line is already specified as
style:justify-single-word attribute (20.301 ODF 1.4) and
fo:text-align-last (20.224 ODF 1.4). Only that LibreOffice does not use
these in Calc.
You may need to enable Asian language features in the Language Settings
in case it's not there. I'm not sure whether this feature is visible
without the Asian language features enabled.
(C)
LO has implemented something for OFFICE-2317, see around lines #2848
to #2891 in the schema
/core/schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng
Is there a UI in LibreOffice for these properties?
When are these properties written to file?
See my reply above. For horizontal distribution, put some Japanese text
into a cell, go to the same dialog location I described above, and
simply set the horizontal text alignment to "Distributed". If it's hard
to see, try widening the column width.
For horizontal Japanese text too, I see only a difference in the last
line of the text.
BTW, Excel seems to be not able to set Japanese vertical writing mode
for a single cell and keep the other cells in a horizontal writing mode.
At least I do not find it in Excel. I only find "vertical Text" for the
cell, but that does not make Japanese vertical writing mode (tategaki)
but stacks all glyphs upright, which is style:direction="ttb" in ODF.
Hopefully this helps a bit. Let me know if you need more clarification on this stuff.
How about becoming a member of the ODF TC?
Kind regards,
Regina