2014-05-05

【備忘録】Microsoft's TrueType Core Fonts on Linux

Linux の X Window 上で、Microsoft Windows の True Type Font が使えれば。。。、という以前の記事(下記)のアップデートです。

これは Microsoft がインターネット上で公開していた True Type Font(英文用のみ)を利用して Linux の RPM パッケージを作成するための spec ファイルを公開しているプロジェクトサイトです。

  1. Smart package of Microsoft's core fonts | Free software downloads at SourceForge.net
  2. Microsoft's TrueType core fonts on rpm based systems

Fedora の場合は、下記のパッケージが予めインストールされている必要があります。

  • rpm-build
  • wget
  • ttmkfdir

試しに自分の環境で上記パッケージをインストールしようとすると下記のようになります。

$ su
パスワード:
# yum install rpm-build wget ttmkfdir
読み込んだプラグイン:langpacks
Dropbox                                                  |  951 B     00:00     
google-chrome                                            |  951 B     00:00     
rpmfusion-free-updates                                   | 3.3 kB     00:00     
rpmfusion-nonfree-updates                                | 3.3 kB     00:00     
updates/20/x86_64/metalink                               | 4.8 kB     00:00     
パッケージ rpm-build-4.11.2-2.fc20.x86_64 はインストール済みか最新バージョンです
パッケージ wget-1.14-12.fc20.x86_64 はインストール済みか最新バージョンです
パッケージ ttmkfdir-3.0.9-40.fc20.x86_64 はインストール済みか最新バージョンです
何もしません
# 

あとは spec ファイルをダウンロードして、自分でビルドしてインストールするだけです。ところが最新の spec ファイルは上記のプロジェクトサイド [1] の Files には無く、プロジェクトの Web サイト [2] のリンクから入手するようになっています(もっと言えば、このファイルは Web サイトと同じディレクトリにあります)。このファイルを msttcorefonts-2.5-1.spec という名前で適当な場所へ保存します。なお、rpmbuild コマンドでビルドするデフォルトの spec ファイルの保存場所は、$HOME/rpmbuild/SPECS になります。

ダウンロードした spec ファイルから RPM パッケージをビルドするには以下のようにします(Fedora 20 の場合)。

$ cd rpmbuild/SPECS
$ rpmbuild -ba msttcorefonts-2.5-1.spec
警告: %changelog に偽の日付: Fri Aug 25 2001 Daniel Resare 
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.g0ZA7m
+ umask 022
+ cd /home/bitwalk/rpmbuild/BUILD
+ mkdir -p msttcorefonts/downloads
+ cd msttcorefonts/downloads
+ mirrors=aarnet+cdnetworks-kr-1+citylan+dfn+freefr+garr+heanet+hivelocity+ignum+internode+iweb+jaist+nchc+netcologne+space+superb-dca2+superb-dca3+superb-sea2+switch+tenet+ufpr+voxel+waix
+ mirror_count=23
+ andale32_md5='cbdc2fdd7d2ed0832795e86a8b9ee19a  andale32.exe'
+ arial32_md5='9637df0e91703179f0723ec095a36cb5  arial32.exe'
+ arialb32_md5='c9089ae0c3b3d0d8c4b0a95979bb9ff0  arialb32.exe'
+ comic32_md5='2b30de40bb5e803a0452c7715fc835d1  comic32.exe'
+ courie32_md5='4e412c772294403ab62fb2d247d85c60  courie32.exe'
+ georgi32_md5='4d90016026e2da447593b41a8d8fa8bd  georgi32.exe'
+ impact32_md5='7907c7dd6684e9bade91cff82683d9d7  impact32.exe'
+ times32_md5='ed39c8ef91b9fb80f76f702568291bd5  times32.exe'
+ trebuc32_md5='0d7ea16cac6261f8513a061fbfcdb2b5  trebuc32.exe'
+ webdin32_md5='230a1d13a365b22815f502eb24d9149b  webdin32.exe'
+ verdan32_md5='12d2a75f8156e10607be1eaa8e8ef120  verdan32.exe'
+ wd97vwr32_md5='efa72d3ed0120a07326ce02f051e9b42  wd97vwr32.exe'
+ download_files='andale32.exe arial32.exe arialb32.exe comic32.exe courie32.exe georgi32.exe impact32.exe times32.exe trebuc32.exe webdin32.exe verdan32.exe wd97vwr32.exe'
+ failures=0
+ set_mirror
+ local r m
++ expr 17518 % 23 + 1
+ r=16
++ echo aarnet+cdnetworks-kr-1+citylan+dfn+freefr+garr+heanet+hivelocity+ignum+internode+iweb+jaist+nchc+netcologne+space+superb-dca2+superb-dca3+superb-sea2+switch+tenet+ufpr+voxel+waix
++ cut -d+ -f16
+ m=superb-dca2
+ mirror=http://superb-dca2.dl.sourceforge.net/project/corefonts/the%20fonts/final/
+ for f in '$download_files'
+ check_file andale32.exe
+ matches=
+ '[' '!' -r andale32.exe ']'
+ echo 'andale32.exe does not exist'
andale32.exe does not exist
+ return
+ '[' '!' ']'
+ download http://superb-dca2.dl.sourceforge.net/project/corefonts/the%20fonts/final/ andale32.exe
+ wget --timeout=5 -O andale32.exe http://superb-dca2.dl.sourceforge.net/project/corefonts/the%20fonts/final/andale32.exe
--2014-05-05 12:28:40--  http://superb-dca2.dl.sourceforge.net/project/corefonts/the%20fonts/final/andale32.exe
Resolving superb-dca2.dl.sourceforge.net (superb-dca2.dl.sourceforge.net)... 209.61.193.20
Connecting to superb-dca2.dl.sourceforge.net (superb-dca2.dl.sourceforge.net)|209.61.193.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 198384 (194K) [application/octet-stream]
Saving to: 'andale32.exe'

100%[======================================>] 198,384      178KB/s   in 1.1s   

2014-05-05 12:28:42 (178 KB/s) - 'andale32.exe' saved [198384/198384]

+ check_file andale32.exe
+ matches=
+ '[' '!' -r andale32.exe ']'
++ basename andale32.exe .exe
+ local variable_name=andale32_md5
+ local stored_checksum
+ eval 'stored_checksum=$andale32_md5'
++ stored_checksum='cbdc2fdd7d2ed0832795e86a8b9ee19a  andale32.exe'
++ md5sum andale32.exe
+ local 'computed_checksum=cbdc2fdd7d2ed0832795e86a8b9ee19a  andale32.exe'
+ '[' 'cbdc2fdd7d2ed0832795e86a8b9ee19a  andale32.exe' = 'cbdc2fdd7d2ed0832795e86a8b9ee19a  andale32.exe' ']'
+ matches=yes
+ '[' '!' yes ']'
...
(省略)
...
+ '[' '!' yes ']'
+ exit 0
実行中(%build): /bin/sh -e /var/tmp/rpm-tmp.XOcnWu
+ umask 022
+ cd /home/bitwalk/rpmbuild/BUILD
+ font_files='andale32.exe arial32.exe arialb32.exe comic32.exe courie32.exe georgi32.exe impact32.exe times32.exe trebuc32.exe webdin32.exe verdan32.exe'
+ cd msttcorefonts
+ rm -rf cab-contents fonts
+ mkdir cab-contents
+ mkdir fonts
+ for i in '$font_files'
+ '[' -f downloads/andale32.exe ']'
+ cabextract --lowercase --directory=cab-contents downloads/andale32.exe
Extracting cabinet: downloads/andale32.exe
  extracting cab-contents/fontinst.inf
  extracting cab-contents/andale.inf
  extracting cab-contents/fontinst.exe
  extracting cab-contents/andalemo.ttf
  extracting cab-contents/advpack.dll
  extracting cab-contents/w95inf32.dll
  extracting cab-contents/w95inf16.dll

All done, no errors.
+ cp cab-contents/andalemo.ttf fonts
+ rm -f cab-contents/advpack.dll cab-contents/andale.inf cab-contents/andalemo.ttf cab-contents/fontinst.exe cab-contents/fontinst.inf cab-contents/w95inf16.dll cab-contents/w95inf32.dll
...
(省略)
...
+ cp cab-contents/tahoma.ttf fonts
+ cd fonts
+ /usr/bin/ttmkfdir
+ exit 0
実行中(%install): /bin/sh -e /var/tmp/rpm-tmp.4fPbUF
+ umask 022
+ cd /home/bitwalk/rpmbuild/BUILD
+ '[' /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64 '!=' / ']'
+ rm -rf /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64
++ dirname /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64
+ mkdir -p /home/bitwalk/rpmbuild/BUILDROOT
+ mkdir /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64
+ '[' /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64 '!=' / ']'
+ rm -rf /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64
+ cd msttcorefonts/fonts
+ mkdir -p /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64//usr/share/fonts/msttcorefonts
+ cp andalemo.ttf arial.ttf arialbd.ttf arialbi.ttf ariali.ttf ariblk.ttf comic.ttf comicbd.ttf cour.ttf courbd.ttf courbi.ttf couri.ttf georgia.ttf georgiab.ttf georgiai.ttf georgiaz.ttf impact.ttf tahoma.ttf times.ttf timesbd.ttf timesbi.ttf timesi.ttf trebuc.ttf trebucbd.ttf trebucbi.ttf trebucit.ttf verdana.ttf verdanab.ttf verdanai.ttf verdanaz.ttf webdings.ttf fonts.dir /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64//usr/share/fonts/msttcorefonts
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
ファイルの処理中: msttcorefonts-2.5-1.noarch
警告: ファイルが2回表記されています: /usr/share/fonts/msttcorefonts
Provides: font(:lang=aa) font(:lang=af) font(:lang=an) font(:lang=ar) font(:lang=av) font(:lang=ay) font(:lang=az-az) font(:lang=be) font(:lang=bg) font(:lang=bi) font(:lang=bin) font(:lang=br) font(:lang=bs) font(:lang=bua) font(:lang=ca) font(:lang=ce) font(:lang=ch) font(:lang=co) font(:lang=crh) font(:lang=cs) font(:lang=csb) font(:lang=cy) font(:lang=da) font(:lang=de) font(:lang=el) font(:lang=en) font(:lang=eo) font(:lang=es) font(:lang=et) font(:lang=eu) font(:lang=fi) font(:lang=fil) font(:lang=fj) font(:lang=fo) font(:lang=fr) font(:lang=fur) font(:lang=fy) font(:lang=gd) font(:lang=gl) font(:lang=gn) font(:lang=gv) font(:lang=he) font(:lang=ho) font(:lang=hr) font(:lang=hsb) font(:lang=ht) font(:lang=hu) font(:lang=ia) font(:lang=id) font(:lang=ie) font(:lang=ig) font(:lang=ik) font(:lang=io) font(:lang=is) font(:lang=it) font(:lang=jv) font(:lang=kaa) font(:lang=ki) font(:lang=kj) font(:lang=kk) font(:lang=kl) font(:lang=ku-tr) font(:lang=kum) font(:lang=kwm) font(:lang=ky) font(:lang=la) font(:lang=lb) font(:lang=lez) font(:lang=lg) font(:lang=li) font(:lang=lt) font(:lang=lv) font(:lang=mg) font(:lang=mh) font(:lang=mn-mn) font(:lang=ms) font(:lang=mt) font(:lang=na) font(:lang=nb) font(:lang=nds) font(:lang=ng) font(:lang=nl) font(:lang=nn) font(:lang=no) font(:lang=nr) font(:lang=nso) font(:lang=ny) font(:lang=oc) font(:lang=om) font(:lang=os) font(:lang=pap-an) font(:lang=pap-aw) font(:lang=pl) font(:lang=pt) font(:lang=rm) font(:lang=rn) font(:lang=ru) font(:lang=rw) font(:lang=sc) font(:lang=se) font(:lang=sel) font(:lang=sg) font(:lang=sk) font(:lang=sl) font(:lang=sma) font(:lang=smj) font(:lang=smn) font(:lang=sn) font(:lang=so) font(:lang=sq) font(:lang=sr) font(:lang=ss) font(:lang=st) font(:lang=su) font(:lang=sv) font(:lang=sw) font(:lang=tk) font(:lang=tl) font(:lang=tn) font(:lang=tr) font(:lang=ts) font(:lang=tt) font(:lang=tyv) font(:lang=uk) font(:lang=uz) font(:lang=vo) font(:lang=vot) font(:lang=wa) font(:lang=wen) font(:lang=wo) font(:lang=xh) font(:lang=yap) font(:lang=yi) font(:lang=za) font(:lang=zu) font(andalemono) font(arial) font(arialblack) font(comicsansms) font(couriernew) font(georgia) font(impact) font(tahoma) font(timesnewroman) font(trebuchetms) font(verdana) font(webdings) msttcorefonts = 2.5-1
Requires(interp): /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(preun): /bin/sh
パッケージに含まれないファイルの検査中: /usr/lib/rpm/check-files /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64
書き込み完了: /home/bitwalk/rpmbuild/SRPMS/msttcorefonts-2.5-1.src.rpm
書き込み完了: /home/bitwalk/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.8lANUn
+ umask 022
+ cd /home/bitwalk/rpmbuild/BUILD
+ '[' /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64 '!=' / ']'
+ rm -rf /home/bitwalk/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64
+ exit 0
$ 

このパッケージは、必要なソース(フォント)全てを wget でダウンロードしてビルドします。ダウンロードに失敗する場合がありますので、その場合は繰り返しビルドし直してください。パッケージが無事ビルドできたら、ルート権限になり yum でインストールします(私の環境では既にインストールされてますので下記のようになります)。

$ su
パスワード:
# yum localinstall /home/bitwalk/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm
読み込んだプラグイン:langpacks
/home/bitwalk/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm を調べています: msttcorefonts-2.5-1.noarch
/home/bitwalk/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm: インストールされたパッケージを更新しません。
何もしません
# 

ライセンス

Microsoft がインターネット上で公開していたこれらのフォントは、Microsoft End-User License Agreement ("EULA") によれば、Microsoft の許可なしに何か他のパッケージに加えて配布することはできないけれど、公開されているフォントをそのままの状態で再配布することは可能とのことです。また、使用用途を Windows に限定した記述はありません。そのため、SourceForge の上記プロジェクトサイトで、Microsoft が公開していたままをアップし、RPM パッケージを作成するときに wget でダウンロードしに行くというやり方を取っているわけです。

気になる点は、spec ファイルの %description に記載されている Microsoft のサイトがもはや存在しないことです。

%description
The TrueType core fonts for the web that was once available from
http://www.microsoft.com/typography/fontpack/. The src rpm is cleverly
constructed so that the actual fonts are downloaded from Sourceforge's site
at build time. Therefore this package technically does not 'redistribute'
the fonts, it just makes it easy to install them on a linux system.

その代わり、下記に Web 用のフォントパックの公開は中止した旨が掲示されています。

オリジナルのサイトが無くなっても、フォントパックが公開されていた時の配布条件に従って使用している限りは問題はないはずだと解釈して、ありがたく利用しています。

0 件のコメント: