【问题标题】:Is it possible to display an alternate character with CSS?是否可以使用 CSS 显示替代字符?
【发布时间】:2015-05-07 09:13:30
【问题描述】:

我正在使用一种网络字体,它在字形面板中有多种不同的“M”可供选择。一直显示在我的网站上的默认“M”是可怕的。我想从字体的替代字符选择之一中使用更好看的“M”。

在字形面板(在 Illustrator 中)中,我要使用的“M”字符是:U+004d Alternates#2 (aalt2)

我的 CSS 目前有这个:

.script:before {
content: "\004D";
}

不幸的是,这段代码没有拉出我想要的备用“M”。它只是拉出我试图摆脱的默认“M”。

这甚至可以从字体中调用替代“M”,并将其显示在网页上吗?

【问题讨论】:

  • 字体设置有一些东西可以使用..但它是 same “M”字符数据(M = 0x4D;不管它如何表示) 在所有情况下,只是应用了不同的字体。
  • 重置 fonf-family :)

标签: css fonts special-characters webfonts glyph


【解决方案1】:

好的,004D的字体unicode字符对应的html代码是“M”。由于您想将特定“M”的所有出现更改为该特定字符,只需找到该字符的出现并动态添加一个 span 标签。

这是一个例子,我用字符“e”而不是“E”做了同样的事情。我把“e”换成了“ȝ”

JSFIDDLE LINK 在这里。

$(document).ready(function() {
  $.fn.texter = function() {
    var letters = $(this).html().split(""),
      text = "";

    for (var i in letters) {
      if (letters[i] == "e") {
        text += "<span class='" + letters[i] + "'>" + '&#541;' + "</span>";
      } else {
        text += letters[i];
      }
    }
    $(this).html(text);
  };

  $("body").texter();
});
.e {
  color: magenta;
  font-family: 'Arial';
  font-size: 18px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="text">Test Message is Entered Here EEE is not touched but eee is changed</div>

另一种变体是使用@font-face 中的“unicode-range”属性来指定一种新字体并将该新字体应用于每个出现的字符。参考MDN Documentation here

Fiddle 可以在这里找到 ::: http://jsfiddle.net/dka30drt/7/

此处为第二个变体编码 sn-p,

$(document).ready(function() {
  $.fn.texter = function() {
    var letters = $(this).html().split(""),
      text = "";

    for (var i in letters) {
      if (letters[i] == "e") {
        text += "<span class='" + letters[i] + "'>" + '&#541;' + "</span>";
        console.log(letters[i]);
      } else {
        text += letters[i];
        /*console.log(letters[i]);*/
      }
    }
    $(this).html(text);
  };

  $("body").texter();
});
@font-face {
  font-family: funkyfont;
  src: url(https://www.courts.mo.gov/civiceducation/html5bp/html5-boilerplate-4.3.0/css/webfontkit/alegreyasc-italic-webfont.eot?#iefix) format('embedded-opentype'), url(https://www.courts.mo.gov/civiceducation/html5bp/html5-boilerplate-4.3.0/css/webfontkit/alegreyasc-italic-webfont.woff) format('woff'), url(https://www.courts.mo.gov/civiceducation/html5bp/html5-boilerplate-4.3.0/css/webfontkit/alegreyasc-italic-webfont.ttf) format('truetype'), url(https://www.courts.mo.gov/civiceducation/html5bp/html5-boilerplate-4.3.0/css/webfontkit/alegreyasc-italic-webfont.svg#svgFontName) format('svg');
  unicode-range: U+004D;
}
.e {
  color: magenta;
  font-family: 'funkyfont';
  font-size: 18px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="text">Test Message is Entered Here EEE is not touched but eee is changed</div>

希望对你有帮助

【讨论】:

  • 这个不错,不过功能可以简化为:$(this).html($(this).text().replace(/e/g,"&lt;span class='e'&gt;&amp;#541;&lt;/span&gt;"));。见jsfiddle.net/rj9pw0zt
  • @RickHitchcock - 你绝对是。级联是一件多么美好的事情:)谢谢。不错的增强
  • 非常感谢!我会调查的!
【解决方案2】:

我有点想通了。这适用于 FF,但不适用于 Safari。

这是“Meet”一词中“M”的HTML,我想更改:

<span class="m-alternate">M</span>eet

这是为我改变了特定字母的 CSS

.m-alternate {
font-feature-settings: "ss02";
}

专业提示: 如果您正在生成网络字体,请确保替代字体实际上是该网络字体。我有一个没有替代字体的版本,因此该死的代码不起作用!

【讨论】:

  • 这种方法唯一的小问题是每次出现字母“M”时都要手动添加跨度标签。我的解决方案是即时完成的
  • Safari 也支持 unicode-range 但不支持字体功能设置。到目前为止,Unicode 范围对浏览器的支持要好一些
  • 谢谢@Sai。实际上,我只需要在整个网站中更改一次“M”——所以一个简化的方法会起作用,但它在 Safari 中不起作用的事实是一个真正的问题。 :(
  • 然后尝试我在解决方案中提出的第二个变体。根据 MDN 文档,Safari 支持使用 unicode-range。
【解决方案3】:

是的,你可以这样做:

@font-face {
    font-family: 'MyFont';
    src: local('MyFont');
}

@font-face {
    font-family: 'MyFont-Alt';
    font-feature-settings: "salt"; 
    /* Above can vary depending on the font. For example:
        font-feature-settings: "aalt"; 
        font-feature-settings: "ss01";
    */
    src: local('MyFont');
    unicode-range: U+004d,U+004f ; /* Just in case you want more glyphs. */
}

body{
    font-family: 'MyFont-Alt','MyFont';
}

【讨论】:

    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多