В конечном счете, gnome-терминал использует fontconfig для (среди прочего):
... эффективно и быстро найти нужные шрифты среди набора установленных шрифтов, даже если вы установили тысячи шрифтов ...
В документации API вы можете найти функции для запроса диапазонов символов шрифтов и для операций с диапазонами символов, но документация настолько загадочна, что я никогда не мог понять, как различные наборы функций связаны друг с другом. Если бы мне нужно было погрузиться глубже, я бы предпочел взглянуть на примеры использования в другом программном обеспечении, возможно, vte (библиотека эмуляции терминала, используемая в gnome-terminal).
Другая библиотека между vte и fontconfig - это pango «... библиотека для разметки и рендеринга текста с упором на интернационализацию ...» . Теперь, когда я думаю об этом, это звучит как та, которая содержит большую часть логики, которую вы ищете.
Функциональность покрытия символов в pango реализуется с помощью карт покрытия ( «В Pango часто необходимо определить, может ли конкретный шрифт представлять определенный символ, а также насколько хорошо он может представлять этот символ. PangoCoverage - это структура данных, которая используется чтобы представить эту информацию. " ), но, вероятно, есть более сложные детали, связанные с тем, какой глиф отображать каким шрифтом. Я предполагаю, что VTE использует pango для рендеринга строк с соответствующими шрифтами, в то время как pango использует fontconfig (или другой поддерживаемый бэкэнд шрифтов) для поиска наиболее подходящего шрифта, основанного на различных элементах логики в самом pango и / или бэкэнде.