[RFC] Fontconfig lang-specific font override

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Here is the solution I've arrived for Fedora Extras DejaVu packaging :
- making DejaVu the fontconfig default
- optionally substituting other fonts for Arabic or Farsi, for people
unsatisfied with DejaVu current Arabic block

I'm far from sure this is the right solution or a simpler one is not
possible, but unless a fontconfig guru will point me to a better
solution this is the one which will ship in FE next week (and possibly
later in FC6). I've gone as far as I could alone.

Regards,

-- 
Nicolas Mailhot
%define archivename     dejavu-sfd
# This macro has the same value as %{version}, except when testing pre-release snapshots
%define archiveversion  20060608-938
%define fontdir         %{_datadir}/fonts/%{name}
%define fontconfdir     %{_sysconfdir}/fonts
%define xsldir          %{_datadir}/xml/%{name}

# Let the perl Maintainer worry about Unicode.org data files (updates, licensing)
%define Blocks		%(eval "$(%{__perl} -V:privlibexp)"; echo $privlibexp)/unicore/Blocks.txt
%define UnicodeData	%(eval "$(%{__perl} -V:privlibexp)"; echo $privlibexp)/unicore/UnicodeData.txt

Name:      dejavu-fonts
Version:   2.7.0
Release:   0.12%{?dist}
Summary:   DejaVu fonts
Group:     User Interface/X
License:   Redistributable, with restrictions
URL:       http://dejavu.sf.net/
Source:    http://prdownloads.sourceforge.net/dejavu/%{archivename}-%{archiveversion}.tar.gz
Source1:   %{name}-register.xsl
Source2:   %{name}-block.xsl
Source3:   %{name}-unblock.xsl
Source4:   %{name}-vera-aliases.conf
Source5:   %{name}-persian-override.conf
Source6:   %{name}-arabic-override.conf
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: fontforge
# The CPAN sources do not declare perl(Font::TTF)
BuildRequires: perl-Font-TTF
# Needed to compute unicode coverage
BuildRequires: %{Blocks} %{UnicodeData}
# If we add this the package will require fontconfig
# Requires: %{fontconfdir}/conf.d
BuildArch: noarch
Conflicts: fontconfig < 2.3.93


%description
The DejaVu fonts are a font family based on the Bitstream Vera Fonts release
1.10. Its purpose is to provide a wider range of characters (see Current status
page for more information) while maintaining the original look and feel through
the process of collaborative develop.

This package includes the typefaces the DejaVu project considers mature.


%package experimental
Group:    User Interface/X
Summary:  Experimental DejaVu typefaces
# Does not really make sense without the core typefaces
Requires: %{name} = %{version}-%{release}


%description experimental
The DejaVu fonts are a font family based on the Bitstream Vera Fonts release
1.10. This package includes the typefaces the DejaVu project considers
experimental.


%package makedefault
Group:     User Interface/X
Summary:   Files needed to make DejaVu the default fontconfig fonts 
# Needed for fontconfig alias registration
Requires:  %{_bindir}/xsltproc, /bin/mktemp, %{fontconfdir}/fonts.conf
Obsoletes: %{name}-fontconfig
Provides:  %{name}-fontconfig

%description makedefault

This package will add DejaVu fonts to fontconfig aliases and keep them there.
It will make DejaVu fonts the first choice if they're not already listed in
the aliases, and keep their current rank otherwise.


%package block
Group:    User Interface/X
Summary:  Files needed to block DejaVu use with some scripts
Requires: %{fontconfdir}/conf.d
Requires: %{_bindir}/xsltproc, /bin/mktemp, %{fontconfdir}/fonts.conf

%description block
The DejaVu fonts are a font family based on the Bitstream Vera Fonts release
1.10. While their glyph coverage and quality is improving every release, they
may not yet be suitable for intensive use for some scripts.

This package will force substitution of DejaVu by other fonts when rendering
one of these scripts. If you need to install it, you probably have
some enhancement suggestions to make at
https://bugs.freedesktop.org/enter_bug.cgi?product=DejaVu or
dejavu-fonts at lists.sourceforge.net

Requests for enhancements or fixes of the blocking code should go to
https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora%20Extras


%prep
%setup -q -n %{archivename}-%{archiveversion}


%build
./generate.sh
./status.pl %{version} status.txt *.sfd > status.txt.new
mv status.txt.new status.txt
./unicover.pl %{UnicodeData} %{Blocks} \
              DejaVuSans.sfd Sans \
              DejaVuSerif.sfd Serif \
              DejaVuMonoSans.sfd "Sans Mono" > unicover.txt
# We should probably also regenerate langcover.txt
# but it requires resolution of 
# https://bugs.freedesktop.org/show_bug.cgi?id=6316 


%check
# Current upstream files are full of "problems"
# Do not panic if the output is long
./problems.pl -l 3 *.sfd


%install
/bin/rm -rf %{buildroot}

#fonts
install -d -m 0755 %{buildroot}%{fontdir}
install -m 0644 generated/*.ttf  %{buildroot}%{fontdir}

#xsl
install -d -m 755 %{buildroot}%{xsldir}
install -p -m 644 %{SOURCE1} %{buildroot}%{xsldir}/register.xsl
install -p -m 644 %{SOURCE2} %{buildroot}%{xsldir}/block.xsl
install -p -m 644 %{SOURCE3} %{buildroot}%{xsldir}/unblock.xsl

# Fontconfig overrides for some scripts
install -d -m 0755 %{buildroot}%{fontconfdir}/conf.d
install -m 0644 %{SOURCE4} %{buildroot}%{fontconfdir}/conf.d/20-BitstreamVera-aliases.conf
install -m 0644 %{SOURCE5} %{buildroot}%{fontconfdir}/conf.d/00-dejavu-persian-override.conf
install -m 0644 %{SOURCE6} %{buildroot}%{fontconfdir}/conf.d/00-dejavu-arabic-override.conf


%clean
/bin/rm -rf %{buildroot}


%post
if [ -x %{_bindir}/fc-cache ]; then 
  %{_bindir}/fc-cache %{_datadir}/fonts
fi


%postun
if [ "$1" = "0" ]; then
  if [ -x %{_bindir}/fc-cache ]; then 
    %{_bindir}/fc-cache %{_datadir}/fonts
  fi
fi


%post experimental
if [ -x %{_bindir}/fc-cache ]; then
  %{_bindir}/fc-cache %{_datadir}/fonts
fi


%postun experimental
if [ "$1" = "0" ]; then
  if [ -x %{_bindir}/fc-cache ]; then
    %{_bindir}/fc-cache %{_datadir}/fonts
  fi
fi


### Triggers yes I know I'm mad

# I hope this won't be necessary by FC6T1 time
%triggerin makedefault -- fontconfig, %{fontconfdir}/fonts.conf
if [ -w %{fontconfdir}/fonts.conf ] ; then
  TMPFILE=$(/bin/mktemp -q /tmp/fonts.conf.XXXXXX) && \
  %{_bindir}/xsltproc --novalid --output $TMPFILE \
    %{xsldir}/register.xsl %{fontconfdir}/fonts.conf && \
  /bin/cat $TMPFILE > %{fontconfdir}/fonts.conf && /bin/rm $TMPFILE
fi


# These bits do not seem achieveable right now by dumping files in
# %{fontconfdir}/conf.d
%triggerin block -- fontconfig, %{fontconfdir}/fonts.conf
if [ -w %{fontconfdir}/fonts.conf ] ; then
  TMPFILE=$(/bin/mktemp -q /tmp/fonts.conf.XXXXXX) && \
  %{_bindir}/xsltproc --novalid --output $TMPFILE \
    %{xsldir}/block.xsl %{fontconfdir}/fonts.conf && \
  /bin/cat $TMPFILE > %{fontconfdir}/fonts.conf && /bin/rm $TMPFILE
fi


%preun block
if [ "$1" = "0" -a -w %{fontconfdir}/fonts.conf ] ; then
  TMPFILE=$(/bin/mktemp -q /tmp/fonts.conf.XXXXXX) && \
  %{_bindir}/xsltproc --novalid --output $TMPFILE \
    %{xsldir}/unblock.xsl %{fontconfdir}/fonts.conf && \
  /bin/cat $TMPFILE > %{fontconfdir}/fonts.conf && /bin/rm $TMPFILE
fi


%files
%defattr(0644,root,root,0755)
%doc *.txt AUTHORS BUGS LICENSE NEWS README

%{fontconfdir}/conf.d/20-BitstreamVera-aliases.conf

%dir %{fontdir}
%{fontdir}/DejaVu*.ttf
%exclude %{fontdir}/DejaVu*Condensed*.ttf
%exclude %{fontdir}/DejaVu*ExtraLight*.ttf
%exclude %{fontdir}/DejaVuSerif-*Oblique.ttf

%files experimental
%defattr(0644,root,root,0755)
%{fontdir}/DejaVu*Condensed*.ttf
%{fontdir}/DejaVu*ExtraLight*.ttf
%{fontdir}/DejaVuSerif-*Oblique.ttf


%files makedefault
%defattr(0644,root,root,0755)
%dir %{xsldir}
%{xsldir}/register.xsl


%files block
%defattr(0644,root,root,0755)

%dir %{xsldir}
%{xsldir}/block.xsl
%{xsldir}/unblock.xsl

%exclude %{fontconfdir}/conf.d/20-BitstreamVera-aliases.conf
%{fontconfdir}/conf.d/*.conf


%changelog
* Sun Jun 11 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.7.0-0.12
- replace triggerun by preun

* Sun Jun 11 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.7.0-0.10
- block Sans instead of sans-serif - GNOME uses the first one

* Sun Jun 11 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.7.0-0.9
- reintroduce xslt triggers in dejavu-fonts-block as fontconfig conf.d priority
  is not high enough for our needs

* Sun Jun 11 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.7.0-0.8
- complete and clean up the Vera aliasing

* Sun Jun 11 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.7.0-0.7
- addition of fontconfig blocking for Arabic and Persian
  (experimental but safe)
- tweak of the fontconfig aliasing to make DejaVu fonts the highest prio
  instead of following Vera ranking, and rename the subpackage accordingly

* Sun Jun 11 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.7.0-0.1
- preparation to 2.7.0 based on the current dejavu snapshot

* Mon May 15 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.6.0-1
- 2.6.0

* Sun Apr 23 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.5.0-1
- 2.5.0

* Wed Mar 29 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.4.1-1
- 2.4.1 (workaround pango problems)

* Wed Mar 22 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.4-1
- 2.4 A big thanks to Stepan Roh for getting the project there
- split out experimental typefaces

* Sat Mar 04 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.3-3
- split fontconfig registration in subpackage

* Sat Mar 04 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.3-2
- register dejavu in fontconfig aliases

* Mon Feb 20 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.3-1
- 2.3

* Mon Feb 13 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> - 2.2-6
- rebuilt for new gcc4.1 snapshot and glibc changes

* Sun Feb 12 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> 2.2-5
- downgrade fontforge requirement following bug #181052 resolution

* Sun Feb 12 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> 2.2-4
- WARNING: in an effort to get Fedora Extras as self-hosting as possible
  starting from this release ttf files are regenerated from sfd sources

* Mon Jan 16 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> 2.2-2
- bump release to ensure graceful FC4 -> FC5 update
- bump again because of bas CVS tag

* Mon Jan 16 2006 Nicolas Mailhot <nicolas.mailhot at laposte.net> 2.2-1
- 2.2

* Wed Dec 28 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 2.1-1
- 2.1

* Sun Nov 13 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 2.0-1
- 2.0!

* Fri Oct 28 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 1.15-2
- add ghosting of %{fontdir}/fonts.cache-2 since it seems
  needed nowadays

* Sun Oct 16 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 1.15-1
- 1.15

* Sat Oct 8 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 1.14-1
- 1.14
- still using prepackaged TTFs as the FE fontforge package is too old

* Sun Jul 31 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 1.12-1
- 1.12

* Thu Jun 23 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 1.11-1
- 1.11

* Mon May 22 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 1.10-1
- 1.10

* Sat May 21 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 1.9-2
- 1.9
- submission to FCE

* Sat Feb 19 2005 Nicolas Mailhot <nicolas.mailhot at laposte.net> 1.7-1
- initial build - using vera as template

* Sat Jan 08 2005 Florian La Roche <laroche@xxxxxxxxxx>
- rebuilt to get rid of legacy selinux filecontexts

Attachment: dejavu-fonts-arabic-override.conf
Description: application/xml

Attachment: dejavu-fonts-block.xsl
Description: application/xslt

Attachment: dejavu-fonts-persian-override.conf
Description: application/xml

Attachment: dejavu-fonts-register.xsl
Description: application/xslt

Attachment: dejavu-fonts-unblock.xsl
Description: application/xslt

Attachment: dejavu-fonts-vera-aliases.conf
Description: application/xml

Attachment: signature.asc
Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=

_______________________________________________
Fontconfig mailing list
Fontconfig@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/fontconfig

[Index of Archives]     [Fedora Fonts]     [Fedora Users]     [Fedora Cloud]     [Kernel]     [Fedora Packaging]     [Fedora Desktop]     [PAM]     [Gimp Graphics Editor]     [Yosemite News]

  Powered by Linux