Home
profile
User: [info]hisashim
Name: Hisashi Morita
page summary
calendar
Back December 2008
123456
78910111213
14151617181920
21222324252627
28293031
links
tags
    hisashim's Journal (2000-2008) - April 1st, 2007
    LaTeXでOpenTypeフォントを使うためのOTFパッケージのDebianパッケージを作ってみた。まだ怪しいけれど、一応インストールできて動作する。これがうまくいけば、新しいホスト上に編集制作環境を作るのが楽になるはず。

    http://www.kt.rim.or.jp/~hisashim/tmp/otf_1.2.8-1+0custom1.dsc
    http://www.kt.rim.or.jp/~hisashim/tmp/otf_1.2.8-1+0custom1.tar.gz

    容量がいっぱいなのでソースだけ。後で消す。消した(2007-06)。今後はこちらで: http://workbook.svn.sourceforge.net/viewvc/workbook/vendor/otf/

    ----

    Debianパッケージの作り方は、要するにこういう仕組みになっているらしい:オリジナルのソースに次の3つのファイルを追加してdebuild等で処理すると、パッケージが出来上がる。

    • debian/control : パッケージ情報が記述されたファイル(依存関係など)
    • debian/changelog : パッケージの変更履歴
    • debian/rules : インストール等の具体的な処理が記述されたスクリプト

    それぞれ普通のソフトウェアで言うREADME、ChangeLog、Makefile に相当するものらしい。守るべき規則や支援ツールが大量にあるので圧倒されて訳が分からなくなりがちだけど、どうやら基本はこれだけらしいことが分かった。

    煩雑なところは、最初にdh_makeに準備をしてもらえば楽ができる。

    おおまかな手順:

    1. パッケージ対象のソースツリーを用意する(foo-1.0/とする)
    2. foo-1.0内でdh_make foo-1.0と実行すると、debian/ディレクトリをはじめ、各種制御ファイルの雛型をよろしく用意してくれる
    3. foo-1.0/debian/controlにパッケージ名や依存関係などを書く
    4. foo-1.0/debian/changelogに変更履歴を書く
    5. foo-1.0/debian/rulesのinstallターゲットにインストール時の処理を書く
    6. その他の制御ファイルを編集したり、不要なものは削除したりする(例えば必要なディレクトリをdebian/dirsに書くなど)
    7. debuildその他のパッケージ構築ツールを実行する。うまくいけばパッケージが出来ているはず
    8. テストして不具合を直す。以下繰り返し


    注意点:
    • 実際の作業には、build-essentialsをはじめパッケージング用のツールがいろいろ必要なので、あらかじめインストールしておく。
    • 似たようなパッケージのソースパッケージを参考にすると楽(% sudo apt-get source baz)。今回は香田さんのvfdata-morisawa5を参考に見よう見真似で書いてみたら、パッケージのビルドに成功するところまでは割とすんなりできた。
    • パッケージはOSに変更を加えるのでテストが大変だけど、上川さん作のpbuilderを使うとかなり楽ができる。pbuilderは、chrootされたテスト環境の用意からそこでのパッケージのビルドまで、ほとんどの作業を自動化してくれる。sudo pbuilder build foo*.dsc として、あとは待つだけ。素晴らしい。
    • 正規のパッケージではないなどの理由で署名を省略したいときは、debuildに-us -ucオプションを付ける。dpkg-buildpackage(1)参照。
    • base systemを準備するときに1箇所でもダウンロードに失敗するとそこで全体が失敗するので、--mirrorオプションでミラーを一箇所に指定する。
        % sudo pbuilder create --mirror http://example.com/pub/linux/debian/debian

    Debianのパッケージシステムはコンベンションが膨大にあるので、できるところまでやったうえで詳しい人に聞くのがよさそう。

    ----

    vfdata-otfの使い方

    -- インストール
    % sudo dpkg -i vfdata-otf*.deb
    
    % sudo $EDITOR /etc/apt/sources.list
    % diff -u /etc/apt/sources.list.bak /etc/apt/sources.list
    -deb http://example.org/pub/linux/debian/debian sarge main
    +deb http://example.org/pub/linux/debian/debian sarge main contrib non-free
    % sudo apt-get update && sudo apt-get install cmap-adobe-japan1
    

    -- 設定
    % sudo $EDITOR /etc/texmf/texmf.d/50dvipdfmx.cnf
    % diff -u /etc/texmf/texmf.d/50dvipdfmx.cnf.bak /etc/texmf/texmf.d/50dvipdfmx.cnf
     %% READ /usr/share/doc/dvipdfmx/README.Debian for details:
    -% CMAPINPUTS = .;/usr/share/fonts/cmap/adobe-gb1//;/usr/share/fonts/cmap/adobe-cns1//;/usr/share/fonts/cmap/gs-cjk-resource//
    +CMAPINPUTS = .;/usr/share/fonts/cmap/adobe-japan1//;/usr/share/fonts/cmap/adobe-japan2//;/usr/share/fonts/cmap/adobe-gb1//;/usr/share/fonts/cmap/adobe-cns1//;/usr/share/fonts/cmap/gs-cjk-resource//
    

    -- テスト (OpenTypeフォントなしで可能なテスト)
    % $EDITOR test.tex
    % cat test.tex
    
    \documentclass{jbook} \usepackage{otf} \begin{document} OpenTypeフォントを使うためのOTFパッケージのテストです。 \end{document}
    % sudo $EDITOR /etc/texmf/dvipdfm/my-pseudo-otf.map % cat /etc/texmf/dvipdfm/my-pseudo-otf.map
    % Non-embedding font map, which works without actual font data. % Source: http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?OTF rml H Ryumin-Light rmlv V Ryumin-Light gbm H GothicBBB-Medium gbmv V GothicBBB-Medium hminr-h H Ryumin-Light hminr-v V Ryumin-Light otf-ujmr-h UniJIS-UTF16-H Ryumin-Light otf-ujmr-v UniJIS-UTF16-V Ryumin-Light otf-cjmr-h Adobe-Japan1-6 Ryumin-Light otf-cjmr-v Identity-V Ryumin-Light hgothr-h H GothicBBB-Medium hgothr-v V GothicBBB-Medium otf-ujgr-h UniJIS-UTF16-H GothicBBB-Medium otf-ujgr-v UniJIS-UTF16-V GothicBBB-Medium otf-cjgr-h Adobe-Japan1-6 GothicBBB-Medium otf-cjgr-v Identity-V GothicBBB-Medium
    % sudo mktexlsr % platex test.tex % dvipdfmx -f my-pseudo-otf test.dvi % acroread test.pdf &

    -- テスト (OpenTypeフォントを埋め込む)
    % sudo mkdir /usr/share/fonts/opentype
    % sudo cp HiraMinPro-W3.otf /usr/share/fonts/opentype
    ....
    % sudo ln -s /usr/share/fonts/opentype /usr/share/texmf/fonts/opentype
    % sudo ln -s /usr/share/texmf/fonts/ /usr/share/texmf/dvipdfm/fonts
    % sudo mktexlsr
    % kpsewhich -format "opentype fonts" HiraMinPro-W3
    
    % dvipdfmx -f hiraginox test.dvi
    

    注意点:

    • dvipdfmxは/usr/share/texmf/fonts/を見ないらしい。/usr/share/texmf/dvipdfm/以下なら認識するようなので(kpsewhich -progname dvipdfm -show-path "opentype fonts"すると末尾が//になっている)、適当な名前でsymlinkしてmktexlsrする。その後kpsewhichで確認。
    • sargeの古いkpsewhichは"opentype fonts"というformatを認識しないので、新しいものをインストールするか、"other binary files"で調べる。

    ----

    Todo:

    • Warningをなんとかする
      W: otf source: out-of-date-standards-version 3.6.1 (current is 3.7.2)
      W: otf source: native-package-with-dash-version

      すいません。

      そもそもsargeじゃなくetchにすべきだったかも。
      2つめのはorig.tar.gzを用意すれば消えそうだけど、そんな理由でオリジナルをrepackするのは気が進まない。
      あと野良パッケージのお作法が分からない。パッケージ名とかバージョン番号とか。

    • オリジナルからのパッケージ作成
      Debianのtetexに含まれるovp2ovfが新しすぎて、齋藤さんが配布しているオリジナルのOTFパッケージからはOFMを生成できない(1.1ならOKだけど2.0ではNG)。
      Bug#229184: tetex-bin: ovp2ovf does not work at all
      http://www.mail-archive.com/debian-tetex-maint@lists.debian.org/msg05574.html

      今は生成済みのVF/TFM/OFMが含まれている角藤版ディストリビューションをもとにして回避している。

    • install/remove/purgeする前後の状態を比較したい
      何かあるはずなんだけどうまい方法が分からない。今はディレクトリを指定してdiffを手で実行している。

    • パッケージのビルドに時間がかかる
      ソースツリーに大量のVF/TFM/OFMが含まれるので、gzip圧縮に十数分かかる。コンパイルする訳でもないのに。でもこれはどうにもならないかも。

    資料:

    http://www.debian.org/doc/debian-policy/
    http://debian.or.jp/Documents.obsoleted/Documents_ja/debian-policy/

    やまだあきら著、鵜飼文敏監修『入門Debianパッケージ』(技術評論社、2006)

    http://psitau.at.infoseek.co.jp/otf.html
    http://www.fsci.fuk.kindai.ac.jp/%7Ekakuto/win32-ptex/web2c75.html
    http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?OTF
    http://packages.debian.org/unstable/tex/vfdata-morisawa5

    Advertisement