23 April 2014

(Ubuntu 14.04) フォントの上端表示が消えるFreeType2.5のバグ回避

Ubuntu 14.04で採用されているFreeType version 2.5には、フォント上端表示が欠ける場合があるバグがある。

このバグについては、FreeType公式バグレポート『bug #39342: Rendering stroke gives a cutoff』や、Ubuntuのバグレポート『特定のフォントで文字が欠けて表示される』で報告済みで、いまのところ未解決の問題だ。

1つ前のバージョン Ubuntu 13.10のFreeType version 2.4では問題ないそうなので、そちらのファイルに無理やり入れ替えてみることにする。

パッケージファイルのダウンロード

パッケージファイル配布サイトのhttp://ftp.jaist.ac.jp/ubuntuより、パッケージ名を得る

・Ubuntu 14.04のパッケージファイル一覧

http://ftp.jaist.ac.jp/ubuntu/dists/trusty/main/binary-i386/Packages.gzより

Package: libfreetype6
Priority: optional
Section: libs
Installed-Size: 877
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Steve Langasek <vorlon@debian.org>
Architecture: i386
Source: freetype
Version: 2.5.2-1ubuntu2
Depends: libc6 (>= 2.11), libpng12-0 (>= 1.2.13-4), zlib1g (>= 1:1.1.4)
Pre-Depends: multiarch-support
Filename: pool/main/f/freetype/libfreetype6_2.5.2-1ubuntu2_i386.deb
Size: 300042
MD5sum: 834fa897acbf735d95156e8f8a50241b

・Ubuntu 13.10のパッケージファイル一覧

http://ftp.jaist.ac.jp/ubuntu/dists/saucy/main/binary-i386/Packages.gzより

Package: libfreetype6
Priority: optional
Section: libs
Installed-Size: 851
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Steve Langasek <vorlon@debian.org>
Architecture: i386
Source: freetype
Version: 2.4.12-0ubuntu1
Depends: libc6 (>= 2.11), zlib1g (>= 1:1.1.4)
Pre-Depends: multiarch-support
Filename: pool/main/f/freetype/libfreetype6_2.4.12-0ubuntu1_i386.deb
Size: 350860
MD5sum: 3006f6b4ec0fbdafded9de1930e921d9

debパッケージファイルのダウンロード

wget http://ftp.jaist.ac.jp/ubuntu/pool/main/f/freetype/libfreetype6_2.5.2-1ubuntu2_i386.deb
wget http://ftp.jaist.ac.jp/ubuntu/pool/main/f/freetype/libfreetype6_2.4.12-0ubuntu1.1_i386.deb

debパッケージの展開と、ファイル入れ替え、debパッケージ再作成

赤字の部分が、ファイルの強制的入れ替え(ファイル名を変えて単純上書きコピー)の部分。コピー後に2.5/DEBIAN/md5sumsの中のMD5ハッシュ値をコピーしたファイルのものに書き換えておく。

mkdir 2.5
mkdir 2.5/DEBIAN
mkdir 2.4
mkdir 2.4/DEBIAN
 
fakeroot dpkg-deb --extract libfreetype6_2.5.2-1ubuntu2_i386.deb ./2.5
fakeroot dpkg-deb --extract libfreetype6_2.4.12-0ubuntu1.1_i386.deb ./2.4
fakeroot dpkg-deb --control libfreetype6_2.5.2-1ubuntu2_i386.deb ./2.5/DEBIAN
fakeroot dpkg-deb --control libfreetype6_2.4.12-0ubuntu1.1_i386.deb ./2.4/DEBIAN
 
cp ./2.4/usr/lib/i386-linux-gnu/libfreetype.so.6.10.1 ./2.5/usr/lib/i386-linux-gnu/libfreetype.so.6.11.1
 
fakeroot dpkg-deb --build ./2.5 libfreetype6_2.5.2-1ubuntu2_i386.deb
 
dpkg-deb: 警告: './2.5/DEBIAN/control' がユーザ定義のフィールド 'Original-Maintainer' を含んでいます
dpkg-deb: 警告: dpkg-deb: コントロールファイルの 1 個の警告を無視します
 
dpkg-deb: `libfreetype6_2.5.2-1ubuntu2_i386.deb' にパッケージ `libfreetype6' を構築しています。

debパッケージの(上書き)インストール

sudo dpkg -i libfreetype6_2.5.2-1ubuntu2_i386.deb

参考記事

この作者も、同じ方法で無理やり解決しているみたいだ (笑
Ubuntu 14.04 の文字が欠けるバグを何とかしてみた