Goブログ

Goフォント

ナイジェル・タオ、チャック・ビゲロー、ロブ・パイク
2016年11月16日

発表

golang.org/x/exp/shinyで構築中の実験的なユーザーインターフェースツールキットには、いくつかのテキスト要素が含まれていますが、それらをテストする際に問題があります。どのフォントを使用すべきか?この質問に答えることが、今日の発表、つまり、Bigelow & Holmes活字鋳造所がGoプロジェクトのために特別に作成した高品質のWGL4 TrueTypeフォントファミリーのリリースにつながりました。

Go(当然ですが)と呼ばれるフォントファミリーには、ノーマル、ボールド、イタリックレンダリングのプロポーショナルおよび固定幅フォントが含まれています。フォントは、特にプログラミングでの技術的な用途でテストされています。Goソースコードは、名前が示すように、Goフォントで表示すると特に見栄えが良く、句読点文字などが簡単に区別でき、演算子が整列して一貫して配置されています。

おそらくGoフォントの最も注目すべき機能は、そのライセンスです。高品質なフォントセットとしては珍しく、Goプロジェクトの他のソフトウェアと同じオープンソースライセンスでライセンスされています。

以下は、プロポーショナル間隔のサンプルの…

および等幅フォント

使用方法

TTFファイルだけが必要な場合は、以下を実行してください

git clone https://go.googlesource.com/image

その後、image/font/gofont/ttfsディレクトリからコピーします。Go(ソフトウェア)でGo(フォント)を使用する場合は、各フォントが個別のパッケージで提供されます。プログラムでGo Regularフォントを使用するには、golang.org/x/image/font/gofont/goregularをインポートし、次のように記述します。

font, err := truetype.Parse(goregular.TTF)

github.com/golang/freetype/truetypeパッケージは、現在truetype.Parse関数を提供しています。また、Goプロジェクトの他のソフトウェアと同じオープンソースライセンスで再びライセンスされたTrueTypeパッケージをgolang.org/x下に追加する作業も進行中です。

フォントが持つ他の珍しい特性のいくつかを見つけるのはあなたにお任せしますが、フォントのデザインの概要については、チャック・ビゲローに背景を説明してもらいました。このブログ記事の残りは彼の回答です。

チャック・ビゲローによるフォントに関するメモ

Goフォントは、サンセリフのGoプロポーショナルと、スラブセリフのGo Monoの2つのセットに分かれています。

Goプロポーショナルフォント

サンセリフ

Goプロポーショナルフォントは、画面表示用のいくつかの人気のあるフォントと同様にサンセリフです。画面上の小さなサイズと低解像度では、一部のサンセリフフォントは、セリフ付きフォントよりもわずかに読みやすいという証拠がいくつかありますが、大きいサイズでは、少なくともテストされたペアでは、サンセリフとセリフ付きフォントの間に読みやすさの大きな違いはありません。[1](角かっこ内の数字は、この記事の最後にリストされている参考文献を示します。)

スタイル

Goサンセリフフォントは、スタイルとしては「グロテスク」ではなく「ヒューマニスト」です。これは歴史的な区別であり、美的判断ではありません。HelveticaやArialのような広く使用されているサンセリフフォントは、19世紀初頭のサンセリフ書体が「Grotesque」と名付けられ、その名前が一般的になったため、グロテスクと呼ばれています。

Helveticaのような現代のグロテスクフォントの形状は、滑らかで同化した形で彫刻されています。

ヒューマニストサンセリフは、ヒューマニスト手書きとイタリアルネサンスの初期のフォントに由来し、ペンで書かれた書道の微妙な痕跡が残っています。ヒューマニストフォントは、グロテスクフォントよりも読みやすいという証拠がいくつかあります。[2]

イタリック体

Goプロポーショナルイタリック体は、ローマンフォントと同じ幅のメトリックを持っています。Goイタリック体は、ローマン体の斜体バージョンであり、1つの顕著な例外があります。イタリック小文字の「a」は、b、d、g、p、qのセットのボウル形状と調和するように、筆記体の1階建ての形式として再設計されています。直立した形式も傾斜によく適応します。筆記体の「a」を追加すると、イタリック体は単に傾斜したローマン体よりも活気があるように見えます。一部の活字デザイナーは、歴史とデザインのため、斜体のローマンサンセリフイタリック体は、真に「筆記体」のサンセリフイタリック体よりも好ましいと考えています。[3]

xハイト

書体のxハイトは、ボディサイズに対する小文字の「x」の高さです。Goフォントのxハイトはボディサイズの53.0%であり、Helvetica(52.3%)またはArial(51.9%)のxハイトよりもわずかに大きいですが、通常の読み取りサイズでは通常、その違いは目立ちません。活字デザイナーは、xハイトが大きいほど、小さなサイズや画面での可読性が向上すると考えています。 「印刷サイズ」(特にxハイト)と読書に関する調査では、画面での読書や小さなサイズのタイプは、xハイトが大きい傾向にあることがわかりました。[4]

DIN可読性標準

最近のドイツのDIN 1450可読性標準では、文字の形状を区別して混乱を減らすなど、フォントの可読性に関するいくつかの機能が推奨されています。Goフォントは、ゼロと大文字のO、数字の1と大文字のI(アイ)と小文字のl(エル)、数字の5と大文字のS、数字の8と大文字のBを注意深く区別することにより、1450規格に準拠しています。b、d、p、qのボウルの形状は、読みやすいルネサンスの手書きの自然な非対称性に従い、区別を助けて混乱を減らします。[5]

太さ

Goプロポーショナルフォントには、ノーマル、ミディアム、ボールドの3つの太さがあります。ノーマルウェイトは、バックライト付きスクリーンでの明瞭さを維持するのに十分な強度があります。バックライト付きスクリーンは、文字の特徴と太さを損なう傾向があります。ミディアムウェイトは、明るい画面での堅牢性を高めるため、または頑丈なフォントを好むユーザーのために、ステムの太さがノーマルの1.25倍になっています。ボールドウェイトは、ステムの太さがノーマルの1.5倍で、ノーマルウェイトとはっきりと区別できる程度に太いです。これらのGoフォントには、CSS数値ウェイト400、500、600があります。CSSは「Bold」を700ウェイト、600をセミボールドまたはデミボールドと指定していますが、Goの数値ウェイトは、ステムの太さの比率の実際の進行に一致しています。ノーマル:ミディアム=400:500。ノーマル:ボールド=400:600。ボールドウェイトの名前は、通常のフォントの通常の対応するボールドウェイトとしての「Bold」の使用と一致しています。ステムの太さ、ウェイト名、CSS番号の関係については[6]でさらに議論されています。

WGL4文字セット

Microsoftが最初に開発したWGL4文字セットは、非公式の標準文字セットとしてよく使用されます。WGL4には、西ヨーロッパと東ヨーロッパのラテン文字に加えて、現代ギリシャ文字とキリル文字、および追加の記号、符号、グラフィック文字が含まれており、合計で650を超える文字があります。Go WGL4フォントを使用して、幅広い言語を構成できます。[7]

ArialおよびHelveticaとのメトリック互換性

Goサンセリフフォントは、標準のHelveticaまたはArial文字とほぼメトリック互換性があります。Goで設定されたテキストは、HelveticaまたはArial(同じサイズ)のテキストとほぼ同じスペースを占有しますが、Goにはヒューマニストスタイルが採用されているため、異なる外観とテクスチャがあります。DIN可読性機能を備えたGoの一部の文字は、HelveticaまたはArialの対応する文字よりも幅が広いため、Goで設定された一部のテキストは、わずかに多くのスペースを必要とする場合があります。

Go Monoフォント

等幅

Go Monoフォントは等幅です。各文字は他の文字と同じ幅を持っています。等幅フォントは、コンピューティングの初期からプログラミングで使用されており、現在でも広く使用されています。これは、スペースのタイプライターの規則性により、テキストが列と行に揃えられるためであり、このスタイルは紀元前5世紀のギリシャの碑文にも見られます。(古代ギリシャ人にはタイプライターやコンピューターキーボードはありませんでしたが、偉大な数学者と、アルファベットを形作った優れた対称性とパターンの感覚を持っていました。)

スラブセリフ

Go Monoフォントにはスラブ状のセリフがあり、頑丈な外観になっています。

スタイル

Go Monoの基本的な文字形状は、Goサンセリフフォントと同様に、ヒューマニスト手書きに由来していますが、等幅とスラブセリフは、歴史的および様式的なつながりをあいまいにする傾向があります。

イタリック体

Go Monoイタリック体は、ローマン体の斜体バージョンですが、イタリック小文字の「a」は、b、d、g、p、qのボウル形状と調和するように、筆記体の1階建ての形式として再設計されています。筆記体の「a」は、イタリック体を単に傾斜したローマン体よりも活気があるように見せます。多くのサンセリフフォントと同様に、斜体のローマンスラブセリフフォントは、真に「筆記体」のイタリック体よりも読みやすいと考えられています。

xハイト

Go Monoフォントのxハイトは、Goサンセリフフォントと同じボディサイズの53%です。Go Monoは、xハイトがボディサイズの45%であるCourierよりも約18%大きく見えます。ただし、Go MonoはCourierと同じ幅であるため、1行あたりの文字数で経済性を損なうことなく、より大きな見た目が得られます。

DIN可読性標準

Go Monoフォントは、ゼロと大文字のO、数字の1と大文字のI(アイ)と小文字のl(エル)、数字の5と大文字のS、数字の8と大文字のBを区別することにより、DIN 1450規格に準拠しています。b、d、p、qのボウルの形状は、読みやすいルネサンスの手書きの自然な非対称性に従い、区別を助け、混乱を減らします。

太さ

Go Monoフォントには、NormalとBoldの2つのウェイトがあります。Normalウェイトのステム(線の太さ)はGo Normalと同じであり、文字の特徴やステムの太さを損ないがちなバックライト付きスクリーン上でも、その明確さを維持します。Boldのステムの太さはNormalウェイトの1.5倍であるため、Bold MonoはプロポーショナルフォントのBold Goと同じステムの太さになります。モノスペースのBoldの文字幅はモノスペースのNormalの幅と同じであるため、Bold MonoはプロポーショナルフォントのGo Boldよりもわずかに太く見えます。これは、同じ領域に多くの黒いピクセルが配置されるためです。

Go Monoは、12ポイントで1インチあたり10文字の「パイカ」タイプライターの文字幅に一致するCourierやその他のモノスペースフォントとメトリック互換性があります。10ポイントでは、Go Monoフォントは1インチあたり12文字で設定されます。もちろんTrueTypeフォントはスケーラブルであるため、Go Monoは任意のサイズに設定できます。

WGL4文字セット

Go Monoフォントは、非公式な標準文字セットとしてよく使用されるWGL4文字セットを提供します。WGL4には、西および東ヨーロッパのラテン文字に加え、現代ギリシャ文字とキリル文字、さらに追加の記号、標識、およびグラフィカル文字が含まれています。Go WGL4セットの650以上の文字は、幅広い言語で使用できます。

参考文献

[1] Morris, R. A., Aquilante, K., Yager, D., & Bigelow, C. (2002, May). P‐13: Serifs Slow RSVP Reading at Very Small Sizes, but Don’t Matter at Larger Sizes. In SID Symposium Digest of Technical Papers (Vol. 33, No. 1, pp. 244-247). Blackwell Publishing Ltd.

[2] Bryan Reimer et al. (2014) “Assessing the impact of typeface design in a text-rich automotive user interface”, Ergonomics, 57:11, 1643-1658. http://www.tandfonline.com/doi/abs/10.1080/00140139.2014.940000

[3] Adrian Frutiger - Typefaces: The Complete Works. H. Osterer and P. Stamm, editors. Birkhäuser, Basel, 2009, page 257.

[4] Legge, G. E., & Bigelow, C. A. (2011). Does print size matter for reading? A review of findings from vision science and typography. Journal of Vision, 11(5), 8-8. http://jov.arvojournals.org/article.aspx?articleid=2191906

[5] Charles Bigelow. “Oh, oh, zero!” TUGboat, Volume 34 (2013), No. 2. https://tug.org/TUGboat/tb34-2/tb107bigelow-zero.pdf https://tug.org/TUGboat/tb34-2/tb107bigelow-wang.pdf

[6] “Lucida Basic Font Weights” Bigelow & Holmes. http://lucidafonts.com/pages/facts

[7] WGL4 言語対応: アフリカーンス語、アルバニア語、アス語、バスク語、ベラルーシ語、ベンバ語、ベナ語、ボスニア語、ブルガリア語、カタロニア語、チガ語、ケルン語、コーンウォール語、クロアチア語、チェコ語、デンマーク語、エムブ語、英語、エスペラント語、エストニア語、フェロー語、フィリピノ語、フィンランド語、フランス語、フリウリ語、ガリシア語、ガンダ語、ドイツ語、ギリシャ語、グシ語、ハンガリー語、アイスランド語、イナリ・サーミ語、インドネシア語、アイルランド語、イタリア語、ジョラ・フォニ語、カブベルディアーノ語、カラアリスート語、カレンジン語、カンバ語、キクユ語、キニヤルワンダ語、ラトビア語、リトアニア語、低ソルブ語、ルオ語、ルクセンブルク語、ルイア語、マケドニア語、マチャメ語、マクワ・ミート語、マコンデ語、マダガスカル語、マレー語、マルタ語、マンクス語、メル語、モリシアン語、北ンデベレ語、北部サーミ語、ノルウェー語ブークモール、ノルウェー語ニーノシュク、ニャンコレ語、オロモ語、ポーランド語、ポルトガル語、ルーマニア語、ロマンシュ語、ロンボ語、ルンディ語、ロシア語、ルワ語、サンブル語、サンゴ語、サング語、スコットランド・ゲール語、セナ語、セルビア語、シャンバラ語、ショナ語、スロバキア語、スロベニア語、ソガ語、ソマリ語、スペイン語、スワヒリ語、スウェーデン語、スイスドイツ語、タイタ語、テソ語、トルコ語、トルクメン語、上ソルブ語、ヴンジョ語、ワルサー語、ウェールズ語、ズールー語

Go Regularでのジャバウォック

en.wikipedia.org/wiki/Jabberwockyより

ギリシャ語版はリストされていません。代わりに、clagnut.com/blog/2380/#Greekからのパングラムを示します。

次の記事: 2016年Goユーザーアンケートと企業アンケートにご参加ください
前の記事: Goの7年間
ブログインデックス