我正在使用groff
宏ms
并将其输出到 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