|
|
|
Как программно выяснить минимально допустимый размер любого шрифта?08.11.2011, 01:26. Показов 2805. Ответов 5
Метки нет (Все метки)
У некоторых шрифтов размер может быть меньше 8, у некоторых 10 - минимум...
Как это можно выяснить во время выполнения? Добавлено через 56 минут Нашел в WinAPI функцию EnumFontFamiliesEx, она вроде предоставляет структуру с метрикой шрифтов, надо поковыряться... Может, есть попроще способы?
1
|
|
| 08.11.2011, 01:26 | |
|
Ответы с готовыми решениями:
5
Изменить размер шрифта(программно) Программно изменить размер шрифта компонента
|
|
|
|
| 08.11.2011, 01:39 | |
|
2
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 08.11.2011, 11:04 | |
|
0
|
|
|
|
|||||||||||||||||
| 08.11.2011, 23:37 [ТС] | |||||||||||||||||
А че париться? 8 - 40 и алга, побоку, какой там шрифт!В большинстве источников целью является перечисление свойств всех доступных в системе и для данного device context шрифтов. Полезная вещь, кстати, где-то можно обойтись и без FontDialog. Здесь описывается конкретно перечисление размеров шрифта: Enumerating Fonts В тексте статьи даны не шибко понятные вырезки кода, т.к. отсутствуют некоторые декларации, но в конце статьи прикреплен файл enumfixedfonts.c, где все предельно ясно. Вот, маленько допинал способ получить размеры одного шрифта:
показать текст
"Tahoma" font possible sizes are: any sizes, as this is a TrueType or OpenType font.
"Terminal" font possible sizes are: 9, 2, 4, 14, 12, 6. "System" font possible sizes are: 10. "JournalSansC" font possible sizes are: any sizes, as this is a TrueType or OpenType font. "Fixedsys" font possible sizes are: 10. "Courier" font possible sizes are: 10, 12, 15. "MS Sans Serif" font possible sizes are: 8, 10, 12, 14, 18, 24. "MS Serif" font possible sizes are: 8, 10, 12, 14, 18, 24, 6, 7. "Small Fonts" font possible sizes are: 2, 3, 4, 5, 6, 7, 8. "Times New Roman" font possible sizes are: any sizes, as this is a TrueType or OpenType font. Если строчку
То же самое происходит, если попробовать перечислить размеры TRUETYPE_FONTTYPE. Получается, фиксированные размеры шрифта могут быть только у растровых шрифтов(RASTER_FONTTYPE), а остальные свободно масштабируются? Все, вроде, ясно... НО! Что-то не до конца понятна работа функции EnumFontFamiliesEx()... В данном случае она, предположительно, работает так: - шрифты .ttf она определяет как TRUETYPE_FONTTYPE; - шрифты .otf она определяет как DEVICE_FONTTYPE; - шрифты .fon, понятное дело, как RASTER_FONTTYPE. Однако в справке написано, что FontType "can be a combination of these values". В MSDN также нашел такое: показать текст
The AND (&) operator can be used with the RASTER_FONTTYPE, DEVICE_FONTTYPE, and TRUETYPE_FONTTYPE constants to determine the font type. If the RASTER_FONTTYPE bit is set, the font is a raster font. If the TRUETYPE_FONTTYPE bit is set, the font is a TrueType font. If neither bit is set, the font is a vector font. DEVICE_FONTTYPE is set when a device (for example, a laser printer) supports downloading TrueType fonts or when the font is a device-resident font; it is zero if the device is a display adapter, dot-matrix printer, or other raster device. An application can also use DEVICE_FONTTYPE to distinguish graphics device interface (GDI)-supplied raster fonts from device-supplied fonts. GDI can simulate bold, italic, underline, and strikeout attributes for GDI-supplied raster fonts, but not for device-supplied fonts.
Какие могут быть комбинации и что это будет значить?
2
|
|||||||||||||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 09.11.2011, 00:25 | |
|
BRcr, Спасибо, работа проделана серьезная. Буду потихонечку пытаться разобраться и в вашем посте и в доступных материалах.
Вообще работа с фонтами в Винде поставлена "замечательно". Так, я столкнулся с такой ситуацией. У меня есть собственный рукодельный шрифт, ни на что не похожий, там вместо буковок - символы планет. Ну имею я право? Есть шрифты с шахматными фигурками - и ничего! Так вот, никакими силами мне не удалось вызвать именно конкретный ФАЙЛ этого фонта. Я должен дать ему (фонту) имя, сделать AddFontResourse этому файлу, а потом, помолясь, назначить его канве по ИМЕНИ, надеясь что у моего юзера другого фонта с этим именем нет (а юзеров - много!). Когда что-то в фонте меняется (добавляются планетки, то да се) - новая головная боль. При этом ничего не мешает моим юзерам этот фонт УСТАНОВИТЬ В СИСТЕМЕ. И прошлый (установленный) вариант конфликтует с новым. В Вин-Апи вообще бардак, с этим, кажись никто не спорит, но ИМХО, квинтэссенция этого бардака - в работе с фонтами.
1
|
|
| 09.11.2011, 20:14 [ТС] | ||
|
Не по теме:
Либо вообще распространять данный шрифт исключительно в виде установочной программы с зашитым внутри нее шрифтом. Такая программка сможет не только корректно ставить новый шрифт, удалив другую установленную версию, но еще, к примеру, сможет выполнить диагностику на предмет наличия конфликта шрифтов в системе и устранить конфликт.
1
|
||
| 09.11.2011, 20:14 | |
|
Помогаю со студенческими работами здесь
6
Увеличить допустимый размер вложений Сделать размер шрифта приложения инвариантным по отношению к системным настройкам размера шрифта Как изменить размер шрифта Как изменить размер шрифта? Как менять размер шрифта? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|