问题 如何合并字体?


我有很多字体,

  • OpenSans-bold.ttf
  • OpenSans-boldItalic.ttf
  • OpenSans-extrabold.ttf
  • OpenSans-italic.ttf
  • OpenSans-light.ttf

我将如何继续创建一个文件,与这许多不同的文件相反? 也许像我通常那样在CSS上使用它们,或者像在photoshop上那样使用它们?

例如

small{font-family:"OpenSans"; font-weight: normal;}
strong{font-family:"OpenSans"; font-weight: bold;}
h2 {font-family:"OpenSans"; font-weight: bolder;}

任何帮助都会得到满足。


8813
2018-01-30 12:05


起源

大多数浏览器都不支持font-strech,这不是重复的,不知道为什么要关闭或投票关闭这个问题。 - Val
可能重复 如何为相同字体添加多个字体文件? - user2284570


答案:


在一个文件中组合多种字体的简单方法是在base64中对它们进行编码并将它们嵌入到CSS中。他们仍然会 不同 虽然字体和总大小会增加。有各种在线工具可以为您上传的字体文件创建css,例如 这个


4
2018-01-30 12:18



使用BASE64并不是一个好主意,因为字体永远不会被缓存...所以你什么也得不到,实际上你让事情变得更糟,因为每次你的CSS改变,它都会强迫用户再次下载字体。顺便说一句,在线工具只允许您合并最多3个文件。 - vsync
只是一个想法...我们可以将字体组合成特殊的fonts.css,它将与其他网站的CSS分开。因此,如果您更改(添加/删除)字体,则只应重新加载fonts.css。 - Kiryl


如果你想使用不同的字体(常规,斜体,粗体等),你需要不同的字体文件,因为每个字体都是作为一个单独的字体文件实现的(实际上,你甚至需要它以不同的字体格式,以涵盖不同的浏览器)。

但是你 能够 将它们用作单个字体系列,就像你使用Arial一样,并使用直接或间接使用CSS(通过HTML,例如,使用斜体和粗体)。 h2 元素默认为粗体)。为此,你需要 宣布 一个字体系列。

例如,FontSquirrel生成CSS代码,将每个字体定义为字体系列。这是可能的,但不合逻辑且不方便。例如,它生成

@font-face {
    font-family: 'open_sansbold';
    src: url('opensans-bold-webfont.eot');
    src: url('opensans-bold-webfont.eot?#iefix') format('embedded-opentype'),
         url('opensans-bold-webfont.woff') format('woff'),
         url('opensans-bold-webfont.ttf') format('truetype'),
         url('opensans-bold-webfont.svg#open_sansbold') format('svg');
    font-weight: normal;
    font-style: normal;
}

为了使事情更合理,改变 font-weight 价值,并改变 font-family 命名为您在不同中使用的名称 @font-face 规则(针对家庭的不同字体)。例如。,

@font-face {
    font-family: 'Open Sans';
    src: url('opensans-bold-webfont.eot');
    src: url('opensans-bold-webfont.eot?#iefix') format('embedded-opentype'),
         url('opensans-bold-webfont.woff') format('woff'),
         url('opensans-bold-webfont.ttf') format('truetype'),
         url('opensans-bold-webfont.svg#open_sansbold') format('svg');
    font-weight: bold;
    font-style: normal;
}

10
2018-01-30 15:34



这是我现在这样做的方式,但传递给我的字体加起来达到了2.8mb,这是很多。因此我问为什么我能以某种方式设法合并字体并将它们用作普通字体而不是单独的字体。 - Val
使用字体的常用方法是每种字体都是自己的字体文件。它不会节省空间将它们组合成一个文件,此外,这不是字体技术的工作方式。 - Jukka K. Korpela
@ JukkaK.Korpela向font-family添加斜体或粗体属性并不总是与下载单独的字体相同。例如,请从Google Web Fonts检查Roboto。只需将字体权重900添加到Roboto-Regular就不会与Roboto-Black相同。 - ChrisOdney
@ChrisOdney正确设置它是一样的,就像这个例子那样。谷歌字体在他们的链接元素字体调用中执行此操作: fonts.googleapis.com/css?family=Roboto:400,900 声明roboto-regular和robot-black字体系列名称似乎令人困惑。 - albert