5c-Yen 雑記 | 5c-Yen Miscellaneous notes
ver1.0.0(Gothic Mono)とver 1.0.1(Gothic Mono,Gothic,Mincho)の違い等について
Noto Sans CJK jpとNoto Serif CJK jp
Serifの方が後で作られたようです。
とくにWeight=Boldの場合の定義がSerifの方が仕様に正しく準拠しているようなので、5c-Yenを作成する際はSerifの方を参考にしました。
(例えば OS/2テーブルのfsSelection、headテーブルのmacStyle value)
とくにWeight=Boldの場合の定義がSerifの方が仕様に正しく準拠しているようなので、5c-Yenを作成する際はSerifの方を参考にしました。
(例えば OS/2テーブルのfsSelection、headテーブルのmacStyle value)
サブセット化
5c-Yen Gothic Mono のファイルサイズが約半分になりました。
おそらくfonttoolsのバージョンが上がった影響と思われます。
○サブセット化に使用するotfの検討
○ver 1.0.0でコードポイント 0x00-0x1F にGlyphの割り当てが存在しましたが、ver 1.0.1では削除しました。
○サブセット化に使用する環境、fonttoolsのバージョンを変更しました。
おそらくfonttoolsのバージョンが上がった影響と思われます。
○サブセット化に使用するotfの検討
下記のURLには[Region-specific Subset OpenType/CFF (Subset OTF)]というセクションが存在しますが、
従来通り [Language-specific OpenType/CFF (OTF)] セクションのフォント NotoSansCJKjp-[weight].otf and NotoSansMonoCJKjp-{Regular, Bold}.otf
をSubsetの元ファイルとして使用しました。
理由は下記の通りです。
- NotoSansJP-[weight].otf で定義されているコードポイントは 5c-Yen Gotnic JP と若干差異があり、明らかに日本語以外の文字を含んでいること。
- 等幅フォントを含んでいないこと。
従来通り [Language-specific OpenType/CFF (OTF)] セクションのフォント NotoSansCJKjp-[weight].otf and NotoSansMonoCJKjp-{Regular, Bold}.otf
をSubsetの元ファイルとして使用しました。
理由は下記の通りです。
- NotoSansJP-[weight].otf で定義されているコードポイントは 5c-Yen Gotnic JP と若干差異があり、明らかに日本語以外の文字を含んでいること。
- 等幅フォントを含んでいないこと。
○ver 1.0.0でコードポイント 0x00-0x1F にGlyphの割り当てが存在しましたが、ver 1.0.1では削除しました。
理由は下記の通りです
- Noto Serif CJK jpで 0x00-0x1F にGlyphの割り当てないこと。
- 0x00-0x1Fは制御コードであり、文字として表示されることがないこと。
- Noto Serif CJK jpで 0x00-0x1F にGlyphの割り当てないこと。
- 0x00-0x1Fは制御コードであり、文字として表示されることがないこと。
○サブセット化に使用する環境、fonttoolsのバージョンを変更しました。
ver 1.0.0
ver 1.0.1
Xubunt 18.04(32bit)
Python 2.7.17
fonttools 3.21.2-1
Python 2.7.17
fonttools 3.21.2-1
ver 1.0.1
Windows 8.1(64bit)
Python 3.8.3
fonttools v4.11.0
Python 3.8.3
fonttools v4.11.0
フォントのファイル名と.NETのFontWeight, FontStyle
5cYenシリーズのファイル名は "5cYen{GothicMono,Gothic,Mincho}{932,JP}-[weight].otf"
という命名規則にしています。
上記の[weight]部分の文字列は.NET FrameworkのFontWeightsクラスに準拠しました。
ここで問題になるのはOpenType 仕様の usWeightClassの単一の値に対して対応するプロパティ名が2つ存在する場合です。
特に usWeightClass=400に対して、"Normal", "Regular" が存在し、どちらを使うべきか判断する必要があります。
ここでは"Normal"を使用することにしました。
であり、結局 "Regular" は FontWeights クラスのプロパティ名としてしか存在しないためです。
Noto Sans CJK jpではusWeightClassにFontWeightsで定義されていない値が使用されていないものがありました。
WPFで使用する際にちょっとおかしな表示("Normal","Bold"等が表示される箇所に"250","350"が出てくる)になってしまうのため、
5c-Yen GothicではusWeightClassの値を変更しています。
詳細は5c-Yen Gothicの説明を参照してください。
FontWeightと紛らわしいフォントの属性にFontStyleがあります。
FontStyleの値はFontStylesクラスのプロパティ{Italic,Normal,Oblique}で定義されていています。
上記に関連してOpenTypeのNaming TableにnameID="2"、"Subfamily name"という項目があります。
https://docs.microsoft.com/en-us/typography/opentype/spec/name#nid2
説明に下記の記述があります。
"Subfamily name"は他にnameID="4"、nameID="17"にも存在します。
5cYenシリーズでは nameID="2" のみ{Regular,Bold}を使用しました。(BoldはFontweight=="Bold"の場合のみ)
nameID="4"、nameID="17"はFontWeightと同じ文字列を割り当てています。
という命名規則にしています。
上記の[weight]部分の文字列は.NET FrameworkのFontWeightsクラスに準拠しました。
ここで問題になるのはOpenType 仕様の usWeightClassの単一の値に対して対応するプロパティ名が2つ存在する場合です。
特に usWeightClass=400に対して、"Normal", "Regular" が存在し、どちらを使うべきか判断する必要があります。
ここでは"Normal"を使用することにしました。
FontWeights.Normal == FontWeights.Regular (対応するusWeightClassが同じなので当然) FontWeights.Normal.ToString() == "Normal" FontWeights.Regular.ToString() == "Normal"
Noto Sans CJK jpではusWeightClassにFontWeightsで定義されていない値が使用されていないものがありました。
WPFで使用する際にちょっとおかしな表示("Normal","Bold"等が表示される箇所に"250","350"が出てくる)になってしまうのため、
5c-Yen GothicではusWeightClassの値を変更しています。
詳細は5c-Yen Gothicの説明を参照してください。
FontWeightと紛らわしいフォントの属性にFontStyleがあります。
FontStyleの値はFontStylesクラスのプロパティ{Italic,Normal,Oblique}で定義されていています。
上記に関連してOpenTypeのNaming TableにnameID="2"、"Subfamily name"という項目があります。
https://docs.microsoft.com/en-us/typography/opentype/spec/name#nid2
説明に下記の記述があります。
While some platforms or applications do not have this constraint, many existing applications that use this pair of names assume that a Font Family name is shared by at most four fonts that form a font style-linking group, and that Font Subfamily names would reflect one of the four basic styles, regular, italic (or oblique), bold, and bold italic (or bold oblique). To be compatible with the broadest range of platforms and applications, it is strongly recommended that fonts should limit use of Font Family in this manner.WeightとStyleが混ざったような項目になっていて、しかも"Normal"が使えません。
"Subfamily name"は他にnameID="4"、nameID="17"にも存在します。
5cYenシリーズでは nameID="2" のみ{Regular,Bold}を使用しました。(BoldはFontweight=="Bold"の場合のみ)
nameID="4"、nameID="17"はFontWeightと同じ文字列を割り当てています。