commit bdbbc3deb1ed05ba921db94a6c70f633bb606d66 Author: MSVSphere Packaging Team Date: Fri Oct 25 15:02:02 2024 +0300 import google-noto-sans-cjk-vf-fonts-2.004-8.el10 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..587a226 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/01_NotoSansCJK-OTF-VF.zip diff --git a/.google-noto-sans-cjk-vf-fonts.metadata b/.google-noto-sans-cjk-vf-fonts.metadata new file mode 100644 index 0000000..4db386e --- /dev/null +++ b/.google-noto-sans-cjk-vf-fonts.metadata @@ -0,0 +1 @@ +7ac7a8ef84f8a6064888b801ce49ccd72dc41197 SOURCES/01_NotoSansCJK-OTF-VF.zip diff --git a/SOURCES/65-google-noto-sans-cjk-vf-fonts.conf b/SOURCES/65-google-noto-sans-cjk-vf-fonts.conf new file mode 100644 index 0000000..e5ac1bb --- /dev/null +++ b/SOURCES/65-google-noto-sans-cjk-vf-fonts.conf @@ -0,0 +1,112 @@ + + + + + + Noto Sans CJK SC + + + + lang + + ja + ko + zh-hk + zh-mo + zh-tw + cmn + hak + lzh + nan + yue + + + + + + + Noto Sans CJK TC + + + + lang + + ja + ko + zh-cn + zh-hk + zh-mo + zh-sg + yue + + + + + + + Noto Sans CJK HK + + + + lang + + ja + ko + zh-cn + zh-sg + zh-tw + cmn + hak + lzh + nan + + + + + + + Noto Sans CJK JP + + + + lang + + ko + zh-cn + zh-hk + zh-mo + zh-sg + zh-tw + cmn + hak + lzh + nan + yue + + + + + + + Noto Sans CJK KR + + + + lang + + ja + zh-cn + zh-hk + zh-mo + zh-sg + zh-tw + cmn + hak + lzh + nan + yue + + + + + diff --git a/SOURCES/65-google-noto-sans-mono-cjk-vf-fonts.conf b/SOURCES/65-google-noto-sans-mono-cjk-vf-fonts.conf new file mode 100644 index 0000000..cdcfb20 --- /dev/null +++ b/SOURCES/65-google-noto-sans-mono-cjk-vf-fonts.conf @@ -0,0 +1,112 @@ + + + + + + Noto Sans Mono CJK SC + + + + lang + + ja + ko + zh-hk + zh-mo + zh-tw + cmn + hak + lzh + nan + yue + + + + + + + Noto Sans Mono CJK TC + + + + lang + + ja + ko + zh-cn + zh-hk + zh-mo + zh-sg + yue + + + + + + + Noto Sans Mono CJK HK + + + + lang + + ja + ko + zh-cn + zh-sg + zh-tw + cmn + hak + lzh + nan + + + + + + + Noto Sans Mono CJK JP + + + + lang + + ko + zh-cn + zh-hk + zh-mo + zh-sg + zh-tw + cmn + hak + lzh + nan + yue + + + + + + + Noto Sans Mono 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-sans-cjk-vf-fonts.spec b/SPECS/google-noto-sans-cjk-vf-fonts.spec new file mode 100644 index 0000000..b505713 --- /dev/null +++ b/SPECS/google-noto-sans-cjk-vf-fonts.spec @@ -0,0 +1,136 @@ +# SPDX-License-Identifier: MIT + +Epoch: 1 +Version: 2.004 +Release: 8%{?dist} +URL: https://github.com/googlefonts/noto-cjk + +%global foundry Google +%global fontlicense OFL-1.1 +%global fontlicenses LICENSE + +%global common_description %{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. +} + +%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 fontfamily0 Noto Sans CJK VF +%global fontsummary0 Google Noto Sans CJK Variable Fonts +%global fontpkgheader0 %{expand: +Recommends: google-noto-sans-mono-cjk-vf-fonts = %{epoch}:%{version}-%{release} + + +%obsoletes_pkg google-noto-cjk-fonts +%obsoletes_pkg google-noto-cjk-fonts-common +%obsoletes_pkg google-noto-sans-cjk-ttc-fonts + +%obsoletes_pkg google-noto-sans-cjk-sc-fonts +%obsoletes_pkg google-noto-sans-cjk-tc-fonts +%obsoletes_pkg google-noto-sans-cjk-hk-fonts +%obsoletes_pkg google-noto-sans-cjk-jp-fonts +%obsoletes_pkg google-noto-sans-cjk-kr-fonts +} +%global fonts0 NotoSansCJK-VF.ttc +%global fontconfs0 %{SOURCE10} 65-0-%{fontpkgname0}.conf +%global fontdescription0 %{expand: +%{common_description} + +The google-noto-sans-cjk-vf-fonts package contains Google Noto Sans CJK Variable fonts.} + +%global fontfamily1 Noto Sans Mono CJK VF +%global fontsummary1 Google Noto Sans Mono CJK Variable Fonts +%global fontpkgheader1 %{expand: +%obsoletes_pkg google-noto-sans-mono-cjk-sc-fonts +%obsoletes_pkg google-noto-sans-mono-cjk-tc-fonts +%obsoletes_pkg google-noto-sans-mono-cjk-hk-fonts +%obsoletes_pkg google-noto-sans-mono-cjk-jp-fonts +%obsoletes_pkg google-noto-sans-mono-cjk-kr-fonts +} +%global fonts1 NotoSansMonoCJK-VF.ttc +%global fontconfs1 %{SOURCE11} 65-0-%{fontpkgname1}.conf +%global fontdescription1 %{expand: +%{common_description} + +The google-noto-sans-mono-cjk-vf-fonts package contains Google Noto Sans Mono CJK Variable fonts.} + +Source0: https://github.com/googlefonts/noto-cjk/releases/download/Sans%{version}/01_NotoSansCJK-OTF-VF.zip +Source1: genfontconf.py +Source10: 65-%{fontpkgname0}.conf +Source11: 65-%{fontpkgname1}.conf + +%fontpkg -a + +%prep +%autosetup -c + +cp -p Variable/OTC/NotoSansCJK-VF.otf.ttc NotoSansCJK-VF.ttc +cp -p Variable/OTC/NotoSansMonoCJK-VF.otf.ttc NotoSansMonoCJK-VF.ttc + +cp %{SOURCE1} . + +python3 genfontconf.py "ja" "sans-serif" "Noto Sans CJK JP" \ + "ko" "sans-serif" "Noto Sans CJK KR" \ + "zh-cn:zh-sg" "sans-serif" "Noto Sans CJK SC" \ + "zh-tw:cmn:hak:lzh:nan" "sans-serif" "Noto Sans CJK TC" \ + "zh-hk:zh-mo:yue" "sans-serif" "Noto Sans CJK HK" \ + | xmllint --format - |tee 65-0-google-noto-sans-cjk-vf-fonts.conf + + +python3 genfontconf.py "ja" "monospace" "Noto Sans Mono CJK JP" \ + "ko" "monospace" "Noto Sans Mono CJK KR" \ + "zh-cn:zh-sg" "monospace" "Noto Sans Mono CJK SC" \ + "zh-tw:cmn:hak:lzh:nan" "monospace" "Noto Sans Mono CJK TC" \ + "zh-hk:zh-mo:yue" "monospace" "Noto Sans Mono CJK HK" \ + | xmllint --format - |tee 65-0-google-noto-sans-mono-cjk-vf-fonts.conf + +%build +%fontbuild -a + +%install +%fontinstall -a + +%check +%fontcheck -a + +%fontfiles -a + +%changelog +* Mon Jun 24 2024 Troy Dawson - 1:2.004-8 +- Bump release for June 2024 mass rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 1:2.004-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jan 20 2024 Fedora Release Engineering - 1:2.004-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Oct 6 2023 Akira TAGOH - 1:2.004-5 +- Drop Conflict: google-noto-sans-cjk-fonts to get them installed together. + fontconfig basically estimate same score for both but static font still has + a priority because of path name. This works as a workaround for some issues + related to variable fonts. + Resolves: rhbz #2240646 + +* Wed Jul 26 2023 Peng Wu - 1:2.004-4 +- Add google-noto-sans-mono-cjk-vf-fonts sub package +- Resolves: RHBZ#2215475 + +* Thu Jul 20 2023 Fedora Release Engineering - 1:2.004-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu May 4 2023 Peng Wu - 1:2.004-2 +- Fix obsoletes_sans macro + +* Fri Feb 3 2023 Peng Wu - 1:2.004-1 +- Initial Packaging +- Migrate to SPDX license