使用reportlab仅缩放字体宽度,同时保持字体高度相同

问题描述 投票:0回答:1

我正在使用 Python 和 reportlab 生成 PDF。我想从字体 CourierCondensed 切换到缩放 90% 的 Courier 字体。但是,我只想缩放字体宽度,同时保持字体高度相同。

这就是我的段落样式:

scale_factor = 1.0
my_style= ParagraphStyle(
    name=font_name,
    parent=my_parent,
    fontName=font_name_string,
    fontSize=font_size*scale_factor,
    leading=font_size)

这是我使用 CourierCondensed 时的输出:

如果我使用 Courier 缩放 90%(即,如果scale_factor 设置为 0.9),这是输出:

人们可以注意到第二张图片显示的文本边距要小得多。因此,我想保持字体的初始高度,以避免边距发生很大的变化。

任何帮助或指示将不胜感激。

python fonts reportlab font-scaling
1个回答
0
投票

Courier 专为双矢量/光栅使用而设计,无需改变比率,在这里我们可以看到,当转换为屏幕像素时,它们在名义上的 12pt 下很清晰,但是 Courier New 和 Courier Condensed 的表现就不太好。如果您不成比例地缩放字体指标,您最多会得到糟糕的屏幕位置或模糊的字母。

最好看看正常的字体比例是否足够,而不是稍后添加潜在的失真。

如果您确实必须重新缩放,最好在整个文件上使用可编程方法来完成此操作(这应该按相同的比例缩放像素容器),因此最好的方法可能是让页面的正常宽度为 111.111%,然后运行,

cpdf -scale-page "0.9 1.0" in.pdf -o out90%wide.pdf

© www.soinside.com 2019 - 2024. All rights reserved.