gpt4 book ai didi

bash - 如何从 Linux 命令行获取字符串的显示宽度?

转载 作者:行者123 更新时间:2023-12-05 00:32:06 24 4
gpt4 key购买 nike

我正在编写一个 AWK 脚本,该脚本逐行处理文本文件、格式​​化它们并将它们填充到 SVG 文件文本字段中。 SVG 会自动处理文本换行,但我想预测每行的换行位置。 (我需要一些字符重复并延伸到行尾)。我知道文本字段的确切字体、字体大小和宽度。

在给定字符串、字体和字体大小的情况下,Linux 中是否有标准实用程序或 Ubuntu 中可以轻松获得以像素或英寸为单位的宽度?

例如:

get-width 'Nimbus Sans L' 18 "test string"
returns "x pixels"

最佳答案

您可以使用 ghostscript 解释器执行此操作,前提是您拥有它并且字体设置正确。

这是一个可能神秘的咒语:

gs -dQUIET -sDEVICE=nullpage 2>/dev/null - \
<<<'18 /NimbusSanL-Regu findfont exch scalefont setfont
(test string) stringwidth pop =='

使用 -dQUIET 可以抑制有关字体替换的警告,这可能不是一个好主意,直​​到您知道如何命名要查找的字体。

ghostscript 不是布局引擎,您可能会发现测量不适用于复杂的双向文本、组合字符或东亚语言。 (我用一点阿拉伯语测试了它,没问题,但不能保证。)它没有紧排,所以它通常会产生比好的布局引擎稍大的测量值,如果字体位置变音符号使用字距调整。

最后,如果您的文本包含不平衡的括号或反斜杠,您需要将它们转义。我使用以下内容:

"$(sed 's/[()\\]/\\&/g' <<<"$text")"

那是因为 Postscript 字符串包含在 (...) -- (test string) -- 并且允许包含平衡括号。不平衡的括号通常会产生语法错误,除非它们被反斜杠转义。

关于bash - 如何从 Linux 命令行获取字符串的显示宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com