From e700d638bdb130e40fa085f0c180ddd839151eec Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Fri, 25 Oct 2024 15:02:23 +0300 Subject: [PATCH] import google-noto-serif-cjk-vf-fonts-2.002-5.el10 --- .gitignore | 1 + .google-noto-serif-cjk-vf-fonts.metadata | 1 + .../65-google-noto-serif-cjk-vf-fonts.conf | 112 ++++++++++++ SOURCES/genfontconf.py | 161 ++++++++++++++++++ SPECS/google-noto-serif-cjk-vf-fonts.spec | 106 ++++++++++++ 5 files changed, 381 insertions(+) create mode 100644 .gitignore create mode 100644 .google-noto-serif-cjk-vf-fonts.metadata create mode 100644 SOURCES/65-google-noto-serif-cjk-vf-fonts.conf create mode 100644 SOURCES/genfontconf.py create mode 100644 SPECS/google-noto-serif-cjk-vf-fonts.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d0b866e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/02_NotoSerifCJK-OTF-VF.zip diff --git a/.google-noto-serif-cjk-vf-fonts.metadata b/.google-noto-serif-cjk-vf-fonts.metadata new file mode 100644 index 0000000..5256030 --- /dev/null +++ b/.google-noto-serif-cjk-vf-fonts.metadata @@ -0,0 +1 @@ +74e731b91df9893af129be5e45058abbe3134956 SOURCES/02_NotoSerifCJK-OTF-VF.zip diff --git a/SOURCES/65-google-noto-serif-cjk-vf-fonts.conf b/SOURCES/65-google-noto-serif-cjk-vf-fonts.conf new file mode 100644 index 0000000..6a929d7 --- /dev/null +++ b/SOURCES/65-google-noto-serif-cjk-vf-fonts.conf @@ -0,0 +1,112 @@ + + + + + + Noto Serif CJK SC + + + + lang + + ja + ko + zh-hk + zh-mo + zh-tw + cmn + hak + lzh + nan + yue + + + + + + + Noto Serif CJK TC + + + + lang + + ja + ko + zh-cn + zh-hk + zh-mo + zh-sg + yue + + + + + + + Noto Serif CJK HK + + + + lang + + ja + ko + zh-cn + zh-sg + zh-tw + cmn + hak + lzh + nan + + + + + + + Noto Serif CJK JP + + + + lang + + ko + zh-cn + zh-hk + zh-mo + zh-sg + zh-tw + cmn + hak + lzh + nan + yue + + + + + + + Noto Serif CJK KR + + + + lang + + ja + zh-cn + zh-hk + zh-mo + zh-sg + zh-tw + cmn + hak + lzh + nan + yue + + + + + diff --git a/SOURCES/genfontconf.py b/SOURCES/genfontconf.py new file mode 100644 index 0000000..95fba4c --- /dev/null +++ b/SOURCES/genfontconf.py @@ -0,0 +1,161 @@ +#!/usr/bin/python3 + + +import argparse + + +''' +Generate the font config file for Noto CJK fonts + +genfontconf.py "lang list" "common font name" "font name" "fallback font name" "prepend latin font" ... + +like + +genfontconf.py --fallback-font --prepend-latin-font "zh-cn:zh-sg" "monospace" "Source Han Sans CN" "Source Han Sans TW" "DejaVu Sans Mono" "zh-cn:zh-sg" "serif" "Source Han Sans CN" "Source Han Sans TW" "" "zh-cn:zh-sg" "sans-serif" "Source Han Sans CN" "Source Han Sans TW" "" + +genfontconf.py "zh-cn:zh-sg" "monospace" "Noto Sans Mono CJK SC" "zh-cn:zh-sg" "serif" "Noto Serif CJK SC" "zh-cn:zh-sg" "sans-serif" "Noto Sans CJK SC" + +The above information is in variable length array. +''' + +''' +Some Noto CJK fonts may not need "fallback font name" + +Skip the "fallback font name" argument if not needed. +''' + +fallback_font_name = False + +''' +Noto CJK may not need "prepend latin font". + +Skip the "prepend latin font" argument if not needed. +''' + +prepend_latin_font = False + + +class FontConfRecord: + + @staticmethod + def renderRecord(langlist, common, font, fallback=None, latin=None): + for lang in langlist.split(":"): + FontConfRecord.renderMatch(lang, common, font, fallback, latin) + print() + + FontConfRecord.renderAlias(font, common) + print() + + @staticmethod + def renderMatch(lang, common, font, fallback, latin): + print('') + FontConfRecord.renderTestLang(lang) + FontConfRecord.renderTestFamily(common) + FontConfRecord.renderEditFamily(font, fallback) + FontConfRecord.renderEditLatinFamily(latin) + print('') + + @staticmethod + def renderTestLang(lang): + print('') + print('{0}'.format(lang)) + print('') + + @staticmethod + def renderTestFamily(common): + print('') + print('{0}'.format(common)) + print('') + + @staticmethod + def renderEditFamily(font, fallback): + print('') + print('{0}'.format(font)) + if fallback: + print('{0}'.format(fallback)) + print('') + + @staticmethod + def renderEditLatinFamily(latin): + if not latin: + return + print('') + print('{0}'.format(latin)) + print('') + + @staticmethod + def renderAlias(font, common): + print('') + print('{0}'.format(font)) + print('') + print('{0}'.format(common)) + print('') + print('') + + +class FontConfFile: + + @staticmethod + def renderFile(strings): + FontConfFile.renderHeader() + FontConfFile.renderBody(strings) + FontConfFile.renderFooter() + + @staticmethod + def renderHeader(): + print('') + print('') + print('') + + @staticmethod + def renderBody(strings): + num = 3 + if fallback_font_name: + num += 1 + if prepend_latin_font: + num += 1 + + while len(strings): + items = strings[0:num] + strings = strings[num:] + + if num == 3: + FontConfRecord.renderRecord(items[0], items[1], items[2]) + + if num == 4: + if fallback_font_name: + FontConfRecord.renderRecord \ + (items[0], items[1], items[2], items[3]) + if prepend_latin_font: + FontConfRecord.renderRecord \ + (items[0], items[1], items[2], None, items[3]) + + if num == 5: + FontConfRecord.renderRecord \ + (items[0], items[1], items[2], items[3], items[4]) + + @staticmethod + def renderFooter(): + print('') + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Generate font config.') + parser.add_argument('strings', metavar='string', type=str, nargs='+', + help='strings') + + parser.add_argument('--fallback-font', dest='fallback_font', action='store_true') + parser.add_argument('--disable-fallback-font', dest='fallback_font', action='store_false') + parser.set_defaults(fallback_font=False) + + parser.add_argument('--prepend-latin-font', dest='prepend_latin_font', action='store_true') + parser.add_argument('--disable-prepend-latin-font', dest='prepend_latin_font', action='store_false') + parser.set_defaults(prepend_latin_font=False) + + args = parser.parse_args() + #print(args) + + fallback_font_name = args.fallback_font + prepend_latin_font = args.prepend_latin_font + + FontConfFile.renderFile(args.strings) diff --git a/SPECS/google-noto-serif-cjk-vf-fonts.spec b/SPECS/google-noto-serif-cjk-vf-fonts.spec new file mode 100644 index 0000000..3778ed5 --- /dev/null +++ b/SPECS/google-noto-serif-cjk-vf-fonts.spec @@ -0,0 +1,106 @@ +# SPDX-License-Identifier: MIT + +Epoch: 1 +Version: 2.002 +Release: 5%{?dist} +URL: https://github.com/googlefonts/noto-cjk + +BuildRequires: python3 + +%global foundry Google +%global fontlicense OFL-1.1 +%global fontlicenses LICENSE + +%global fontfamily Noto Serif CJK VF +%global fontsummary Google Noto Serif CJK Variable Fonts +%global fonts *.ttc +%global fontconfs 65-0-%{fontpkgname}.conf %{SOURCE10} +%global fontdescription %{expand: +Noto CJK fonts, supporting Simplified Chinese, Traditional Chinese, \ +Japanese, and Korean. The supported scripts are Han, Hiragana, Katakana, \ +Hangul, and Bopomofo. Latin, Greek, Cyrllic, and various symbols are also \ +supported for compatibility with CJK standards. + +The google-noto-serif-cjk-vf-fonts package contains Google Noto Serif CJK Variable fonts. +} + +Source0: https://github.com/googlefonts/noto-cjk/releases/download/Serif%{version}/02_NotoSerifCJK-OTF-VF.zip +Source1: genfontconf.py +Source10: 65-%{fontpkgname}.conf + +%global obsoletes_epoch_version_release 0:20201206-8 + +%global obsoletes_pkg()\ +%define subpkgname %1\ +Obsoletes: %{subpkgname} < %{obsoletes_epoch_version_release}\ +Provides: %{subpkgname} = %{epoch}:%{version}-%{release}\ + +%global obsoletes_serif()\ +%define langname %1\ +%obsoletes_pkg google-noto-serif-cjk-%{langname}-fonts\ +%obsoletes_pkg google-noto-serif-%{langname}-fonts\ + +%global fontpkgheader %{expand: + +%obsoletes_pkg google-noto-serif-cjk-ttc-fonts + +%obsoletes_serif sc +%obsoletes_serif tc +%obsoletes_serif jp +%obsoletes_serif kr + +} + +%fontpkg + +%prep +%autosetup -c + +cp -p Variable/OTC/NotoSerifCJK-VF.otf.ttc NotoSerifCJK-VF.ttc + +cp %{SOURCE1} . + +python3 genfontconf.py "ja" "serif" "Noto Serif CJK JP" \ + "ko" "serif" "Noto Serif CJK KR" \ + "zh-cn:zh-sg" "serif" "Noto Serif CJK SC" \ + "zh-tw:cmn:hak:lzh:nan" "serif" "Noto Serif CJK TC" \ + "zh-hk:zh-mo:yue" "serif" "Noto Serif CJK HK" \ + | xmllint --format - |tee 65-0-google-noto-serif-cjk-vf-fonts.conf + + +%build +%fontbuild + +%install +%fontinstall + +%check +%fontcheck + +%fontfiles + +%changelog +* Mon Jun 24 2024 Troy Dawson - 1:2.002-5 +- Bump release for June 2024 mass rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 1:2.002-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jan 20 2024 Fedora Release Engineering - 1:2.002-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Oct 10 2023 Peng Wu - 1:2.002-2 +- Drop some Conflicts from the Noto Serif CJK fonts + +* Tue Aug 22 2023 Peng Wu - 1:2.002-1 +- Update to 2.002 + +* Thu Jul 20 2023 Fedora Release Engineering - 1:2.001-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu May 4 2023 Peng Wu - 1:2.001-2 +- Fix obsoletes_serif macro (rhbz #2190290) + +* Fri Feb 3 2023 Peng Wu - 1:2.001-1 +- Initial Packaging +- Migrate to SPDX license