Modern Day Hieroglyphics

Was lucky enough to be a speaker at Grand Rapids Dev Day this year (March 12). The talk is setup for a 30 minute session to give developers an overview on iconography.


Slide 1

Introduction slide. Giving those waiting for the talk to look at some icons in 2 different styles.

Slide 2

What really makes a pictogram is the ability for it to be quickly recognized. Here in the talk I go into ambiguity and the ways people might interpret an icon in certain contexts.

Slide 3

Explaining the difference between a logo and a system icon. This talk primarily focuses on the use of system icons.

Slide 4

So, the talk is about modern day icons and how and why we use them. The key to their use is for them to make the action or elements quicker to recognize. There is the idea of using icons to represent categories and for larger applications icons can also mix into the branding.

Slide 5

Quickly recognized icons we're familiar with. The save icon, which lets us save 1.44MB of data. And the file icon which when pressed takes your digital document and turns it into a piece of paper I assume.

Slide 6

More serious slide, quickly recognizable icons can by themselves represent the action without text or tooltips. A common example seen in many applications now-a-days is the fly out menu.

Slide 7

Screen space especially on mobile devices is more limited and showing category defining data on each item with text can add clutter. One way around this is to use icons. Files / Folders, People / Groups, and Important Items can be represented this way. Categories can also be top level navigation items or filters as seen in a permission screen.

Slide 8

Branding is one slide I could talk about for a while, but will keep this brief. Branded icons are icons that fit a consistent style, but do not match the operating system's built in guidelines. This is usually not recommended, but can be done for applications with a strong brand recognition. Skype, Office, and Facebook have this, while others will opt for consistency with the OS.

Slide 9

We now have a high level overview of icons, but what makes up a good icon. To understand this we start with the base guidelines that all icons start with. This are determined by the style and built around a grid. In this case we're going to use Material Design to illustrate this. Material Design system icons are built on a 24dp (display pixel) grid.

Slide 10

One quick concept when working with icons to grasp is the idea of proportions. Each icon takes up a certain area of the grid, but for them to view in a uniform way vertically and horizontally next to each other they may need to fill out the grid differently. A good example of this is a circle and a square, visually they look uniform, but the circle is taller and wider.

Slide 11

To extend more on this idea of uniformity lets look into each of the ways an icon can be consistent. This slide is self explanatory, but know that icons can work together if all of these don't match. The most important ones are width, curves, and fill/stroke. To make things easy most icon packs ship with a uniform style, but keep these in mind if cases when a 3rd party icon needs to be adapted where the pack is missing a specifically needed icon.

Slide 12

Now a lot of people work in web, and there are two main ways you can make use of icons. Not going into which is better or worse, but just how to use them and how they work. Webfonts are becoming the norm for including many icons and making quick use. This works by taking advantage of the Private Use Area of the unicode spec. A font can include 6,400 user defined characters. The next is SVG or Scalable Vector Graphics which are supported now in all major browsers and can be inline included with the <svg /> tag or referenced via the <img /> tag.

Slide 13

Webfonts like 'Font Awesome' and 'Material Design Icons' allow quick inclusion into a page, but require loading every icon, so are less ideal when only a handful of icons are required.

Slide 14

Scalable Vector Graphics have a nice advantage in that they can be included inline either by hand our by third party JavaScript libraries and styled via CSS.

Slide 15

Touching on accessibility really quick before diving into more designer topics. Remembering that visually impaired users will not be able to see your icons it will be important to add some accessibility markup. This can be done a few ways aria-label lets you reword whatever is in a button with a custom description. Ligatures are not ideal, but some webfonts support them and is the idea that letters next to one another should be represented by another unicode. In this example Plus would swap for the webfont's plus symbol. In a lot of cases an icon is a representation of an action and not the noun, so this can add confusion. The more ideal solution is to use sr-only markup as seen in the Bootstrap framework.

Slide 16

Self explanatory slide of all the terms I'll be using in the demo and how they relate to vector objects.

Slide 17

The demo details the process one would go through working with a designer or the steps a developer can take to create an icon.

Material Design Icons v1.6.50

The release for v1.6.50 was announced today and can now be downloaded. This is a pretty nice update and includes around 100 icons, 20 various icon fixes, and some new SCSS file improvements.

npm install mdi
bower install mdi

Like always this release could not have been done without all the work from the contributors on the team. Impossible to do this without them as the project has scaled in scope and users.

This is one of the rare releases that comes with breaking changes to those using the SCSS files. To make things easier from now on the _icons.scss contains only the loop logic, while the actual icon list is in _variables.scss.

@each $key, $value in $mdi-icons {
    .#{$mdi-css-prefix}-#{$key}:before {
        content: char($value);
    }
}

Thanks for all those that helped out in this release and will be starting on some of the high priority issues shortly after taking a break.

Material Design Icons Light

Material Design Icons Light is a light variant of the Material Design Icons. The first release contains over 250 icons and will gradually expand to include the most commonly used icons.

Purchase at Creative Market

Preview

To make sizing easier icons are restyled assuming the top and right 1px edge does not exist.

Size

Usage is similar to Material Design Icons, but with the mdi-light prefix.

<span class="mdi-light mdi-light-account"></span>

Full Set

Hopefully I will find some time to add new icons to this collection.

Material Design Icons v1.1.34

This is a large update: 62 new icons, MaxCDN sponsored CDN, and the boostrap getting started guide. That is not even the big news. Google IO was going on last week and did a serious update on their design tools. Along with a lot of additions around their stock icon set.

New Community Icons

The 62 new icons brings the total community count up to 582 icons. Since there are no breaking changes in v1.1.34 or any going forward the pack has lost the beta tag. This means as far as I know the set is stable for any of your production applications. I've been using them in production for the last month on client projects and it has gone smoothly.

Content Delivery Network

The CDN was requested constantly and was actually a feature I needed myself for use in codepen.io examples. MaxCDN that is sponsoring the CDN made the process very easy.

MaxCDN

The below link can be used to access the recently released 1.1.34 webfont package. The root of each version contains the preview for that release.

<link rel="stylesheet" href="//cdn.materialdesignicons.com/1.1.34/css/materialdesignicons.min.css">

Boostrap Getting Started

One of the stories in my backlog for the last month has been building out a getting started guide specific to Bootstrap users. I work with bootstrap every day and while it's easy to plug the icons in having small snippets of CSS to quickly correct icon positioning can save a lot of time.

Eventually these CSS rules will be adapted into the materialdesignicons.css stylesheet. For now to facilitate easier updates and bug fixes they will be separate.

Google Design / Google IO Updates

To say google has upgraded their design tools and documentation is an understatement. They have completely upgraded most of their guidelines and tools with the goal of speeding up development. The new icon page is a good example of how a quick export option will greatly speed up developers.

The design examples for the system icons also got a pretty lengthy addition. This will ensure consistent icon additions. I'll be going through previous icons correcting them to match.

Alignment

Google Design has added an additional 80 icons to the pack which will be added in this next release. Follow GoogleDesign on twitter to learn about new additions.

What's Next...

It has been in the planning stages (and partially coding stage) for a while. The icon set is just growing at a rate that is not practical as a single webfont. The current release tops at 60kb for the woff2 compressed webfont. This is only 1134 icons. Between Google Design adding new icons and the community users will need a way to produce smaller more tailored webfonts.

Subsetting icons requires many new features to be added to the site. These new features are a few releases out, but with each release will become more important.

With 289 issues closed and 107 open issues there is a lot of things to talk about. Please +1 any issue you like. Right now prioritization is completely biased to my judgement.

Material Design Icons Beta

The Material Design Icons' site and webfont has gone into beta. Development will continue as normal, but at this point the icon set and features should be production ready.

In the beta the goal will be to address bugs as they come in as people start to integrate the icons with their projects.

Thanks for all the support during the development.

Note: There are many icon requests that are being processed. This is not a first come first queue, and it could take a while to process all the icon requests. If an icon is rejected it may still be created and attached to the issue.