$hellofunc-fonts: '/components/hellofunc-js/fonts' !default;

$fonts: (

        'Righteous': (
                values: (
                        400: (
                                local: ('Righteous', 'Righteous-Regular'),
                                url: (
                                        'eJYqrhUff1n1Ge9A-rSw_BJtnKITppOI_IvcXXDNrsc.woff2 = U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF',
                                        'w5P-SI7QJQSDqB3GziL8XVtXRa8TVwTICgirnJhmVJw.woff2 = U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215',
                                        'Righteous-Regular.woff',
                                        'w5P-SI7QJQSDqB3GziL8XVtXRa8TVwTICgirnJhmVJw.eot',
                                )
                        )
                ),
                css: (
                        letter-spacing: 0px
                )

        ),

        'Abel': (
                values: (
                        400: (
                                local: ('Abel', 'Abel-Regular'),
                                url: (
                                        'brdGGFwqYJxjg2CD1E9o7g.woff2 = U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215',
                                        'Abel-Regular.woff',
                                        'brdGGFwqYJxjg2CD1E9o7g.eot',
                                )
                        )
                ),
                css: (
                        letter-spacing: 0px
                )

        ),

        'Aclonica': (
                values: (
                        400: (
                                local: ('Aclonica', 'Aclonica-Regular'),
                                url: (
                                        'KL5OjqZGxkpCc9qpqsIjA_esZW2xOQ-xsNqO47m55DA.woff2 = U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215',
                                        'Aclonica-Regular.woff',
                                        'KL5OjqZGxkpCc9qpqsIjA_esZW2xOQ-xsNqO47m55DA.eot',
                                )
                        )
                ),
                css: (
                        letter-spacing: 0px
                )

        ),


        'Russo One': (
                values: (
                        400: (
                                local: ('Russo One', 'RussoOne-Regular'),
                                url: (
                                        '4ofjFbAC3dpxPypNpg86KxJtnKITppOI_IvcXXDNrsc.woff2 = U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116',
                                        'BUtWDi-16QNsA8yggnRs5RJtnKITppOI_IvcXXDNrsc.woff2 = U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF',
                                        'RO6e96EC9m6OLO0tr7J3z1tXRa8TVwTICgirnJhmVJw.woff2 = U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215',
                                        'RussoOne-Regular.woff',
                                        'RO6e96EC9m6OLO0tr7J3z1tXRa8TVwTICgirnJhmVJw.eot',
                                )
                        )
                ),
                css: (
                        letter-spacing: 0px
                )

        ),

        'Anton': (
                values: (
                        400: (
                                local: ('Anton Regular', 'Anton-Regular'),
                                url: (
                                        '9Yb_jZb3zvMIiuTm_VeFqA.woff2 = U+0102-0103, U+1EA0-1EF9, U+20AB',
                                        'KgPSGrLwjoSLN4ZBWvXSfQ.woff2 = U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF',
                                        'o-91-t7-bPc7W26HmS2N4Q.woff2 = U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215',
                                        'Anton-Regular.woff',
                                        'o-91-t7-bPc7W26HmS2N4Q.eot',
                                )
                        )
                ),
                css: (
                        letter-spacing: 0px
                )

        ),
        'Dosis': (
                values: (
                        300: (
                                local: ('Dosis Light', 'Dosis-Light'),
                                url: (
                                        'SHQzTQBI7152hSrIuGUiVBTbgVql8nDJpwnrE27mub0.woff2 = U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF',
                                        '7aJzV14HzAOiwNTiPgucGfesZW2xOQ-xsNqO47m55DA.woff2 = U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215',
                                        'Dosis-Light.woff',
                                        '7aJzV14HzAOiwNTiPgucGfesZW2xOQ-xsNqO47m55DA.eot',
                                )
                        ),
                ),
                css: (
                        letter-spacing: 0px
                )

        ),
        'Quicksand': (
                values: (
                        400: (
                                local: ('Quicksand Regular', 'Quicksand-Regular'),
                                url: (
                                        'NUrn2XQrRfyGZp5MknntaRJtnKITppOI_IvcXXDNrsc.woff2 = U+0102-0103, U+1EA0-1EF9, U+20AB',
                                        's2PXW4WrV3VLrOUpHiqsfRJtnKITppOI_IvcXXDNrsc.woff2 = U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF',
                                        'sKd0EMYPAh5PYCRKSryvW1tXRa8TVwTICgirnJhmVJw.woff2 = U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000',
                                        'Quicksand-Regular.woff',
                                        'sKd0EMYPAh5PYCRKSryvW1tXRa8TVwTICgirnJhmVJw.eot',
                                )
                        )
                ),
                css: (
                        letter-spacing: 0px
                )

        ),
        'Fjalla One': (
                values: (
                        400: (
                                local: ('Fjalla One', 'FjallaOne-Regular'),
                                url: (
                                        'SHXJdWnWW6HDq-6DpcG8PyEAvth_LlrfE80CYdSH47w.woff2 = U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF',
                                        'rxxXUYj4oZ6Q5oDJFtEd6vk_vArhqVIZ0nv9q090hN8.woff2 = U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215',
                                        'rxxXUYj4oZ6Q5oDJFtEd6vk_vArhqVIZ0nv9q090hN8.eot',
                                        'FjallaOne-Regular.woff',
                                )
                        )
                ),
                css: (
                        letter-spacing: 0px
                )

        ),
);

//********************************** @Font-face Generator **********************************//
// 위에 등록된 $fonts를 파싱해서 @font-face를 작성해준다.

// replaceAll
@function __str-replace($string, $search, $replace: '') {
  $index: str-index($string, $search);

  @if $index {
    @return str-slice($string, 1, $index - 1) + $replace + __str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
  }

  @return $string;
}

// url, value ==>  "url('value')"
@function __str($func, $value) {
  @return $func + "('" + $value + "')";
}

// filename.woff ==>  "format('woff')"
@function __format($value) {
  @return __str(
                  'format',
                  str-slice(
                                  $value,
                                  str-index($value, '.') + 1,
                                  str-length($value)
                  )
  );
}


// 파일 경로 추출 로직
@mixin src($name, $local, $url) {

  $prefix: $hellofunc-fonts + '/' + $name + '/'; // 파일 경로
  $index: str-index($url, ' = ');
  $len: str-length(' = ');

  // have not unicode-range
  @if ($index == null) {
    src: #{$local + ' ' + __str('url', $prefix + $url) + ' ' + __format($url)};
  }
    // have unicode-range
  @else {
    $range: str-slice($url, $index + $len, str-length($url));
    $url: str-slice($url, 0, $index - 1);
    unicode-range: #{$range};
    src: #{$local + ' ' + __str('url', $prefix + $url) + ' ' + __format($url)};
  }
}

@mixin import-font($font-name, $font-data) {

  $class-name: to-lower-case(__str-replace($font-name, ' '));

  @each $weight, $data in map-get($font-data, values) {

    $locals: '';
    @each $local in map-get($data, local) {
      $locals: $locals + __str('local', $local) + ', ';
    }

    @each $url in map-get($data, url) {

      @font-face {
        font-family: $font-name;
        font-style: normal;
        font-weight: $weight;
        @include src($class-name, $locals, $url);
      }
    }
  }

  .font-#{$class-name} {
    font-family: $font-name;
    @each $op, $val in map-get($font-data, css) {
      #{$op}: $val;
    }
  }
}

// 전부 임포팅
@mixin font-all() {
  @each $name, $data in $fonts {
    @include import-font($name, $data);
  }
}

// 개별적으로 임포팅
@mixin font-set($name) {
  @include import-font($name, map-get($fonts, $name));
}


@import url("http://fonts.googleapis.com/earlyaccess/notosanskr.css");
@import url("http://fonts.googleapis.com/earlyaccess/notosansjp.css");
@import url("http://fonts.googleapis.com/earlyaccess/notosanssc.css");

/*  한국어 */
:lang(ko) {
  font-family: 'Noto Sans KR', sans-serif;
}

/* 일본어 */
:lang(ja) {
  font-family: 'Noto Sans JP', sans-serif;
}

/* 중국어 (간체) */
:lang(zh-Hans) {
  font-family: 'Noto Sans SC', sans-serif;
}

/*
 * Nanum Gothic (Korean) http://www.google.com/fonts/earlyaccess
 */
@font-face {
  font-family: 'Nanum Gothic';
  font-style: normal;
  font-weight: 400;
  src: url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.eot);
  src: url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.eot?#iefix) format('embedded-opentype'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.woff2) format('woff2'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.woff) format('woff'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.ttf) format('truetype');
}

@font-face {
  font-family: 'Nanum Gothic';
  font-style: normal;
  font-weight: 700;
  src: url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.eot);
  src: url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.eot?#iefix) format('embedded-opentype'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.woff2) format('woff2'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.woff) format('woff'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.ttf) format('truetype');
}

@font-face {
  font-family: 'Nanum Gothic';
  font-style: normal;
  font-weight: 800;
  src: url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.eot);
  src: url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.eot?#iefix) format('embedded-opentype'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.woff2) format('woff2'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.woff) format('woff'),
  url(//fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.ttf) format('truetype');
}




