Bash 将.otf字体转换为所有图示符的.gif图像

Bash 将.otf字体转换为所有图示符的.gif图像,bash,image,fonts,converter,Bash,Image,Fonts,Converter,如何将.otf字体文件转换为.gif图像,其中字体中的每个字形都占据gif中的单个帧 我见过imagemagick用于将字形转换为PNG convert -background none -fill black -font font.otf -pointsize 300 label:"Z" z.png 我所追求的是可扩展的吗 还是我需要使用不同的方法 还要注意的是,上面的命令对我来说不能正常工作,我使用的字体tangwar annatar有一些被上面命令生成的png边缘截断的字形 我在mac电

如何将.otf字体文件转换为.gif图像,其中字体中的每个字形都占据gif中的单个帧

我见过imagemagick用于将字形转换为PNG

convert -background none -fill black -font font.otf -pointsize 300 label:"Z" z.png
我所追求的是可扩展的吗

还是我需要使用不同的方法

还要注意的是,上面的命令对我来说不能正常工作,我使用的字体tangwar annatar有一些被上面命令生成的png边缘截断的字形

我在mac电脑上,几乎可以访问所有内容,所以只要对我有效,我会接受任何语言的解决方案。

再次更新

好的,我看到了你的字体和字符似乎超出了预期的大小。我认为你需要做的就是使用更大的画布:

#!/bin/bash
{
   for c in {a..z} {A..Z} {0..9}; do
      convert xc:none[1000x1000] -background none -fill black -font tengwar.otf -pointsize 300 \
         -gravity center -annotate 0 "$c" miff:-
   done

   # Do any problematic characters as an afterthought, e.g. semi-colon, and exclamation
   convert xc:none[1000x1000] -background none -fill black -font tengwar.otf -pointsize 300 \
         -gravity center -annotate 0 ";" miff:-
   convert xc:none[1000x1000] -background none -fill black -font tengwar.otf -pointsize 300 \
         -gravity center -annotate 0 "!" miff:-

} | convert -dispose background -delay 20 miff:- anim.gif
最新答案

在固定的背景上使用-annotate,您可能会感觉更好,如下所示。在本例中,我还添加了如何处理有问题的字符-在另一个示例中,您也可以这样做:

#!/bin/bash
{
   for c in {a..z} {A..Z} {0..9}; do
      convert xc:none[350x350] -background none -fill black -font arial -pointsize 300 \
         -gravity center -annotate 0 "$c" miff:-
   done

   # Do any problematic characters as an afterthought, e.g. semi-colon, and exclamation
   convert xc:none[350x350] -background none -fill black -font arial -pointsize 300 \
         -gravity center -annotate 0 ";" miff:-
   convert xc:none[350x350] -background none -fill black -font arial -pointsize 300 \
         -gravity center -annotate 0 "!" miff:-

} | convert -dispose background -delay 20 miff:- anim.gif
原始答案

您可以这样做:

#!/bin/bash
for c in {a..z} {A..Z} {0..9}; do 
   convert -background none -fill black -font arial -pointsize 300 \
   label:"$c" -gravity center -extent 350x350 miff:-
done | convert -dispose background -delay 80 miff:- anim.gif

通过GIF中的每一帧,你是动画GIF还是所有字形的蒙太奇?@MarkSetchell嗯,动画GIF,但我不关心动画本身。我想将所有的标志符号作为单独的服装上传到一个名为Scratch的程序中,最快的方法是使用一个gif,每个gif有一套服装frame@theonlygusti这到底是什么意思?字形不是字母,它们只是映射到unicode代码点序列的轮廓,甚至连连字都不一定是一种东西。如果您想要一个代码页,那么有一百万种方法可以使用任何为其编写了字体解析器的编程语言来实现,因此:选择一种语言,查找它是否有字体解析器,如果有,就开始编程。然后,当你陷入困境时,Stackoverflow可能会有所帮助。@MarkSetchell你的答案虽然绝对值得一票,但并不能真正转换字体中的每个符号,只转换[a-zA-Z0-9!;]中的符号。我真的很想买一些能体现fontOk中每个符号的东西,谢谢你回来。我不知道如何枚举字体中的所有标志符号,但如果你找到了一种方法,请给我回电话,我们将尝试解决如何让ImageMagick显示所有标志符号-通过输入UTF代码或诸如此类的方式。这没有任何区别,只需将脚本的第一行设置为正确的shebang。我已经编辑了答案。并使用chmod+x myScript使脚本可执行,并使用./myScript运行它。对于许多图示符来说,边界框太小,请查看这会生成什么。看看有多少是削减了对双方和顶部。有时我也会遇到一个错误:convert:width或height超过了限制'E'@error/cache.c/OpenPixelCache/3800。对于一些字符。好的,改变点大小修复了垂直切掉,但我仍然得到水平切掉,有时那些宽度或高度。。。错误您更新后的答案仍然存在与以前相同的问题,即字母的裁剪:您能分享这个mad字体吗?我将为您做一些实验。