我正在尝试将带有一些中文字符的html转换为pdf,但它们被切断了。这就好像中文字体需要两个罗马字母的空间,但实际上只有一个。我正在尝试呈现的文本:(周大鹏)įšėęčųū
看看它是什么样子:

我试过使用Noto Sans CJK SC字体来渲染这个字体,中文字形看起来不错,但是特殊的波罗的海字母会出现很大的间距。我试着指定用逗号分隔的字体系列,比如:font-family: 'Noto Sans', 'Noto Sans CJK SC', sans-serif;,但是要么字母被隔开,要么中文字符被截断。
在web中,一切看起来都很好,只有在生成PDF时才会发生这种情况。我使用的是wkhtmltopdf的0.12.3版。
发布于 2017-01-12 02:23:15
我在正确渲染中文字符时遇到了问题,并使用.fonts.conf文件修复了它。
https://wiki.debian.org/Fonts#Subpixel-hinting_and_Font-smoothing
我是在这里发现的:
https://github.com/wkhtmltopdf/wkhtmltopdf/issues/45#issuecomment-34543222
到/etc/fonts/conf.d/文件夹。我将文件命名为10-wkhtmltopdf.conf,以便首先加载它。
xml文件已更改为将'hintstyle‘设置为'hintfull’,而不是'hintslight‘。
此.fonts.conf文件还有助于修复字体字距调整问题。
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintfull</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
</fontconfig>
https://stackoverflow.com/questions/37455349
复制相似问题