无法在 groff -ms 中使用不同的字体系列

无法在 groff -ms 中使用不同的字体系列

我正在使用groffms并将其输出到 PostScript。在 Linux 上无效。我想要不同的字体并输出 Unicode 字符。我已经将我的字体转换为问题。正如所指定的,它对我有用(没有ms宏)。但它无法正确显示标题、作者和标题(不在中心,没有特殊格式)。

.ft linlibertine_rah
.TL
Title
.AU
Author
.NH
Heading
.PP
\[u1E6C]

输出到:

如果我使用该选项编译相同的文档-ms,我会得到一个带有“Times”字体且没有 Unicode 符号的文档(但格式正确):

在此输入图像描述

手册中指定groff_ms字体系列是用字符串指定的.FAM,但结果与用 相同.ft。它还输出到控制台:

troff: test.ms:9: warning: can't find special character 'u0054_0323'

它肯定已经检测到字体,因为.ft samplefont它输出:

troff: test.ms:1: warning: can't find font 'samplefont'
troff: test.ms:9: warning: can't find special character 'u0054_0323'

所以我的问题是:如何在宏中使用不同的字体groff系列ms

答案1

如果要使用FAM字符串来指定字体系列,则需要使用R B I BI带有罗马、粗体、斜体和粗斜体后缀的常规名称。在链接到的例子,字体系列是DejaVuSans,因此您需要提供字体DejaVuSansR, DejaVuSansB, DejaVuSansI, 和DejaVuSansBI。以下对我有用:

mkdir -p /tmp/font/devps
cd  /tmp/font/devps
convert(){ 
  from=${1?} to=${2?}
  ttf2pt1 -a -e "$1" "$2"
  afmtodit "$2".afm textmap "$2"
}
convert /usr/share/fonts/dejavu/DejaVuSans.ttf DejaVuSansR
convert /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf DejaVuSansB
convert /usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf DejaVuSansI
convert /usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf DejaVuSansBI
export GROFF_FONT_PATH=/tmp/font
groff -Tps -ms >text.ps <<\!
.ps 20
.vs 24
.ds FAM DejaVuSans
.TL
Title
.AU
Author
.NH
Heading
.PP
roman \[u1E6C]
.B "bold \[u1E6C]
.I "italic \[u1E6C]
.BI "bolditalic \[u1E6C]
!
gv text.ps

在此输入图像描述

相关内容