I’ve been working on a new skinning system for quite a while.
You can take a peek at the result.
Note that with buttons there are no limitations – such as the GUIStyle system is having – particularly the limitation of a fewer options for the icon/label placement.
Each eDriven.Gui skin could parent the arbitrary number of children (not only the image and the label) and each of the children could be pixel-positioned (using the layout).
Here’s an example of various child positioning (note the 3rd row buttons, where the label is being displayed on top of the icon – which is not possible using the GUIStyle.imagePosition.