1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//! # Google Material Symbols Font
//!
//! [](https://crates.io/crates/google_material_symbols/)
//! [](https://github.com/rscarson/font-map/actions?query=branch%3Amaster)
//! [](https://docs.rs/google_material_symbols/latest/)
//! [](https://raw.githubusercontent.com/rscarson/google_material_symbols/master/LICENSE)
//!
//! This crate provides an enum of all the glyphs in the Google Material Symbols font.
//! Additionally, it provides a way to load the font, and QOL features for using the font in iced.
//!
//! See <https://fonts.google.com/icons> for more information
//!
//! **I am not affiliated with Google Inc., nor do I have any rights to the Google Material Symbols font.**
//! This crate is published with a copy of the font, and its license, as allowed by the license.
//!
//! See [`Icon`] for the list of available icons, including their names, codepoints and a preview image.
//! See [`Icon::FONT_FAMILY`] for the functions and constants available on the enum (So you don't need to scroll past 3,589 icons to find it!)
//!
//! ## Example
//!
//! ```rust
//! use google_material_symbols::{Icon, load_font};
//!
//! //
//! // You can access the icon by name, and get the postfix name, or codepoint
//! // You can also hover over the icon to see information about it, and a preview of the icon (as inline svg)
//! assert_eq!(Icon::Delete.name(), "delete");
//! let codepoint = Icon::Delete as u32;
//!
//! //
//! // You can also search for glyphs, and extract data about the font
//! let font = load_font();
//! let icon = font.glyph_named("delete").unwrap();
//! let svg = icon.svg_preview(); // The same as the inline svg in the hover
//! ```
//!
//! If you use iced there are some QOL features built-in:
//!
//! ```ignore
//! `google_material_symbols::FONT_BYTES` is the raw bytes of the font, for loading into iced
//! // You need to activate the `iced` feature to use these features
//! let text_widget = Icon::Delete.into_text(24); // A text widget with the icon, in the font, size 24
//! let widget: iced::Element<_> = Icon::Delete.into(); // A text widget with the icon, in the default font size
//!
//! ```
//!
//! ## Features
//!
//! #### `svg-preview`
//! Default: On
//! Provides a preview of the icon in the hover documentation, as an inline SVG.
//!
//! #### `iced`
//! Default: Off
//! Provides some QOL features for using the font in iced, including a font definition, and conversion to an iced Text widget.
//!
/// Re-export of the `font_map` crate, which provides a simple API for analyzing font files
pub use font_map;
//
// Generated font bindings
include!;
/// The contents of the Google Material Icons font file
pub const FONT_BYTES: & = include_bytes!;
/// Load the Google Material Icons font, returning a `font_map::Font` instance