The OpenVibe glyphs
A free mail icon in the OpenVibe hand, as SVG, PNG and a font. In place of Font Awesome’s fa-envelope.
- Name
mail- Character
U+E054- Drawn
- From the kit
- Licence
- MIT, free for any use
Every size by itself
At 18 px and under it switches to its solid drawing, which stays clear when small; above that it is the line. Sites do it with no code, and the files below do it on style=auto.
Names and keywords
The names it answers to and the words people search with. mail is its registry name; it stands in for fa-envelope.
Suggest one for a button
Type what the button says. The set’s names and keywords answer first; a small model orders the shortlist when the words are new. The API is GET /api/v1/glyphs/suggest?label=.
Make a PNG
Any size up to 1024 pixels at 1×, 2× or 3×, in any colour or the mark’s two, a lighter or heavier line, flat or with the mark’s depth and glow, room around it and a ground behind it. The link rebuilds the same file every time.
Use it
Every way is the same drawing, free to use with no sign-in. On an OpenVibe site the navbar already loads the drop-in, so Font Awesome’s markup shows it.
Any page
No sign-in. It follows the text’s size and colour, and turns solid when small.
<script src="https://openvibe.design/ov-icon.js" defer></script>
<ov-icon name="mail"></ov-icon>Inline SVG
HTML, Vue, Svelte, Solid, Angular.
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3.5" y="5.5" width="17" height="13.2" rx="1.9"/><path d="M4.4 7.4l7.6 5.7l7.6-5.7"/></svg>React
export function MailIcon(props) {
return (
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true" {...props}><rect x="3.5" y="5.5" width="17" height="13.2" rx="1.9"/><path d="M4.4 7.4l7.6 5.7l7.6-5.7"/></svg>
);
}A link
https://openvibe.design/icons/mail.svg
https://openvibe.design/icons/mail.png?size=512&color=mark
https://openvibe.design/icons/mail.svg?style=solid8 more ways Font Awesome markup · The font · The sprite · CSS, no markup · Data URI · ES module · Node · Android
Font Awesome markup
Keep your markup; the drop-in draws ours.
<script src="https://openvibe.design/shared/ov-glyphs.js" defer></script>
<i class="fa-solid fa-envelope"></i>The font
<link rel="stylesheet" href="https://openvibe.design/shared/ov-glyphs-font.css">
<i class="ovi ovi-mail"></i>The sprite
<svg width="24" height="24"><use href="https://openvibe.design/shared/ov-glyphs.svg#ovg-mail"/></svg>CSS, no markup
A mask painted in the text’s colour: <span class="icon-mail"></span>. Or link it, with any others: <link rel="stylesheet" href="https://openvibe.design/icons.css?names=mail">; add is-solid for the solid drawing.
.icon-mail {
display: inline-block;
width: 1em;
height: 1em;
vertical-align: -0.125em;
background-color: currentColor;
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5.5' width='17' height='13.2' rx='1.9'/%3E%3Cpath d='M4.4 7.4l7.6 5.7l7.6-5.7'/%3E%3C/svg%3E") center / contain no-repeat;
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5.5' width='17' height='13.2' rx='1.9'/%3E%3Cpath d='M4.4 7.4l7.6 5.7l7.6-5.7'/%3E%3C/svg%3E") center / contain no-repeat;
}Data URI
For an <img> or a CSS url(), in a fixed colour.
data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230f172a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5.5' width='17' height='13.2' rx='1.9'/%3E%3Cpath d='M4.4 7.4l7.6 5.7l7.6-5.7'/%3E%3C/svg%3EES module
import mail from 'https://openvibe.design/icons/mail.mjs';
// { name, line, solid }: the drawings, for a component of your ownNode
require('openvibe-shared/glyphs').svg('mail', { size: 24 })Android
A VectorDrawable: download the XML. iOS: Xcode takes the SVG as it is (keep “Preserve Vector Data” on).
<!-- res/drawable/ic_mail.xml -->
https://openvibe.design/icons/mail.xmlMake it move
One move when something happens: point at each, press it, or tap the first to draw it again. Nothing loops or spins, and calm or reduced motion stops them.
With <ov-icon>
<ov-icon name="mail" motion="pop"></ov-icon>
<ov-icon name="mail" motion="beat" on></ov-icon> <!-- on: the solid drawing, as when turned on -->On any SVG
<link rel="stylesheet" href="https://openvibe.design/icons/pack/ov-icon-motion.css">
<svg class="ovm-pop" …>…</svg>Near it
Glyphs that share a word with mail, then its neighbours. All 287.