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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//! # 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.
//!
//! In addition - you can hover over the icons in your IDE to see a preview of the icon!
//!
//! 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 [`GoogleMaterialSymbols`] for the list of available icons, including their names, codepoints and a preview image.
//! See [`GoogleMaterialSymbols::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!)
//!
//! -----
//!
//! The individual glyphs are in the `GoogleMaterialSymbols` enum:
//!
//! ```rust
//! use google_material_symbols::GoogleMaterialSymbols;
//! let _ = GoogleMaterialSymbols::MagicButton;
//! ```
//!
//! -----
//!
//! Each glyph contains the following information:
//! - Unicode codepoint: e.g. `GoogleMaterialSymbols::MagicButton as u32`
//! - Postfix name: e.g. `GoogleMaterialSymbols::MagicButton.name()`
//! - Glyph preview image, visible in the documentation, and by hovering over the glyphs in your IDE!
//!
//! You can also get the actual char from the enum, with `char::from(GoogleMaterialSymbols::MagicButton)`, or `GoogleMaterialSymbols::MagicButton.to_string()`
//!
//! -----
//!
//! If you use `iced` there are some QOL features built-in:
//! **NOTE: ** you will need to activate the `iced` crate-level feature to use these!
//!
//! - [`FONT_BYTES`] is the raw bytes of the font, for loading into iced
//! - [`IcedExt`] provides the helper functions for using the font in iced
//! - Glyphs also implement `Into<iced::Element>`, which will use the default font size
//!
//! ```ignore
//! use google_material_symbols::{IcedExt, categories::Dev};
//!
//! // A text widget configured to use the icon font, with the selected glyph, and a font size of 24
//! let text_widget = Dev::Android.into_text(24);
//! ```
//!
//! You will additionally need to load the font, by calling `.font(google_material_symbols::FONT_BYTES)` on your `iced::Application`.
//!
//! ## Crate Features
//!
//! #### `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;
include_font!;
/// Extension trait for using these icons from within iced
///
/// - [`FONT_BYTES`] is the raw bytes of the font, for loading into iced
/// - `GoogleMaterialSymbols` also implements `Into<iced::Element>`, which will use the default font size
///
/// ```rust
/// use google_material_symbols::{IcedExt, GoogleMaterialSymbols};
///
/// // A text widget configured to use the icon font, with the selected glyph, and a font size of 24
/// let text_widget = GoogleMaterialSymbols.into_text(24);
/// ```
///
/// You will additionally need to load the font, by calling `.font(google_material_symbols::FONT_BYTES)` on your `iced::Application`.