I have Sitecore 9 installed on a couple of environments. On just 1 of the environments, the ribbon icons are visible in the XP editor.
In the other environments, no icons are appearing in the ribbon as shown in the screenshot above. Inspecting the frame source, I found out that there is a reference to a (seemingly dynamically generated) css file that is responsible for the icons showing up. The filepath is like: /sitecore/shell/Applications/Page%20Modes/Ouput/5022797587550786552.css. The part of the css file that is missing on the other environments is a couple of lines of the form at the end:
.sprite-speak-ribbon-clean-ee.small { float: left; margin: 0 .4em 0 0; }
.sprite-speak-ribbon-clean-ee.window_earth_24 { background-position: 0px -0px; width: 24px; height: 24px; }
.sprite-speak-ribbon-clean-ee.small.arrow_fork { background-position: 0px -34px; width: 16px; height: 16px; } etc etc
[shortened for brevity]
I wonder how Sitecore generates these files and why the css output could be different for the different environments while they all have the same Sitecore version installed. Possibly, more files and functionality are missing.