我正在尝试将带有一些中文字符的html转换为pdf,并且它们正在被切断。就好像中文字体需要2个罗马字母的空间,但只有一个。我试图渲染的文字:(周大鹏)įšėęčųū
我尝试使用Noto Sans CJK SC字体来渲染它,中国字形看起来很好,但是特殊的波罗的海字母会间隔很差。我尝试使用逗号分隔字体系列,例如:font-family: 'Noto Sans', 'Noto Sans CJK SC', sans-serif;
,但后面的字母间隔,或者中文字符会被剪切。
在网络中,一切看起来都很好,只有在生成PDF时才会发生这种情况。 我使用的是版本0.12.3的wkhtmltopdf。
答案 0 :(得分:0)
我遇到了正确渲染中文字符的问题,并使用.fonts.conf文件修复了它。
在CentOS上意味着添加一个稍微修改过的xml文件版本(下面):
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>
&#13;