Details

    • Type: New Feature
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: ODF-Next
    • Component/s: None
    • Labels:
      None
    • Proposal:
      Hide

      Summary

      Proposal owner: Miklos Vajna

      Proposal short name: Opacity text property

      Rationale

      Use cases:

      Users sometimes want to make a whole shape partially transparent. Currently ODF provides a way to make the shape area / background and the line / border semi-transparent, but the text can only have an RGB color.

      Alternatives considered:

      It is possible to manually convert text to a bitmap, and then bitmaps can be transparent.

      Requested changes to the ODF Standard

      Text changes/additions (compared to ODF 1.2):

      16.27.28 <style:text-properties> (changed section)

      The <style:text-properties> element has the following attributes: ... existing list ..., 16.40.7 <draw:opacity>.

      Schema changes/additions:

      <rng:define name="style-text-properties-attlist">
        <rng:interleave>
          <rng:optional>
            <rng:attribute name="draw:opacity">
              <rng:ref name="zeroToHundredPercent"/>
            </rng:attribute>
          </rng:optional>
        </rng:interleave> 

      </rng:define>

      In other words, allow the existing draw:opacity as a new style:text-properties attribute.

      Impacts

      Conformance:

      This proposal will not add any mandatory features or behaviors.

      Backwards compatibility:

      This change will not impact existing ODF processors, the usage of the new attribute value is optional.

      Accessibility impact:

      This change will not impact accessibility.

      Interoperability:

      OOXML's drawingML has a

      {{<a:r>}}
      {{  <a:rPr>}}
      {{    <a:solidFill>}}
      {{      <a:srgbClr val="FF0000">}}
      {{        <a:alpha val="25000"/>}}
      {{      </a:srgbClr>}}
      {{    </a:solidFill>}}
      {{  </a:rPr>}}
      {{  <a:t>Hello!</a:t>}}
      {{ </a:r>}}

      markup to describe the same, this proposal allows roundtripping that feature in ODF.

      LibreOffice 6.5 implements this rendering feature in its ODF extension namespace. It is enabled for ODG and ODP files at the moment.

      Show
      Summary Proposal owner: Miklos Vajna Proposal short name: Opacity text property Rationale Use cases: Users sometimes want to make a whole shape partially transparent. Currently ODF provides a way to make the shape area / background and the line / border semi-transparent, but the text can only have an RGB color. Alternatives considered: It is possible to manually convert text to a bitmap, and then bitmaps can be transparent. Requested changes to the ODF Standard Text changes/additions (compared to ODF 1.2): 16.27.28 <style:text-properties> (changed section) The <style:text-properties> element has the following attributes: ... existing list ..., 16.40.7 <draw:opacity>. Schema changes/additions: <rng:define name="style-text-properties-attlist">   <rng:interleave>     <rng:optional>       <rng:attribute name="draw:opacity">         <rng:ref name="zeroToHundredPercent"/>       </rng:attribute>     </rng:optional>   </rng:interleave>   </rng:define> In other words, allow the existing draw:opacity as a new style:text-properties attribute. Impacts Conformance: This proposal will not add any mandatory features or behaviors. Backwards compatibility: This change will not impact existing ODF processors, the usage of the new attribute value is optional. Accessibility impact: This change will not impact accessibility. Interoperability: OOXML's drawingML has a {{ <a:r> }} {{   <a:rPr> }} {{     <a:solidFill> }} {{       <a:srgbClr val="FF0000"> }} {{         <a:alpha val="25000"/> }} {{       </a:srgbClr> }} {{     </a:solidFill> }} {{   </a:rPr> }} {{   <a:t>Hello!</a:t> }} {{ </a:r> }} markup to describe the same, this proposal allows roundtripping that feature in ODF. LibreOffice 6.5 implements this rendering feature in its ODF extension namespace. It is enabled for ODG and ODP files at the moment.

      Attachments

        Activity

        Hide
        regina.henschel Regina Henschel added a comment -

        In general I support such new property. But there are some details to be considered.

        An additional alternative would be: Extend datatype 'color' to allow alpha channel, e.g by function rgba().

         

        Currently draw:opacity modifies the filling of an object. For modifying other parts of objects, there exist the attributes
        draw:image-opacity
        draw:stroke-opacity
        draw:shadow-opacity
        Depending on how the new property is intended to work (see below) an attribute name 'draw:text-opacity' might be more suitable.

        In case the name would be 'draw:opacity' the existing texts have to be adapted, in case of a different name, e.g. 'draw:text-opacity', a new section is needed. Such text is missing in the proposal.

        Additional questions:
        How does fo:background-color interact with the semi-transparency of a character? Becomes only the character semi-transparent and you can see the background-color? Or becomes the complete area of the <text:span> element semi-transparent as a 'postprocess' as described for the new property 'opacity' in CSS3 https://www.w3.org/TR/css-color-3/#transparency ?

        How does a filling of the object itself interact with the transparency of the character? Similar situation for images: If a png-image has a transparent part via alpha channel, you can see the background-color of the draw:frame element. With draw:opacity the background-color of the draw:frame element is effected, with draw:image-opacity the image is effected.

        An additional question would be the interaction with attribute style:text-outline. But for that attribute, it is not specified, whether a color or value 'transparent' is used for the inner parts of the character.

        Does animation with smil:attributeName="opacity" affects the new character transparency? Notice, that for 'color' it is explicitly said, that it effects text color, and there exists the value 'fillColor' if only the fill color is to be animated. 'opacity' has the vage term "elements's opacity".

        Show
        regina.henschel Regina Henschel added a comment - In general I support such new property. But there are some details to be considered. An additional alternative would be: Extend datatype 'color' to allow alpha channel, e.g by function rgba().   Currently draw:opacity modifies the filling of an object. For modifying other parts of objects, there exist the attributes draw:image-opacity draw:stroke-opacity draw:shadow-opacity Depending on how the new property is intended to work (see below) an attribute name 'draw:text-opacity' might be more suitable. In case the name would be 'draw:opacity' the existing texts have to be adapted, in case of a different name, e.g. 'draw:text-opacity', a new section is needed. Such text is missing in the proposal. Additional questions: How does fo:background-color interact with the semi-transparency of a character? Becomes only the character semi-transparent and you can see the background-color? Or becomes the complete area of the <text:span> element semi-transparent as a 'postprocess' as described for the new property 'opacity' in CSS3 https://www.w3.org/TR/css-color-3/#transparency ? How does a filling of the object itself interact with the transparency of the character? Similar situation for images: If a png-image has a transparent part via alpha channel, you can see the background-color of the draw:frame element. With draw:opacity the background-color of the draw:frame element is effected, with draw:image-opacity the image is effected. An additional question would be the interaction with attribute style:text-outline. But for that attribute, it is not specified, whether a color or value 'transparent' is used for the inner parts of the character. Does animation with smil:attributeName="opacity" affects the new character transparency? Notice, that for 'color' it is explicitly said, that it effects text color, and there exists the value 'fillColor' if only the fill color is to be animated. 'opacity' has the vage term "elements's opacity".
        Hide
        patrick Patrick Durusau added a comment -

        As per TC on 9 Dec 2019

        Show
        patrick Patrick Durusau added a comment - As per TC on 9 Dec 2019

          People

          • Assignee:
            Unassigned
            Reporter:
            timar Andras Timar (Inactive)
          • Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated: