From 953466755b037769ecd6b411d86ae3b45d06cb1c Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Wed, 8 Feb 2023 17:29:25 +0800 Subject: [PATCH] Import SRPM --- .gitignore | 1 + 65-google-noto-sans-cjk-mono-vf-fonts.conf | 112 ++++++++++++++ 65-google-noto-sans-cjk-vf-fonts.conf | 112 ++++++++++++++ genfontconf.py | 161 +++++++++++++++++++++ google-noto-sans-cjk-vf-fonts.spec | 102 +++++++++++++ sources | 1 + 6 files changed, 489 insertions(+) create mode 100644 .gitignore create mode 100644 65-google-noto-sans-cjk-mono-vf-fonts.conf create mode 100644 65-google-noto-sans-cjk-vf-fonts.conf create mode 100644 genfontconf.py create mode 100644 google-noto-sans-cjk-vf-fonts.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3f9924d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/01_NotoSansCJK-OTF-VF.zip diff --git a/65-google-noto-sans-cjk-mono-vf-fonts.conf b/65-google-noto-sans-cjk-mono-vf-fonts.conf new file mode 100644 index 0000000..cdcfb20 --- /dev/null +++ b/65-google-noto-sans-cjk-mono-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/65-google-noto-sans-cjk-vf-fonts.conf b/65-google-noto-sans-cjk-vf-fonts.conf new file mode 100644 index 0000000..e5ac1bb --- /dev/null +++ b/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/genfontconf.py b/genfontconf.py new file mode 100644 index 0000000..95fba4c --- /dev/null +++ b/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/google-noto-sans-cjk-vf-fonts.spec b/google-noto-sans-cjk-vf-fonts.spec new file mode 100644 index 0000000..6c380fb --- /dev/null +++ b/google-noto-sans-cjk-vf-fonts.spec @@ -0,0 +1,102 @@ +# SPDX-License-Identifier: MIT + +Epoch: 1 +Version: 2.004 +Release: 1%{?dist} +URL: https://github.com/googlefonts/noto-cjk + +BuildRequires: python3 + +%global foundry Google +%global fontlicense OFL-1.1 +%global fontlicenses LICENSE + +%global fontfamily Noto Sans CJK VF +%global fontsummary Google Noto Sans CJK Variable Fonts +%global fonts *.ttc +%global fontconfs 65-0-%{fontpkgname}.conf %{SOURCE10} %{SOURCE11} +%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-cjk-sans-vf-fonts package contains Google Noto Sans CJK Variable fonts. +} + +Source0: https://github.com/googlefonts/noto-cjk/releases/download/Sans%{version}/01_NotoSansCJK-OTF-VF.zip +Source1: genfontconf.py +Source10: 65-%{fontpkgname}.conf +Source11: 65-google-noto-sans-cjk-mono-vf-fonts.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_sans()\ +%define langname %1\ +%obsoletes_pkg google-noto-sans-cjk-%{langname}-fonts\ +%obsoletes_pkg google-noto-sans-%{langname}-fonts\ +%obsoletes_pkg google-noto-sans-mono-cjk-%{langname}-fonts\ + +%global fontpkgheader %{expand: + +# The Noto Sans CJK fonts have both Variable and non-Variable fonts. +# It will cause some issues if install both VF and non-VF fonts, +# add Conflicts here to only install either VF or non-VF fonts. +Conflicts: google-noto-sans-cjk-fonts + +%obsoletes_pkg google-noto-cjk-fonts +%obsoletes_pkg google-noto-cjk-fonts-common +%obsoletes_pkg google-noto-sans-cjk-ttc-fonts + +%obsoletes_sans sc +%obsoletes_sans tc +%obsoletes_sans hk +%obsoletes_sans jp +%obsoletes_sans kr + +} + + +%fontpkg + +%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" "monospace" "Noto Sans Mono CJK JP" \ + "ja" "sans-serif" "Noto Sans CJK JP" \ + "ko" "monospace" "Noto Sans Mono CJK KR" \ + "ko" "sans-serif" "Noto Sans CJK KR" \ + "zh-cn:zh-sg" "monospace" "Noto Sans Mono CJK SC" \ + "zh-cn:zh-sg" "sans-serif" "Noto Sans CJK SC" \ + "zh-tw:cmn:hak:lzh:nan" "monospace" "Noto Sans Mono CJK TC" \ + "zh-tw:cmn:hak:lzh:nan" "sans-serif" "Noto Sans CJK TC" \ + "zh-hk:zh-mo:yue" "monospace" "Noto Sans Mono CJK HK" \ + "zh-hk:zh-mo:yue" "sans-serif" "Noto Sans CJK HK" \ + | xmllint --format - |tee 65-0-google-noto-sans-cjk-vf-fonts.conf + + +%build +%fontbuild + +%install +%fontinstall + +%check +%fontcheck + +%fontfiles + +%changelog +* Fri Feb 3 2023 Peng Wu - 1:2.004-1 +- Initial Packaging +- Migrate to SPDX license diff --git a/sources b/sources new file mode 100644 index 0000000..0129eb8 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (01_NotoSansCJK-OTF-VF.zip) = e8756ec4897589f740adf59bc16554e61cec45e031fa7a41d2acfc6251a47e7db79f2489e1569388e51f12905e06b03c397faf3db366bf8c2549221fbd1980cc