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