Winbox в Wine как исправить кривой шрифт #
Я работаю в Linux (KDE Neon) и единственное Windows-приложение, которое мне приходится использовать — это Winbox (утилита для управления оборудованием MikroTik). Раньше я работал в других дистрибутивах Linux и эта проблема присутствовала и в них тоже.
Те, кто работал с Winbox в Linux, а может быть и в MacOS, если там эта проблема также присутствует, не могли не заметить проблемы со шрифтом, которая очень сильно влияет на комфортную работу, не позволяя нормально управлять курсором при редактировании значений полей и при выделении части поля для копирования.
Выделен пароль, но размер выделения значительно превышает размер символов
При редактировании невозможно определить, где фактически находится
После выхода WINE 5, я надеялся, что эту проблему исправят. Но нет. Пришлось разбираться сначала с причиной этой проблемы, а затем находить способы ее решения. (Статья редактировалась в февраля 2022 года, когда уже вышла 7я версия WINE, но проблему до сих пор не исправили и, видимо, никто не собирается это делать).
Причина проблемы #
Причина данной проблемы кроется в “кривом” шрифте Tahoma, который поставляется вместе с Wine. Конечно же, можно установить нормальный шрифт Tahoma в систему (либо в окружение пользователя), также можно, используя утилиту winetrix, установить нормальный шрифт прямо внутрь окружения Wine. Судя из документации Wine, шрифты пользователя имеют приоритет над системными, а системные имеют приоритет над шрифтами внутри Wine. Но ожидаемого чуда не произошло — Wine по прежнему использовал “кривой” шрифт Tahoma.
Явное отличие в начертаниях “кривого” и нормального варианта Tahoma заключается в цифре 9 и в ширине знакомест.
Начертание “кривого” шрифта #
Обычное начертание “кривого” шрифта
Жирное начертание “кривого” шрифта
Начертание нормального шрифта #
Обычное начертание нормального шрифта
Жирное начертание нормального шрифта
Решение проблемы #
Вариант с заменой шрифта Tahoma на корректный #
Немного покопавшись в реестре я нашел ветку со шрифтами, в которой каждому шрифту соответствует его путь в файловой системе. Я попробовал заменить пути на свои (куда я установил нормальные шрифты), но Wine не сохраняет эти значения и сбрасывает эти значения на первоначальные.
Я решил зайти с другой стороны и заменил файлы шрифтов по пути из реестра на свои. И это сработало! Теперь у меня наконец-то нормальный Winbox, с которым можно работать!
Возможно, достаточно просто установить нормальные шрифты в Wine (например, используя winetrix), а затем просто удалить “кривые” шрифты. Я так не пробовал. Если у кого-то сработает этот вариант - дайте, пожалуйста, знать.
Скачать нормальные шрифты вручную, или через winetrix или при помощи команды:
cd /tmp && \
wget https://blog.denisbondar.com/file/tahoma.tar.gz
Разархивировать нормальные шрифты и скопировать их на место старых:
tar xzf tahoma.tar.gz
sudo mv tahoma/* /opt/wine-stable/share/wine/fonts
rm -rf tahoma*
Теперь Winbox выглядит ровно. Размер выделения соответствует размеру текста, курсор отображается корректно. Выделен пароль. Размер выделения совпадает с размером текста.
Курсор находится точно в тех позициях, где и должен быть.
Вариант с использованием другого шрифта #
Чуть позже я нашел способ проще. Достаточно в реестре (в том самом, который бывает в Windows) указать другой используемый шрифт для MS Shell Dlg и MS Shell Dlg 2. По умолчанию для них указан шрифт Tahoma.
Сделать это можно редактированием ветки реестра HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\FontSubstitutes
напрямую через утилиту regeidit
или же просто выполнив простую замену в файле реестра, например вот так:
sed -i 's@"MS Shell Dlg"="Tahoma"@"MS Shell Dlg"="Lato"@' ~/.wine/system.reg
sed -i 's@"MS Shell Dlg 2"="Tahoma"@"MS Shell Dlg 2"="Lato"@' ~/.wine/system.reg
Или вот так:
sed -i 's@"MS Shell Dlg"="Tahoma"@"MS Shell Dlg"="DejaVu Sans"@' ~/.wine/system.reg
sed -i 's@"MS Shell Dlg 2"="Tahoma"@"MS Shell Dlg 2"="DejaVu Sans"@' ~/.wine/system.reg
Или как либо еще. На ваш вкус.