import google-noto-cjk-fonts-20190416-1.el8

c8 imports/c8/google-noto-cjk-fonts-20190416-1.el8
CentOS Sources 5 years ago committed by MSVSphere Packaging Team
commit df14762cd1

1
.gitignore vendored

@ -0,0 +1 @@
SOURCES/noto-cjk-be6c059.tar.gz

@ -0,0 +1 @@
c3bd01902fc238e858d537dd45ae379b5dac62cd SOURCES/noto-cjk-be6c059.tar.gz

@ -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('<match>')
FontConfRecord.renderTestLang(lang)
FontConfRecord.renderTestFamily(common)
FontConfRecord.renderEditFamily(font, fallback)
FontConfRecord.renderEditLatinFamily(latin)
print('</match>')
@staticmethod
def renderTestLang(lang):
print('<test name="lang">')
print('<string>{0}</string>'.format(lang))
print('</test>')
@staticmethod
def renderTestFamily(common):
print('<test name="family">')
print('<string>{0}</string>'.format(common))
print('</test>')
@staticmethod
def renderEditFamily(font, fallback):
print('<edit name="family" mode="prepend">')
print('<string>{0}</string>'.format(font))
if fallback:
print('<string>{0}</string>'.format(fallback))
print('</edit>')
@staticmethod
def renderEditLatinFamily(latin):
if not latin:
return
print('<edit name="family" mode="prepend" binding="strong">')
print('<string>{0}</string>'.format(latin))
print('</edit>')
@staticmethod
def renderAlias(font, common):
print('<alias>')
print('<family>{0}</family>'.format(font))
print('<default>')
print('<family>{0}</family>'.format(common))
print('</default>')
print('</alias>')
class FontConfFile:
@staticmethod
def renderFile(strings):
FontConfFile.renderHeader()
FontConfFile.renderBody(strings)
FontConfFile.renderFooter()
@staticmethod
def renderHeader():
print('<?xml version="1.0"?>')
print('<!DOCTYPE fontconfig SYSTEM "fonts.dtd">')
print('<fontconfig>')
@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('</fontconfig>')
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)

@ -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

@ -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 <pwu@redhat.com> - 20190416-1
- Update to git commit be6c059
- Resolves: #1702408
* Tue Sep 4 2018 Peng Wu <pwu@redhat.com> - 20170602-9
- Add BuildRequires python3-devel
- Resolves: #1624469
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 20170602-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Apr 16 2018 Peng Wu <pwu@redhat.com> - 20170602-7
- Make Noto CJK OTC files as default CJK fonts
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 20170602-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Mon Jan 22 2018 Akira TAGOH <tagoh@redhat.com> - 20170602-5
- Update the priority to change the default font to Noto.
* Mon Dec 11 2017 Peng Wu <pwu@redhat.com> - 20170602-4
- Simplify spec file
* Thu Dec 7 2017 Peng Wu <pwu@redhat.com> - 20170602-3
- Include more fonts and sub package fonts
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 20170602-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Wed Jun 7 2017 Peng Wu <pwu@redhat.com> - 20170602-1
- Include Serif fonts
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.004-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Fri Dec 2 2016 Peng Wu <pwu@redhat.com> - 1.004-7
- Rebuilt to fixes the spec file
* Fri Dec 2 2016 Peng Wu <pwu@redhat.com> - 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 <pwu@redhat.com> - 1.004-5
- Replace google-noto-sans-cjk-fonts package
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.004-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Nov 13 2015 Peng Wu <pwu@redhat.com> - 1.004-3
- Use TTC Files
* Mon Oct 26 2015 Peng Wu <pwu@redhat.com> - 1.004-2
- Fixes Spec
* Mon Oct 26 2015 Peng Wu <pwu@redhat.com> - 1.004-1
- Initial Version
Loading…
Cancel
Save