Блог gunsmoker-а шрифти в windows xp і windows vista

Написав невелику програмку, яка ніколи настройки шрифтів - може кому стане в нагоді.

Історична довідка
Серед інших речей, які ви можете зробити запит за допомогою функції GetStockObject. є два шрифту, звані SYSTEM_FONT і DEFAULT_GUI_FONT. Що це таке?

Це шрифти, які сьогодні вже ніким не використовуються.

У старі-добрі часи Windows 2.0, шрифт, який використовується для діалогових вікон, був растрових шрифтом, званим System. Це і є шрифт, який повертає SYSTEM_FONT. і він же все ще є шрифтом за замовчуванням для діалогів з міркувань сумісності. Звичайно ж, ніхто сьогодні не буде використовувати для своїх діалогів такий жахливий шрифт (крім інших речей - він растровий, і тому погано виглядає на високій роздільній здатності і не може бути згладжений).

(DPI екрану був 96)

(DPI екрану був 120)

З вищесказаного видно, що відповідним шрифтом для вікон є lfMessageFont від SystemParametersInfo. а відповідним шрифтом для моноширинного відображення - ANSI_FIXED_FONT від GetStockObject.

Оскільки Delphi використовує намертво зашиті в програму імена шрифтів (MS Sans Serif, Tahoma і MS Shell Dlg 2) - це не завжди найвдаліший вибір, якщо ви хочете "йти в ногу з часом" (*): щоб ваша програма використовувала б той же шрифт, що і всі інші програми.

Щоб виправити це, ви можете додати в секцію uses такий модуль: Плюс для кожної форми ви повинні встановити їй ParentFont = True. От і все. Тепер ваша програма буде використовувати шрифт для UI, встановлений в системі.

А якщо у вас є елементи управління, які потребують Моноширинний шрифті, то замість зміни шрифту на фіксовані в інспекторові об'єктів в режимі проектування - краще не чіпайте його (залишивши ParentFont = True для цього елемента управління), а напишіть в FormCreate привласнення шрифту, наприклад : (зрозуміло, у вас повинен бути підключений модуль UseNewFonts).

(*) Взагалі-то шрифти на кшталт MS Shell Dlg 2 не є строго фіксованими (на відміну від, скажімо, Tahoma). Замість MS Shell Dlg 2 в вашу програму буде підставлятися шрифт, вказаний в екранних налаштуваннях користувача. Тому навіть якщо ви встановите своїм елементам управління фіксований шрифт MS Shell Dlg 2 - їх вид все ще може змінюватися! Тому або ви повинні бути готові до адаптації розмірів своїх елементів управління, або ставити дійсно конкретний шрифт.

Схожі статті