|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||||||
FONT и параметры шрифта15.02.2016, 03:56. Показов 2402. Ответов 1
Метки нет (Все метки)
Для стандартной WINAPI работа с FONT (шрифтами) осуществляется через LOGFONT структуру.
Параметры вроде понятны, мсдн их описывает, кроме как... самих ньюансов работы с некоторыми LOGFONT членами. И так перечисление шрифтов в системе: EnumFontFamiliesEx. (я юзаю только TRUETYPE_FONTTYPE типы) Сама ссылка на МСДН эту тему. Значит, высота, ПТ преобразовываются в логические единицы(в пикселях отн. устройства вывода) по формуле.
И написано, что данная высота это есть высота "em height ?(1)", что это такое - не пишут, и мало того что не написано на МСДН, так и yandex и google на запрос о том что это - молчит, ну я посчитал линейкой, вроде как это полная высота (с верху - край Заглавной буквы, с низу край - маленькой буквы у или р например, где хвостик заезжает в низ. На самом же деле, например начинаеш смотреть в стандартных программах, например Excel - так, если меняеш шрифт, то и высота ячейки меняется, причём как - не понятно, ведь нет никаких членов описывающих это в LOGFONT. Ну вроде как это должно быть Line Hight ?(2) (что должно соответствовать высоте каретки, например в Edit Box, как она высчитывается - не понятно, смотриш на стандартные шрифты - везде по разному. Следующий член структуры вообще какой то не понятный, это ширина lfWidth (3)... По стандарту ноль, а как эта ширина высчитывается не понятно.. Вроде написано что это тоже пиксели устройства, но как оно работает? Поидее должна быть какая то формула, которая должна отталкиваясь от высоты и отношения LOGPIXELSY и LOGPIXELSX как то разсчитать ширину (я так понимаю что под шириной подразумевается ширина символа '0', как это в других случаях с шрифтами). Я конешно путём тыка посмотрю через функцию GetCharABCWidths, и сравню что да как, но по тыку это делать - наткнусь на грабли, что потом в другом шрифте моя формула не сработает.. Как узнать и изменить пробелы между букв? (4) Я так понимаю что эти пробелы есть ABC, то есть A и C значения, но тоже очень странно, ведь если буква занимет положение не только B, но и залазиет в A и С, то где же хранится инфа о пробелах?(нашёл только какую то левую функцию, которая меняет на всём DC это значение, но это как то странно работает, потому в топку) И может есть вариант в конце вообще выдрать из шрифта - саму картинку буквы (5), чтоб перенести её сразу в массив пикселей (в масштабе?) и там с ней работать так, чтоб можно было изменять всё что захочется?.. А то я смотрю на МСДН есть другие темы, но там уже юзается GDI+ и куда больше информации о шрифтах и функционал. (не очень хотелось бы его юзать, т.к. в итоге GDI вообще нафиг не сдался, он лишь стартовое представление должен давать, ну и работать для Box'ов всяких) Добавлено через 37 минут П.С. Юзаю я функцию CreateFontIndirect для создания шрифта. Для того чтоб убрать ненужные EditBox (и других Box) отступы с лева-права, получаю Rect через Edit_GetRect и юзаю MoveWindow. (не уверен что правильно, однако работает. Тут кстати под вопрос, какую функцию для рисования юзают боксы? DrawText или что то другое?)
0
|
||||||
| 15.02.2016, 03:56 | |
|
Ответы с готовыми решениями:
1
Font-Face размер шрифта Ошибка при загрузке шрифта Font Awesome SaveDIalog не сохраняет параметры шрифта |
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 19.02.2016, 10:47 [ТС] | |
|
Реальная высота шрифта - получается при использовании отрицательного значения. Реальная высота (включая Internal Leading) получается при положительном значении.
С высотой всё сделал через GetSystemMetrics. (1 и 2 пункты отпали) Мелкософты конешно лолки, что не привели формулу, по которой вычисляется LOGFONT отношение высоты к Internal Leading.
0
|
|
| 19.02.2016, 10:47 | |
|
Помогаю со студенческими работами здесь
2
Как узнать параметры шрифта по умолчанию
Word 2007. Параметры шрифта выделенного текста разные. Как сделать одинаковыми? Резиновый font-size, Как сделать резионвый font-size в блоке? <font color="red"> Текст </font> Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|