From ea5be297ff8838130086ee7b03bd06d8de26c459 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Aug 02 2019 02:37:21 +0000 Subject: import google-noto-cjk-fonts-20190416-1.el8 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6e250c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/noto-cjk-be6c059.tar.gz diff --git a/.google-noto-cjk-fonts.metadata b/.google-noto-cjk-fonts.metadata new file mode 100644 index 0000000..fb26ee2 --- /dev/null +++ b/.google-noto-cjk-fonts.metadata @@ -0,0 +1 @@ +c3bd01902fc238e858d537dd45ae379b5dac62cd SOURCES/noto-cjk-be6c059.tar.gz diff --git a/SOURCES/genfontconf.py b/SOURCES/genfontconf.py new file mode 100644 index 0000000..3fe5386 --- /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/SOURCES/genfontconf.sh b/SOURCES/genfontconf.sh new file mode 100644 index 0000000..9a8d776 --- /dev/null +++ b/SOURCES/genfontconf.sh @@ -0,0 +1,55 @@ +#!/usr/bin/bash -x + +# Generate for google-noto-sans-cjk-ttc-fonts +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:zh-hk" "monospace" "Noto Sans Mono CJK TC" "zh-tw:zh-hk" "sans-serif" "Noto Sans CJK TC" | xmllint --format - |tee 65-0-google-noto-sans-cjk-ttc.conf + +# Generate for google-noto-serif-cjk-ttc-fonts +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:zh-hk" "serif" "Noto Serif CJK TC" | xmllint --format - |tee 65-0-google-noto-serif-cjk-ttc.conf + +# Generate for google-noto-sans-cjk-jp-fonts, google-noto-serif-cjk-jp-fonts and google-noto-sans-mono-cjk-jp-fonts +python3 genfontconf.py "ja" "sans-serif" "Noto Sans CJK JP" | xmllint --format - |tee 66-google-noto-sans-cjk-jp.conf + +python3 genfontconf.py "ja" "serif" "Noto Serif CJK JP" | xmllint --format - |tee 66-google-noto-serif-cjk-jp.conf + +python3 genfontconf.py "ja" "monospace" "Noto Sans Mono CJK JP" | xmllint --format - |tee 66-google-noto-sans-mono-cjk-jp.conf + +# Generate for google-noto-sans-cjk-kr-fonts, google-noto-serif-cjk-kr-fonts and google-noto-sans-mono-cjk-kr-fonts +python3 genfontconf.py "ko" "sans-serif" "Noto Sans CJK KR" | xmllint --format - |tee 66-google-noto-sans-cjk-kr.conf + +python3 genfontconf.py "ko" "serif" "Noto Serif CJK KR" | xmllint --format - |tee 66-google-noto-serif-cjk-kr.conf + +python3 genfontconf.py "ko" "monospace" "Noto Sans Mono CJK KR" | xmllint --format - |tee 66-google-noto-sans-mono-cjk-kr.conf + +# Generate for google-noto-sans-cjk-sc-fonts, google-noto-serif-cjk-sc-fonts and google-noto-sans-mono-cjk-sc-fonts +python3 genfontconf.py "zh-cn:zh-sg" "sans-serif" "Noto Sans CJK SC" | xmllint --format - |tee 66-google-noto-sans-cjk-sc.conf + +python3 genfontconf.py "zh-cn:zh-sg" "serif" "Noto Serif CJK SC" | xmllint --format - |tee 66-google-noto-serif-cjk-sc.conf + +python3 genfontconf.py "zh-cn:zh-sg" "monospace" "Noto Sans Mono CJK SC" | xmllint --format - |tee 66-google-noto-sans-mono-cjk-sc.conf + +# Generate for google-noto-sans-cjk-tc-fonts, google-noto-serif-cjk-tc-fonts and google-noto-sans-mono-cjk-tc-fonts +python3 genfontconf.py "zh-tw:zh-hk" "sans-serif" "Noto Sans CJK TC" | xmllint --format - |tee 66-google-noto-sans-cjk-tc.conf + +python3 genfontconf.py "zh-tw:zh-hk" "serif" "Noto Serif CJK TC" | xmllint --format - |tee 66-google-noto-serif-cjk-tc.conf + +python3 genfontconf.py "zh-tw:zh-hk" "monospace" "Noto Sans Mono CJK TC" | xmllint --format - |tee 66-google-noto-sans-mono-cjk-tc.conf + +# Generate for google-noto-sans-jp-fonts and google-noto-serif-jp-fonts +python3 genfontconf.py "ja" "sans-serif" "Noto Sans JP" | xmllint --format - |tee 66-google-noto-sans-jp.conf + +python3 genfontconf.py "ja" "serif" "Noto Serif JP" | xmllint --format - |tee 66-google-noto-serif-jp.conf + +# Generate for google-noto-sans-kr-fonts and google-noto-serif-kr-fonts +python3 genfontconf.py "ko" "sans-serif" "Noto Sans KR" | xmllint --format - |tee 66-google-noto-sans-kr.conf + +python3 genfontconf.py "ko" "serif" "Noto Serif KR" | xmllint --format - |tee 66-google-noto-serif-kr.conf + +# Generate for google-noto-sans-sc-fonts and google-noto-serif-sc-fonts +python3 genfontconf.py "zh-cn:zh-sg" "sans-serif" "Noto Sans SC" | xmllint --format - |tee 66-google-noto-sans-sc.conf + +python3 genfontconf.py "zh-cn:zh-sg" "serif" "Noto Serif SC" | xmllint --format - |tee 66-google-noto-serif-sc.conf + +# Generate for google-noto-sans-tc-fonts and google-noto-serif-tc-fonts +python3 genfontconf.py "zh-tw:zh-hk" "sans-serif" "Noto Sans TC" | xmllint --format - |tee 66-google-noto-sans-tc.conf + +python3 genfontconf.py "zh-tw:zh-hk" "serif" "Noto Serif TC" | xmllint --format - |tee 66-google-noto-serif-tc.conf diff --git a/SPECS/google-noto-cjk-fonts.spec b/SPECS/google-noto-cjk-fonts.spec new file mode 100644 index 0000000..95c9f6d --- /dev/null +++ b/SPECS/google-noto-cjk-fonts.spec @@ -0,0 +1,273 @@ +%global commit0 be6c059ac1587e556e2412b27f5155c8eb3ddbe6 +%global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) + +%global fontname google-noto-cjk +%global fontconf google-noto + +%global common_desc \ +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. \ +%{nil} + +Name: google-noto-cjk-fonts +Version: 20190416 +Release: 1%{?dist} +Summary: Google Noto Sans CJK Fonts + +License: OFL +URL: https://github.com/googlei18n/noto-cjk +Source0: https://github.com/googlei18n/noto-cjk/archive/%{commit0}.tar.gz#/noto-cjk-%{shortcommit0}.tar.gz +Source1: genfontconf.py +Source2: genfontconf.sh + +BuildArch: noarch +BuildRequires: fontpackages-devel +BuildRequires: python3-devel +BuildRequires: /usr/bin/xmllint +Requires: fontpackages-filesystem +Requires: google-noto-sans-cjk-ttc-fonts +Requires: google-noto-serif-cjk-ttc-fonts + +%if 0%{?fedora} + +Obsoletes: google-noto-sans-cjk-fonts < 20150617 +Provides: google-noto-sans-cjk-fonts = 20150617 + +# notocjkrep Package Name +%define notocjkrep(:)\ +%define pname %(echo %{*} | tr "A-Z " "a-z-")\ +Obsoletes: google-noto-%{pname}-fonts < 20150617\ +Provides: google-noto-%{pname}-fonts = 20150617\ +Obsoletes: google-noto-cjk-%{pname}-fonts < %{version}-%{release}\ +Provides: google-noto-cjk-%{pname}-fonts = %{version}-%{release}\ + + +%notocjkrep Sans Simplified Chinese +%notocjkrep Sans Traditional Chinese +%notocjkrep Sans Japanese +%notocjkrep Sans Korean + +%endif + + +%description +%common_desc + +%package common +Summary: Common files for Noto CJK fonts + +%description common +%common_desc + +Common files for Google Noto CJK fonts. + + +# notocjkpkg [-n sub-package-name] [-f font-file] [-p priority] Font Name +# -n sub package name +# -f font file name +# -p overrides fontconfig .conf priority (default 66) +%define notocjkpkg(n:f:p:) \ +# override _font_pkg_name to avoid name changes in _font_pkg \ +%define _font_pkg_name() %1 \ +%define subpkgname %{-n:%{-n*}} \ +%define fontfiles %{-f:%{-f*}}\ +%define fconf %{-p*}%{!-p:66}-%{fontconf}-%{subpkgname}.conf\ +%package -n google-noto-%subpkgname-fonts \ +Summary: %* font files for %{name} \ +Requires: %{name}-common = %{version}-%{release} \ +\ +%description -n google-noto-%subpkgname-fonts \ +%common_desc \ +\ +The google-noto-%subpkgname-fonts package contains %* fonts. \ +\ +%_font_pkg -n google-noto-%subpkgname-fonts -f %{fconf} %fontfiles \ +%{nil} + + +%notocjkpkg -n sans-cjk-ttc -f NotoSansCJK-*.ttc -p 65-0 Sans OTC + + +%notocjkpkg -n serif-cjk-ttc -f NotoSerifCJK-*.ttc -p 65-0 Serif OTC + + +%notocjkpkg -n sans-cjk-jp -f NotoSansCJKjp-*.otf Japanese Multilingual Sans OTF + + +%notocjkpkg -n serif-cjk-jp -f NotoSerifCJKjp-*.otf Japanese Multilingual Serif OTF + + +%notocjkpkg -n sans-mono-cjk-jp -f NotoSansMonoCJKjp-*.otf Japanese Multilingual Sans Mono OTF + + +%notocjkpkg -n sans-cjk-kr -f NotoSansCJKkr-*.otf Korean Multilingual Sans OTF + + +%notocjkpkg -n serif-cjk-kr -f NotoSerifCJKkr-*.otf Korean Multilingual Serif OTF + + +%notocjkpkg -n sans-mono-cjk-kr -f NotoSansMonoCJKkr-*.otf Korean Multilingual Sans Mono OTF + + +%notocjkpkg -n sans-cjk-sc -f NotoSansCJKsc-*.otf Simplified Chinese Multilingual Sans OTF + + +%notocjkpkg -n serif-cjk-sc -f NotoSerifCJKsc-*.otf Simplified Chinese Multilingual Serif OTF + + +%notocjkpkg -n sans-mono-cjk-sc -f NotoSansMonoCJKsc-*.otf Simplified Chinese Multilingual Sans Mono OTF + + +%notocjkpkg -n sans-cjk-tc -f NotoSansCJKtc-*.otf Traditional Chinese Multilingual Sans OTF + + +%notocjkpkg -n serif-cjk-tc -f NotoSerifCJKtc-*.otf Traditional Chinese Multilingual Serif OTF + + +%notocjkpkg -n sans-mono-cjk-tc -f NotoSansMonoCJKtc-*.otf Traditional Chinese Multilingual Sans Mono OTF + + +%notocjkpkg -n sans-jp -f NotoSansJP-*.otf Japanese Region-specific Sans OTF + + +%notocjkpkg -n serif-jp -f NotoSerifJP-*.otf Japanese Region-specific Serif OTF + + +%notocjkpkg -n sans-kr -f NotoSansKR-*.otf Korean Region-specific Sans OTF + + +%notocjkpkg -n serif-kr -f NotoSerifKR-*.otf Korean Region-specific Serif OTF + + +%notocjkpkg -n sans-sc -f NotoSansSC-*.otf Simplified Chinese Region-specific Sans OTF + + +%notocjkpkg -n serif-sc -f NotoSerifSC-*.otf Simplified Chinese Region-specific Serif OTF + + +%notocjkpkg -n sans-tc -f NotoSansTC-*.otf Traditional Chinese Region-specific Sans OTF + + +%notocjkpkg -n serif-tc -f NotoSerifTC-*.otf Traditional Chinese Region-specific Serif OTF + + +%prep +%setup -q -n noto-cjk-%{commit0} +cp -p %{SOURCE1} %{SOURCE2} . +# generate the font conf files +bash -x ./genfontconf.sh + + +%build + + +%install +install -m 0755 -d %{buildroot}%{_fontdir} + +# copy OTC files +install -m 0644 -p NotoSansCJK-*.ttc %{buildroot}%{_fontdir} +install -m 0644 -p NotoSerifCJK-*.ttc %{buildroot}%{_fontdir} + +# copy Multilingual OTF files +install -m 0644 -p NotoSansCJK{jp,kr,sc,tc}-*.otf %{buildroot}%{_fontdir} +install -m 0644 -p NotoSerifCJK{jp,kr,sc,tc}-*.otf %{buildroot}%{_fontdir} +install -m 0644 -p NotoSansMonoCJK{jp,kr,sc,tc}-*.otf %{buildroot}%{_fontdir} + +# copy Region-specific OTF +install -m 0644 -p NotoSans{JP,KR,SC,TC}-*.otf %{buildroot}%{_fontdir} +install -m 0644 -p NotoSerif{JP,KR,SC,TC}-*.otf %{buildroot}%{_fontdir} + + +install -m 0755 -d %{buildroot}%{_fontconfig_templatedir} \ + %{buildroot}%{_fontconfig_confdir} + +for f in sans-cjk-ttc serif-cjk-ttc \ + sans-cjk-jp serif-cjk-jp sans-mono-cjk-jp \ + sans-cjk-kr serif-cjk-kr sans-mono-cjk-kr \ + sans-cjk-sc serif-cjk-sc sans-mono-cjk-sc \ + sans-cjk-tc serif-cjk-tc sans-mono-cjk-tc \ + sans-jp serif-jp \ + sans-kr serif-kr \ + sans-sc serif-sc \ + sans-tc serif-tc; +do + fconf=$(basename -a *-%{fontconf}-$f.conf) + if [ "$(echo $fconf | wc -w)" -ne 1 ]; then + echo "Did not find unique \*-%{fontconf}-$f.conf file" + exit 1 + fi + + install -m 0644 -p ${fconf} \ + %{buildroot}%{_fontconfig_templatedir}/${fconf} + + ln -s %{_fontconfig_templatedir}/${fconf} \ + %{buildroot}%{_fontconfig_confdir}/${fconf} +done + +%files + + +%files common +%doc NEWS HISTORY README.formats README.third_party +%license LICENSE + + +%changelog +* Wed May 8 2019 Peng Wu - 20190416-1 +- Update to git commit be6c059 +- Resolves: #1702408 + +* Tue Sep 4 2018 Peng Wu - 20170602-9 +- Add BuildRequires python3-devel +- Resolves: #1624469 + +* Fri Jul 13 2018 Fedora Release Engineering - 20170602-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Apr 16 2018 Peng Wu - 20170602-7 +- Make Noto CJK OTC files as default CJK fonts + +* Wed Feb 07 2018 Fedora Release Engineering - 20170602-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Jan 22 2018 Akira TAGOH - 20170602-5 +- Update the priority to change the default font to Noto. + +* Mon Dec 11 2017 Peng Wu - 20170602-4 +- Simplify spec file + +* Thu Dec 7 2017 Peng Wu - 20170602-3 +- Include more fonts and sub package fonts + +* Wed Jul 26 2017 Fedora Release Engineering - 20170602-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 7 2017 Peng Wu - 20170602-1 +- Include Serif fonts + +* Fri Feb 10 2017 Fedora Release Engineering - 1.004-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Dec 2 2016 Peng Wu - 1.004-7 +- Rebuilt to fixes the spec file + +* Fri Dec 2 2016 Peng Wu - 1.004-6 +- Disable Obsoletes for epel: for google-noto-sans-cjk-fonts (rh#1396260) +- Disable notocjkrep macro definition for epel + +* Fri Apr 29 2016 Peng Wu - 1.004-5 +- Replace google-noto-sans-cjk-fonts package + +* Wed Feb 03 2016 Fedora Release Engineering - 1.004-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Nov 13 2015 Peng Wu - 1.004-3 +- Use TTC Files + +* Mon Oct 26 2015 Peng Wu - 1.004-2 +- Fixes Spec + +* Mon Oct 26 2015 Peng Wu - 1.004-1 +- Initial Version