在chrome和firefox之间的字体上进行字距调整

时间:2012-10-16 16:35:47

标签: css firefox google-chrome kerning

我正在开发一个带有自定义字体的菜单,并且在chrome(和safari)中,它的间距与我想要的完全相同。

http://american-motorsports.net/2012/

当我在firefox中查看它时,字体的字距有点不同,在最右边的菜单项上产生一点黑色间隙。我可以在 FABRICATION

中看到 F A 之间的区别

HTML现在非常简单:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="resources/css/reset.css" />
<link rel="stylesheet" href="resources/css/main.css" />
<title><?php echo date('M d, Y') . ' | '; ?>American Motorsports - Off-Road Fabrication</title>
</head>
<body>
<div id="wrap">
    <div id="header">
        <div id="logo">
            <img src="resources/images/logo.png" width="291" height="150" alt="American Motorsports - Off-Road Fabrication" />
        </div>
        <div id="menu">
            <a href="#"><span class="item">HOME</span></a><a href="#"><span class="item">SUSPENSION</span></a><a href="#"><span class="item">FABRICATION</span></a><a href="#"><span class="item">PROJECTS</span></a><a href="#"><span class="item">MEDIA</span></a><a href="#"><span class="item">CONTACT</span></a>
        </div>
    </div>
    <div id="main"></div>
</div>
</body>
</html>
到目前为止,CSS包含了这个

@font-face {  
    font-family: bebas;  
    src: url("../fonts/bebas.ttf") format("truetype");  
    font-weight: normal;
    font-style: normal;
}

body {
    font-size: 14px;
    color: #ccc;
    line-height: 20px;
    margin: 0;
    padding: 0;
    background: url("../images/bg.png") #202020;
}

#wrap {
    background: url("../images/bg_main.jpg") no-repeat center top;
    min-height:800px;
}

#header {
    border-top: 5px solid #3a3a3a;
    height:150px;
    width:970px;
    background-color:#000000;
    margin: 50px auto;
}

#logo {
    width:324px;
    height:179px;
    background-color:#121212;
    border-top: 5px solid #3a3a3a;
    border-bottom: 5px solid #ffffff;
    margin-top:-22px;
    float:left;
}

#logo img {
    margin-left:13px;
    margin-top:17px;
}

#menu {
    width:646px;
    height:150px;
    float:right;
    margin:0;
    padding:0;  
}

#menu a {
    margin:0;
    padding:0;
}

.item {
    font-family:bebas;
    font-size:18px;
    height:150px;
    display:inline-block;
    text-align:center;
    line-height:8em;
    color:#fff;
    cursor:pointer;
    padding-left:20px;
    padding-right:20px;
    margin:0;
    text-shadow: 0 3px 3px #111;
}

.item:hover {
    background: -moz-linear-gradient(top,  #3a3a3a 0%, #101010 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#3a3a3a), color-stop(100%,#101010));
    background: -webkit-linear-gradient(top,  #3a3a3a 0%,#101010 100%);
    background: -o-linear-gradient(top,  #3a3a3a 0%,#101010 100%);
    background: -ms-linear-gradient(top,  #3a3a3a 0%,#101010 100%);
    background: linear-gradient(to bottom,  #3a3a3a 0%,#101010 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3a3a3a', endColorstr='#101010',GradientType=0 );
}

#main {
    width:970px;
    /*background-color:#ffffff;*/
    margin: 0 auto;
}

所以问题是如何消除差距所以它看起来像chrome和safari或修复字距问题..我只是不想在Firefox中的那个差距

3 个答案:

答案 0 :(得分:2)

你必须在有问题的字母周围包裹span并调整CSS letter-spacing:属性,直到得到你想要的为止。

良好的排版技巧,特别是在自定义字体方面,在浏览器黄金时段尚未做好准备。

计划B :使用图片。

答案 1 :(得分:0)

快速解决方案

#menu{
  white-space: nowrap;
  overflow: hidden; /* means you don't get a dirty edge, but the last link may be smaller on the right */
}

理想情况下,您不应该依赖字体的宽度来使菜单看起来正确。 如果您有时间,请为每个链接指定一个类和一个自定义宽度。 或者甚至更好,使用每个项目中包含链接的列表,以获得更好的控制。

例如,如果添加:

.item{
  padding: 0;
  width: 16.66%; /* assuming you always have 6 links */
}

......它们总是适合,但有些看起来很垃圾。 对于最专业的外观,您需要为每个人提供一个班级和自定义宽度。

答案 2 :(得分:0)

我没有看到您要删除的差距,但您所描述的是Firefox(现代版本)默认情况下应用字距调整的问题,如果以字体定义的话。其他浏览器没有。所以这是一个字距调整与没有字距调整的问题,而不是字距调整的差异。 Kerning通常被认为是印刷上合乎需要的。但是如果你真的想阻止Firefox进行字距调整,可以使用font feature settings,例如在这种情况下

#menu  { -moz-font-feature-settings: "kern" 0; }