~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/check-variable-fonts.sh

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/sh
  2 # SPDX-License-Identifier: GPL-2.0-only
  3 # Copyright (C) Akira Yokosawa, 2024
  4 #
  5 # For "make pdfdocs", reports of build errors of translations.pdf started
  6 # arriving early 2024 [1, 2].  It turned out that Fedora and openSUSE
  7 # tumbleweed have started deploying variable-font [3] format of "Noto CJK"
  8 # fonts [4, 5].  For PDF, a LaTeX package named xeCJK is used for CJK
  9 # (Chinese, Japanese, Korean) pages.  xeCJK requires XeLaTeX/XeTeX, which
 10 # does not (and likely never will) understand variable fonts for historical
 11 # reasons.
 12 #
 13 # The build error happens even when both of variable- and non-variable-format
 14 # fonts are found on the build system.  To make matters worse, Fedora enlists
 15 # variable "Noto CJK" fonts in the requirements of langpacks-ja, -ko, -zh_CN,
 16 # -zh_TW, etc.  Hence developers who have interest in CJK pages are more
 17 # likely to encounter the build errors.
 18 #
 19 # This script is invoked from the error path of "make pdfdocs" and emits
 20 # suggestions if variable-font files of "Noto CJK" fonts are in the list of
 21 # fonts accessible from XeTeX.
 22 #
 23 # References:
 24 # [1]: https://lore.kernel.org/r/8734tqsrt7.fsf@meer.lwn.net/
 25 # [2]: https://lore.kernel.org/r/1708585803.600323099@f111.i.mail.ru/
 26 # [3]: https://en.wikipedia.org/wiki/Variable_font
 27 # [4]: https://fedoraproject.org/wiki/Changes/Noto_CJK_Variable_Fonts
 28 # [5]: https://build.opensuse.org/request/show/1157217
 29 #
 30 #===========================================================================
 31 # Workarounds for building translations.pdf
 32 #===========================================================================
 33 #
 34 # * Denylist "variable font" Noto CJK fonts.
 35 #   - Create $HOME/deny-vf/fontconfig/fonts.conf from template below, with
 36 #     tweaks if necessary.  Remove leading "# ".
 37 #   - Path of fontconfig/fonts.conf can be overridden by setting an env
 38 #     variable FONTS_CONF_DENY_VF.
 39 #
 40 #     * Template:
 41 # -----------------------------------------------------------------
 42 # <?xml version="1.0"?>
 43 # <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
 44 # <fontconfig>
 45 # <!--
 46 #   Ignore variable-font glob (not to break xetex)
 47 # -->
 48 #     <selectfont>
 49 #         <rejectfont>
 50 #             <!--
 51 #                 for Fedora
 52 #             -->
 53 #             <glob>/usr/share/fonts/google-noto-*-cjk-vf-fonts</glob>
 54 #             <!--
 55 #                 for openSUSE tumbleweed
 56 #             -->
 57 #             <glob>/usr/share/fonts/truetype/Noto*CJK*-VF.otf</glob>
 58 #         </rejectfont>
 59 #     </selectfont>
 60 # </fontconfig>
 61 # -----------------------------------------------------------------
 62 #
 63 #     The denylisting is activated for "make pdfdocs".
 64 #
 65 # * For skipping CJK pages in PDF
 66 #   - Uninstall texlive-xecjk.
 67 #     Denylisting is not needed in this case.
 68 #
 69 # * For printing CJK pages in PDF
 70 #   - Need non-variable "Noto CJK" fonts.
 71 #     * Fedora
 72 #       - google-noto-sans-cjk-fonts
 73 #       - google-noto-serif-cjk-fonts
 74 #     * openSUSE tumbleweed
 75 #       - Non-variable "Noto CJK" fonts are not available as distro packages
 76 #         as of April, 2024.  Fetch a set of font files from upstream Noto
 77 #         CJK Font released at:
 78 #           https://github.com/notofonts/noto-cjk/tree/main/Sans#super-otc
 79 #         and at:
 80 #           https://github.com/notofonts/noto-cjk/tree/main/Serif#super-otc
 81 #         , then uncompress and deploy them.
 82 #       - Remember to update fontconfig cache by running fc-cache.
 83 #
 84 # !!! Caution !!!
 85 #     Uninstalling "variable font" packages can be dangerous.
 86 #     They might be depended upon by other packages important for your work.
 87 #     Denylisting should be less invasive, as it is effective only while
 88 #     XeLaTeX runs in "make pdfdocs".
 89 
 90 # Default per-user fontconfig path (overridden by env variable)
 91 : ${FONTS_CONF_DENY_VF:=$HOME/deny-vf}
 92 
 93 export XDG_CONFIG_HOME=${FONTS_CONF_DENY_VF}
 94 
 95 notocjkvffonts=`fc-list : file family variable | \
 96                 grep 'variable=True' | \
 97                 grep -E -e 'Noto (Sans|Sans Mono|Serif) CJK' | \
 98                 sed -e 's/^/    /' -e 's/: Noto S.*$//' | sort | uniq`
 99 
100 if [ "x$notocjkvffonts" != "x" ] ; then
101         echo '============================================================================='
102         echo 'XeTeX is confused by "variable font" files listed below:'
103         echo "$notocjkvffonts"
104         echo
105         echo 'For CJK pages in PDF, they need to be hidden from XeTeX by denylisting.'
106         echo 'Or, CJK pages can be skipped by uninstalling texlive-xecjk.'
107         echo
108         echo 'For more info on denylisting, other options, and variable font, see header'
109         echo 'comments of scripts/check-variable-fonts.sh.'
110         echo '============================================================================='
111 fi
112 
113 # As this script is invoked from Makefile's error path, always error exit
114 # regardless of whether any variable font is discovered or not.
115 exit 1

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php