【发布时间】:2021-03-03 16:05:03
【问题描述】:
我正在尝试计算字体中字符串的长度。目标是创建如下文本:
DD Qui n'a pu l'obtenir ne le méritait pas.
LC Ne le méritait pas! Moi?
DD Vous!
LC Ton impudence
Téméraire vieillard, aura sa récompense
使用固定字体(如上),这很容易。对于比例字体,我可以使用以下方法对前一行长度进行可接受的近似:
use Tk;
use Tk::Font;
my $mw = MainWindow->new();
my $font = $mw->fontCreate( 'TimesNew Roman' );
sub timesspace {
(my $text)=@_;
my $retval= $font->measure( $text );
return int($retval);
}
(一个合理的估计,因为 Tk 字体与输出处理器的字体并不完全相同)。
然而,这需要一个图形环境(因为我创建了一个 Tk 窗口),尽管所有脚本都只是 CLI。这导致:
couldn't connect to display "localhost:11.0" at /usr/local/lib64/perl5/Tk/MainWindow.pm line 53.
MainWindow->new() at /usr/local/bin/xml3roff line 10.
有没有一种可靠且简单的方法可以在 Times/Helvetica/... 中找到字符串的长度而不需要这样的环境?
【问题讨论】: