A color palette is an arrangement of a limited set of colors resembling a painter’s palette. Some collections are officially standardized, others are individually assembled to serve, for instance, a branding purpose or to convey a certain mood.
Among many other things, good design means to have a limited number of colors that work well together. For example, a pale blue can harmonize with a muted red and it makes sense to combine night blue with a fluorescent yellow. Colors influence emotions and perceptions and carry a specific meaning according color psychology.
While our prototypical user Benjamin might be satisfied with a small palette that consists of well harmonizing colors it’s not sufficient for expert users such as Eve. Professional desktop publishing requires more elaborated palettes since certain colors need to be reproduced independently from the output target such as web, CMYK print, digital print etc. Different color models exist requiring a conversion between them, which may not always be perfect, depending on the respective gamut.
Another important aspect of palettes is the naming of colors. Large color collections require that each color can be identified with a unique and descriptive color name. That’s also true for color palettes with only tiny variations between two similar shades of gray, for instance, or when color blindness comes into play and the user cannot easily discriminate between red and green.
Status before release 5.3
LibreOffice shipped releases prior to 5.3 with the color palettes:
- cmyk: 216 colors with small variations arranged in six steps using RGB values for the color names
- gallery: 61 variations of basic colors arranged in ten steps named by RGB values
- html: 131 colors following the web standard using the X11 color names plus hex and decimal value like “ghostwhite F8F8FF 248.248.255”
- libreoffice: 32 colors of the LibreOffice branding including black and white
- palette: 77 rather arbitrary colors; RGB values separated by % are used as labels
- scribus: 545 colors with names following the X11 standard plus numbers, e.g. Chocolate4
- standard: Hand-crafted palette based on Symphony, well arranged with basic names plus numbers, e.g. Green1
- tango: 27 named colors from the Tango project
- web: 232 arbitrary colors using RGB values for the color name
Additionally there are document colors, where the colors used in the current document are listed (unfortunately it is buggy), and recently used colors, which is actually a swatch listing what has been selected before (unfortunately it is also buggy).
It was possible to individually change the standard color palettes per Tools > Options > Colors.
Changes with release 5.3
Changes to the workflow
With the Google Summer of Code project Area Fill Style (planning was introduced here), the palette handling underwent a revision. Firstly, the recent colors are fully functional now, so the most important use case of having the same color on repeated actions is covered well with this feature.
Figure1: Recent colors are working perfectly now.
Newly introduced was the custom palette, which allows to add colors directly in the area style dialog. The custom palette serves the purpose of user customized collections.
Figure 2: Fifty shades of LibreOffice.
This custom palette makes the manipulation of factory settings via Tools > Options > Colors obsolete ‒ and hence we deleted this option. Expert users who want to modify a predefined palette need to edit the file directly. The palettes are files with the extension *.SOC located at <libreoffice>/share/palette. The content is an XML formatted list of hexadecimal color values like
<draw:color draw:name="Azure" draw:color="#f0ffff"/>
Deleted and modified palettes
Furthermore, we reduced the set of palettes. The palettes gallery, web, cmyk, and scribus were removed because of the non-standard and rather arbitrary collections with inappropriate names. Tango and html received minor updates for labels and arrangement of colors.
The standard palette was also refreshed. The first row starts now with 12 shades of gray followed by 12 basic colors from the HSV color wheel. The next rows are variations of these basic colors in respect to saturation and luminance by 66%, 50%, and 25%. The final 12×8 arrangement fits perfectly into our color picker grid.
Figure 3: New standard palette.
The palette breeze has been added to the default set. It comprises all values known from the KDE human interface guidelines as an alternative to tango.
Completely new is the tonal palette. It aims to provide a set of colors with the same luminance respective color contrast. It starts with 10% saturation (named accordingly such as ‘Violett 10%’ or ‘Chartreuse Green 10%’) and continues in 10% steps. Above ‘medium saturation’ the steps are 58, 65, 73, 82%, if possible. Colors that cannot have a higher hue saturation are added as whitespace and named ‘Out of Gamut’. We greatly appreciate the initial work by Wade D. Peterson.
Figure 4: Newly introduced palettes Breeze and Tonal.
In order to integrate LibreOffice into professional graphics and layout workflows the palette freecolour-hlc based on the CIELAB color model has been added. Its purpose is to provide a cross-media safe set of colors targeting expert publishers. The palette contains a range of muted RGB colors that can be replicated in CMYK and is perfectly suited for those who need a maximum of color correctness across media and platforms. The palette has been created by the non-profit association freieFarbe e.V. (freeColour).
Figure 5: The CIE-HLC palette ‘freecolour-hlc’ from freieFarbe e.V.
As discussed in a former blog post about LibreOffice Additions we should make customization easier by using extensions, and with version 5.3 you can install color palettes via extensions. For those who want to share their collections it shouldn’t be too difficult to become familiar with the format.
Extensions are basically ZIP files renamed to OXT. Within the archive the file config.xcu defines the path where the palette has to be placed (no need to change this) and the file description.xml with all information about the extension.
<?xml version="1.0" encoding="UTF-8"?>
<!-- any unique identifier, e.g. my.fancy.palette -->
<!-- extension not hosted in the LibO repos shouldn't have an identifier starting with org.libreoffice -->
<!-- version numbers are usually in major.minor.patch scheme -->
<!-- extensions with palettes need minimal 5.3 -->
<lo:LibreOffice-minimal-version d:name="LibreOffice 5.3" value="5.3"/>
<!-- reference to the publisher here -->
<name xlink:href="https://wiki.documentfoundation.org/Design" lang="en">LibO Design Team</name>
<!-- how the extension will be called in the extension manager -->
<name lang="en">Breeze palette</name>
<!-- optionally an unique icon for the extension manager -->