SymbolIconManager
SymbolIconManager copied to clipboard
A tool to support working with Microsoft symbol font icons in C#/XAML applications
| User Guide | Icon Mapping Details | Icon Set Data ReadMe |
| Font Name & Link | Microsoft Equivalent | Mapping File |
|---|---|---|
| WinSymbols1.ttf | Segoe UI Symbol | None (Translates to SegoeMDL2Assets Unicode points and then uses the same, backwards-compatible mapping file from SegoeFluent.) |
| WinSymbols2.ttf | Segoe MDL2 Assets | None (Uses the same, backwards-compatible mapping file from SegoeFluent) |
| WinSymbols3.ttf | Segoe Fluent Icons | SegoeFluent.json |
| FluentUISystemFilled.ttf | FluentSystemIcons-Filled.ttf | None (Identity) |
| FluentUISystemRegular.ttf | FluentSystemIcons-Regular.ttf | None (Identity) |
- Note that
WinSymbols3is backwards compatible withWinSymbols2by Unicode point. However, the glyph design/style will be different. - Fluent UI System fonts are included due to missing glyphs with Unicode Point over 0xFFFF in Microsoft provided TrueType Font files. These also serve as good tests for the font build system.
App Functionality
This application has the following functionality:
| Icon Sets Viewer | Icon Mapping & Font Builder | Application Tools |
|---|---|---|
|
|
|
|
- Icon Sets Viewer
- Quickly browse through all Microsoft symbol font glyphs.
- Supports search/filtering to find glyphs faster.
- Icon Mapping & Font Builder
- Provides tools to facilitate making and reviewing icon set mapping files (by Unicode point/Glyph).
- Provides a tool to build cross-platform, open-source variants of Microsoft's Symbol fonts using icon mapping files.
- Application Tools
- Provides a tool to list all symbol icons used in an app's source code (C#/XAML files).
- Provides a tool to remap icon Unicode points from one symbol icon set to another. This is done by replacing all occurances of one Unicode point with another (usually in a FontIcon's Glyph property). For example, this can be used to switch an application's source code from using Segoe MDL2 Assets to Fluent UI System Icons.
- [Planned] Provides a tool to build an application-specific custom symbol font containing only the glyphs actually needed by the application's source code (C#/XAML). Fonts are quite large (commonly around 1MB) and some apps may not want to package the whole thing. This tool significantly reduces the font file size.
Ideas for future consideration:
- Work with XAML path data for icons directly instead of through icon fonts. This can simplify usage (and file size) in some applications and scenarios. Think of this as a feature to convert FontIcons into PathIcons.
Contributing
Anyone can contribute by submitting a PR or opening an issue (especially for missing mappings). There are well over a thousand icons in any given symbol icon set (font) so everyone is encouraged to add the mappings that are important for their applications. Contributions are very welcome!
For more instructions on how to modify icon mapping files see Icon Mapping.
Third-Party Resources
This application is possible thanks to the work of others:
- Avalonia UI and Avalonia.NameGenerator provides the UI framework
- SkiaSharp provides the library used to render glyphs to images
- Newtonsoft.Json which is still the best C# JSON serialization library doing things
System.Text.Jsoncan't - Also see the Data ReadMe for a list of third-party data used by the app
Significant credit goes to Microsoft for open sourcing the symbol icon fonts and glyph sources that make most of this possible. This includes the older WinJS Symbols font as well as the newer Fluent UI System Icons which share a design language with current Segoe Fluent Icons.
Special thanks to the Uno Platform for making a great cross-platform UI framework. Use of the Uno Platform drove the creation of this repository due to the need for a cross-platform symbol font variant matching the new Segoe Fluent Icons style.