我正在使用PostScript语言来描述一个均匀排列的点阵页面。这些点的分辨率为600dpi
,也就是说一英寸内有600个点。在PostScript中,我使用一位来表示每个点,1
代表空白,0
代表黑色点。
我的一个点阵单元的PostScript文件:
%% SetPageSize
/setPageSize {<</PageSize [595 842] >> setpagedevice} def
setPageSize
%% Dot Code
gsave
/mm {2.834645 mul} def
1 mm 1 mm translate
5.76 5.76 scale
48 48 1 [48 0 0 -48 0 48]
{<
fff7ff7ff7ff
ffffffffffff
ffffffffffff
fdffffffffff
ffffffffff7f
ffffffffffff
ffffffffffff
ffffffffffff
fffff7ffffff
fffffffdffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
ffffffffffff
ffffffffffff
ffffffffffff
fffefffffeff
ffffffffffff
f7ffffff7fff
ffffffffffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
fffffffdffff
fffff7ffffff
ffffffffffff
ffbfffffffff
ffffffffffff
fffffffffff7
ffffffffffff
ffffffffffff
ffffffffffff
7ff7ff7ff7ff
ffffffffffff
ffffffffffff
ffffffffffff
f7ffffffffff
ffffffffffff
fffffffffffb
ffffffffffff
ffffffff7fff
7fffdfffffff
ffffffffffff
ffffffffffff
>}
image
grestore
以上代码表示的是一个点单位,该单位在600dpi中为
2.03mm*2.03mm
。translate
用于将用户空间移动到所需位置,例如:假设一个单位在
(1mm, 1mm)
的位置。它的右边的单位在
(3.03mm, 1mm)
的位置。它的上方的单位在
(1mm, 3.03mm)
的位置。
scale
用于将输出的dpi更改为600。因子通过72*48/600 = 5.76
计算。矩阵
48 48 1 [48 0 0 -48 0 48]
垂直和水平扫描像素。最后的
image
结构表示点的二进制值,以十六进制编写。
这些点可以使用GhostScript或Adobe-Illustrator打开,并在监视器上显示得非常清晰和明显。
AI中放大4800%的样本点。
然而,打印的点会出现纹理条纹。我使用的打印机是喷墨打印机Cannon ip2780和激光打印机FX DocuPrint CP105b。
600dpi(激光)的打印结果。垂直纹理条纹比800dpi不明显。
800dpi(激光)的打印结果。垂直纹理条纹更加明显。第2、4、6行比第1、3、5行浅。尽管如此,点的密度应该是相同的。
有人能解释一下打印机的奇怪行为是如何发生的吗?或者我组成点单位的方法是错误的。
我能使用
translate
来频繁地移动用户空间,特别是位置为浮点数时(精度是否足够)?我能使用
scale
手动将dpi更改为600。有没有改变输入dpi的方法?
提前感谢!