Welcome to The Document Foundation Planet

This is a feed aggregator that collects what LibreOffice and Document Foundation contributors are writing in their respective blogs.

To have your blog added to this aggregator, please mail the website@global.libreoffice.org mailinglist or file a ticket in Redmine.

06 February, 2023


The Documentation Team is proud to announce the immediate availability of the Writer Guide and Calc Guide release 7.5, narrowing the time gap between the software release date and the Guides’ release date.

Writer Guide 7.5

Writer Guide 7.5

Calc Guide 7.5

Calc Guide 7.5

The Writer Guide 7.5 update was coordinated by Jean Weber with the support of Kees Kriek, Tsvetelina Georgieva, Antonio Fernández and Olivier Hallot. The Guide contains topics on Additional hyphenation settings (Chapter 2), Language Tool, a remote grammar checker (Chapters 2 and 20), Additional change tracking features (Chapter 3) Outline folding (Chapter 3), Page line-spacing for printed documents (Chapter 6), Gutter margins in page styles (Chapters 8 and 9), Revised and additional information about using styles (Chapter 8), Additional information about using master documents (Chapter 16), New features for bookmarks (Chapter 17) and Content controls (Chapter 18)

The Calc Guide 7.5 update was coordinated by Olivier Hallot, based on the Calc Guide 7.4. The guide contains topics on document properties (Chapter 1), AutoFilter with color filtering and more (Chapter 2), Chart data table (Chapter 3) and notes on AutoFormat of ranges and themes (Chapter 4 and 5).

The Guides are available for immediate download in PDF format as well as in source format (OpenDocument Format). Soon they will be available as printed books by LuLu inc. and in HTML format for online reading

Download the Writer and Calc guides 7.5 from the documentation websites at: documentation.libreoffice.org and the bookshelf at books.libreoffice.org.

Olivier Hallot

Olivier Hallot

Jean Weber

Jean Weber


Writer now has a set of new automation commands and APIs that allow clients to build user interface for citation handling that's more advanced than the default in-Writer bibliography support.

This work is primarily for Collabora Online, see the CODE release notes for one possible way to use this.


Citations and bibliography in Writer, using fieldmarks

Users frequently using scientific citations are probably familiar with the limits of Writer's built-in bibliography support, and solutions like Zotero appeared (with a LibreOffice extension included) to improve that situation.

This means that instead of storing all your scientific notes and data locally, you can store them on a Zotero server, then work with that from anywhere, once you provide your credentials.

The trouble comes when you want to combine this with collaborative editing, which is provided by Online, but you can't use the extension made for the desktop.

The above CODE release notes explains how an end user can use this feature, this post is meant to document what new UNO commands and LOK APIs I added that serve as a backend for this. Especially the UNO commands are also useful in other contexts, like in macros or other extensions.

Results so far

Zotero can store citations using 3 markups in documents: fields (DOCX only), bookmarks (DOCX and ODT) and finally reference marks / sections (ODT only). The added plumbing allows several operations for all 3 cases, to work with existing documents using any of these markups.

The citation and the bibliography is handled the same way for fields (Writer's fieldmarks) and bookmarks. The last case uses reference marks for citations, but sections for the bibliography.

The following operations are supported:

  • create the citation / bibliography

  • read the object under the cursor

  • read all objects of a given type in the document

  • update the object under the cursor

  • update all objects of a given type in the document

  • delete all objects of a given type in the document

Reading is only available to LOK clients, you need to call the getCommandValues() API. The rest is normal UNO commands that you can invoke from document macros or extensions as well.

The added plumbing is the following:

Operation Fieldmark Bookmark Refmark Section
Create .uno:TextFormField .uno:InsertBookmark .uno:InsertField .uno:InsertSection
Read getCommandValues(".uno:TextFormField") getCommandValues(".uno:Bookmark") getCommandValues(".uno:Field") None
Read all getCommandValues(".uno:TextFormFields") getCommandValues(".uno:Bookmarks") getCommandValues(".uno:Fields") getCommandValues(".uno:Sections")
Update .uno:UpdateTextFormField .uno:UpdateBookmark .uno:UpdateField None
Update all .uno:TextFormFields .uno:UpdateBookmarks .uno:UpdateFields .uno:UpdateSections
Delete all .uno:DeleteTextFormFields .uno:DeleteBookmarks .uno:DeleteFields .uno:DeleteSections

How is this implemented?

If you would like to know a bit more about how this works, continue reading... :-)

As usual, the high-level problem was addressed by a series of small changes:

05 February, 2023


A QR code is a type of 2D barcode that is useful for encoding data, such as a URL, contact information and many other data types. One can scan the code via applications on mobile phones to capture a URL or import contact information.

For example, the code below encodes the address of the LibreOffice website:

Encoding LibreOffice website URL with QR code

Encoding LibreOffice website’s URL in a QR code

Generating QR Codes in LibreOffice

In LibreOffice, it is possible to create different barcodes, either 1D or 2D, via extensions, or LibreOffice’s internal functionality.

QR code dialog

QR code dialog

For QR codes, it is possible to use the internal functionality via Insert > OLE Object > QR and Barcode:

The implementation in LibreOffice is using ZXing QR code library:

If you take a look at the source code in cui/source/dialogs/QrCodeGenDialog.cxx, there is ConvertToSVGFormat() function which creates the SVG output. In the recent versions of ZXing library (we use v1.4 right now), there is a function that does that, ZXing::ToSVG(). The task here is to replace the our function with the one from ZXing library.

Handling Different Library Versions

Unfortunately, only recent versions of ZXing provide ZXing::ToSVG() functions. It is not available in 1.3, but is added in 1.4. Looking into the packaging of the library in different distributions, it becomes obvious that this package version is not available yet in many distributions:

Therefore, a solution should check the ZXing library version, and use the new function if the library version is >= 1.4. In other words, limiting the change to where the new version of the library is present is necessary. This is possible using compiler conditionals. It is important where one configures the LibreOffice compilation to use system provided ZXing library, using --with-system-zxing while invoking autogen.sh.

Final Notes

EasyHacks are good starting points for someone who wants to get started in LibreOffice development. This specific issue for improving QR code is filed as tdf#153328 in TDF’s Bugzilla. To understand how to get started with LibreOffice development, you can refer to our getting involved page in the TDF Wiki, or our video tutorial for getting started with LibreOffice development.

03 February, 2023


A quick look at some of the new features in LibreOffice 7.5, which we announced yesterday!

(Click here to see this video on PeerTube.)

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

Thanks to Nugroho Dwi Hartawan, Rania Amina and Ahmad Haris for the video. Original audio track: KOBT025 – Backing Track by Korochin Music JP.

02 February, 2023


LibreOffice 7.5 banner

Berlin, February 2, 2023 – LibreOffice 7.5 Community, the new major release of the volunteer-supported free office suite for desktop productivity, is immediately available for download for Windows (Intel/AMD and ARM processors), macOS (Apple Silicon and Intel processors), and Linux.

Most Significant New Features


  • Major improvements to dark mode support
  • New application and MIME-type icons, more colorful and vibrant
  • The Start Centre can filter documents by type
  • An improved version of the Single Toolbar UI has been implemented
  • PDF Export improved with several fixes, and new options and features
  • Support for font embedding on macOS
  • Improvements to the Font Features dialog with several new options
  • Addition of a zoom slider at the bottom right of the macro editor


  • Bookmarks have been significantly improved, and are also much more visible
  • Objects can be marked as decorative, for better accessibility
  • New types added to content controls, which also improve the quality of PDF forms
  • A new automatic accessibility checker option has been added to the Tools menu
  • Initial machine translation is available, based on DeepL translate APIs
  • Several spell checking improvements


  • Data tables are now supported in charts
  • The Function Wizard now lets you search by descriptions
  • “Spell out” number formats have been added
  • Conditional formatting conditions are now case insensitive
  • Correct behavior when entering numbers with a single prefix quote (‘)


  • New set of default table styles, and creation of table styles
  • Table styles can be customized, saved as master elements and exported
  • Objects can be drag-and-dropped in the navigator
  • It is now possible to crop inserted videos in the slide and still play them
  • The presenter console can also run as a normal window instead of fullscreen

A video summarizing the top new features in LibreOffice 7.5 Community is available on YouTube and PeerTube. A description of all new features is available in the Release Notes.

Interoperability with Microsoft Office

Based on the distinctive features of the LibreOffice Technology platform for personal productivity on desktop, mobile and cloud, LibreOffice 7.5 provides a large number of improvements and new features targeted at users sharing documents with MS Office or migrating from MS Office. These users should check new releases of LibreOffice on a regular basis, as the progress is so fast, that each new version improves dramatically over the previous one.

LibreOffice offers the highest level of compatibility in the office suite market segment, with native support for the OpenDocument Format (ODF) – beating proprietary formats for security and robustness – to superior support for MS Office files, along with filters for a large number of legacy document formats, to return ownership and control to users.

Microsoft files are still based on the proprietary format deprecated by ISO in 2008, and not on the ISO approved standard, so they hide a large amount of artificial complexity. This causes handling issues with LibreOffice, which defaults to a true open standard format (the OpenDocument Format).

Contributors to LibreOffice 7.5 Community

LibreOffice 7.5 Community’s new features

31 January, 2023


Montage of images from this post

Here’s our summary of updates, events and activities in the LibreOffice project in the last four weeks – click the links to learn more…

  • We started the year back looking back at the previous one – 2022! Here’s a quick recap of what we did in the LibreOffice community. Well, just a few of the many things 😉 Thanks to everyone who contributed last year! (PeerTube version of this video here.)

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

LibreOffice 7.4 banner

Calc Guide cover

  • Some sad news: we heard that Carlos Parra Zaldivar, a long-time collaborator in the community, member of The Document Foundation and advocate for Free Software, passed away on November 20th. Rest in peace, Carlos.

Carlos Parra Zaldivar

Draw Guide cover

  • Then we talked to Afshin Falatooni from the Persian-speaking LibreOffice community, about his work on the blog and in the QA project.

Afshin Falatooni

  • Later in the month, we at The Document Foundation stated our position on the EU’s proposed Cyber Resilience Act. If the Cyber Resilience Act becomes EU law without clarification, the impact on several European-based open source projects, such as products based on LibreOffice technology, could have devastating (unintended) consequences.
  • TDF has many websites and services: this blog, the LibreOffice website, our wiki, the extensions website, Weblate and many more. To improve them and keep them up-to-date, TDF now has a new Web Technology Engineer, Juan José González! We had a chat with him, to learn more…

Juan José González


Keep in touch – follow us on Twitter, Facebook and Mastodon. Like what we do? Support our community with a donation – or join us and help to make LibreOffice even better!

30 January, 2023



FOSDEM is one of the largest meetups for free and open source software projects. After two years of online events due to the pandemic, it’s back in-person, in Brussels on February 4 and 5!

And, of course, LibreOffice and The Document Foundation will be there. Our stand will be in in K level 1 (group C). We also have the LibreOffice Technology devroom on the first day, packed with talks and presentations.

See you there!


FOSDEM 2023 – Back in Brussels

FOSDEM 2023 is back home in Brussels. Meet the Collabora Productivity team at Europe’s largest gathering of open-source developers and have a chat, some fries or a beer with us (also: make sure to grab some stickers!). As usual, our engineers will be giving talks about the latest developments in Collabora Online, Collabora Office and LibreOffice at the LibreOffice Technology devroom. Here’s the schedule!

Saturday, February 4th 2023

Collabora at the LibreOffice Technology devroom


Noel Grandin

16:10 – LibreOffice Technology devroom See details

Turbocharging an Elephant – Making LibreOffice Faster

Most of the easy tasks are already done. This talk covers several improvements to LibreOffice, that required lots of preparational work and interesting challenges to introduce improvements into a massive (and messy) codebase.


Pranam Lashkari

16:20 – LibreOffice Technology devroom See details

Feature Locking and Feature Restriction – Integrator’s Way to Unlock Potential

In the talk, Pranam Lashkari will explain and demonstrate how feature locking and restrictions work in Collabora Online. Using such methods, integrators can control which features to deliver to which user or group.


Sarper Akdemir

16:30 – LibreOffice Technology devroom See details

An Interoperability Improvement in LibreOffice Impress Tables

Sarper Akdemir tells the story of an interoperability bug fixing adventure where the problem turned out to be deeper than it appeared at first glance, showcasing how there are multiple approaches to a single interoperability problem.


Miklos Vajna

16:40 – LibreOffice Technology devroom See details

Writer Content Controls – What Happened in the Past Half Year

LibreOffice was capable of handling form filling in Writer for a while already. In the meantime, the competition introduced Structured Document Tags. Writer Content Controls are meant to perform a great handling of this third type of form filling. See Miklos Vajna‘s talk about what we have done to bring themes to LibreOffice, hear what still needs doing and find out how you can help.




Szymon Kłos

 17:40 – LibreOffice Technology devroom See details

LibreOfficeKit – Bridge Between Your Application and LibreOffice

Szymon Klos gives a short introduction into integrating LibreOffice using LibreOfficeKit with external software. He will describe the most important code pieces and show, where to look for information. Furthermore, he’ll demonstrate how to add new features, which API we provide, and what can be done with tiled rendering.


Michael Meeks

 17:50 – LibreOffice Technology devroom See details

Collabora Online Over Lockdown – How LibreOffice Technology in the Browser Got Better

Come and hear how Collabora Online (COOL) has improved over the COVID-19 era, not only in core feature-function, but also in ease of access and deployment for everyone. See how we can deliver scalable, secure, on-premise editing of your documents with a simple, easy to deploy office for the free world.


Pedro Pinto Silva

 18:10 LibreOffice Technology devroom See details

Make Collabora Online Yours – Customize and Integrate it Everywhere

Collabora Online is quite flexible in the means that you can alter to your personal taste without

28 January, 2023


You may already know that LibreOffice uses its internal GUI toolkit, named VCL (Visual Class Library). This library is responsible for creating the GUI widgets for LibreOffice, providing abstraction from the operating system including the basic rendering. To see more details, you can read its documentation page:

VCL has the nice feature of being able to work with different GUI libraries on different platforms. For example, if you are on Linux, you can use X11, Gtk3/4, Qt, or KDE back-ends for the VCL applications like LibreOffice. You can easily switch between them by using the environment variable SAL_USE_VCLPLUGIN. For example, you can use the old style X11 GUI in this way:

SAL_USE_VCLPLUGIN=gen instdir/program/soffice

Or, by passing it to the LibreOffice program itself:

instdir/program/soffice -env:SAL_USE_VCLPLUGIN=gen

In addition, there are other GUI backends, or plugins which are as follows:

UI Plugin UI Backend
qt5 Qt 5
qt6 Qt 6
kf5 KDE KF5
gtk3 GTK 3
gtk4 GTK 4
gtk3_kde5 GTK 3 KDE 5
win Windows UI (Windows only)
osx macOS X UI (macOS only)

You can read more about the related environment variables here:

The code for the library is available in the vcl/ folder inside core source code. Also, beside the main source code and tests, there is a folder named workbench. Inside this folder, you can find several standalone VCL applications:

VCL Applications and Workbenches

vcldemo: This is a showcase of some of the VCL rendering abilities including the lines, shapes, internationalized text, pictures and more! You can see run this demo by invoking this command, after you could be able to build LibreOffice:

./bin/run vcldemo
vcldemo vcl application


minvcl: This is possibly one of the smallest example application that can be created with VCL. Basically, It creates a window and draws a simple text inside it. Likewise, you can run it by invoking:

./bin/run minvcl
minvcl vcl application


Image Tools

icontest: This bitmap image testing is used by some of the developers to test VCL bitmap rendering capabilities. It can be invoked this way:

./bin/run icontest <image>

mtfdemo: This is a small application for displaying and dumping the structure of EMF/EMF+/WMF files, which is a vector image format from Microsoft. This is previously discussed in another blog post here:

Similarly, it can be run in this way:

./bin/run mtfdemo <emf|wmf image>

Font Tools

listfonts: This utility lists the current list of fonts installed in the system, and the features of each font. To display the information on the screen, you can invoke it this way:

./bin/run listfonts --

listglyphs: This utility lists the current glyphs in a font that is already installed on the system. You should provide the font name to it, in this way:

./bin/run listglyphs FreeMono --

VCL Fuzzers and Platform Specific Tools

Beyond the above applications and tools, there are many other platform specific tools that are not available on

27 January, 2023


Photo of Juan José

Here at The Document Foundation, the non-profit entity behind the LibreOffice community, we have many websites and services: this blog, the LibreOffice website, our wiki, the extensions website, Weblate and many more.

To improve them and keep them up-to-date, TDF now has a new Web Technology Engineer! So let’s get to know him…

Tell us a bit about yourself!

My name is Juan José and I am from México. I moved from my beautiful hometown to Guadalajara nearly thirteen years ago looking for a good job as a developer and I fell in love with the city. In Guadalajara I met my wife, my friends and many free software enthusiasts.

Since the first day, I realized that there were local communities around free software so I like to keep in contact with them, and contribute with technical talks about various topics.

I studied a masters degree in Computer Science, where I got interested in the semantic web and the automated reasoning discipline behind it. I’ve been working as a web developer for more than a decade now.

I am so happy that I found this position at The Document Foundation – I am determined to contribute as much as I can to improve our existing web sites and web apps that support the foundation’s efforts.

Were you using LibreOffice before you joined TDF?

I used LibreOffice to write the final project of my bachelor degree, I can say that LibreOffice was the first application for what I consider myself a power user (that was 10 years ago – but I have lost most of my talents sadly). I also remember writing an essay about the importance of open document formats, and my references included many people from the LibreOffice community.

This role marks my first time actively contributing to LibreOffice – so I hope I can help the project significantly.

ODF logo

What’s your new role at TDF?

I joined the Foundation as the new Web Technology Engineer, where I will dedicate my time to support, fix and improve the experience of our websites.

I believe it’s a great role since the web has become the default entry point to all people that want to interact with LibreOffice, from being an end-user, to collaborate on the software’s development. I have adopted the mission to facilitate this interaction.

What are you working on?

I am starting on the extensions site – it’s the place where you can get templates and extensions for LibreOffice. I am replying to reported issues by improving the web experience. I also want to keep an eye on the experience of the end user, taking care of both ends: extension developers and the users.

We’re really happy to have Juan José on board! LibreOffice users and community members can give him feedback and help via the website mailing list. Looking forward to seeing all the great things to come 😊

26 January, 2023


LibreOffice banner

Berlin, January 26, 2023 – The Document Foundation announces the release of LibreOffice 7.4.5 Community, a maintenance release which solves a crash affecting a large number of users. The new release is immediately available from https://www.libreoffice.org/download/ for Windows (Intel and ARM processors), macOS (Apple and Intel processors), and Linux.

All LibreOffice users are invited to update their installation to LibreOffice 7.4.5, as the older versions have reached the end of life and are not maintained.

LibreOffice offers the highest level of compatibility in the office suite market segment, with native support for the OpenDocument Format (ODF) – beating proprietary formats for security and robustness – to superior support for MS Office files, to filters for a large number of legacy document formats, to return ownership and control to users.

LibreOffice Technology Platform

Products based on the LibreOffice Technology platform – the transactional engine shared by all LibreOffice based products, which provides a rock solid solution with a high level of coherence and interoperability – are available for major desktop operating systems (Windows, macOS, Linux and Chrome OS), for mobile platforms (Android and iOS), and for the cloud.

For enterprise-class deployments, TDF strongly recommends the LibreOffice Enterprise family of applications from ecosystem partners – for desktop, mobile and cloud – with a large number of dedicated value-added features and other benefits such as SLA (Service Level Agreements): https://www.libreoffice.org/download/libreoffice-in-business/. All code developed by ecosystem companies for enterprise customers is shared with the community and improves the LibreOffice Technology platform.

Availability of LibreOffice 7.4.5 Community

LibreOffice 7.4.5 Community is available from: https://www.libreoffice.org/download/. Minimum requirements for proprietary operating systems are Microsoft Windows 7 SP1 and Apple macOS 10.12. LibreOffice Technology-based products for Android and iOS are listed here: https://www.libreoffice.org/download/android-and-ios/

The Document Foundation does not provide technical support for users, although they can get it from volunteers on user mailing lists and the Ask LibreOffice website: https://ask.libreoffice.org

LibreOffice users, free software advocates and community members can support The Document Foundation with a donation at https://www.libreoffice.org/donate

Change log page: https://wiki.documentfoundation.org/Releases/7.4.5/RC1

24 January, 2023


Summary of Issues of the Cyber Resilience Act (in the current status)


The Cyber Resilience Act (CRA) sets out a number of cybersecurity and vulnerability management requirements for manufacturers (Annex I) and will require products to be accompanied by information and instructions for users (Annex II). Software vendors will also be required to conduct a risk assessment and produce technical documentation (Annex V) to demonstrate compliance.
Currently, the text implies that if a developer or supplier derives commercial benefit from OSS, it would be subject to the Cyber Resilience Act. It even implies, in relation to the distribution of software, that open source producers or developers could be held liable if their open source projects are used commercially.

If the Cyber Resilience Act becomes EU law without clarification, the impact on several European-based open source projects, such as products based on LibreOffice technology, could have devastating (unintended) consequences.

The Commission recognises that not all products in our society are equally dependent. The Cyber Resilience Act therefore distinguishes between products and critical products, reflecting the level of cybersecurity risk associated with these products. On the other hand, the CRA ignores the security risks associated with files created by the software covered by the act itself, which can have even more devastating consequences (according to security expert Kaspersky Labs, in 2018, 70% of all malware worldwide was carried by documents created by the most widely used office suite).

Software developers must declare compliance with the requirements of the Cyber Resilience Act and therefore take responsibility for compliance in one of three ways. They can either:

  1. perform a self-assessment, or
  2. apply for a product examination by an auditor and then set up checks and balances for their development processes, or
  3. apply for an assessment of their quality system by an auditor.

These options come with a growing administrative/compliance burden.

The Cyber Resilience Act attempts to exempt open source software from its provisions. But there’s some problematic language about how the CRA draws the line between commercial and non-commercial use of OSS, which could affect all products based on LibreOffice technology and many other products based on open source software.

This is the text of the Open Source Software exception:

In order not to hamper innovation or research, free and open-source software developed or supplied outside the course of a commercial activity should not be covered by this Regulation. This is in particular the case for software, including its source code and modified versions, that is openly shared and freely accessible, usable, modifiable and redistributable.

While the Cyber Resilience Act does not define commercial activity, the EU Blue Guide to the implementation of EU product legislation does:

Commercial activity is understood as providing goods in a business related context. Non-profit organisations may be considered as carrying out commercial activities if they operate in such a context. This can only be appreciated on a case by case basis taking into account the regularity of the supplies, the characteristics of

23 January, 2023


Afshin Falatooni

Today we’re talking to Afshin Falatooni, from the Persian-speaking LibreOffice community!

Tell us a bit about yourself…

I am from Iran, the city of Mashhad. I speak Persian (Farsi), and I love to contribute to LibreOffice! This January, I have just turned 46 years old. My favorite hobby is climbing, and if I have time, I usually go to the mountains on Fridays, which is the weekend holiday in our country.

I work as a book editor, typesetter and layout designer. I became interested in the LibreOffice project because of my job. Many editors and typesetters use Microsoft Word more than any other program, and I was one of them before I got acquainted with LibreOffice. But, now that I know the advantages of LibreOffice as a free software project, I use Writer as much as the norms of the publishing market allows me.

What are you working on in the LibreOffice project right now?

I write regularly on the Persian LibreOffice blog. My goal is to provide educational contents around LibreOffice there. Additionally, if I find a bug that is either directly or indirectly related to Persian language, in addition to reporting it to Bugzilla with the necessary screenshots and documents, I post it to the blog to make others aware of the important bugs.

We also have a Persian-speaking group in Telegram, where I answer questions as far as I can, alongside the other admin of the group.

Many years ago, I added a large collection of Persian words to OpenOffice.org project, which were likely to be written incorrectly. Using that word list, the Persian language was added as part of the OpenOffice.org auto-correction feature. The word bank continues to exist in LibreOffice, and is useful for the Persian speaking users.

Many thanks to Afshin for all his contributions 😊 All LibreOffice users are welcome to build up our native-language communities and reach more people around the world!

20 January, 2023


The Documentation team is happy to announce the availability of the LibreOffice Draw Guide 7.4, an update of the 7.3 guide.

The guide is available in PDF as well as in ODF formats at the documentation website. An online version is available in the bookshelf website.

Peter Schofield led the task, reviewing and updating the contents. Thank you indeed Peter!
Peter Schofield

» Click here to join the documentation team, and help them to do more great things

17 January, 2023


LibreOffice 7.5 will be released as final at the beginning of February, 2023 ( Check the Release Plan ) being LibreOffice 7.5 Release Candidate 2 (RC2) the forth and final pre-release since the development of version 7.5 started in mid June, 2022. Since the previous release, LibreOffice 7.5 RC1, 89 commits have been submitted to the code repository and 39 issues got fixed. Check the Release Notes to find the new features included in this version of LibreOffice.

LibreOffice 7.5 RC2 can be downloaded for Linux, macOS and Windows, and it will replace the standard version.

In case you find any problem in this pre-release, please report it in Bugzilla ( You just need a legit email account in order to create a new account ).

For help, you can contact the QA Team directly in the QA IRC channel or via Matrix.

LibreOffice is a volunteer-driven community project, so please help us to test – we appreciate it!

Happy testing!!

Download it now!

13 January, 2023


Strings are very important types of data that are using in LibreOffice. Firstly, they are useful for storing textual data, and is essentially a sequence of characters. As LibreOffice has many modules that depend on various libraries and languages, there are different string types in LibreOffice. Here, we discuss some of them.

Character and String Data Types in C++

In C++, the standard std::string is available alongside the internal LibreOffice data types.

std::string std_str = "ت";
std::cout << "std::string: " << std_str << std::endl;

The standard std::string is not the data type of choice for storing textual values, and passing them between classes and methods, because LibreOffice has its own set of data types for this purpose. See the next sections for more information.

Please note that the usual functions to work with C strings may give unexpected results when user does not account for multi-byte encodings (like utf-8). For example, the length of the utf-8 strings as reported by std::string::length() shows the correct count of bytes (code units), but not the count of Unicode codepoints or “characters”.

Characters and Strings in LibreOffice C++ Source Code

In addition to the above C string type, in C++ OString is the 8-bit-string data type in LibreOffice that does not keep information about its encoding. On the other hand, OUString uses UTF-16 encoding, and is more widely used.

Code sample

Here is a sample code snippet for working with these LibreOffice string classes in C++:

// The text is: "واحِدْ إثٍنين ثلاثةٌ" which means "one two three"
OUString aOneTwoThree(reinterpret_cast
   (u"\u0648\u0627\u062d\u0650\u062f\u0652 \u0625\u062b\u064d\u0646\u064a\u0646"
    " \u062b\u0644\u0627\u062b\u0629\u064c" ));
std::cout << "" << aOneTwoThree << std::endl;

OUString ouStr = (sal_Unicode*)u"فارسی";
std::cout << ouStr.getLength() << std::endl;

OUString sTestString = (sal_Unicode*)u"The quick brown fox\n jumped over the lazy dog العاشر";
std::cout << sTestString <buffer);

OString oStr2("پ");
std::cout << "Unicode OString: " << oStr2 << std::endl;

Character and String Data Types in C

Some small (but important) parts of LibreOffice are in C programming language. In this case, the main type is the char[] (which is of type char * with slight difference). Essentially, it is an array of 8-bit (1 byte) characters that end with the NULL byte: '\0' or the character with the code zero. The char data type itself is used to store individual 8-bit characters. It is also possible to store UTF-8 Unicode strings in C strings.

Code sample

Here is a sample code snippet for working with these data types in C:

// storing ASCII
char c='a';
printf("Non-Unicode C Character: %c\n", c);

char s[] = "عربي";
printf("Unicode UTF-8 String: %s\n", s);

setlocale(LC_ALL, "");
wchar_t w_char = L'ب';
printf("Unicode UTF-16 String: %lc\n", w_char);

Characters and Strings in LibreOffice C Source Code

The underlying Unicode character data types for LibreOffice is sal_Unicode, and the string types rtl_String / rtl_uString. They are suitable for C source codes.

Code sample

Here is a sample code snippet for working with these data types in C:

sal_Unicode ouChar = u'ب';

10 January, 2023


General Activities

  1. Rafael Lima continued polishing dark mode features and improved scrolling and zooming in the Basic code editor. He also improved help for ScriptForge
  2. Adolfo Jayme Barrientos updated the icons and colours in Help to match the new application icons
  3. Alain Romedenne improved help pages on built-in file dialogs
  4. Olivier Hallot (TDF) improved several extended tooltips and improved the help on cell references and cell addressing in Calc
  5. Bogdan Buzea improved the quality of the applause audio clip found in the gallery and made many string fixes and improvements in help and in the UI code
  6. Ilmari Lauhakangas (TDF) dropped the unnecessary name attribute from link elements in help with support from Christian Lohmaier
  7. Miklós Vajna (Collabora) added new commands .uno:GotoMark for jumping to a bookmark and .uno:UpdateBookmarks to update the content of a bookmark (helps especially with Zotero citations) and enhanced .uno:InsertBookmark and .uno:InsertField to allow specifying bookmark/refmark text. He also improved the Writer layout XML dump developer feature, improved the DOCX compatibility of paragraph marker formatting, fixed a layout issue related to bookmarks and fixed some Writer crashes.
  8. Jean-Pierre Ledure worked on the ScriptForge library
  9. Szymon Kłos, Andras Timar and Michael Meeks (Collabora) worked on LOKit improvements. Michael also fixed a macOS deadlock related to user input events
  10. Henry Castro (Collabora) added a mail merge unit test and made some code cleanups
  11. Eike Rathke (Red Hat) fixed an issue with date handling in Base, made it so line breaks are preserved in multi-line text when applying Formula to Value in Calc and fixed some crashes. He also improved the help for STYLE and INDEX Calc functions
  12. Tomaž Vajngerl (Collabora) polished support for document themes, for example adding the ability for reading theme colours from OOXML
  13. Julien Nabet fixed an issue with Base table UI, made Calc’s Paste Special dialog fully translatable, added an Nvidia GPU to Skia Vulkan denylist and fixed some crashes
  14. Jim Raykowski implemented a feature that highlights elements in a Writer document when selecting or hovering over their counterparts in the Navigator. He also made several other improvements to the Navigator, such as making it possible to delete references through it
  15. Andreas Heinisch made it so AutoText no longer inserts an additional empty paragraph, made bibliography entries appear sorted by identifier in Insert Bibliography dialog and improved the behaviour of input fields with a length restriction
  16. László Németh improved LibreLogo rendering speed and made it support more character formatting features. He also made it possible to check the spelling of hyperlinks, fixed an issue with comments disappearing from corrected misspelled words, added two options to spell checking dealing with compound words and fixed some regressions
  17. Xisco Faulí (TDF) continued refactoring automated tests, getting rid of much code duplication and created several new tests. He also improved the script used for downloading documents from online forums and fixed several crashes
  18. Michael Stahl (allotropia) continued improving the compliance of exported PDFs with Universal Accessibility standard, made

04 January, 2023

  • Back to work, mail chew - encouraged by a lovely speedup from Noel for our projection spreadsheet: seconds to tens of milliseconds to edit; nice.
  • Sales calls, sync with Gokay & Andras, worked on project description pieces. J. took down decorations.
  • Call with Ben & Kendy on our hiring pipeline - if you'd like a job around Collabora Online & LibreOffice technology you can checkout Collabora careers.
  • Bit of hacking until late, improving profiling & tracing.


Numbering and bullet list are a core feature of every word processing application, and naturally LibreOffice Writer has gazillion options in that area. Of course, Writer can also handle multilevel lists:

  1. First line, first level
    1. Second line, second level
    2. Third line, second level
      1. Fourth line, third level
      2. etc etc

Now, how are these lists stored in ODF? Each level defines a num-prefix (what will be written before numbering), a num-suffix (same as prefix, but appended after the number), and display-levels – determining how many previous levels will be in list:


In this example, we define a format for the third list level (in a numeric format), with displaying of all 3 levels and >> & << as a prefix/suffix. The output in Writer then looks like this: “>>1.2.3<<”

This is a nice and concise representation for many Western use-cases. But what can we do in this example:

arabic numbered list

Or in this case (https://bugs.documentfoundation.org/show_bug.cgi?id=116883):

One possible simple solution: we add a configurable number delimiter. In most cases, we would separate level numbers by “.” (and this was hard-coded in LO previously). For other cases, we should use “-” or “/”.

But before getting ahead of ourselves, lets first take a look what Word and DOCX does here:

Hmm, so Word does something completely different here: instead of a prefix/suffix, it uses an elaborate formatting string for numbers, where we can define any random prefix and suffix, plus arbitrary delimiters between different level numbers! We can even omit some numbers or worse, change their order of appearance (it is unclear how much sense that makes, but surely someone is now (mis)using that feature out there in documents).

And this is stored in DOCX in a rather simple xml attribute:

<w:lvlText w:val="%1-%2-%3-%4-"/>

Instead of prefix, suffix, display-levels and some additional separators, this has just one property, which at the same time provides much more flexibility.

Since LibreOffice 7.0, we are now using this lvlText (list format string) as an internal representation for documents (https://git.libreoffice.org/core/+/7459b9ecb54a298f02d19089620149718f8d8d48). This is enough to correctly load and save DOCX/DOC/RTF files, like the one from the screenshot above.

But we need to go further. If we save such DOCX files to ODT, more complex list level formattings will be lost.

Starting with LibreOffice 7.2, and with commit https://gerrit.libreoffice.org/c/core/+/117156/16, LibreOffice now features something quite similar to the DOCX properties: a new loext:num-list-format, which is obsoleting the older, less expressive num-prefix, num-suffix and text:display-levels attributes.

Unlike in DOCX instead of placeholders like “%1”, “%2”, this new ODF property is using “%1%”, “%2%”, etc. So why is that? Well in Word you can define up to 9 levels of list numberings, and %1 – %9 are enough for this representation. In LibreOffice, there are

03 January, 2023

  • Some mail chew, sync with Andras, helped to seal some annoying wooden windows, tidied the house somewhat. Helped H. machine some aluminium to repair her dead Beats headphones. Up rather late working on some maths with Miriam. A more successful day off.


Happy new year 2023! I wish a great year for you, and the global LibreOffice community.

Here I breifely discuss the year 2022 around the development blog, and the outlook for 2023.

In 2022, I wrote 22 posts around LibreOffice development in this blog. (Some of them are drafts which are not yet published). I hope that my published posts were useful for you to undertsand LibreOffice code better, and to get involved in LibreOffice core development.

At The Document Foundation (TDF), our aim is to improve LibreOffice, the leading free/open source office software that you and many other people around the world use. Our work is community-driven, and we need your help.

Happy new year to the LibreOffice community

Happy new year to the LibreOffice community

These are some the topics I want to discuss in 2023:

  1. Various data types in LibreOffice
  2. LibreOffice build system (gbuild)
  3. New EasyHacks
  4. Fixing crashes
  5. Creating user interfaces with VCL
  6. LibreOffice core development guide
  7. SDK development guide

I will be happy if you provide feedback to me in a comment here, or via email. You can email me using hossein AT libreoffice DOT org.

As you may know, I provide mentoring to those who want to start LibreOffice development. You can contact me if you need help via the above email address.

Have a great time!


Number portions generated when using lists/numberings/bullets in Writer now can have formatting which is preserved in ODT files as well.

First, thanks Docmosis for funding this work by Collabora.


Word and DOCX files support explicit character properties for the paragraph marker, and these are also used for the formatting of a number portion if the paragraph has one. This was already loaded from / saved to DOCX, but it was lost when saving to ODT.

Results so far

First, we got a bug document, where the reference rendering and our rendering differed:

Reference (on the left) and our old (on the right) rendering, due to bookmarks

In this case, what happened was that part of the heading text was covered by a bookmark, so we first created multiple character ranges (outside the bookmark, inside the bookmark), then as an optimization we even unified them to be a single formatted character range, covering the entire paragraph. This was a document model that is different from the bookmark-free version, where the character formatting was set on the paragraph itself.

This was fixed at render time and at DOCX export time to consider both full-paragraph character ranges and in-paragraph character properties. For a while, this looked like the entire story, since this now looks good in Writer:

Our new rendering, handling bookmarks

A bit later another, related bug was discovered. Given a reference document:

Reference rendering of a second document

Just opening this DOCX file in Writer, it looked like this:

Old rendering in Writer

Note how the first number portion turned into bold! This was expected after the above layout change to consider full-paragraph formatted character ranges, but it also meant that Word can have one set of character formatting for the entire character range of a paragraph, and another for the paragraph marker.

To make the problem worse, this second document was showing that even the ODT export/export feature had problems, still:

Old rendering in Writer after ODT save + load

The fix to solve all of the above was to undo the previous render / DOCX export change, then teach the ODT export to explicitly save the paragraph marker formatting (as an empty span at the end of the text node) to ODT, and also to load it back.

This means that now Writer can render the second document correctly, without breaking the first document:

New rendering in Writer

How is this implemented?

If you would like to know a bit more about how this works, continue reading... :-)

As usual, the high-level problem was addressed by a series of small changes:

Want to start using this?

You can get a snapshot / demo of Collabora Office 22.05 and try

02 January, 2023

  • A day off - planning calls during the morning; sync. with Andras. Out for a run with J - partner call & special pricing call, some of the afternoon off.

01 January, 2023

  • All Saints - music with H. home, sogging action, more Jack Ryan.

31 December, 2022

  • Interrupted sleep; bid a fond 'bye in the morning, drove home. Went shopping with J. slugged around trying to fix this and that around the house. Binge watched Jack Ryan with J.

30 December, 2022

  • Slept poorly, H. not well . Out to the Quaker meeting in the morning with Dad, M & E to setup tables. Home for some lunch.
  • Parents' fiftieth wedding anniversary dance and party in the evening - lovely to catch-up with the wider family, enjoy some fine food. Back to M&D's for more evening celebration. A wonderful blessing to have a faithful, stable family.

29 December, 2022

  • Up late, shreddies & bacon sandwiches; packed and drove north to see M&D. Greggs on the way. Set too sorting through bottles for the party, moving tables etc. R&A&tribe arrived in time for dinner.

28 December, 2022

  • Up lateish, breakfast, presents, did some lego assembly with E. Lunch, chat with H. took the babes to the park to learn to cycle & scoot with H. and M.
  • Played games, slugged about happily. Fine dinner. Collected M's phone from the play-ground late at night together.

27 December, 2022

  • M&D left earlyish, with S&C&A&J leaving a little later; lovely to spend time with them all. Packed, tidied, set off to R&A's. Got there, fine dinner, played games.

Older blog entries ->