Text Imagemagick和web字体

Text Imagemagick和web字体,text,fonts,imagemagick,Text,Fonts,Imagemagick,有人知道ImageMagick是否可以由web字体驱动吗?(或者可能通过STD in输入?)我尝试了下面的线路,但没有成功: convert -fill black -font http://fonts.googleapis.com/css?family=Diplomata+SC -pointsize 72 label:'Acme Dynamite Company, LLC' logo.png 我的目标是让用户选择Google Web字体。最终更新:用户barethon编写了一个python

有人知道ImageMagick是否可以由web字体驱动吗?(或者可能通过STD in输入?)我尝试了下面的线路,但没有成功:

convert -fill black -font http://fonts.googleapis.com/css?family=Diplomata+SC -pointsize 72 label:'Acme Dynamite Company, LLC' logo.png

我的目标是让用户选择Google Web字体。

最终更新:用户barethon编写了一个python woff到ttf的转换器,它工作得非常好。()我现在可以从谷歌下载我想要的字体,将其转换为ttf,并与imagemagick一起使用。比我希望的稍微复杂一点,但没什么大不了的。

如果您设置GWF API,它将返回一个TTF url:

$wget-qO-http://fonts.googleapis.com/css?family=Diplomata+SC“| urlext2


$

我知道这在这一点上已经很旧了,但是为了节省其他人的时间,这里有一些基本的PHP来做你想做的事情。它可以优化为使用curl之类的,但这应该足以让人们开始工作。从浏览器访问时,它似乎返回一个woff和woff2 url,但从其他任何地方访问时,它返回一个tff

    $fontUrl = 'http://fonts.googleapis.com/css?family=Anton';
    $fontDescription = file_get_contents($fontUrl);

    $startStr = 'url(';
    $startStrLen = strlen($startStr);
    $start = strpos($fontDescription, $startStr) + $startStrLen;
    $end = strpos($fontDescription, ')', $start);
    $tffUrl = substr($fontDescription, $start, $end - $start);

    $tffFile = '/tmp/anton.ttf';
    file_put_contents($tffFile, file_get_contents($tffUrl));

    $im = new Imagick();
    $im->setFont($tffFile);
    $im->newPseudoImage(100, 100, "caption:Hello");
    $im->setImageFormat('png');
    $im->setImageBackgroundColor(new ImagickPixel('transparent'));
    header('Content-Type: image/png');
    echo $im->__toString();

谢谢你用牙线来解决这个问题。我用类似的方法解决了这个问题

我之所以使用随机数而不是像
font.ttf
这样的静态文件名,是因为如果其他用户同时调用该函数,它可能会产生问题

  • 查询谷歌字体列表

    $url = 'https://www.googleapis.com/webfonts/v1/webfonts?key=YOUR KEY HERE';
    
    $responseString = file_get_contents($url);
    $fontJSON = json_decode($responseString);
    
  • 访问字体的url,如下所示:

    <select name="font">
      <?php foreach ($fontJSON->items as $font): ?>
        <option value="<?= $font->files->regular ?>"><?= $font->family ?></option>
      <?php endforeach; ?>
    </select>
    
  • 删除临时字体文件

    unlink("tmp/$random_number.ttf"); //remove tmp font
    

  • 只是一个更新-我已经确定可以使用Google API获取字体列表,然后通过WGET下拉WOFF文件,但ImageMagick似乎不支持WOFF格式字体。如果有人知道一个基于Linux的WOFF-to-TTF转换器,我想我可以免费回家了。在这里,您可以使用
    -font
    指向类似
    -font./myfont.TTF的文件?有趣的答案!!
    
    unlink("tmp/$random_number.ttf"); //remove tmp font