2016年6月13日月曜日

PC フォントあれこれ

フォント。  この難解な技術。
普段、パソコンの画面等で日常的に接しているフォントですが、
少し、変わった事をしようとすると、訳の分からない 世界 です。
文字列の表示を司る フォント。


でも、利用する方の立ち位置で、これ程、複雑怪奇なものも少ないです。  フォント。
少し、プログラミングの立場から、少し詳細な お話し を書いて見ます。


先ずは、分かり易く、 フォントを 料理の素材に例えて、書いて見ます。

  フォントは 最初に そのファイルありき で、
  そのファイルを フォント管理システム さん が 料理の下拵え(したごしらえ) を して、
  実際に 各ソフト さん が それを使って 料理の腕を振るう 事になります。
  各ソフト さん は 得手不得手がありますので、 フォントの種類によっては 手に取ったり まな板に上がる 事は無い と。

  ファイルが 腐っていたり フォント管理システム さんの好みでなければ 下拵えされずに ゴミ箱行き なのですね。


さて、
フォントは文字の見た目を左右するので、これに拘る方も多いと思います。

フリーフォント等を探し出すと、それは多種多様なものが存在しています。
おっ!、と思ったものを、 ご自分の環境に取り入れている方も多いのでは?。
私も GIMP 使い ですから、ご多分に漏れず、フォントのコレクションを持っています。

お気に入りのものを探し出す為に、Internet を覗くと、同じ字体に数種類のバリエーションがあったりします。
でも、画像編集やデザイン専用のソフトを除けば、
大抵のソフトは この膨大な種類を使い熟す様には出来ていません。


タイプフェイスと言う言葉をご存じですか?。
FontFamily FontStyle FontWeights FontStrech の4つから定義されるフォントの種類ですね。

FontFamily 。  所謂、フォント名の冒頭にある苗字の様なものですね。  一番なじみのあると思われる項目です。

FontStyle 。  Normal / Italic / (Oblique) の3種類です。
  https://msdn.microsoft.com/ja-jp/library/system.windows.fontstyle%28v=vs.110%29.aspx
FontWeights 。  Black / Bold / DemiBold / ... / Light / Medium / Normal / Regular / ... 等の言葉が並びます。
  https://msdn.microsoft.com/ja-jp/library/system.windows.fontweights%28v=vs.110%29.aspx
FontStrech 。  Condensed / Medium / Expanded / ... なんて言葉もありますが、通常はあまり関係ありません。
  https://msdn.microsoft.com/ja-jp/library/system.windows.fontstretch%28v=vs.110%29.aspx

開発絡みで見ると、
Form 等の技術(System.Drawing.Font)では、 フォントは フォント名とスタイルとサイズと色とで指定しますが、
ここでのスタイルは、上の FontStyle と FontWeights とを合わせた 且つ 概要的な 指定になります。
言い換えれば、 Regular / Bold / Italic / Strikeout / Underline の組み合わせでしか ないのです。
FontWeights の細かな 太さ指定は出来ない のですね。


さて、先程、 フォントは どんなソフトでも使えるとは限らない と書きました。
フォント(アウトライン フォント) には、Windows では、大きく分けて TTF(TrueTypeFont) と OTF(OpenTypeFont) との2種類があります。
  拡張子からは、実は、判断出来ません。  ヘッダーと呼ばれるファイルの先頭に、フォントの種類が定義されます。.
例えば、
開発環境から見れば、 Windows Form は GDI の制約から、一部の OTF をハンドリング出来ない事は有名です。
これに代替する技術 WPF は TTF OTF 共に利用可能ですが、実は、もっと古い時代の FON 拡張子のフォントをハンドリングしません。
正確に言えば、FON は、システムに組み込まれた状態でフォントとしての利用は可能でも、各種操作は限定的になります。.
この開発環境での基礎技術の選択で、利用可能なフォントの種類は制限されます。
また、フォントは国(言語)情報を持っている為、 ソフトがこれを判断して、利用するものを制限する場合もあります。
これらは、皆、Windows 上での お話し。


ファイルから見ると、複数のフォントを同梱した TTC と言う拡張子のものも存在します。  TrueType に限りません。.
ファイルの詳細規格は以下を参照下さい。  うっ、英語です。  えっ、難解です。.
      https://www.microsoft.com/typography/otspec/otff.htm


更に、複雑なのは、
フォントのハンドリング。
Windows では、一般に、 C:\Windows\fonts フォルダに格納されたフォントが利用されますが、
実は、隠しファイルやレジストリに、これらの管理情報を持っていて、 フォント ファイルに格納された情報を操作しています。
勿論、ユーザーがこのフォルダに入って弄繰り廻されると OS の安定稼働を損なう恐れがあるので、アクセス権は特殊な設定です。.
       游ゴシック は ファイルにはその名称の日本語表記しか持ちませんが、OS が 英語表記を補っています。  .Win32FontNames 等。.
       この様に、各ファイルの差異を吸収する事で、安定稼働に繋げています。
       仮に、仕様から大きく外れたファイルを放り込むと、フォントとしては正常に機能しないと思います。   試した事は無いですが。.

大抵のソフトは、この仕組みに基づいてフォントを利用しますが、 例外もあります。
画像編集ソフトの GIMP 等では、独自のフォント管理システムを持ちます。  FreeType2™ フォントエンジン 詳細は省きます。.
ですから、 GIMP では FON/TTF/OTF の利用が可能で、
FON のひとつ(?勘違い?) Sans が表示出来ます。  しかも、スケーラブル!
       コントロールパネルのフォントで これを見て見れば、大きな文字ではアウトラインが階段状ですが、
       GIMP でサイズを上げても、こうはならず、滑らかに描画されます。
       尚、Windows 10 では Sans には2種類ありそうですが ... 。
       (MS Sans Serif (Global Sans Serif ?) / sserife.fon ) と、(Microsoft Sans Serif /micross.ttf 通常は利用不可) と です。.
       但し、 Linux から持ち込まれた このシステムは GIMP では まだ 未成熟 で、色々と問題を抱えている様ですが ... 。
       いや、原因は、エンジンのせいではなく、描画ロジックなのかな?。  cairo って名前のあれ?。  この辺、よく分かんない ... 。
       次期 Version 2.10 で、飛躍的な発展を遂げる事を期待しています。.


游ゴシック で、 その日本語表記名の話が出たので、序に。
フォントには、色々な名前が付いて廻ります。
ひとつのものなのに、 呼び名 が幾つもあるのですね。
ファイル名 と、 フォント名 ( FontFamily 名) と スタイル( FontStyle & FontWeights & FontStrech を含んだ名) と、
各々の言語別名称。  英語表示と日本語表記 等。.
更に、 フォント管理システムが 独自に振る名称と ファイルに記録された名称。
これらが絡まり合って、色々な名称が登場します。
特に、ひとつのグループで様々なスタイル(タイプ or パターン)のフォントを持つものでは 微妙に名前が変わったりします。


慣れてしまえば、自分の頭の中で、呼び名 を自動変換していますから良いのですが、
混乱を招くのは、 フォント管理システムが作り出す 元々は無い筈の字体を作り出す機能 の存在です。
あるソフトでは存在する字体が 別のソフトで見付からない場合、 この機能が働いているか否かによっても実態は異なるのですね。



基本的に言えるのは、 フォントは 言語 en-US が標準だと言う事。.
  例えば、プログラミングするなら、en-US を拾って行けば、ほぼ、間違い無し。
  例外も有ります。  游ゴシック がそう。  でも、OS は上手にカバーしてます。.  普通、この辺りは知らなくても OK です。

  更に書き加えれば、 フォントは 先ず最初に ファイル ありき の世界です。.
  フォント管理システムが介在しても、基本は ファイル 。.
  ファイルから追う事で、色々な事が分かります。

普通の感覚では、 良く分からない世界! と言う事でしょうか ... 。



フォントの世界は、知れば知る程、奥が深くて、難解です。

今、 GIMP 用の Fonts プログラムを書いてます。  相当、難航中!。  止めときゃぁ良かったかな ... 。.



0 件のコメント:

コメントを投稿