Development/ODF Implementer Notes/List of LibreOffice ODF implementation-defined items

The OpenDocument Format standard defines, "Implementation-defined is used in this standard for values or processing that may differ between ODF implementations, but is required to be specified by the implementor for each particular ODF-implementation." The list below specifies these values and processing for LibreOffice.

General
The references "ODF 1.2" refer the documents of the standard as published at https://www.oasis-open.org/standards#opendocumentv1.2

The references "ODF 1.3" currently (as of July 2020) refer the documents of "Committee Specification 01" of the to become standard as published at https://docs.oasis-open.org/office/OpenDocument/v1.3/cs01/

The OpenDocumentFormat is standardized too as ISO/IEC 26300 "Information technology -- Open Document Format for Office Applications (OpenDocument) v1.2", and available from https://standards.iso.org/ittf/PubliclyAvailableStandards/index.html

The list items do not yet contain the information about the implementation in LibreOffice. Help to get this done is highly appreciated.

Cursor Position Setting
3.11 Cursor Position Setting, Part 1, ODF 1.2 3.11 Cursor Position Setting, Part 3, ODF 1.3

LibreOffice does not implement this processing instruction. No implementation defined values are supported.

Document Signatures
3.16 Document Signatures, Part 1, ODF 1.2 3.16 Document Signatures, Part 3, ODF 1.3

No signatures other than document signatures are supported.

Non-RDF Metadata
4.3.1 General, Part 1, ODF 1.2 4.3.1 General, Part 3, ODF 1.3

Existing Custom metadata elements will be preserved when consuming, but otherwise no new Custom metadata elements will be produced.

text:alphabetical-index-auto-mark-file
8.8.3 , Part 1, ODF 1.2 8.8.3 , Part 3, ODF 1.3

The index mark file is a newline-separated list of entries.

The encoding of the file is the platform dependent default encoding (e.g. Windows Code Page).

Lines that start with  are ignored as comments.

Entries are tokenised by semicolons  as follows:

and  are booleans, with values encoded as strings   and.

Leading and trailing blanks are ignored.

chart:coordinate-region
11.3 , Part 3, ODF 1.3

LibreOffice has no non-predefined chart classes.

chart:plot-area>
11.5 , Part 3, ODF 1.3

form:generic-control
13.5.25 , Part 1, ODF 1.2 13.5.25 , Part 3, ODF 1.3

The generic control may have a name and a service name and events and possibly more.

The only currently supported generic control is a navigation bar; it can be recognized by its attribute.

It displays a label "Record N of M" and some navigation buttons to jump to the first, previous, next, and last record.

Event Types
14.4.3 Event Types, Part 1, ODF 1.2 14.5.3 Event Types, Part 3, ODF 1.3

The following events may be implemented:

Forms may support the following events:

text:notes-configuration
16.29.3 , Part 1, ODF 1.2 16.31.3 , Part 3, ODF 1.3

The default values for text:note-class="footnote":

The default values for text:note-class="endnote":

db:table-definition
19.85.4 , Part 1, ODF 1.2 19.85.4 , Part 3, ODF 1.3

LibreOffice does not support the element  or its children.

draw:extrusion-first-light-harsh
19.155 draw:extrusion-first-light-harsh, Part 1, ODF 1.2 19.155 draw:extrusion-first-light-harsh, Part 3, ODF 1.3

up to 7.2: The attribute is not evaluated. 7.3: The value "false" is rendered same as draw:extrusion-specularity="0". since 7.4: Four light directions are added with 60deg angle to. The light intensity given in  is distributed so that a surface perpendicular to the first light direction gets the same amount of light as in case value "true". The implementation is in method EnhancedCustomShape3d::Create3DObject(...). In case the second light is soft too, not four but two additional directions are used.

draw:extrusion-second-light-harsh
19.164 draw:extrusion-second-light-harsh, Part 1, ODF 1.2 19.164 draw:extrusion-second-light-harsh, Part 3, ODF 1.3

up to 7.3: The attribute is not evaluated. since 7.4: Four light directions are added with 60deg angle to. The light intensity given in  is distributed so that a surface perpendicular to the second light direction gets the same amount of light as in case value "true". The implementation is in method EnhancedCustomShape3d::Create3DObject(...). In case the first light is soft too, not four but two additional directions are used.

form:datasource
19.264 form:datasource, Part 1, ODF 1.2 19.264 form:datasource, Part 3, ODF 1.3

The mapping from data source names to specific instances of database front end documents is implemented by the  service and stored in the configuration; refer to the API documentation below for details.

https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1sdb_1_1DatabaseContext.html

form:default-button
19.265 form:default-button, Part 1, ODF 1.2 19.265 form:default-button, Part 3, ODF 1.3

If multiple buttons with form:default-button attributes with values of true are present in a form, the first such button is the default for the form.

presentation:show-end-of-presentation-slide
19.414 presentation:show-end-of-presentation-slide, part 1, ODF 1.2 19.418 presentation:show-end-of-presentation-slide, part 3, ODF 1.3

LibreOffice does not implement this attribute.

presentation:show-logo
19.419 presentation:show-logo, Part 3, ODF 1.3

The logo can be retrieved from: https://git.libreoffice.org/core/+/refs/heads/master/icon-themes/colibre/brand/shell/about.svg

presentation:speed
19.417 presentation:speed, Part 1, ODF 1.2 19.421 presentation:speed, Part 3, ODF 1.3

style:leader-width
19.489 style:leader-width, Part 1, ODF 1.2 19.493 style:leader-width, Part 3, ODF 1.3

style:line-style
19.493 style:line-style, Part 1, ODF 1.2 19.497 style:line-style, Part 3, ODF 1.3

table:formula, Host-dependent Properties
19.642 table:formula, Part 1, ODF 1.2 19.646 table:formula, Part 3, ODF 1.3

The property HOST_LOCALE is implementation-defined.

=== table:name in
 * Excel+SHA1 double-hash, see OFFICE-2112 https://wiki.oasis-open.org/office/Spreadsheet_Table_Protection_Options
 * }

table:show-empty
19.710 table:show-empty, Part 1, ODF 1.2 19.714 table:show-empty, Part 3, ODF 1.3

text:protection-key-digest-algorithm
19.851 text:protection-key-digest-algorithm, Part 1, ODF 1.2 19.857 text:protection-key-digest-algorithm, Part 3, ODF 1.3

The following algorithms are supported:

chart:symbol-name
20.54 chart:symbol-name, Part 1, ODF 1.2 20.61 chart:symbol-name, Part 3, ODF 1.3

draw:visible-area-height
20.169 draw:visible-area-height, Part 1, ODF 1.2 20.176 draw:visible-area-height, Part 3, ODF 1.3

For embedded objects that are internal to LibreOffice, the object itself provides the visible area; for external embedded objects, the draw:visible-area-height attribute is used.

draw:visible-area-left
20.170 draw:visible-area-left, Part 1, ODF 1.2 20.177 draw:visible-area-left, Part 3, ODF 1.3

For embedded objects that are internal to LibreOffice, the object itself provides the visible area; for external embedded objects, the draw:visible-area-left attribute is used.

draw:visible-area-top
20.171 draw:visible-area-top, Part 1, ODF 1.2 20.177 draw:visible-area-top, Part 3, ODF 1.3

For embedded objects that are internal to LibreOffice, the object itself provides the visible area; for external embedded objects, the draw:visible-area-top attribute is used.

draw:visible-area-width
20.172 draw:visible-area-width, Part 1, ODF 1.2 20.178 draw:visible-area-width, Part 3, ODF 1.3

For embedded objects that are internal to LibreOffice, the object itself provides the visible area; for external embedded objects, the draw:visible-area-width attribute is used.

fo:wrap-option
20.223 fo:wrap-option, Part 1, ODF 1.2 20.230 fo:wrap-option, Part 3, ODF 1.3

In cells in spreadsheet documents, text in a cell with wrapping disabled is visible until the next non-empty cell starts.

In drawing objects, text with wrapping disabled is visible and the text is displayed according to the object's draw:textarea-horizontal-align and fo:text-align attributes.

In text boxes, text wrapping cannot be disabled.

presentation:transition-speed
20.231 presentation:transition-speed, Part 1, ODF 1.2 20.238 presentation:transition-speed, Part 3, ODF 1.3

style:line-break
20.307 style:line-break, Part 1, ODF 1.2 20.315 style:line-break, Part 3, ODF 1.3

style:text-line-through-width
20.367 style:text-line-through-width, Part 1, ODF 1.2 20.377 style:text-line-through-width, Part 3, ODF 1.3

style:text-overline-width
20.373 style:text-overline-width, Part 1, ODF 1.2 20.383 style:text-overline-width, Part 3, ODF 1.3

style:text-underline-width
20.382 style:text-underline-width, Part 1, ODF 1.2 20.392 style:text-underline-width, Part 3, ODF 1.3

style:use-window-font-color
20.385 style:use-window-font-color, Part 1, ODF 1.2 20.395 style:use-window-font-color, Part 3, ODF 1.3

Defined in https://opengrok.libreoffice.org/xref/core/include/tools/color.hxx?r=5a3f9ff4

IsDark is GetLuminance <= 62

GetLuminace is (Blue * 29 + Green * 151 + Red * 76) >> 8

[state 2021-08-21]

Host-Defined Behaviors
3.4 Host-Defined Behaviors, Part 2, ODF 1.2 3.4 Host-Defined Behaviors, Part 4, ODF 1.3

Unicode Normaization
4.2 Text (String), Part 2, ODF 1.2 4.2 Text (String), Part 4, ODF 1.3

Date
4.3.3 Date, Part 2, ODF 1.2 4.3.3 Date, Part 4, ODF 1.3

Logical
4.3.7 Logical (Number), Part2, ODF 1.2

caution, new structure in ODF 1.3

Complex Number
4.4 Complex Number, Part 2, ODF 1.2 4.4 Complex Number, Part 4, ODF 1.3

Processing a ReferenceList
4.11.12 Sequences (NumberSequence, NumberSequenceList, DateSequence, LogicalSequence, and ComplexSequence), Part 2, ODF 1.2 4.11.12 Sequences (NumberSequence, NumberSequenceList, DateSequence, LogicalSequence, and ComplexSequence), Part 4, ODF 1.3

Nonstandard Function Names
5.7 Nonstandard Function Names, Part 2, ODF 1.2 5.7 Nonstandard Function Names, Part 4, ODF 1.3

See https://wiki.documentfoundation.org/Development/ODF_Implementer_Notes/List_of_LibreOffice_OpenFormula_Extensions

Common Template for Functions and Operators
6.2 Common Template for Functions and Operators, Part 4, ODF 1.3

The implementation-defined behavior is documented in the online-help about functions.

For LibreOffice version n.k you access the help with https://help.libreoffice.org/n.k/en-US/text/shared/05/new_help.html. For example https://help.libreoffice.org/7.1/en-US/text/shared/05/new_help.html

Conversion to Number
6.3.5 Conversion to Number, Part 2, ODF 1.2 6.3.5 Conversion to Number, Part 4, ODF 1.3

Conversion to Integer
6.3.6 Conversion to Integer, Part 2, ODF 1.2 6.3.6 Conversion to Integer, Part 4, ODF 1.3

Conversion to Logic
6.3.12 Conversion to Logic, Part 2, ODF 1.2 6.3.12 Conversion to Logic, Part 4, ODF 1.3

Conversion to DateParam
6.3.15 Conversion to DateParam, Part 2, ODF 1.2 6.3.15 Conversion to DateParam, Part 4, ODF 1.3

Conversion to TimeParam
6.3.16 Conversion to TimeParam, Part 2, ODF 1.2 6.3.16 Conversion to TimeParam, Part 4, ODF 1.3

Standard Operators - Infix Operator Ordered Comparison
6.4.9 Infix Operator Ordered Comparison ("<", "<=", ">", ">="), Part 2, ODF 1.2 6.4.9 Infix Operator Ordered Comparison ("<", "<=", ">", ">="), Part4, ODF 1.3

Bit operation functions
6.6.1 General, Bit operation functions, Part 2, ODF 1.2 6.6.1 General, Bit operation functions, Part 4, ODF 1.3

Functions
The implementation-defined behavior of functions is documented in the online-help about the functions.

For LibreOffice version n.k you access the help with https://help.libreoffice.org/n.k/en-US/text/shared/05/new_help.html. For example https://help.libreoffice.org/7.1/en-US/text/shared/05/new_help.html

Affected functions are (in order of the specification): IMARGUMENT, IMSUM, AMORLINC, COUNT, COUNTA, COUNTBLANK, FORMULA, ISEVEN, ISFORMULA, ISODD, N, VALUE, ATAN2, GCD, POWER, MAX (ODF 1.2), MAXA (ODF 1.2), MIN, MINA, STDEVA, STDEVPA, VARA, VARPA, BIN2DEC, BIN2HEX, BIN2OCT, DEC2BIN, DEC2HEX, DEC2OCT, HEX2BIN, HEX2DEC, HEX2OCT, OCT2BIN, OCT2DEC, OCT2HEX, CODE, TEXT

manifest:algorithm-name
4.16.1 manifest:algorithm-name, Part 2, ODF 1.3

No implementation defined values produced currently, only "Blowfish CFB" and "http://www.w3.org/2001/04/xmlenc#aes256-cbc".

manifest:checksum-type
4.16.3 manifest:checksum-type, Part 2, ODF 1.3

No implementation defined values produced currently, only "SHA1/1K" and "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0#sha256-1k".

manifest:start-key-generation-name
4.16.6 manifest:start-key-generation-name, Part 2, ODF 1.3

No implementation defined values produced currently, only "SHA1" and "http://www.w3.org/2000/09/xmldsig#sha256".

manifest:PGPAlgorithm
4.17 manifest:PGPAlgorithm, Part 2, ODF 1.3

http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p

see

manifest:key-derivation-name
4.8.9 manifest:key-derivation-name, Part 3, ODF 1.2 4.16.9 manifest:key-derivation-name, Part 2, ODF 1.3

No implementation defined values produced currently, only "PGP" and "PBKDF2".

manifest:preferred-view-mode
4.8.11 manifest:preferred-view-mode, Part 3, ODF 1.2 4.16.11 manifest:preferred-view-mode, Part 2, ODF 1.3

No implementation defined values supported (the attribute isn't implemented at all).

loext:MetalMSCompatible
This is an implementation-defined value of the attribute draw:extrusion-metal-type, which will be included in ODF 1.4, see https://issues.oasis-open.org/browse/OFFICE-4123

Calculations for specular color are done in HSB color model Specular color Hue = Material color Hue Specular color Saturation = Material color Saturation Specular color Brightness = Material color Brightness * extrusion-specularity * extrusion-first-light-level

The code is around https://opengrok.libreoffice.org/xref/core/svx/source/customshapes/EnhancedCustomShape3d.cxx?r=157b027c#987

Evaluation of extrusion-shininess is the same as in case of extrusion-metal="false".