为了我正在工作的项目,我需要从表情符号(最好是苹果表情符号)生成图像文件。我认为这应该是一件相当简单的事情,但是每个我使用的工具,最终都遇到了障碍。
我还考虑过使用表情符号集,例如这个,我可以在需要时进行查询。不幸的是,我链接的那个没有Unicode 9.0表情符号,例如鳄梨()、虾()或哈拉姆贝()。您是否知道这样一个最新的集合?
就代码而言,我尝试过opentype.js,但它不支持.ttc字体,这是我Mac上表情符号字体的扩展名(Apple Color Emoji.ttc)。我已将字体转换为.ttf,但也没有成功:
结果如下所示: 我尝试过fontkit,它应该能够读取.ttc文件,但是如果我尝试使用Apple Color Emoji字体,它会抛出一个错误。
我的问题是,我是否采用了正确的方法?将我已经拥有的表情符号转换为.png或其他格式似乎应该是相当简单的事情,但我就是无法让它工作。
我还考虑过使用表情符号集,例如这个,我可以在需要时进行查询。不幸的是,我链接的那个没有Unicode 9.0表情符号,例如鳄梨()、虾()或哈拉姆贝()。您是否知道这样一个最新的集合?
就代码而言,我尝试过opentype.js,但它不支持.ttc字体,这是我Mac上表情符号字体的扩展名(Apple Color Emoji.ttc)。我已将字体转换为.ttf,但也没有成功:
var opentype = require('opentype.js');
opentype.load('./build_scripts/apple_color_emoji.ttf', function (err, font) {
if (err) {
alert('Could not load font: ' + err);
} else {
console.log("loaded the font",font);
var Canvas = require('canvas')
, Image = Canvas.Image
, canvas = new Canvas(200, 200)
, ctx = canvas.getContext('2d');
var path = font.getPath('', 0, 150, 72);
path.draw(ctx);
console.log('<img src="' + canvas.toDataURL() + '" />');
}
});
结果如下所示: 我尝试过fontkit,它应该能够读取.ttc文件,但是如果我尝试使用Apple Color Emoji字体,它会抛出一个错误。
var fontkit = require('fontkit');
var font = fontkit.openSync('./build_scripts/Apple Color Emoji.ttc');
// TypeError: font.layout is not a function
如果我使用转换后的.ttf文件尝试相同操作,可能会得到一些不正确的SVG:
var fontkit = require('fontkit');
var font = fontkit.openSync('./build_scripts/apple_color_emoji.ttf');
var run = font.layout('');
var svg = run.glyphs[0].path.toSVG();
console.log(svg);
// M-1 0ZM799 800Z
我的问题是,我是否采用了正确的方法?将我已经拥有的表情符号转换为.png或其他格式似乎应该是相当简单的事情,但我就是无法让它工作。
编辑:
我在这个仓库中找到了一个表情符号名称和十六进制代码的列表(向rodrigopolo致以最大的敬意)。现在我可以简单地使用这个:
var emoji = "".codePointAt(0).toString(16); //1f60a
var emojiFile = fs.readFileSync('./my-emoji-folder/' + emoji + '.png');
不过,如果有人有编码解决方案,那就太好了!
进一步编辑:
结果发现我找到的第一个解决方案只包括 Unicode 8.0 版本以前的表情符号,而不是 Unicode 9.0。我找到了一个 Ruby gem gemoji 可以提取表情符号。如果您不是 Ruby 开发人员(我不是),您可以在 Shell 中使用以下命令:
git clone https://github.com/github/gemoji.git
cd gemoji
bundle install
bundle exec gemoji extract some-directory/emoji
现在,您的some-directory/emoji文件夹中拥有Unicode 9.0表情符号!