Browse Source

Refs #33247 -- Fixed rendering of Unicode chars and emojis in PDF docs build.

Andrew Neitsch 3 years ago
parent
commit
95a4db3fbd
1 changed files with 28 additions and 6 deletions
  1. 28 6
      docs/conf.py

+ 28 - 6
docs/conf.py

@@ -272,13 +272,35 @@ rst_epilog = """
 
 # -- Options for LaTeX output --------------------------------------------------
 
+# Use lualatex for Unicode support.
+latex_engine = 'lualatex'
+# Set fonts and fallbacks for CJK and Emojis.
 latex_elements = {
-    'preamble': (
-        '\\DeclareUnicodeCharacter{2264}{\\ensuremath{\\le}}'
-        '\\DeclareUnicodeCharacter{2265}{\\ensuremath{\\ge}}'
-        '\\DeclareUnicodeCharacter{2665}{[unicode-heart]}'
-        '\\DeclareUnicodeCharacter{2713}{[unicode-checkmark]}'
-    ),
+    'preamble': r"""
+        \directlua{
+            luaotfload.add_fallback("seriffallbacks", {
+                "Noto Serif CJK SC:style=Regular;",
+                "Symbola:Style=Regular;"
+            })
+        }
+        \setmainfont{FreeSerif}[RawFeature={fallback=seriffallbacks}]
+
+        \directlua{
+            luaotfload.add_fallback("sansfallbacks", {
+                "Noto Sans CJK SC:style=Regular;",
+                "Symbola:Style=Regular;"
+            })
+        }
+        \setsansfont{FreeSans}[RawFeature={fallback=sansfallbacks}]
+
+        \directlua{
+            luaotfload.add_fallback("monofallbacks", {
+                "Noto Sans Mono CJK SC:style=Regular;",
+                "Symbola:Style=Regular;"
+            })
+        }
+        \setmonofont{FreeMono}[RawFeature={fallback=monofallbacks}]
+    """,
 }
 
 # Grouping the document tree into LaTeX files. List of tuples