【问题标题】:Python fontforge Emoji encoding and colored glyphsPython fontforge 表情符号编码和彩色字形
【发布时间】:2021-04-01 05:17:30
【问题描述】:

我想用 python 和 fontforge 创建一个 .ttf 字体,其中还包含表情符号。

我的字形是 .svg 文件,分辨率为 512x512 像素。

我已经尝试了以下方法:

import fontforge
blank = fontforge.font()
blank.save("blank.sfd") 
font = fontforge.open("blank.sfd")
glyph = font.createMappedChar("\U0000263A")
glyph.importOutlines("263A.svg")
font.generate("font.ttf")

但是,我收到以下错误:

Traceback (most recent call last):
  File "/home/adrian/dev/font/glyphs/test.py", line 5, in <module>
    glyph = font.createMappedChar("\U0000263A")
ValueError: Glyph name, ☺️, not in current encoding

我查看了 thebblank.sfd 并且有一行:“编码:ISO8859-1”。 我尝试将“ISO8859-1”替换为“UTF-8”或“Univode”,但随后出现以下错误:

Internal Error: SFD file specifies too few slots for its encoding.

我该如何解决?

我首先尝试将表情符号字形用于字母“A”。然后创建字体并且它可以工作。 然而,它只是一个黑色的圆圈,脸、眼睛、微笑、腮红……无法辨认,因为它是黑色而不是黄色、橙色、白色、粉红色…… 在 blank.sfd 文件中写了一些关于层的内容:

Layer: 0 0 "Back" 1
Layer: 1 0 "Fore" 0

我想我必须对图层进行一些更改才能使颜色生效,但我不确定,如果是这种情况,我不知道如何以及如何为图层分配元素。 svg 字形。 顺便说一下,我使用 Inkscape 程序来创建 glyps。

我该如何解决这两件事?

【问题讨论】:

标签: python encoding fonts emoji fontforge


【解决方案1】:

我偶然发现了这个想要在我的终端中添加一个简单字符的问题,这里有一个混合的问题可以为我解决这个问题。

要制作自己的表情符号,您可能会发现在当前状态下使用 Font Forge 相当困难。只需尝试将 NotoColorEmoji.ttf 之类的字体加载到 FontForge 的应用程序中,您就会看到一个错误。它有一个github问题:

https://github.com/fontforge/fontforge/issues/677 https://github.com/fontforge/fontforge/issues/2044

但如果您尝试制作的表情符号是单色字形,例如:https://github.com/powerline/powerline,那么您很幸运。

这个脚本和你的很接近,但效果很好:

import fontforge
blank = fontforge.font()
blank.encoding = "UnicodeBMP"
glyph = blank.createChar(int("F10F", 16))
glyph.importOutlines("logo.svg")
blank.generate("myfont.ttf")

随意将 unicode 更改为私人使用区域中的任何序列。

然后将它复制到你的字体目录(如果是 linux)

sudo cp myfont.ttf /usr/share/fonts/TTF/ 

在新终端或重新加载显示中您可以:echo -e "\uf10f"

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 2018-07-10
    • 2020-07-04
    • 1970-01-01
    • 2019-08-22
    • 2021-12-20
    • 2020-11-03
    • 2018-04-14
    相关资源
    最近更新 更多