PDFのビルド #3320
Replies: 7 comments
|
文字が"####"のようになるのは、Apache-FOPはフォントで使用できるフォントがなかったためです。英語に比べて日本語のフォントの埋め込みはややこしいです。 使用候補のフォントはstylesheet-fo.xmlに入れています。 <xsl:param name="title.font.family" select="'YuGothic,Meiryo,MS-PGothic,Hiragino Kaku Gothic ProN,Gen Shin Gothic P,TakaoPGothic'"/>
<xsl:param name="body.font.family" select="'YuMincho,Meiryo,MS-PMincho,Hiragino Mincho ProN,Serif,Gen Shin Gothic P,TakaoPMincho'"/>
<xsl:param name="monospace.font.family" select="'Osaka-mono,MS-Gothic,Gen Shin Gothic Monospace,TakaoGothic'"/>
<xsl:param name="symbol.font.family" select="'Osaka-mono,MS-Gothic,Gen Shin Gothic P,TakaoPGothic'"/>
<xsl:param name="dingbat.font.family" select="'YuGothic,Meiryo,MS-PGothic,Hiragino Kaku Gothic ProN,Gen Shin Gothic P,TakaoPGothic'"/>Ubuntu 22だと使用できるフォントととして、TakaoPGhothic/MinchoとGen Shin Gothic があります。Gen Shin Gothic はパッケージにないので、https://github.com/pgsql-jp/pgsql-jp.github.io/tree/master/scripts/fonts にコピーしています。こっからダウンロードして、 cp ~/.fonts/
fc-cache -f -vでもいけます。 stylesheet-fo.xml にインストールされているフォントを指定すれば変更できますが、OpenType CFF fontが使えなかったりします。 PDFのビルドは https://github.com/pgsql-jp/pgsql-jp.github.io/blob/master/.github/workflows/main.yml も参考にしてください。 https://github.com/pgsql-jp/jpug-doc/wiki/PDF%E7%89%88%E4%BD%9C%E6%88%90%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E8%A8%AD%E5%AE%9A にカスタマイズについて書いています。 |
|
詳しい説明ありがとうございます。追加で質問です。
stylesheet-fo.xmlは当方には存在せず、stylesheet-fo.xlsならありました。 stylesheet-fo.xlsの中に、 質問の背景としては、本家ではドキュメントのPDFビルドが基本ASCII+LATIN1になっていて、なぜLATIN1以外のUnicode文字が利用できないか、ということが議論されていて、 とあるように、ドキュメントのレンダリングエンジンが(LATIN1を除き)UTF-8をサポートしていないから、とあり、これは違うのではないか、と思ったからです。rendering enginesが何を指すのか明確ではありませんが、斉藤さんの説明を伺って、engineというか、ツールやプログラムの問題ではなく、フォントとフォント設定の問題ではないかという確信が深まりました(間違っていたらご指摘ください)。 |
すみません。stylesheet-fo.xslでした。。
これはDocbookの本文以外の対応、 Chapter -> 章、 table of contents -> 目次 等の日本語化をするためです。
SGMLのときにはTex経由でPDFを作る経路があって、これはツールの入れ替えが必要になったのですが、DocbookのXMLの処理系とApache-FOPで処理されるようになってからは、おっしゃるとおりツールの問題はなくフォントと設定の問題です。 ただ、フォントと設定に制限が大きく、複数フォントを指定フォールバックさせようとすると難があったと思うので、複数言語を混ぜるのは難しいように思いました。 例えば、Apache-FOPはシステムに入っているフォントを使用できるようになっているのですが、フォントを指定しないとぜんぜん探せないので、最初の問題のように####になります。 なのでLATIN1以外の出力をしたくてフォントの指定を追加すると、今度は日本語のフォントが弾き飛ばされることも起こりえるのが現状だと思います。 |
なるほど。Apache-FOPを使っている限りはなかなか難しいのですね。 |
|
ついでの質問で申し訳ありませんが、PDFのビルドではなく、htmlの生成だけを考えたら、Apache-FOPの問題は関係なくなり、今の本家のMakefileでも日本語も含めて非ASCIIのUTF-8が使えると理解しているのですが、合っていますでしょうか?もちろんhtmlを表示するブラウザには適切なフォントがセットされている前提です。 |
|
はい。HTMLはUTF-8で制限ないはずです。 |
|
閉じるのももったいないのでDiscussionsに移動しました。 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
重要度
低
問題点
問題点と言うより質問ですが、PDFのビルド環境ってどうやって作るのでしょうか?普通にmake postgres-A4.pdfとかやると、以下のようなエラーメッセージがたくさん出て、PDFのページ内容は"####..."になっているところ多数になってしまいました。
環境は、Ubuntu 22です。もちろんオリジナル(英文)のPDFは正常にビルドできています。
背景
No response
解決方法
No response
注意点
No response
貢献者として記載可否
記載(貢献者欄に書いてください)
貢献者名
No response
All reactions