UnityФорумПрограммирование

спецсимволы в фонте

#0
10:21, 18 ноя 2025

Доброго дня!

Нет ли у кого-нибудь шрифта с кириллицей и математическими символами (в частности операции с множествами, принадлежность и т.д.)
Может быть подскажете как в готовый шрифт вставить эти символы? Может где инструкция есть?

Заранее спасибо!

#1
16:16, 18 ноя 2025

https://discussions.unity.com/t/texdraw-create-math-expressions-i… -unity/612400

#2
16:24, 18 ноя 2025

Спасибо, skalogryz, но это несколько не то. Нужно просто в середине текста вставить символы например принадлежность к множеству (∈) и ∉. Ситуация усугубляется тем, что даже если в ttf эти символы есть (например с кодом \u2208) замечательный textmeshpro рисует квадратик именно на этих кодах (там писали что еще на нескольких). Была идея просто перенести эти символы на другие коды (я бы извернулся программно на лету и менял бы символы на другие коды) но вот бесплатного редактора ttf не нашел (.

#3
17:12, 18 ноя 2025

/manual/FontAssetsFallback.html">https://docs.unity3d.com/Packages//manua… Fallback.html

по-идее tpm умеет в подстановку шрифтов.
если символ не найден в одном шрифте, он будет искать его в другом

и тебе не нужно самому ttf пилить

#4
18:09, 18 ноя 2025

Добрый день.

Полез разбираться с проблемой. Скачал шрифт Noto Sans как самый гибкий к символам - TMPro символы не находит, даже с ручным рендерингом символов:

+ То, как у меня отрабатывало.

Хотя, видно, что старый компонент текста отрисовывает символы.

Сами Unicode Hex ranges, брал отсюда с добавлением 2200-2210 - спецзнаков из задачи:

0020-007F,0400-04FF,00A0-00FF,2200-2210

Вот, к чему пришёл.
- Встроенный отрисовщик использует текущий шрифт, если не находит - использует запасные (fallback) из системы.
- TMPro работает также, но у него Fallback шрифты либо указываются вручную к каждому шрифту, либо используется общий. По умолчанию LiberationSans, но он тоже не поддерживает спецсимволы.
Можно сходить по этой ссылке и убедиться, что Fallback к системным шрифтам работает и в браузере: написание букв разное, а сами спецзнаки одинаковые (но не везде, тут не угадаешь).

Начал копаться во встроенных шрифтах (Windows 11 => Параметры => Персонализация => Шрифты). К примеру, Arial не поддерживает спецсимволы, но отрисовщик не использует Fallback:

+ Рендеринг шрифта Arial.

Перебрал с десяток шрифтов, и нашёл тот, что поддерживает символы: Segoe UI Symbol. Его можно найти у себя в "C:\Windows\Fonts\seguisym.ttf".
Импортировал себе в Unity3D, сделал ассет шрифта для TMPro, и даже без запекания всё завелось.

+ Результат отрисовки кастомных символов со шрифтом Segoe UI Symbol

Итог - велосипеды не требуются, всё работает из коробки. Нужно только найти (или же склеить) шрифт с необходимыми знаками. Либо настроить Fallback-шрифты, тоже неплохой вариант.
Ну и крайняя альтернатива - использовать спецзнаки картинками и вставлять их в текст через тэг "<sprite>". Этот подход легче загуглить через "TMPro Emoji".

#5
18:14, 18 ноя 2025

Да там все еще чудесатее ) Символ есть в шрифте - это Юнити глючит, причем именно techmechpro - в просто Text он прекрасно эти символы выводит( а просто Text естественно меня не устраивает :)) ) Символ 2208 (равно как и 2206 и 2206 (в юникоде, конечно)) techmechpro выводит квадратиком в любом шрифте - даже в самом математическом)
Я хотел их (этот символы перенести на другой код (например 1800-е - там кажется арабский) и их уже выводить. Ну ладно, спасибо! ) Буду биться )

#6
18:16, 18 ноя 2025

Dan398! Огромное спасибо! Кажется это выход! Буду пытаться! Очень круто!

#7
18:19, 18 ноя 2025

Dan398! Еще раз Браво! Сработало! )

#8
18:26, 18 ноя 2025

tigerigor, благодарю. Обращайся.

UnityФорумПрограммирование