How to use the new Material Design Icon themes: Outlined, Rounded, Two-Tone and Sharp?

前端 未结 15 1719
清歌不尽
清歌不尽 2020-11-28 18:10

Google has revamped its Material Design Icons with 4 new preset themes:

Outlined, Rounded, Two-Tone and Sharp, in addition to the regular Fil

相关标签:
15条回答
  • 2020-11-28 18:26

    None of the answers so far explains how to download the various variants of that font so that you can serve them from your own website (WWW server).

    While this might seem like a minor issue from the technical perspective, it is a big issue from the legal perspective, at least if you intend to present your pages to any EU citizen (or even, if you do that by accident). This is even true for companies which reside in the US (or any country outside the EU).

    If anybody is interested why this is, I'll update this answer and give some more details here, but at the moment, I don't want to waste too much space off-topic.

    Having said this:

    I've downloaded all versions (regular, outlined, rounded, sharp, two-tone) of that font following two very easy steps (it was @Aj334's answer to his own question which put me on the right track) (example: "outlined" variant):

    1. Get the CSS from the Google CDN by directly letting your browser fetch the CSS URL, i.e. copy the following URL into your browser's location bar:

      https://fonts.googleapis.com/css?family=Material+Icons+Outlined
      

      This will return a page which looks like this (at least in Firefox 70.0.1 at the time of writing this):

      /* fallback */
      @font-face {
        font-family: 'Material Icons Outlined';
        font-style: normal;
        font-weight: 400;
        src: url(https://fonts.gstatic.com/s/materialiconsoutlined/v14/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUce.woff2) format('woff2');
      }
      
      .material-icons-outlined {
        font-family: 'Material Icons Outlined';
        font-weight: normal;
        font-style: normal;
        font-size: 24px;
        line-height: 1;
        letter-spacing: normal;
        text-transform: none;
        display: inline-block;
        white-space: nowrap;
        word-wrap: normal;
        direction: ltr;
        -moz-font-feature-settings: 'liga';
        -moz-osx-font-smoothing: grayscale;
      }
      
    2. Find the line starting with src: in the above code, and let your browser fetch the URL contained in that line, i.e. copy the following URL into your browser's location bar:

      https://fonts.gstatic.com/s/materialiconsoutlined/v14/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUce.woff2
      

      Now the browser will download that .woff2 file and offer to save it locally (at least, Firefox did).

    Two final remarks:

    Of course, you can download the other variants of that font using the same method. In the first step, just replace the character sequence Outlined in the URL by the character sequences Round (yes, really, although here it's called "Rounded" in the left navigation menu), Sharp or Two+Tone, respectively. The result page will look nearly the same each time, but the URL in the src: line of course is different for each variant.

    Finally, in step 1, you even can use that URL:

    https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp
    

    This will return the CSS for all variants in one page, which then contains five src: lines, each one with another URL designating where the respective font is located.

    0 讨论(0)
  • 2020-11-28 18:26

    The webfonts link works now, in all browsers!

    Simply add your themes to the font link separated by a pipe (|), like this

    <link href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" rel="stylesheet">
    

    Then reference the class, like this:

    // class="material-icons" or class="material-icons-outlined"
    
    <i class="material-icons">account_balance</i>
    <i class="material-icons-outlined">account_balance</i>
    

    This pattern will also work with Angular Material:

    <mat-icon>account_balance</mat-icon>
    <mat-icon class="material-icons-outlined">account_balance</mat-icon>
    
    0 讨论(0)
  • 2020-11-28 18:27

    I was unsatisfied that until know Google hasn't yet released their new designs as font or svg icon set. Therefore I put together a small npm package to solve the problem.

    https://www.npmjs.com/package/ts-material-icons-svg

    Simply import the icons you wanna use and add them to your registry. This also supports tree shaking since only those icons are added to your project that you really want and/or need.

    npm i --save https://github.com/MarcusCalidus/ts-material-icons-svg.git
    

    to use two tone icons for example

    import {icon_edit} from 'ts-material-icons-svg/dist/twotone';
    
    matIconRegistry.addSvgIcon(
                'edit',
                domSanitizer.bypassSecurityTrustResourceUrl(icon_edit),
            );
    

    In your html template you now can use the new icon

    <mat-icon svgIcon="edit"></mat-icon>
    
    0 讨论(0)
  • 2020-11-28 18:30

    What worked for me is using _outline not _outlined after the icon name.

    <mat-icon>info</mat-icon>
    

    vs

    <mat-icon>info_outline</mat-icon>
    
    0 讨论(0)
  • 2020-11-28 18:32

    As of 12/05/2020, You need to

    1. include CSS:

    <link href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp" rel="stylesheet">
    

    2. Use it like this:

    <i class="material-icons">account_balance</i>
    <i class="material-icons material-icons-outlined">account_balance</i>
    <i class="material-icons material-icons-two-tone">account_balance</i>
    <i class="material-icons material-icons-sharp">account_balance</i>
    <i class="material-icons material-icons-round">account_balance</i>
    

    Note: For example, to use outlined style, You need to specify material-icons AND material-icons-outlined classes.

    0 讨论(0)
  • 2020-11-28 18:37

    If you already have material-icons working in your web project, just need to update your reference in the html file and the used class for icons:

    html reference:

    Before

    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
    

    After

    <link href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp"
    rel="stylesheet" />
    

    material icons class:

    After that just check wich className are you using:

    Before:

    <i className="material-icons">weekend</i>
    

    After:

    <i className="material-icons-outlined">weekend</i>
    

    that works for me... Pura vida!

    0 讨论(0)
提交回复
热议问题