Ms shell dlg linux
Группа: Супермодераторы
Сообщений: 25162
Регистрация: 14.06.2002
Из: Free pirat
По просьбе коллег
привожу некоторые отличия по настройке шрифтов
для разных виндов (w9*/ME и XP)
регистрация шрифтов (ветки реестра):
W9*->[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Fonts]
XP—>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]
формат записи одинаков: [i]
.
«Arial Narrow Полужирный (TrueType)»=»ARIALNB.TTF»
«Arial Narrow Полужирный Курсив (TrueType)»=»ARIALNBI.TTF»
Значение — это путь к файлу; по умолчанию — %SystemRoot%\Fonts\
( * при ошибках в регистрации могут быть разные казусы, например, здесь в #81, #82 )
в XP—>Ключ FontSubstitutes (аналогично w9*, только в реестре) определяет псевдонимы имён шрифтов в ветке рестра:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\ CurrentVersion\FontSubstitutes]
.
«Times»=»Times New Roman»
«Helvetica»=»Arial»
«Arial CE,238″=»Arial,238»
«Arial CYR,204″=»Arial,204»
«Arial Greek,161″=»Arial,161»
«Arial TUR,162″=»Arial,162»
.
«MS Shell Dlg»=»MS Sans Serif»
«MS Shell Dlg 2″=»MS Sans Serif»
но, здесь есть несколько отличий от w9*
— семейство шрифтов прописывется только один раз (если есть Arial, то Arial Narrow уже прописывать нет необходимости, и т.д.);
— требуется запись с идентификатором типа шрифта Arial CYR,204=.
— если Вам желательно иметь «правильную» поддержку немецкого языка (с омляутами),
то в конце списка нужно добавить ряд «неправильных строчек»:
«Arial,0» = «Arial,0»
«Times New Roman,0» = «Times New Roman,0»
и т.д. (но, лучше вместо типа «Arial,0» = «Arial,204»)
***
Это — единственное место в реестре, где фигурирует виртуальный шрифт MS Shell Dialog.
Из его названия понятно, что это шрифт «отвечающий» за окна, диалогои, менюшки, системные сообщения,
нетрудно также увидеть, что его через MS Sans Serif и подмножество «204» TrueType-шрифта можно его кириллизировать.
Поэтому в определении шрифтов MS Shell Dlg можно также указать это подмножество,
«MS Shell Dlg»=»MS Sans Serif,204»
«MS Shell Dlg 2″=»MS Sans Serif,204»
а лучше -(для возможности воспроизведения самых различных шрифтов)- указать юникодовский TrueType-шрифт и подмножество по умолчанию:
«MS Shell Dlg»=»Lucida Sans Unicode»
«MS Shell Dlg 2″=»Lucida Sans Unicode»
а в ключе FontMapper—указать, что этим подмножеством по умолчанию будет 204 (=0CCh)
(НО, ЭТО БУДЕТ ПРАВИЛЬНЫМ ТОЛЬКО В ТОМ СЛУЧАЕ, если Вы не собираетесь экспериментировать с софтом на разных языках (т.к. по умолчанию для русской локализации стоит «DEFAULT»=dword:000000cc), а в шрифте =dword:00000000) :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\FontMapper]
«ARIAL»=dword:000000cc
«DEFAULT»=dword:000000cc
-в этой ветке все записи имен делать только заглавными литерами.
ps
только после ряда экспериментов с софтом различных локализаций — у меня все же прописано:
«MS Shell Dlg»=»Arial Unicode MS»
«MS Shell Dlg 2″=»Arial Unicode MS»
и параметрами FontMapper
«ARIAL»=dword:00000000
«DEFAULT»=dword:000000cc
***
После изменений следует перезагрузить Windows.
pps:
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
Или как либо еще. На ваш вкус.
Стандарты RC-файлов
Данная статья частично является переводом официальной вики.
Чтобы немного стандартизировать файлы ресурсов и поддержать вид Windows 2000+, нам необходимо следовать нескольким следующим правилам:
1. Всегда пользуйтесь шаблоном DIALOGEX а не DIALOG.
2. Установите флаг DS_SHELLFONT в параметре STYLE вашего диалогового окна, не используйте флаги DS_FIXEDSYS и/или DS_SETFONT.
Чередование шрифтов в списке свойств может вызвать визуальное раздражение. Вряд ли вы захотите, чтобы для кнопки «Дополнительно» использовался шрифт MS Sans Serif, а для кнопки «Применить» — Tahoma. Для избежания этой проблемы, менеджер свойств проверяет все страницы свойств. Если все они используют вид «Windows 2000», то и менеджер также использует вид «Windows 2000». Но если хотя бы одна страница не использует вид «Windows 2000», то страница свойств переключается в «классический» вид, а заодно конвертирует все страницы, использующие вид «Windows 2000» к «классическому» виду.
3. Установите шрифт «MS Shell Dlg» шрифтом диалогового окна.
4. Используйте шрифт «MS UI Gothic» в диалоговых окнах приложений на японском языке.
На Windows 9x, оба логических шрифта указывают на пиксельные шрифты для кодовой страницы. MS Shell Dlg обычно указывает на специфичную для кодовой страницы версию MS Sans Serif. MS Shell Dlg 2 указывает на специфичный для кодовой страницы пиксельный шрифт Tahoma. На Windows NT 4.0+ оба логических шрифта указывают на TrueType-шрифты для Unicode. MS Shell Dlg использует Microsoft Sans Serif для Латинских, Греческих, Кириллических, Арабских, Еврейских, и Тайских символов; MS UI Gothic для Японских; Gulim для Корейских; Simsun для Китайских упрощенных; PMinglu для Традиционных Китайских; и т.д. На Windows 2000 и поздних версиях: MS Shell Dlg 2 указывает на шрифт Tahoma, являющийся шрифтом по умолчанию во всей операционной системе. Приложение, которое работает только на этой операционной системе, может использовать в DS_SHELLFONT логический шрифт MS Shell Dlg 2, указывающий на шрифт Tahoma. Тем не менее, приложение, которое также работает на Windows NT 4.0, Windows 95, Windows 98 или Windows Me должно использовать в DS_SHELLFONT логический шрифт MS Shell Dlg, а не MS Shell Dlg 2. Символы, отсутствующие в Tahoma, будут отображены при помощи замены шрифтов. Главным преимуществом Tahoma перед Microsoft Sans Serif является то,что Tahoma имеет встроенный жирный шрифт. Его главный недостаток — на старых операционных системах он может быть не установлен, и может быть заменён менее выразительным шрифтом. В Windows XP, для традиционного китайского отображается китайское локализованное название «新細明體». (Полная запись FONT 9, «新細明體», FW_NORMAL, FALSE, 136 .) То же самое для упрощенного китайского , который использует шрифт «宋体». Тем не менее,один шрифт в виде другого, не может использоваться сейчас, так как мы в не используем локализованное имя шрифта (CORE-9638) и связывание шрифта еще не реализовано в полной мере. Смотрите на CORE-9566
5. Используйте шрифт 8 размера для Латинского, Греческого, Кириллического, Арабского, Еврейского, и Тайского шрифтов.
6. Используйте шрифт 9 размера для Японского шрифта.
7. Не используйте DS_3DLOOK. Он устарел и больше не используется.
8. При работе с языками, написание текста в которых ведётся справа налево (напр. иврит и арабский язык) используйте расширенный стиль WS_EX_LAYOUTRTL.