Как один шрифт может поломать всё - решаю неожиданную проблему при запуске лаунчера HoYoPlay
Предисловие
Можно ли представить линуксы без проблем? Нет, абсолютно невозможно, и мой дистрибутив не исключение.
реклама
При запуске новомодного лаунчера HoYoPlay (для таких игр как Genshin Impact) можно столкнуться с проблемой чёрного окна, сейчас продемонстрирую от момента запуска:
Приложение открывается в панели задач, вроде всё нормально, не считая небольших визуальных проблем с линуксоидной панелью, но главное окно не появляется само, что уже странно:
реклама
Но если открыть лаунчер вручную... В общем открывается черное окно без содержимого, а закрыть можно только диспетчером задач:
Это мне очень не понравилось!
Поиск проблемы
реклама
Чёрным окном, кто бы мог подумать, в интернете уже до меня многие страдали, причём не только с HoYoPlay, что бы не верещали линуксоиды под всевозможными "неугодными" статьями, рассказывая сказки как в линуксах всё прекрасно, и только лишь авторы статей и пользователи в интернете все такие из себя якобы неправильные...
Короче говоря у каждого разные проблемы приводящие к чёрному окну под линуксами, так что решил сам заняться поисками косяка отбросив куда подальше эти все форумы в интернете, ибо опыт подсказывал, что моего случая там наверняка нет, только время зря потрачу на эти все ковыряния форумные:
Я долго не мог понять, в чём же проблема, пересоздавал префиксы, а потом вспоминал, что делал с Wine в последнем обновлении Chimbalix, к сожалению я забыл добавить записи в список изменений дистрибутива, потому начал с очевидного, отвечающей за графику DXVK прослойки, но она не влияла на проблему, Wine Proton трогать не имело смысла, а потом как вспомнил!
реклама
Дело оказалось в шрифтах! Изначально я собирал всё из префикса PortWINE (Port Proton, libs_v45), оттуда же автоматически были взяты шрифты, однако я не проверял их досконально, разве могут быть какие-то проблемы с шрифтами в линуксоидном софте?
А проблемы были, в префиксе PortWINE (Port Proton, libs_v45) находятся "неправильные" шрифты с "неправильными" лицензиями:
В один прекрасный момент эта подлянка была обнаружена, и так как "неправильные" лицензии я не люблю - было решено перепроверить все шрифты в каталоге, а после и вовсе всё заново пересобрать, чтобы наверняка всё было из "правильного", свободного и опенсорсного:
В итоге были собраны шрифты из зеркала репозитория Wine и Proton LG:
Так собралась целая пачка шрифтов, без которых в некоторых играх могут быть пустые места вместо текста, я вообще был удивлён, почему в стандартном префиксе PortWINE (Port Proton) не использовали эти свободные аналоги дополняющие друг друга вместо "неправильных" шрифтов:
А чтобы точно не подхватить ничего "неправильного" - каждый файл пришлось перепроверять весьма неудобным в использовании FontForge, ведь доверие уже было подорвано к "свободному Open-Source" (хотя открытый код не всегда значит свободное), конечно, это специализированный инструмент, но неужели нельзя было сделать его более дружелюбным в использовании? Хотя бы убрать глючное окно приветствия при запуске...
Однако была обнаружена проблема со свободными аналогами шрифтов, да, то самое чёрное окно лаунчера HoYoPlay, что было продемонстрировано в начале статьи...
Решение проблемы
Так как многие игры не привередливы к системным шрифтам, в том числе и лаунчеры, сначала были удалены вообще все свободные шрифты, после чего лаунчер наконец заработал, именно так и был обнаружен корень проблемы.
Но шрифты необходимы для некоторых игр, нельзя удалять всё, а потому начал удалять некоторые основные шрифты, это были аналоги Arial и Tahoma, уже на этом этапе лаунчер запустился без проблем, а после и вовсе был выявлен конкретный виновник WineTahomaBold "tahomabd.ttf", именно он доводил лаунчер до зависания в чёрное окно:
Да, удаление "tahomabd.ttf" решило все проблемы с запуском лаунчера HoYoPlay, похоже этот аналог получился не очень аналогичным оригиналу, ну или у лаунчера есть какие-то недоработки:
Боюсь представить, если бы я начал проверять всякую чушь по форумам из интернета с аналогичной проблемой, там люди и с установкой Microsoft Edge Webview2 Runtime танцевали, и с параметрами запуска, и с библиотеками линуксоидными, и с какими бубнами только не танцевали, причём не всегда успешно...
Вероятно, если бы я начал танцевать по заветам форумов с линуксоидными бубнами, мне пришлось бы в итоге переустанавливать линукс, как обычно, это делают многие люди пытавшиеся пользоваться "пингвином", правда вместо очередного линукса, как правило, устанавливают в итоге Windows.
Ладно, вернёмся к "дряхлым пингвинам", нужно выпускать исправление, ведь новую версию дистрибутива Chimbalix в ближайшее время я не собирался делать...
К счастью, проблема легко решается удалением проблемного файла, чем собственно и занимается новенький, но очень простой скрипт, несколько переменных, кучка дополнительных проверок наличия проблемных файлов, ну и большую часть места занимает пояснительный текст для конечного пользователя:
Всё работает, осталось добавить текст после завершения работы, а то непонятно что скрипт находится на паузе после выполнения:
Проверяю ещё раз, отлично, всё работает как надо, а большего и не надо:
Осталось добавить исправление в репозиторий GitHub, ибо кто знает, вдруг другим людям это исправление тоже понадобится:
Готово, одной проблемой меньше, ну, или больше в списке известных проблем:
https://github.com/Shedou/Chimbalix
Пожалуй перед началом работы над новой версией Chimbalix следует ещё некоторое время просто пользоваться тем, что уже есть, вдруг ещё какие косяки требующие исправления всплывут со временем, а потом всё разом исправить в следующей версии дистрибутива, что возможно конечно...
Такая вот неприятная и неожиданная проблема обнаружилась, я хоть и проверяю новые версии своего дистрибутива перед выпуском, но порой некоторые косяки всё равно остаются не обнаруженными, досадно, но не страшно, ведь проблема проявляется редко, а исправляется легко.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила