こんにちは。
フロントエンドエンジニアのみつです。
少し前なんですが、
DockerでBuildをする時に、Noto_Sans_JPフォントの展開に失敗し、
フォントの種類にも色々あるんだなということを知ったのでそのメモ。
RUN wget "https://fonts.google.com/download?family=Noto%20Sans%20JP" -O zip/Noto_Sans_JP.zip
RUN unzip -o 'zip/*.zip' -d zip
RUN mkdir -p /usr/share/fonts/truetype/google-fonts \
&& cp zip/*.otf /usr/share/fonts/truetype/google-fonts \
&& rm -rf zip
目次
出現する単語たち
- .ttf(フォント拡張子)
- .otf(フォント拡張子)
起きた問題
下記の部分でDockerがうまく立ち上がらない問題が発生。
RUN wget "https://fonts.google.com/download?family=Noto%20Sans%20JP" -O zip/Noto_Sans_JP.zip
RUN unzip -o 'zip/*.zip' -d zip
RUN mkdir -p /usr/share/fonts/truetype/google-fonts \
&& cp zip/*.otf /usr/share/fonts/truetype/google-fonts \
&& rm -rf zip
Buildのログを眺めていると、'zip/*.otf'なんてものは存在しないと怒られてしまいました。
[deps 12/14]
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
&& cp zip/*.otf /usr/share/fonts/truetype/google-fonts
&& rm -rf zip
→ cp: cannot stat 'zip/*.otf': No such file or directory
ERROR IN:
[deps 12/14]
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
&& cp zip/*.otf /usr/share/fonts/truetype/google-fonts
&& rm -rf zip
got unexpected error during build/deploy: ImageBuild: executor failed running
[/bin/sh -c mkdir -p /usr/share/fonts/truetype/google-fonts && cp zip/*.otf /usr/share/fonts/truetype/google-fonts && rm -rf zip]: exit code: 1
Build Failed: ImageBuild: executor failed running
[/bin/sh -c mkdir -p /usr/share/fonts/truetype/google-fonts && cp zip/*.otf /usr/share/fonts/truetype/google-fonts && rm -rf zip]: exit code: 1
でもこれまで成功していた立ち上げが失敗しているのは、正直何の話かも分からず。
とりあえず、GoogleFontを直接ダウンロードして解凍してみたら、*.otfに一致するものが確かにない。
.ttf拡張子とか.otf拡張子って何か違いがあるのか??
.ttf拡張子について
- TrueTypeフォントに、.ttfがつく
- TrueTypeフォントは、初めApple社が独自に開発しようとしていた
- TrueTypeフォントは、Apple社とMicrosoft社が共同で開発したフォント
AppleはDisplayPostScriptと契約せず、ロイヤルというアウトラインフォント技術を独自開発した。MicrosoftはPostScript互換RIPの開発や評価をしていたバウア社を吸収した。両者が技術をバーターすればAdobeの技術なしに画面およびプリンタのWYSIWYGが可能になるとして提携して発表したのが、フォントのTrueTypeおよびRIPに相当するTrueImageで、どちらのOS環境でも使えるものであり、仕様はオープンなものにしようとしていた。
.otf拡張子について
- PostScriptベースのものに、.otfがつく
- OpenTypeフォントすべてが.otfというわけではない*
- 有名どころにモリサワフォントらしい。(良いよね、好き。笑)
*OpenTypeフォントは、TrueTypeフォントの拡張版。
*OpenType自体は、TrueTypeフォントとPostScriptフォントの総称なので、OpenType=.otfではない。
otf形式とttf形式の違いとエラー
TrueTypeフォントには、.ttf拡張子。
OpenTypeのもので、PostScript系統のものが.otf、TrueType系統のものに、.ttfや.ttcの拡張子。
今回、Noto_Sans_JPフォントのリリース情報は探しても見つけられませんでしたが、
- 事実として展開したフォルダの中には、*.otfはなかった
ので、置き換えられたのかな・・・。と思いつつ。
そういった変更もあるんだなぁ・・・勉強になりました。
修正した点
zip/*.ttfを展開できるように修正をし、再度立ち上げ直したら問題なく立ち上がりました。
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
RUN cp zip/*.otf /usr/share/fonts/truetype/google-fonts; exit 0
+ RUN cp zip/*.ttf /usr/share/fonts/truetype/google-fonts; exit 0
RUN rm -rf zip
まとめ
フォントにも色々な種類の拡張子があったり、
Apple, Adobe, Microsoftがフォントの歴史を作って来たり。
フォントについてもっと知る良い機会になりました。
加えて、.ttfや.otfといった拡張子とTrueTypeフォントやOpenTypeフォントは近い関係にありつつ、
- TrueTypeフォントは、.ttf
-
OpenTypeフォントは、≠.otf
にもびっくり。
こういう歴史的な知識とかは以外と好き。
おわり。