基于字形(而非笔划)的 SVG 在基线处被裁剪

基于字形(而非笔划)的 SVG 在基线处被裁剪

如果我处理文件

\documentclass{standalone}
\usepackage{DejaVuSans}
\renewcommand*\familydefault{\sfdefault}
\usepackage[T1]{fontenc}
\begin{document}
\fontsize{9mm}{10mm}\selectfont
{\bfseries aceimnorsuvwxz}
\end{document}

使用 Makefile

run:
    xelatex --no-pdf file
    dvisvgm file.xdv
    open file.svg

我收到一个麻烦的 SVG 文件:

  • 由于 viewBox 不正确,在基线处被裁剪
  • 在 Safari 上看起来还不错,

苹果浏览器

但 Chrome 却错了。

铬合金

我该如何解决这两个问题?

下降器的存在降低了剪切线,但是两个问题仍然存在。

使用: - dvisvgm 2.1.3 - XeTeX,版本 3.14159265-2.6-0.99998 (TeX Live 2017) - macOS 10.13.6

答案1

常问问题提到dvisvgm以下内容:

生成的 SVG 很可能是有效的,但您的 SVG 查看器/编辑器可能不支持嵌入字体。实际上,只有少数 SVG 渲染器(例如 Apache Batik 和 Opera 网络浏览器)可以正确评估嵌入字体(另请参阅屏幕截图)。您可以运行 韋斯維爾带有--no-fonts用路径元素替换字体的选项。大多数查看器应该可以正确呈现生成的 SVG 文件。缺点是,文件会变大,并且文本信息(字符、基线等)会丢失。

从 2.0 版开始,韋斯維爾提供命令行选项 --font-format,允许将嵌入字体的格式从 SVG 更改为 WOFF、WOFF2 或 TrueType。如果您使用选项调用 dvisvgm --font-format=woff,您应该会得到在几乎所有最新 Web 浏览器中都能正确呈现的 SVG 文件。此外,与选项相反 --no-fonts,所有文本属性都保留。

确实,我可以使用 Chrome 重现您的问题,但使用 WOFF 输出是正确的。

梅威瑟:

\documentclass{standalone}
\usepackage{DejaVuSans}
\renewcommand*\familydefault{\sfdefault}
\usepackage[T1]{fontenc}
\begin{document}
\fontsize{9mm}{10mm}\selectfont
{\bfseries aceimnorsuvwxz}aceimnorsuvwxz
\end{document}

命令行:

dvisvgm --font-format=woff xdvconv.xdv

请注意,我使用的是 2.8 版本dvisvgm,但根据常见问题解答,它也适用于早期版本。

结果:

在此处输入图片描述

相关内容