Ghostscript
在 Ghostscript / Postscript 中查找字型下降的大小(以磅為單位)?
我想在一些文本的正下方放置一條水平線。是否可以確定 Ghostscript 中給定字型的基線和最低下降線之間的距離,或者下降線長度只是某些字元的屬性並且只能通過肉眼找到偏移量?
在下面的範例中,moveto 命令將 20pt 文本從圖形的上邊緣移動到 20 點,一條長度為 20 點的垂直線(包括用於比較)看起來對應於字型的基線。
gs -q -o test.pdf -sDEVICE=pdfwrite -dDEVICEWIDTHPOINTS=200 -dDEVICEHEIGHTPOINTS=100 -c “newpath 27 80 moveto 27 100 lineto 0.5 setlinewidth stroke /Helvetica findfont 20 scalefont setfont 3 80 moveto (gijlpqy) show showpage”
如果您想在給定字元串的下降線下方畫線,您可以使用
pathbbox
ridgy 在問題評論中提供的連結,但如果您想要與基線保持恆定距離,則必須使用字型邊界FontBBox
框是一個包含字型所有字元的矩形。您需要按字型的
FontMatrix
. 您可以在jcomeau_ictx的這個stackoverflow答案中找到執行此操作的程式碼,並在下面複製。將此定義添加到 PostScript 程式碼的開頭:/descender { currentfont dup /FontBBox get % [llx lly urx ury] 1 get % lower-left-y exch /FontMatrix get % [...] 3 get % yscale mul } def
並在您的操作員之後使用它
show
。它將從基線到字型邊界框下邊緣的 y 距離放到堆棧上。只需在此處添加您的線條圖程式碼,例如:descender 0 exch rmoveto -100 0 rlineto stroke