Как можно получить характеристики букв (например ширину символа) если известны размер, фонт, жирность и д.р. стандартные характеристики шрифта. Как соотносится высота и ширина символа. Можно ли определить букву и хар-ки шрифта по битовой карте (по изображению). Каков формат файлов встроенных шрифтов (*.ttf, *.fon).
Здравствуйте, KisHel, Вы писали:
KH>Как можно получить характеристики букв (например ширину символа) если известны размер, фонт, жирность и д.р. стандартные характеристики шрифта.
Например, выбрать этот фонт в DC и сделать DrawText(DT_CALCRECT).
А вообще-то просто посмотри в MSDN раздел "Fonts and Text" и найдешь ответы на все свои вопросы.
KH>Как соотносится высота и ширина символа.
По-разному...
"Размер" фонта — это и есть "высота". Т.е. расстояние от низа, скажем, буквы "g" до верха буквы "M". С шириной несколько сложнее. Смотри в сторону функций GetCharWidth32 и GetCharABCWidths (что такое ABC, красиво нарисовано в том же разделе MSDN).
KH>Можно ли определить букву и хар-ки шрифта по битовой карте (по изображению).
Это не серьезно. Если, конечно, ты не OCR делаешь...
Здравствуйте, KisHel, Вы писали:
KH>Как можно получить характеристики букв (например ширину символа) если известны размер, фонт, жирность и д.р. стандартные характеристики шрифта. Как соотносится высота и ширина символа. Можно ли определить букву и хар-ки шрифта по битовой карте (по изображению). Каков формат файлов встроенных шрифтов (*.ttf, *.fon).
GetTextMetrix
Или около того
Народу не нужны нездоровые сенсации. Народу нужны здоровые сенсации! (с) Стругацкие.
Здравствуйте, KisHel, Вы писали:
KH>Как можно получить характеристики букв (например ширину символа) если известны размер, фонт, жирность и д.р. стандартные характеристики шрифта. Как соотносится высота и ширина символа. Можно ли определить букву и хар-ки шрифта по битовой карте (по изображению). Каков формат файлов встроенных шрифтов (*.ttf, *.fon).
Уточни вопрос.
В Виндовс -- одни шрифты, в КДЕ -- другие, а куча ГУИ-библиотек реализовывает собственные интерфейсы работы и с теми, и с другими.
Здравствуйте, _wqwa, Вы писали:
W>Здравствуйте, KisHel, Вы писали:
KH>>Как можно получить характеристики букв (например ширину символа) если известны размер, фонт, жирность и д.р. стандартные характеристики шрифта. Как соотносится высота и ширина символа. Можно ли определить букву и хар-ки шрифта по битовой карте (по изображению). Каков формат файлов встроенных шрифтов (*.ttf, *.fon).
W>Уточни вопрос. W>В Виндовс -- одни шрифты, в КДЕ -- другие, а куча ГУИ-библиотек реализовывает собственные интерфейсы работы и с теми, и с другими.
Обрисую проблему. Необходимо написать конвертер с PCL. При выводе буквы курсор сдвигается на ширину символа (если шрифт не фиксированный), для определения его положения вижу только один выход суммировать ширину всех выводимых символов (для этого надо ее конечно знать). В PCL есть возможность ассоциировать буквам изображение (обычно используется для шрифтов неподдерживаемых принтером) и писать слова изображениями. Возникает большая проблема — как получить текст.
[]
KH> Обрисую проблему. Необходимо написать конвертер с PCL. При выводе буквы курсор сдвигается на ширину символа (если шрифт не фиксированный), для определения его положения вижу только один выход суммировать ширину всех выводимых символов (для этого надо ее конечно знать). В PCL есть возможность ассоциировать буквам изображение (обычно используется для шрифтов неподдерживаемых принтером) и писать слова изображениями. Возникает большая проблема — как получить текст.
Хм, что то не совсем понятно. Что значит "ассоциировать буквам изображение"? Имеется в виду загружаемый шрифт типа PCL Bitmapped Font?
Дык там вроде езть Format 0 Font Header, где наличиствуют поля Cell Width, Cell Height, Height... и иже с ними.
Кроме того, езть Character Descriptor for PCL Bitmap Fonts, где езть Character Width и Character Height конкретного символа.
А текст ежели мне не изменяет склероз выводиться просто "текстом" либо коммандой LB. И в том и вдругом случае имеет место просто набор кодов которые выводяться текущим выбранным шрифтом. А код сей ассоциируется с "каринкой" (в данном случае с Character Descriptor and Data) команндой Esc* c # E, хде # — код символа. Например,
Esc*c112E (112 is the decimal character code for an ASCII lower-case \p")