Skip to content

Commit d60dc1c

Browse files
authored
tools/work/README.md fixup (#3912)
* docs: Exceptions where pure white/black are allowed * docs: Outline, style, fixes. * Update rools/work README. * Reorder and reword. * Typo fixes. * Distinguish between base and foreground colours - They have very different usage patterns - Gets us thinking about contrast and accessibility ;) * Try to distil useful rules for base and fg colour selection: - Former apparent black and white requirement as lightness limits - Pure white is "widely accepted", or widely used at least - Pure black is almost never used though (surprised me, but true) * Add loads of example icons from Papirus itself. * Mention "paper" shade as a suggested meterial colour * Clarify margins and "design to" areas * Document how shadows and highlights are made in detail. * Remove language about a palette because there isn't any official one. * Improve wording. * Split out the design notes, fix main README links.
1 parent 9139a48 commit d60dc1c

File tree

3 files changed

+225
-131
lines changed

3 files changed

+225
-131
lines changed

README.md

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -348,31 +348,36 @@ We welcome user contributions. If you don't know where to start, we've compiled
348348
- new icons for missing applications
349349
- symbolic links to an existing icon
350350
- resolving open issues
351+
- improving our documentation
351352
- spelling, grammar, phrasing
352353
- improvements to our scripts
353354

354-
Inside [tools/work](tools/work) you will find a step-by-step guide, an environment, and tools that will help you:
355+
Inside [tools/work](tools/work) you will find:
355356

356-
- [create a new icon](tools/work#create-a-new-icon) from template
357-
- [make a symlink to an existing icon](tools/work#make-symlinks-to-an-existing-icon)
358-
- [edit an existing icon](tools/work#edit-an-existing-icon)
359-
- convert your icon to all variants of the theme
357+
- extensive [design notes](tools/work/DESIGN.md) for the Papirus icon theme
358+
- a working environment
359+
- template files you can adapt for new icons
360+
- scripts and tools for automating the entire design workflow:
361+
- creating new icons
362+
- editing existing icons
363+
- symlinks to existing icons
364+
- preparing/cleaning edited icons so they're ready to commit
365+
- testing that the theme is right before you commit
366+
- a [step-by-step guide](tools/work/README.md#step-by-step-guide) to the scripted workflow
360367

361368
We are waiting for your pull requests and would love to see this icon theme become as complete as possible.
362369

363370
### How to design icons
364371

365-
See the [Papirus wiki][wiki] for some useful guides to icon creation. There are topics in there covering just about every aspect of creating an icon for Papirus, as well as historical information about the project. Anyone can contribute a page, and we'd like it to be as useful as possible!
366-
367-
[wiki]: https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/wiki
372+
- [detailed icon design notes](tools/work/DESIGN.md)
373+
- [our wiki](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/wiki), which dives deeper into various topics
368374

369375
## Donate
370376

371377
If you would like to support development by making one-time donation or by becoming a supporter, please visit our page on [Buy Me a Coffee](https://www.buymeacoffee.com/papirus).
372378

373379
<a href="https://www.buymeacoffee.com/papirus"><img alt="Buy me a coffee" src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=papirus&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff" /></a>
374380

375-
376381
## License
377382

378383
Papirus icon theme is free and open source project distributed under the terms of the GNU General Public License, version 3. See the [`LICENSE`](LICENSE) file for details.

tools/work/DESIGN.md

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
# Papirus Design Notes
2+
3+
The following notes are a synthesis of many informal guidelines for Papirus icon design. They stop short of being an official style guide, and they may change over time.
4+
5+
## Basic concepts
6+
7+
Papirus is an SVG-based icon theme for Linux, drawing inspiration from Material Design and flat design.
8+
9+
All elements are clear, distinct, and have recognisable outlines. Another main feature that distinguishes our theme is its use of warm color tones.
10+
11+
Papirus icons are drawn in layers, moving from dark (down) to light (up).
12+
13+
Objects have a thin highlight (`#ffffff` 20% or 10% for dark icons), and a shadow (always `#000000` 20%). See the template files for more info.
14+
15+
## Main icon sizes
16+
17+
Main icons have the following sizes: 16px, 22px, 24px, 32px and 48px. 64px icons are used for for apps, devices, places and mimetypes.
18+
19+
Excluding their shadows, icon designs as a whole should fit within the following areas, centred on the icon.
20+
21+
| Icon size | Design to | Margin |
22+
| --------- | --------- | ------ |
23+
| 16px | 16x16 | 0px |
24+
| 22px | 20x20 | 1px |
25+
| 24px | 20x20 | 2px |
26+
| 32px | 28x28 | 2px |
27+
| 48px | 40x40 | 4px |
28+
| 64px | 56x56 | 4px |
29+
30+
### Q: Why do we need so many sizes for an SVG?
31+
32+
Because if we use a single size for all then the icons will be blurred at some scales. All objects in Papirus icons need to have pixel alignment.
33+
34+
## Base and foreground shapes
35+
36+
Most Papirus icons have a shaped _base_ or background, and some have a _foreground_ design or logo drawn on top of the base too. Foreground elements like this need their own distinctive outline within the base shape, so there should be a good visual contrast between the base elements and any foreground design.
37+
38+
Base element shapes must look good against both dark and light themes. See the sections below for guidelines about color choice for base elements.
39+
40+
## Shadow and highlight
41+
42+
The base elements of any icon should have a shadow and a highlight. Sometimes foreground elements do as well, if they're fairly large.
43+
44+
Create the shadow by copying the elements you want to shadow, converting them to a single path with _Path → Object/Stroke to Path_ operations, ungroup, and _Union → Path_ in Inkscape, then changing the path's fill color to pure black, 20% object opacity. Move the shadow downwards by the distance in the table below.
45+
46+
Create the highlight shape by copying the shape you made for the shadow twice, moving the top copy down by the distance in the table below, and subtracting it from the top one with _Path → Difference_ in Inkscape. Set the fill color to pure white at 20% object opacity, or 10% if you're putting a highlight on a dark element.
47+
48+
| Icon size | Shadow offset (+y), hilight size (px) |
49+
| --------- | ------------------------------------- |
50+
| 16px | normally no shadow or highlight |
51+
| 22px | 0.5px (use the toolbar text entry) |
52+
| 24px | 0.5px |
53+
| 32px | 1px |
54+
| 48px | 1px |
55+
| 64px | 1px |
56+
57+
Shadow and highlight offsets are an exception to the general rule about pixel alignments.
58+
59+
## Selecting colors
60+
61+
Please do not use very bright and toxic colors for Papirus. There is no official Papirus palette, but block colors should be warm-hued, juicy, and not overly saturated.
62+
63+
Good examples colors are available in the main icon theme folders, and you can start with [the example SVG][svgex] in this folder too.
64+
65+
For compatibility with the majority of GTK Themes, we use these brightness limits for base elements. Please don't pick color shades much brighter or darker than these for a base element, and treat these as hard limits for greyscale base elements. This doesn't include shadows and highlights.
66+
67+
- white `#e4e4e4` (HSLuv L* of 91%)
68+
- black `#4f4f4f` (HSLuv L* of 34%)
69+
70+
Suggested colors for object materials: these are especially useful for device icons.
71+
72+
- paper `#e4e4e4`
73+
- steel `#afafb1`
74+
- aluminium `#8e8e8e`
75+
- plastic `#4f4f4f`
76+
77+
[svgex]: ./examples-papirus.svg
78+
79+
## Base element colors
80+
81+
Base elements must be no brighter or darker than the black and white limits above. Papirus icons have to be compatible with a very wide range of GTK themes, some of which use white or pure black backgrounds.
82+
83+
If the base elements are any lighter than `#e4e4e4`, they will tend to disappear into white backgrounds, and this will mess with the shape of the icon. Please avoid base element colors any lighter than the following examples:
84+
85+
![ghostwriter](../../Papirus/64x64/apps/ghostwriter.svg) ![software-store](../../Papirus/64x64/apps/software-store.svg) ![workrave](../../Papirus/64x64/apps/workrave.svg) ![fceux](../../Papirus/64x64/apps/fceux.svg) ![com.github.tchx84.Flatseal](../../Papirus/64x64/apps/com.github.tchx84.Flatseal.svg)
86+
87+
![text-css](../../Papirus/64x64/mimetypes/text-css.svg) ![image-x-svg+xml](../../Papirus/64x64/mimetypes/image-x-svg+xml.svg) ![application-x-sqlite2](../../Papirus/64x64/mimetypes/application-x-sqlite2.svg) ![x-content-blank-cd](../../Papirus/64x64/mimetypes/x-content-blank-cd.svg) ![application-x-vmware-easter-egg](../../Papirus/64x64/mimetypes/application-x-vmware-easter-egg.svg)
88+
89+
Similarly, base elements that are darker than `#4f4f4f` may be difficult to make out against a black background. Please avoid using base element colors that are any darker then the following examples
90+
91+
![colorhug](../../Papirus/64x64/apps/colorhug.svg) ![utilities-terminal](../../Papirus/64x64/apps/utilities-terminal.svg) ![applications-education](../../Papirus/64x64/apps/applications-education.svg) ![kphotoalbum](../../Papirus/64x64/apps/kphotoalbum.svg) ![world-of-goo](../../Papirus/64x64/apps/world-of-goo.svg)
92+
93+
![text-x-hex](../../Papirus/64x64/mimetypes/text-x-hex.svg) ![text-x-patch](../../Papirus/64x64/mimetypes/text-x-patch.svg) ![application-x-firmware](../../Papirus/64x64/mimetypes/application-x-firmware.svg) ![application-x-krita](../../Papirus/64x64/mimetypes/application-x-krita.svg) ![text-x-nim](../../Papirus/64x64/mimetypes/text-x-nim.svg)
94+
95+
## Foreground element colors
96+
97+
The rules for color selection are a bit more relaxed when you're drawing a foreground element. Logos, text, or other other foreground elements that are fully on top of a base element can use brighter or darker colors than the rules for base elements allow. Put simply, they can be brighter or darker because they are isolated from the themed background color by their base.
98+
99+
Pure `#ffffff` white is in widely accepted, widespread use on top of more vibrantly colored bases, even for quite large shapes:
100+
101+
![anjuta](../../Papirus/64x64/apps/anjuta.svg) ![flash](../../Papirus/64x64/apps/flash.svg) ![4kstogram](../../Papirus/64x64/apps/4kstogram.svg) ![com.github.cassidyjames.clairvoyant](../../Papirus/64x64/apps/com.github.cassidyjames.clairvoyant.svg) ![clementine](../../Papirus/64x64/apps/clementine.svg)
102+
103+
![image-x-generic](../../Papirus/64x64/mimetypes/image-x-generic.svg) ![audio-x-generic](../../Papirus/64x64/mimetypes/audio-x-generic.svg) ![x-office-presentation](../../Papirus/64x64/mimetypes/x-office-presentation.svg) ![application-x-iso9660-appimage](../../Papirus/64x64/mimetypes/application-x-iso9660-appimage.svg) ![application-x-codeblocks-workspace](../../Papirus/64x64/mimetypes/application-x-codeblocks-workspace.svg)
104+
105+
Some icons with dark foreground elements use darker colors like `#3f3f3f`. Note that pure black is only ever used for shadows in Papirus.
106+
107+
![duolingo](../../Papirus/64x64/apps/duolingo.svg) ![gens-gs](../../Papirus/64x64/apps/gens-gs.svg) ![preferences-system-power](../../Papirus/64x64/apps/preferences-system-power.svg) ![kalarm](../../Papirus/64x64/apps/kalarm.svg) ![mcomix](../../Papirus/64x64/apps/mcomix.svg)
108+
109+
![text-x-lilypond](../../Papirus/64x64/mimetypes/text-x-lilypond.svg) ![application-vnd.comicbook+zip](../../Papirus/64x64/mimetypes/application-vnd.comicbook+zip.svg) ![application-vnd.chess-pgn](../../Papirus/64x64/mimetypes/application-vnd.chess-pgn.svg) ![application-x-homebank](../../Papirus/64x64/mimetypes/application-x-homebank.svg) ![application-x-font-ttf](../../Papirus/64x64/mimetypes/application-x-font-ttf.svg)
110+
111+
The goal here is to create acceptable contrast between base and foreground elements. Consider checking the contrast between the icon's base shape and any foreground elements with a [WCAG 2.0 accessibility checker][checker1]. A rating of "AA" for the _Graphical Objects and User Interface Components_ category is a good minimum target for any logo. Finer designs and text should aim to pass under the _Normal Text_ category instead.
112+
113+
[checker1]: https://webaim.org/resources/contrastchecker/
114+
115+
## Monochrome icons
116+
117+
Papirus now also supports KDE color scheme for monochrome actions, devices, places and panel icons. You can find more detailed info about that [here](https://techbase.kde.org/Development/Tutorials/Plasma5/ThemeDetails#Colors).
118+
119+
Presently we only support the following icons:
120+
121+
- actions (16px, 22px, 24px)
122+
- devices (16px)
123+
- places (16px)
124+
- panel (22px, 24px)
125+
126+
## Gradients
127+
128+
Avoid gradients. There's nothing technically wrong about them, it just isn't the Papirus style. Instead, workarounds are possible when redrawing particularly gradienty upstream icons in the Papirus style. Some examples of icons that evoke complex upsteam gradient with a bit of artistic posterization and some subtle shadows:
129+
130+
![firefox](../../Papirus/64x64/apps/firefox.svg) ![thunderbird](../../Papirus/64x64/apps/thunderbird.svg) ![microsoft-edge](../../Papirus/64x64/apps/microsoft-edge.svg) ![microsoft-365](../../Papirus/64x64/apps/microsoft-365.svg)
131+
132+
## Further reading
133+
134+
See the [Papirus wiki][wiki] for some useful guides to icon creation. There are topics in there covering just about every aspect of icon creation workflow, as well as historical information about the project. Anyone can contribute a page, and we'd like it to be as useful as possible!
135+
136+
[wiki]: https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/wiki

0 commit comments

Comments
 (0)