I learned from Davislor answer that I tell LaTeX to warn me if a missing glyph is detected. I can then declare it with this:
\documentclass{article}
\tracinglostchars=2
\usepackage{newunicodechar}
\usepackage{fontspec}
\usepackage{ctex}
\usepackage{FiraSans}
\setCJKmainfont{ipaexm.ttf}
\setmonofont{Fira Code}
\newfontfamily\firamono{Fira Mono}[Ligatures={Common,Discretionary,TeX}]
\newunicodechar{⇒}{{\sffamily ⇒}}
\newunicodechar{⊕}{{\sffamily ⊕}}
\newunicodechar{│}{{\sffamily │}}
\newunicodechar{┬}{{\sffamily ┬}}
\newunicodechar{♯}{{\sffamily ♯}}
\newunicodechar{⨼}{{\sffamily ⨼}}
\newunicodechar{◿}{{\sffamily ◿}}
% ...
\newunicodechar{α}{$\alpha$}
\newunicodechar{δ}{$\delta$}
\newunicodechar{ε}{$\varepsilon$}
\newunicodechar{η}{$\eta$}
\newunicodechar{ι}{$\iota$}
\newunicodechar{κ}{$\kappa$}
\newunicodechar{λ}{$\lambda$}
\newunicodechar{μ}{$\mu$}
\newunicodechar{π}{$\pi$}
\newunicodechar{ω}{$\omega$}
% ...
However, now that I use \tracinglostchars=2 in my document I noticed I have plenty of missing glyphs. Most of them are regular greek letters and I would like to know if I need to declare one newunicodechar for each of them or if there smarter alternatives. Here the missing glyphs:
$ perl -ne 'print if s/Missing.+?no\K(.+?) in font (.*?):/$1\t$2/' _build/latex/main.log | sort -u
Fira Code Regular/OT
[lmroman10-regular]
ː [lmroman10-regular]
α [lmroman10-regular]
δ [lmroman10-regular]
ε [lmroman10-regular]
η [lmroman10-regular]
ι [lmroman10-regular]
κ [lmroman10-regular]
λ [lmroman10-regular]
μ [lmroman10-regular]
ο [lmroman10-regular]
π [lmroman10-regular]
ρ [lmroman10-regular]
ς [lmroman10-regular]
τ [lmroman10-regular]
ω [lmroman10-regular]
ό [lmroman10-regular]
ا [lmroman10-regular]
ب [lmroman10-regular]
ت [lmroman10-regular]
ر [lmroman10-regular]
س [lmroman10-regular]
ع [lmroman10-regular]
ن [lmroman10-regular]
َ [lmroman10-regular]
ِ [lmroman10-regular]
پ [lmroman10-regular]
ک [lmroman10-regular]
ह Fira Code Regular/OT
இ [lmroman10-regular]
ச [lmroman10-regular]
ஜ [lmroman10-regular]
ன [lmroman10-regular]
ம [lmroman10-regular]
ர [lmroman10-regular]
வ [lmroman10-regular]
ா [lmroman10-regular]
ி [lmroman10-regular]
ீ [lmroman10-regular]
ு [lmroman10-regular]
் [lmroman10-regular]
Ἐ [lmroman10-regular]
ῆ [lmroman10-regular]
[lmroman10-regular]
⇒ Fira Code Regular/OT
∧ [lmroman10-bold]
≈ [lmroman10-regular]
≡ [lmroman10-regular]
⊕ Fira Code Regular/OT
⊕ [lmroman10-regular]
│ [lmroman8-italic]
┬ [lmroman8-italic]
♯ Fira Code Regular/OT
➀ [lmroman10-regular]
➁ [lmroman10-regular]
➂ [lmroman10-regular]
⨼ Fira Code Regular/OT
〰 [ipaexm.ttf]/OT
话 [ipaexm.ttf]/OT
국 [ipaexm.ttf]/OT
어 [ipaexm.ttf]/OT
한 [ipaexm.ttf]/OT
◿ Fira Code Regular/OT
I tried to include \usepackage{kotex} to have the Korean Hangul but then I have this clash:
Package fontspec Warning: Font "FandolHei-Regular" does not contain requested
(fontspec) Script "CJK".
\newunicodechar{α}{$\alpha$}is nonsense. α (U+03B1) is a text character, not a mathematical symbol, the mathematical alpha is U+1D6FC, . – Ulrike Fischer Aug 10 '20 at 07:06\newunicodechar{α}{$\alpha$}is not a good idea. Among other things, in math mode, it will switch you to text mode. – Davislor Nov 04 '20 at 15:45