设置本地创建字体的 dpi

设置本地创建字体的 dpi

我正在寻找闪电符号并偶然发现了这篇文章:

方程式环境中的闪电符号

我喜欢该软件包中的闪电符号ulsy(来自第二个答案),并尝试使用它。第一个问题是 texlive 不附带此软件包。因此,我从 CTAN 下载了它,并按照说明创建了和文件Uulsy.fdulsy.sty(我只在本地使用这些文件,因为我打算将它们集成到我的 overleaf 项目中,据我所知,该项目不支持安装自定义字体。)

我的实际问题是,当我在文档中使用它时,我只得到低分辨率的闪电,特别是当我增加尺寸时(例如使用scaleboxresizebox)。

\documentclass{article}
\usepackage{graphicx}
\usepackage{ulsy}
\let\ulsyLightning\blitza

\begin{document}
        \resizebox{0.5\textheight}{!}{\ulsyLightning}
\end{document}

在此处输入图片描述

我注意到一些事情:我尝试了不同的 latex 引擎,并使用 和 得到了相同的结果pdflatexlualatex但是,通过使用 然后latex将文件转换.dvi.pdfdvipdf我得到了分辨率更高的闪电。我注意到pdflatex,以及创建一个名为和 latex 的lualatex文件。由于在 期间我可以看到消息ulsy10.600pkulsy10.8000pkpdf-/lualatex

kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 ulsy10

我的假设是 600pk/8000pk 与用于字体的创建图像的分辨率有关。

在此处输入图片描述

所以我的问题是,是否有可能以某种方式控制分辨率并仍然使用pdf-/lualatex

答案1

对你的问题的简短回答是,对于像 ulsy 这样的位图字体,pdftex 使用的分辨率由变量定义\pdfpkresolution,在通常的默认配置中设置为 600。dvips 和包装器脚本 dvipdf 使用的分辨率由一行设置

D 8000

$TEXMF/dvips/config.pdf如果未通过命令行参数(例如)指定,则在文件中-D 8000。正如另一个答案所指出的,有一种 Type 1 版本的字体可以避免这些问题,但由于它是从 Metafont 输出自动跟踪的,所以轮廓有点粗糙。

低分辨率的问题部分源于 TeX 输出在 Postscript 级别被放大,而对于位图字体,这意味着放大现有像素,而不是使用更多像素。将分辨率设置为 8000 dpi 可以部分弥补这一点,但更好的解决方案是使用轮廓字体,或者在加载字体时使用 TeX 命令缩放字体,例如

\font\bigulsy=ulsy10 scaled 10000

或 LaTeX 中的等效方法,而不是缩放 PostScript。

答案2

我建议获取字体的 postscript 版本(来自https://ctan.org/tex-archive/fonts/ps-type1/ulsy),将 pfa 放入fonts/type1/public/ulsy/ulsy.pfa,将 map 文件放入fonts/map,运行 mktexlsr 并使用 updmap 激活 map 文件(或添加\pdfmapline命令)。

\documentclass{article}
\usepackage{graphicx}
%\pdfmapline{=ulsy10 ulsy < ulsy.pfa} %or activate the map file
\usepackage{ulsy}
\let\ulsyLightning\blitza

\begin{document}
        \resizebox{0.5\textheight}{!}{\ulsyLightning}
\end{document}

在此处输入图片描述

相关内容