概要
app_fonts.go のフォント名フォールバック処理に、TrueType Collection(.ttc)の解析対応を追加する。
背景
sysfont.NewFinder(nil) は .ttc ファイルを列挙する。sysfont.Font.Family が空の場合、現在の getFontFamilyName は sfnt.ParseReaderAt を使用する。この関数では TTC を解析できないため、フォント名を取得できない場合がある。
この対応は PR #163 の構造整理の範囲外であるため、別の変更として実施する。
対象
app_fonts.go
- フォント取得に関するテストファイル
対応内容
.ttc ファイルを検出する。
.ttc ファイルには sfnt.ParseCollectionReaderAt を使用する。
- Collection 内の各フォントから
sfnt.NameIDFamily を取得する。
- 非 TTC ファイルの既存動作を維持する。
- TTC fixture を使ったテストを追加する。
受け入れ基準
Family が空の .ttc ファイルからフォントファミリー名を取得できる。
- Collection 内の複数フォントのファミリー名をテストで検証する。
.ttf および .otf の既存のフォールバック動作を変更しない。
関連
概要
app_fonts.goのフォント名フォールバック処理に、TrueType Collection(.ttc)の解析対応を追加する。背景
sysfont.NewFinder(nil)は.ttcファイルを列挙する。sysfont.Font.Familyが空の場合、現在のgetFontFamilyNameはsfnt.ParseReaderAtを使用する。この関数では TTC を解析できないため、フォント名を取得できない場合がある。この対応は PR #163 の構造整理の範囲外であるため、別の変更として実施する。
対象
app_fonts.go対応内容
.ttcファイルを検出する。.ttcファイルにはsfnt.ParseCollectionReaderAtを使用する。sfnt.NameIDFamilyを取得する。受け入れ基準
Familyが空の.ttcファイルからフォントファミリー名を取得できる。.ttfおよび.otfの既存のフォールバック動作を変更しない。関連