Winbox в Wine как исправить кривой шрифт

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

Или как либо еще. На ваш вкус.

comments powered by Disqus