【发布时间】:2018-03-29 15:12:04
【问题描述】:
更新 SVG 图像裁剪问题已减少到 ImageMagick。也就是说,convert birthday_cake.svg birthday_cake.png 在我的特定安装(即在 Ubuntu 上)中生成了一个剪裁的birthday_cake.png。我目前正在进一步调查。
我的convert 版本是6.7.7-10,我看到最新版本目前是7.0.7-8,所以可能是问题所在。
原始问题如下
我下载了一个 SVG 文件,然后将其加载到 emacs 中,但底部的三分之一被裁剪了。此外,从右侧裁剪了少量。但是,该文件不会在 Firefox 或 Google Chrome 中被裁剪。顺便说一句,这个 SVG 是 U+1F382 生日蛋糕 Unicode 字形的渲染。
我以前从未注意到任何 SVG 或图像文件的这种裁剪。所以我怀疑 emacs 和这个特定的 SVG 文件之间存在一些奇怪的交互。
那么,这个特定 SVG 文件在emacs 中触发裁剪的原因是什么?此外,如何指示 emacs 显示此 SVG 文件的整个高度和宽度?
$ wget -q http://www.fileformat.info/info/unicode/char/1f382/birthday_cake.svg
$ emacs-snapshot -Q birthday_cake.svg --geometry 60x24 -eval '(set-frame-name "BAD SVG")'
$ emacs-snapshot --version | head -1
GNU Emacs 25.1.50.2
$ firefox birthday_cake.svg
SVG 被包含在imagemagick-types:
(member 'SVG (imagemagick-types))
(SVG SVGZ TEXT TGA THUMBNAIL TIFF TIFF64 TILE TIM TTC TTF TXT ...)
这里是 SVG 文件的缩略版本,其中缩短了 12KB 路径以用于此发布:
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg fill-opacity="1" xmlns:xlink="http://www.w3.org/1999/xlink" color-rendering="auto"
color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square"
stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none"
font-weight="normal" stroke-width="1" xmlns="http://www.w3.org/2000/svg" font-family="'Dialog'"
font-style="normal" stroke-linejoin="miter" font-size="12" stroke-dashoffset="0" image-rendering="auto">
<!--Unicode Character 'BIRTHDAY CAKE' (U+1F382)-->
<defs id="genericDefs" />
<g><g>
<path d="M285.1875 252 Q285.1875 274.5 ... 118.5469 221.3438 Z" stroke="none" />
</g></g></svg>
SVG 标记中的某些属性是否有助于这种图像裁剪?如果是这样,请逐项列出这些元素并解释相互作用。
【问题讨论】:
-
什么是工具链? emacs 使用 ImageMagick,但 ImageMagick 用于渲染的是什么?你有安装 librsvg 吗?
-
我目前没有安装 librsvg。至于你关于工具链的问题,我决定试试
convert birthday_cake.svg birthday_cake.png。birthday_cake.png显示相同的截断。所以问题是 ImageMagick 和 not emacs。我将进一步研究 ImageMagick,尽管在这里查看任何其他有用的 cmets -
ImageMagick 在系统中找到 rendering SVG 时使用 Inkscape 或 librsvg。如果两者都不可用,ImageMagick 将恢复到其内部 SVG 渲染器。
-
我误读了我的
aptpackage-manager 输出并且确实安装了 libsrvg。
标签: image svg emacs imagemagick glyph