web-dev-qa-db-ja.com

groff -msで異なるフォントファミリを使用できない

groffmsマクロを使用して、PostScriptに出力しています。 LinuxVoidの場合。別のフォントを使用して、Unicode文字も出力したい。 this の質問に書かれているようにフォントを変換しました。指定されたように、それは私のために働きました(msマクロなしで)。それでも、タイトル、著者、見出しは正しく表示されません(中央ではなく、特別なフォーマットもありません)。

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

出力先:

-msオプションを使用して同じドキュメントをコンパイルすると、「Times」フォントがあり、Unicodeシンボルが含まれていない(ただし、適切にフォーマットされている)ドキュメントが表示されます。

enter image description here

フォントファミリーは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に別のフォントファミリを使用するにはどうすればよいですか?

4
zoomer

FAM文字列を使用してフォントファミリーを指定する場合は、ローマ字、太字、斜体、および太字斜体の接尾辞R B I BIを付けた従来の名前を使用する必要があります。リンク先 では、フォントファミリはDejaVuSansだったので、フォントを提供する必要がありますDejaVuSansRDejaVuSansBDejaVuSansI、および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

enter image description here

2
meuh