偽書

authenticities.

ノートテイキングの話、あるいはXournal++の布教と日本語対応

昨年入学し、最悪のタイミングで通信制大学生をやっているわけだが、授業資料はたいていPDFで配布される。このPDFに書き込む形でメモを取るために、いいアプリを探していた。

自分は普段Linuxのデスクトップで暮らし、サブ機のSurface (Windows 11)をノートテイキングに使っている。このため、以下の条件を策定してアプリを探した。

条件からして、PDFビューアかノートアプリのいずれかに絞られる。授業資料から独立した形でノートを取ることがあまりないカスの学生なので、書き込みさえできればPDFビューアでもかまわなかった。

遍歴・比較

Adobe Acrobat Reader

項目 対応
PDF
Windows
ペン
フリー
他対応OS
OSS ×

誰もが一度は使ったであろうメジャーなやつ。ただUIがなんか鬱陶しく、書き味も微妙なので早々にさよなら。

Microsoft Edge

項目 対応
PDF
Windows
ペン
フリー
他対応OS
OSS ×

PDFにペンで書き込む機能がある面白いブラウザ。Windowsビルトインなので特段のインストールも必要ない(最近はLinux版まであるらしい)。でもこのためだけに使うかというと……

それにお前はChromium側に逃げたしな

Drawboard PDF

項目 対応
PDF
Windows
ペン
フリー
他対応OS
OSS ×

www.drawboard.com

じつは長らくこれを使っていた。普通のプロプライエタリソフトウェアだが、閲覧と書き込みだけなら無料だし、UIもわりといい感じ、ペンの感触も良好だったので。

ただ最近になってやたら保存の際にクラッシュするようになったり、謎のアカウントとクラウドサービスが導入されたりと改悪が続いたので、心に少しずつ闇を溜め込みはじめていた。

Xournal++(Xournalpp)

項目 対応
PDF
Windows
ペン
フリー
他対応OS
OSS

github.com

そこで本日の主役であるこれに目をつけた。

それなりに昔からある(らしい?)オープンソースのノートアプリで、以前からLinux向けに名前を聞いてはいたが、Windows版があることは知らなかった。ここからダウンロードできる。あるいはOSSゆえに自力でビルドすることもできる。

使ってみる

単なるPDF注釈機能を期待している人々には申し訳ないが、あくまでノートアプリであるため、PDFだろうが何だろうが独自のノート形式(.xopp)で保存することになる。ただしPDFを読み込んだり、ノートをPDFとして出力したりすることは可能だ。なお、一度PDF形式で出力すると、過去に書き込んだ内容はすべて統合されてしまうことに注意。

感覚として一番近いのはOneNoteかもしれない。ただ、OneNoteでPDFを扱うにはいちいちノートブックに読み込む必要があり、簡便さという意味では直接開ける(拡張子との関連付けができる)こちらに分がある。

入力はテキスト配置・手書き入力が可能で、ペンに関しては(少なくともSurfaceの場合)筆圧も感知してくれる。さらに、Surface Penの後ろの部分(消しゴム用途が想定されている領域)が消しゴムとして機能する。これにはちょっと驚いた(プロプライエタリソフトでも対応していないものがあるため)。

f:id:wowo_fishlife:20220120185443p:plain
これはLuaLaTeXで生成した「モダンな」PDF

その他、画像挿入やLaTeX式の挿入なども可能。

f:id:wowo_fishlife:20220120183712p:plain
これはLinux上で試した(WindowsLaTeXなんぞ入れていないので!)

f:id:wowo_fishlife:20220120184236p:plain
何がおもろい

日本語PDF対応

ところでこのアプリケーション、開発陣に欧米出身者しかいないらしく、多言語対応はあまりよくない。べつにメニューが英語表示であるぶんには一向にかまわないのだが、インストール時の状態では漢字・かなを含むPDFの一部が表示できないというかなり重大な問題があった(大半のモダンなPDFは表示できる1)。

f:id:wowo_fishlife:20220120162719p:plain
悲しい空白

(画像のPDFはGoogleで検索して適当に取得したもの2

たいていの場合この手の問題はインターネットの玉石混淆の集合知が解決してくれるのだが、そもそも東アジアのユーザ自体が少ないようで、GitHubのissueやら何やらを当たっても情報がない。ただ幸いにして、以前似たような現象を経験したことがあったのでどうにかなった。結論からいうと、poppler-dataの欠落による不具合だった。以下に対策を書いておく。

そもそもpoppler/poppler-dataって何

Poppler - Wikipedia

Popplerとは、PDF ドキュメントの閲覧に用いられるフリーのプログラミングライブラリである。freedesktop.org によって管理されている。(中略) cairoを描画バックエンドに用いているため、アンチエイリアス処理がなされたベクターイメージと透過オブジェクトを使用することが出来る。cairoはX Window Systemを必要としないので、PopplerはMicrosoft WindowsMac OSのような、X.Org Serverがプレインストールされていないプラットフォーム上でも動かすことが出来る。

一方のpoppler-dataは……

packages.debian.org

This package provides the CMap tables required to display PDF documents containing CJK characters with libpoppler. They were previously provided by the packages cmap-adobe-{cns1,gb1,japan1,japan2,korea1} and gs-cjk-resource.

Users who want to view or create PDF files in Chinese, Japanese, or Korean without embedded fonts will need this package.

ではCMapとは何かというと……

www.morisawa.co.jp

フォントが持つそれぞれの文字と、文字コードを結びつけるための対応表のことです。

要するに、CJK文字は色々とややこしい。

実は以前、メインのArch LinuxマシンのZathuraというPDFビューアで全く同じ現象に遭遇したことがあった。そのときもpoppler-dataを入れたら解決したので、ひょっとして今回も、と疑ったわけである。

ライブラリ探し

問題の目星はついているといえ、実際にXournal++がpopplerを使っているか確認しないことには始まらない。そういうわけで、まずはどのライブラリを使っているのか探してみる。ソースコードを読むのが確実なのだろうが、あいにくC++力(ぢから)はほぼないうえ、結局poppler-dataをインストールするためにはディレクトリ構造を探らねばならないため、とりあえずXournal++がインストールされているディレクトリ(C:\Program Files\Xournal++\)を見てみる。

f:id:wowo_fishlife:20220120191559p:plain
いつもの

ありがちなディレクトリ構成だ。つづいてC:\Program Files\Xournal++\bin\以下。

f:id:wowo_fishlife:20220120191616p:plain
みっけ

実行ファイルとライブラリはここにあるらしい。それらしきものを見つけたので、popplerが使われているのは間違いないだろう。ちなみにC:\Program Files\Xournal++\lib\以下にはGTK関連の画像操作ライブラリしか入っていなかった。

インストール

さて、この時点でpoppler-dataを入れればよいことはほぼ明らかになったが、肝心のインストールすべき先がわからない。残りのC:\Program Files\Xournal++\share\ディレクトリを見てみる。

f:id:wowo_fishlife:20220120191640p:plain
これはインストール後

結果的にここが正解なのだが、当初はglib-2.0だの何だのが入っているだけで、どうなっているのかわからなかった。

ここでヒントを得るため、メインのLinuxマシンのディレクトリ構成を見てみる。

f:id:wowo_fishlife:20220120154230p:plain
みっけ

すると見ての通り、/usr/share/以下にpoppler(という名のpoppler-data)とglib-2.0がある。ん?

だとすれば、C:\Program Files\Xournal++\share\以下にpoppler-dataを入れてやればよさそうだ。Popplerのプロジェクトページからpoppler-data-0.4.11.tar.gzを落としてきて、解凍する。

tar -xzf poppler-data-0.4.11.tar.gz

(最近のWindowsにはtarコマンドが付属している)

解凍されたpoppler-data-0.4.11ディレクトリ以下は単なるデータの集まりで、特段のビルドは必要ない(参照)。

f:id:wowo_fishlife:20220120151948p:plain
Makefile

付属のMakefileもただinstallをするだけのようなので、(本来なら丁寧にコピーすべきところだが)ディレクトリごとリネームして突っ込んでみる。すなわち、poppler-data-0.4.11C:\Program Files\Xournal++\share\popplerとする。動くやろ!(乱暴)

f:id:wowo_fishlife:20220120162741p:plain
表示できた

本当に表示された

感想

CJK文字には厄介事が付きまとうのでつらい。中国語が覇権言語ならこんなことにはならないのに

ところでこういうのってissueを立てたほうが良いんですかね。まあ気が向いたらやります。


  1. このへんの基準はかなり謎で、最近のPDFでも表示できないものは表示できない。違いがあるとすればフォントの埋め込みの有無あたりだろうか。

  2. 記号論理学 pdf」で検索して最上位に出たもの(https://abelard.flet.keio.ac.jp/person/mitsu/pdf/nyumon_logic.pdf