![设置本地创建字体的 dpi](https://linux22.com/image/393782/%E8%AE%BE%E7%BD%AE%E6%9C%AC%E5%9C%B0%E5%88%9B%E5%BB%BA%E5%AD%97%E4%BD%93%E7%9A%84%20dpi.png)
我正在寻找闪电符号并偶然发现了这篇文章:
我喜欢该软件包中的闪电符号ulsy
(来自第二个答案),并尝试使用它。第一个问题是 texlive 不附带此软件包。因此,我从 CTAN 下载了它,并按照说明创建了和文件Uulsy.fd
。ulsy.sty
(我只在本地使用这些文件,因为我打算将它们集成到我的 overleaf 项目中,据我所知,该项目不支持安装自定义字体。)
我的实际问题是,当我在文档中使用它时,我只得到低分辨率的闪电,特别是当我增加尺寸时(例如使用scalebox
或resizebox
)。
\documentclass{article}
\usepackage{graphicx}
\usepackage{ulsy}
\let\ulsyLightning\blitza
\begin{document}
\resizebox{0.5\textheight}{!}{\ulsyLightning}
\end{document}
我注意到一些事情:我尝试了不同的 latex 引擎,并使用 和 得到了相同的结果pdflatex
。lualatex
但是,通过使用 然后latex
将文件转换.dvi
为.pdf
,dvipdf
我得到了分辨率更高的闪电。我注意到pdflatex
,以及创建一个名为和 latex 的lualatex
文件。由于在 期间我可以看到消息ulsy10.600pk
ulsy10.8000pk
pdf-/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}