|
Packit |
46375d |
#!/bin/sh
|
|
Packit |
46375d |
# Prints textual info about the repo-font-audit tests
|
|
Packit |
46375d |
# $1 test id
|
|
Packit |
46375d |
# $2 "title" or "help"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ "$2" == "help" ] && echo -n "☛ "
|
|
Packit |
46375d |
|
|
Packit |
46375d |
case "$1" in
|
|
Packit |
46375d |
"outside-usr-share-fonts")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: fonts deployed outside /usr/share/fonts"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
The standard location for font files is under the /usr/share/fonts root
|
|
Packit |
46375d |
(default fontconfig setting). Please simplify the work of font utilities
|
|
Packit |
46375d |
and use it exclusively. It is always possible to symlink font files
|
|
Packit |
46375d |
somewhere else on the file-system if an application requires it.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
If you fear exposing your font files in fontconfig will cause problems,
|
|
Packit |
46375d |
please work with the fontconfig maintainers to resolve them.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"without-rpm-metadata")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: fonts in packages that do not declare font metadata"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Font-specific rpm metadata is required for automatic font installation to
|
|
Packit |
46375d |
work. If you apply our font packaging templates, it will be generated at
|
|
Packit |
46375d |
package creation time.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"family-mixing")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: packages that mix different font families"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Reliable font auto-installation requires shipping only one font family per
|
|
Packit |
46375d |
font package.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
(If you've remapped some font names at the fontconfig level your package
|
|
Packit |
46375d |
may appear here pending some fontconfig fixes upstream is aware of).
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"duplicated-file")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: exact font duplication"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task, eventual upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Several packages duplicate font files with the same checksum. This
|
|
Packit |
46375d |
needlessly wastes resources infrastructure and user side and makes font
|
|
Packit |
46375d |
maintenance problematic.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
A repository should always include only one version of a font file.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
This test can not discriminate between packages and identity the correct
|
|
Packit |
46375d |
owner of the font files. His maintainer will be blamed with others. If
|
|
Packit |
46375d |
you're not him it is therefore unfriendly not to fix this error as soon as
|
|
Packit |
46375d |
you can.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
It is always possible to reuse a font file packaged separately by adding a
|
|
Packit |
46375d |
dependency on the other package providing it, and accessing the font
|
|
Packit |
46375d |
through fontconfig.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
If an application can not use fontconfig today this is a serious bug that
|
|
Packit |
46375d |
should be reported to the application upstream. Please ask it to add
|
|
Packit |
46375d |
fontconfig support to their code (usually, via a higher-level library
|
|
Packit |
46375d |
such as pango-cairo). However it can workarounded by the packager with
|
|
Packit |
46375d |
symlinks (that will need maintenance).
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"duplicated-face-ext")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: font faces duplicated by different packages"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task, eventual upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Several packages duplicate font files with the same face name. This
|
|
Packit |
46375d |
needlessly wastes resources infrastructure and user side and makes font
|
|
Packit |
46375d |
maintenance problematic:
|
|
Packit |
46375d |
|
|
Packit |
46375d |
1. Very often an upstream that copied some fonts will forget to keep them
|
|
Packit |
46375d |
up to date, and the duplication will result in the distribution of old
|
|
Packit |
46375d |
buggy data.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
2. Shipping the same font in different formats is also problematic:
|
|
Packit |
46375d |
different font formats have different features, and are processed by
|
|
Packit |
46375d |
different font libraries. It is almost impossible to create a font in
|
|
Packit |
46375d |
multiple formats that will all behave the same. Users hate fonts that do
|
|
Packit |
46375d |
not behave consistently everywhere.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
3. Most of our applications use fontconfig to access fonts, and fontconfig
|
|
Packit |
46375d |
uses font names to identify files. Naming collisions make font selection
|
|
Packit |
46375d |
unreliable. So even genuine forks with different features from the
|
|
Packit |
46375d |
original are a problem if not renamed.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
A repository should always include only one version of a font face.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
This test can not discriminate between packages and identity the correct
|
|
Packit |
46375d |
owner of the font face. His maintainer will be blamed with others. If
|
|
Packit |
46375d |
you're not him it is therefore unfriendly not to fix this error as soon as
|
|
Packit |
46375d |
you can.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
It is always possible to reuse a font file packaged separately by adding a
|
|
Packit |
46375d |
dependency on the other package providing it, and accessing the font
|
|
Packit |
46375d |
through fontconfig.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
If an application can not use fontconfig today this is a serious bug that
|
|
Packit |
46375d |
should be reported to the application upstream. Please ask it to add
|
|
Packit |
46375d |
fontconfig support to their code (usually, via a higher-level library
|
|
Packit |
46375d |
such as pango-cairo). However it can workarounded by the packager with
|
|
Packit |
46375d |
symlinks (that will need maintenance).
|
|
Packit |
46375d |
|
|
Packit |
46375d |
If an application can not use a modern font format and forces the
|
|
Packit |
46375d |
re-packaging in an older format of an exiting font this is an application
|
|
Packit |
46375d |
bug that should be reported to the application upstream. In that case
|
|
Packit |
46375d |
these is no good solution possible baring the fixing of the application.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"fc-query")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: fonts fc-query can not parse"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
fc-query could not parse some font files in the package. The files may be
|
|
Packit |
46375d |
malformed and in need of fixing, or fc-query has a bug.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Any font file rejected by fc-query will be useless in fontconfig and most
|
|
Packit |
46375d |
applications. If it can not be fixed drop it
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please relay the problem to the appropriate upstream to get it fixed.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"libmagic")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: fonts not identified as such by libmagic"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
libmagic could not identify some files with font-like extensions in the
|
|
Packit |
46375d |
package. The files may be malformed and in need of fixing, or they use a
|
|
Packit |
46375d |
font extension when they should not, or libmagic has a bug.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please relay the problem to the appropriate upstream to get it fixed.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"broken-symlink")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: broken symlinks to font files"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager and upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
The symlinked font file has moved, been renamed, or the symlink was never
|
|
Packit |
46375d |
properly set up. You need to change the symlink.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Symlinking requires maintenance and is only necessary when an application
|
|
Packit |
46375d |
lacks fontconfig support. If an application can not use fontconfig today
|
|
Packit |
46375d |
this is a serious bug that should be reported to the application upstream.
|
|
Packit |
46375d |
Please ask it to add fontconfig support to their code (usually, via a
|
|
Packit |
46375d |
higher-level library such as pango-cairo).
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"rpmlint")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: rpmlint"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Check rpmlint output to fix the listed packages (using the -i flag if you
|
|
Packit |
46375d |
don't understand rpmlint messages).
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"mixed-with-non-font-data")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: fonts in packages that contain non-font data"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please do not mix font files with non-font data in packages. Fonts are
|
|
Packit |
46375d |
usually useful outside of the package that deploys them and should be
|
|
Packit |
46375d |
installable without pulling in other material.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"arch-package")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Error: fonts in arch packages"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Fonts are not arch-specific; please make sure they are deployed in noarch
|
|
Packit |
46375d |
packages.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"bad-rpm-naming")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Warning: fonts in packages that do not respect font naming conventions"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please respect font package naming conventions and provide consistent
|
|
Packit |
46375d |
packages to users. Some scripts may depend on strict package naming.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"bad-naming")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Warning: bad font naming"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Font upstream task, with packager workarounds
|
|
Packit |
46375d |
|
|
Packit |
46375d |
The font naming declared by one or more files in the package is not a
|
|
Packit |
46375d |
canonical WWS¹ naming or has some other naming problem. As noted by Adobe²
|
|
Packit |
46375d |
the W3C CSS font family model used in WPF/WWS is less than ideal, but it is
|
|
Packit |
46375d |
a standard and applications expect it.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
This script attempted to apply some heuristics to fix this naming, and
|
|
Packit |
46375d |
computed different values than those in the font files.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
That means some of those files are using non-standard, fuzzy,
|
|
Packit |
46375d |
self-conflicting, confusing names. A correct naming:
|
|
Packit |
46375d |
1. only includes “Width”, “Weight”, “Slant” qualifiers in its style name;
|
|
Packit |
46375d |
2. does not declare more than one of each;
|
|
Packit |
46375d |
3. declares them using the canonical keywords defined in the WWS paper;
|
|
Packit |
46375d |
4. declares them in “Width”, “Weight”, “Slant” order;
|
|
Packit |
46375d |
3. uses spaces to separate them;
|
|
Packit |
46375d |
4. does not use “Width”, “Weight”, “Slant” qualifiers in its family name;
|
|
Packit |
46375d |
5. does not use symbols such as & that cause problems in SGML/XML/HTML
|
|
Packit |
46375d |
contexts.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
The canonical naming computed by this script was printed at test time.
|
|
Packit |
46375d |
Please note that it is only correct in a formal sense: no attempt was made
|
|
Packit |
46375d |
to check that the computed naming corresponds to actual font
|
|
Packit |
46375d |
characteristics. It still needs human review (when the computed naming is
|
|
Packit |
46375d |
way off however that usually indicates the original naming is particularly
|
|
Packit |
46375d |
bad and confusing).
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Because the aim of this test is to help improve overall font naming it will
|
|
Packit |
46375d |
not accept some user-unfriendly naming exceptions Microsoft handles in its
|
|
Packit |
46375d |
WPF heuristic. Also, the naming parsing used in this test is more aggressive
|
|
Packit |
46375d |
than the one Microsoft uses, so it will manage to “fix” some names WPF can
|
|
Packit |
46375d |
not, at the expense of a few false positives³.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
The average application is not as smart as this script and will not attempt
|
|
Packit |
46375d |
to “fix” font naming in any way. Therefore, even if this script computed a
|
|
Packit |
46375d |
correct naming, you should not rely on applications doing the same. Please
|
|
Packit |
46375d |
ask the font usptream to fix the naming directly in the font file(s).
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Packager workaround: patch the file (if it is available in .sfd format),
|
|
Packit |
46375d |
or add a fontconfig rule to your package to hide the problem⁴.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
¹ http://blogs.msdn.com/text/attachment/2249036.ashx
|
|
Packit |
46375d |
http://blogs.adobe.com/typblography/typotechnica2007/Font%20names.pdf
|
|
Packit |
46375d |
² http://blogs.adobe.com/typblography/atypi2006/CSS%20&%20OT%2015.pdf
|
|
Packit |
46375d |
³ For example the family name may include some words that look like a
|
|
Packit |
46375d |
“Width”, “Weight”, “Slant” attribute, but that are used in a different
|
|
Packit |
46375d |
sense. This script is not a natural language parser and can not detect
|
|
Packit |
46375d |
those cases reliably
|
|
Packit |
46375d |
⁴ cf the “fontpackages” remapping template; unfortunately this workaround
|
|
Packit |
46375d |
won't fix problems for non-fontconfig applications, or when
|
|
Packit |
46375d |
interoperating with other systems.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"core-fonts")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Warning: core fonts use"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
This package accesses fonts through the X11 Core protocol.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Numerous long-standing problems with this mode of access, and a design
|
|
Packit |
46375d |
that could not scale to modern font needs lead the (then XFree86) team to
|
|
Packit |
46375d |
deprecate it in favour of fontconfig (née xft). Adoption was quick and by
|
|
Packit |
46375d |
2003 it was clear fontconfig was the new standard¹. Nowadays fontconfig is
|
|
Packit |
46375d |
widely used², including on non Linux/Unix platforms.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
While X11 Core access has been kept on life-support this font system is
|
|
Packit |
46375d |
not actively maintained today. The font library it depends on is slowly
|
|
Packit |
46375d |
shrinking, as it was created in a period of different legal and technical
|
|
Packit |
46375d |
requirements², and there is no one to update the font files when a problem
|
|
Packit |
46375d |
is found³. Therefore, projects are advised to migrate before the situation
|
|
Packit |
46375d |
reaches a critical stage.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Fontconfig has been our default font system for a long time, and accessing
|
|
Packit |
46375d |
fonts by other means will cause behaviour inconsistencies and many other
|
|
Packit |
46375d |
problems (since fontconfig can be used to change the behaviour of a font).
|
|
Packit |
46375d |
|
|
Packit |
46375d |
If an application can not use fontconfig today this is a serious bug that
|
|
Packit |
46375d |
should be reported to the application upstream. Please ask it to add
|
|
Packit |
46375d |
fontconfig support to their code (usually, via a higher-level library
|
|
Packit |
46375d |
such as pango-cairo).
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
¹ http://xfree86.org/pipermail/forum/2003-March/000799.html
|
|
Packit |
46375d |
² Screen technology changed, encoding standard (Unicode) changed, legal
|
|
Packit |
46375d |
reviews became more comprehensive, etc.
|
|
Packit |
46375d |
³ Leaving culling the only solution.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"font-linking")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Warning: font linking"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Symlinking is a way for non-font packages to avoid duplicating font files,
|
|
Packit |
46375d |
but it is also a symptom of missing or incomplete fontconfig support.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Fontconfig has been our default font system for a long time, and accessing
|
|
Packit |
46375d |
fonts by other means will cause behaviour inconsistencies and many other
|
|
Packit |
46375d |
problems (since fontconfig can be used to change the behaviour of a font).
|
|
Packit |
46375d |
|
|
Packit |
46375d |
If an application can not use fontconfig today this is a serious bug that
|
|
Packit |
46375d |
should be reported to the application upstream. Please ask it to add
|
|
Packit |
46375d |
fontconfig support to their code (usually, via a higher-level library
|
|
Packit |
46375d |
such as pango-cairo).
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"duplicated-face-int")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Warning: font faces duplicated within a package"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Packager or upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Face duplication within a package is almost certainly a bug (usually,
|
|
Packit |
46375d |
mis-naming in one of the font files), except for special symbol font
|
|
Packit |
46375d |
families.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
1. Fonts that were split because of the limitations of legacy font formats
|
|
Packit |
46375d |
(PCF, Type 1…) should be converted to modern OpenType (TT, CFF or bitmap)
|
|
Packit |
46375d |
containers.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
2. Shipping the same font in different formats is problematic: different
|
|
Packit |
46375d |
font formats have different features, and are processed by different font
|
|
Packit |
46375d |
libraries. It is almost impossible to create a font in multiple formats
|
|
Packit |
46375d |
that will all behave the same. Users hate fonts that do not behave
|
|
Packit |
46375d |
consistently everywhere.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
3. Most of our applications use fontconfig to access fonts, and fontconfig
|
|
Packit |
46375d |
uses font names to identify files. Naming collisions make font selection
|
|
Packit |
46375d |
unreliable.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
If an application can not use a modern font format and forces the
|
|
Packit |
46375d |
re-packaging in an older format of an exiting font this is an application
|
|
Packit |
46375d |
bug that should be reported to the application upstream. In that case
|
|
Packit |
46375d |
these is no good solution possible baring the fixing of the application.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"fontlint")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Warning: fonts that do not pass fontlint sanity checks"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Font upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Fontforge's fontlint¹ test suite found problems in some files included in
|
|
Packit |
46375d |
the package. Those problems may not be obvious and only manifest as
|
|
Packit |
46375d |
strange behaviour in specific applications (making them hard to debug).
|
|
Packit |
46375d |
For that reason it is recommanded to report those problems upstream and
|
|
Packit |
46375d |
get them fixed, even if the font file seems to work fine most of the time.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
You can ask help about specific fontlint errors on:
|
|
Packit |
46375d |
https://lists.sourceforge.net/lists/listinfo/fontforge-users
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please relay the problem report to the font upstream.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
¹ http://fontforge.sourceforge.net/fontlint.html
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"no-english-metadata")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Warning: fonts with localized metadata but no English variant"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Font upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Some font files in the package declare localized metadata, but do not
|
|
Packit |
46375d |
include an English variant. They need to be fixed to also declare metadata
|
|
Packit |
46375d |
in English, so it can be used in technical declarations such as CSS rules.
|
|
Packit |
46375d |
(Sometimes font do include English metadata, but under another language
|
|
Packit |
46375d |
label. There is no way for applications or for this test to guess some
|
|
Packit |
46375d |
metadata is mislabeled).
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please relay the problem report to the font upstream.
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"partial-scripts")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Suggestion: fonts with partial script coverage"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Font upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Some font files included in the package are missing a few glyphs to be
|
|
Packit |
46375d |
accepted by fontconfig as covering one or several scripts. Therefore they
|
|
Packit |
46375d |
could be made useful to more people with only a little effort.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Many scripts differ by only a few glyphs and it is unfortunately common
|
|
Packit |
46375d |
for font authors not to notice they stopped just short of full support for
|
|
Packit |
46375d |
some of them.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
To check a font file script coverage, run:
|
|
Packit |
46375d |
$ FC_DEBUG=256 fc-query font-file
|
|
Packit |
46375d |
and look for lines like:
|
|
Packit |
46375d |
script-id¹(number) { list-of-unicode-codepoints }
|
|
Packit |
46375d |
|
|
Packit |
46375d |
For example
|
|
Packit |
46375d |
“mi(2) { 1e34 1e35 }”
|
|
Packit |
46375d |
means fontconfig will accept the tested file for Maori if codepoints 1e34
|
|
Packit |
46375d |
and 1e35 are added.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
fontconfig is used by a lot of applications on many systems so ignoring
|
|
Packit |
46375d |
its opinion on a font is a mistake.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please relay the incomplete coverage report to the font upstream.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
P.S.
|
|
Packit |
46375d |
Of course fontconfig is not perfect either so it may require a glyph for a
|
|
Packit |
46375d |
script when it should not. In that case, please report the problem to
|
|
Packit |
46375d |
fontconfig upstream:
|
|
Packit |
46375d |
https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig
|
|
Packit |
46375d |
against the “orth” component.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
¹ http://www.loc.gov/standards/iso639-2/php/code_list.php
|
|
Packit |
46375d |
² https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"partial-blocks")
|
|
Packit |
46375d |
case "$2" in
|
|
Packit |
46375d |
"title")
|
|
Packit |
46375d |
echo "Suggestion: fonts with partial unicode block coverage"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"help")
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
Font upstream task
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Some font files included in the package are missing only a few glyphs to
|
|
Packit |
46375d |
fully cover an Unicode block. Therefore they could be made useful to more
|
|
Packit |
46375d |
people with only a little effort.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
The Unicode consortium revises its tables regularly. A font may need to be
|
|
Packit |
46375d |
extended to maintain full coverage of a block when a new Unicode standard
|
|
Packit |
46375d |
revision is published¹.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
To check the unicode coverage of a font, run the ttfcoverage command. (It
|
|
Packit |
46375d |
only works for modern .otf or .ttf fonts).
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please relay the incomplete coverage report to the font upstream.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
¹ http://www.unicode.org/charts/
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
*)
|
|
Packit |
46375d |
echo "Unknown test."
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ "$2" == "help" ] && echo ""
|