The following article provides information on using ARIA to enhance SVG accessibility: Using ARIA to enhance SVG accessibility. It's dated 2013 and contains several compatibility charts as well as the following code snippet, which had the best accessibility:
<svg xmlns=http://www.w3.org/2000/svg role="img" aria-labelledby="title desc">
<title id="title">Circle</title>
<desc id="desc">Large red circle with a black border</desc>
<circle role="presentation" cy="60" r="55" stroke="black" stroke-width="2" fill="red" />
</svg>
Put that inside a button
and you should enjoy wide support. Of course, now that SVG2.0 has landed the ARIA usage may change slightly.
If using CSS ::after
to place your icon your button will probably look something like this:
<button></button>
In which case you could do this and skip ARIA entirely:
<button>the label</button>
Otherwise the following should do the trick:
<button aria-label="the label"></button>
And here's the SVG Accessibility API Mappings (draft as of Jan 2019) which maps how SVGs should work in conjunction with accessibility APIs if you want to get more technical.
Though if you just stick a title
inside the SVG it will likely work now simply because it's obvious.