Fonts 字体是否可以在TTF中指定强制背景色?

Fonts 字体是否可以在TTF中指定强制背景色?,fonts,truetype,Fonts,Truetype,我正在尝试创建自己的自定义字体。我读了一些书,因为我对字体一无所知,所以我有一个问题一直没有找到答案 你能定义一种字体的颜色是静态的吗?例如,我希望创建一个字体,其中每个a有一个蓝色背景,B有一个黄色背景,等等。我所做的阅读似乎表明,您需要将字体转换为黑色或白色。我的理解正确吗?不支持在字体中强制使用特定颜色,尤其是背景色?字体没有颜色,因此您是对的,您不能在字体文件中强制使用特定颜色。但是,您可以在使用字体时应用任何颜色。支持取决于您的操作系统/浏览器版本,但OpenType 1.7支持多色字

我正在尝试创建自己的自定义字体。我读了一些书,因为我对字体一无所知,所以我有一个问题一直没有找到答案


你能定义一种字体的颜色是静态的吗?例如,我希望创建一个字体,其中每个a有一个蓝色背景,B有一个黄色背景,等等。我所做的阅读似乎表明,您需要将字体转换为黑色或白色。我的理解正确吗?不支持在字体中强制使用特定颜色,尤其是背景色?

字体没有颜色,因此您是对的,您不能在字体文件中强制使用特定颜色。但是,您可以在使用字体时应用任何颜色。

支持取决于您的操作系统/浏览器版本,但OpenType 1.7支持多色字体,并且有多个选项

  • COLR/CPAL表格:这是一种多层可伸缩向量方法,其中单个字形可以有多个颜色层,类似于早期使用多个单独字体的多层字体方法。轮廓是标准的“glyf”表格轮廓,如单色字体。IE在Windows 8.1和FireFox 40.0.3上支持它(试试Segoe UI表情符号)*请注意,我曾参与过这个提案,所以这是我最了解的提案
  • OpenType内部的SVG:这也是一种可伸缩的矢量方法,将SVG大纲存储在OpenType容器中。FireFox 26支持它
  • CBDT/CBLC表格:该表格存储彩色嵌入位图,类似于旧的EBDT表格,该表格仅为单色
  • SBIX:它在TrueType中存储图像(PNG/JPG/TIFF),iOS4+和OSX 10.7+支持
前两种具有可扩展性的优势,无论设备如何,但它们缺乏精细的像素级细节。最后两个具有在图像中提供精细细节的优势,但当使用与预期尺寸不同的尺寸时,它们看起来像像素化或模糊

Roel Nieskens在这里写了一篇很好的文章,其中包括一个测试页面,显示当前浏览器对不同方法的支持:

OpenType 1.6规范中不直接支持多色字体,但您仍然可以选择

  • 创建所有图示符的atlas纹理(基本上是与CSS精灵结合使用的大型位图)。游戏使用这种方法,但需要注意的是它们是不可伸缩的——不管怎样,没有像素化也不行
  • 覆盖多个OpenType字体的文本。多层OpenType是图形设计人员使用的一种方法(例如在设计中)。创建多种字体有点奇怪,每种颜色对应一种字体,但它可以工作。您可以将浮动跨距半透明地覆盖在彼此的顶部
  • 通过InkScape使用SVG字体(在支持SVG的浏览器子集中)。SVG字体是可伸缩的,并且支持多种颜色(实际上几乎支持SVG所做的任何事情),但它们的支持有限:Opera 9+或Chrome 4+,而不是IE10或FF
  • 直接使用SVG组件。它不是真正的“SVG字体”,但您仍然可以通过编程将每个字符与其对应的SVG部分关联起来(假设我们在ASCII范围内,而不是整个Unicode中的任何字符)。所有当前浏览器都支持SVG:Opera9、IE10、FF3、Chrome4、Safari3.2

您可以使用分层彩色字体:

我以前从未见过像这样遥远的东西;您是否正在尝试解决一个简单的问题,字符样式格式化可以完成这项工作?或者你正在尝试自己创建字体供他人使用?我正在尝试创建一个网页,其中输入框具有我描述的那些“奇特”字体,而不是常规字体。我曾考虑构建一个自定义javascript控件,在用户键入时放置角色的图像,以模拟输入框,但我不确定这是否适用于iPhone或iPad,因为我不确定键盘是否会弹出(这是我要问的另一个问题)。关于这一点,我问了另外一个问题,突然想到,也许更好的办法是创建自定义字体,一切都“正常工作”。