Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2013, 11:49   #1
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию Delphi и TTF

Приветствую.

Стоит задача извлечь символы из файла шрифтов ttf(1) и привести символы к бинарному виду(2).

Можеть быть кто-то знает как решить подзадачу 1 без особых умственных усилий?
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 24.07.2013, 12:15   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Думаю, что шрифт это некая разновидность векторной графики, которую windows использует, потому просто и без особого использования мозга - не получится.
Алсо есть готовый сабж для работы с TTF http://ru.wikipedia.org/wiki/FreeType
Человек_Борща вне форума Ответить с цитированием
Старый 24.07.2013, 12:42   #3
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

На FreeType я как раз нарвался и даже для дельфи нашел портированный вариант, но пока скомпилировать демку и библиотеку не удалось - выдает не ведомые мне ошибки. Хотя может быть будет достаточно использовать скомпилированную библиотеку freetype.dll...
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 24.07.2013, 13:41   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

А что такое "бинарный вид" в данном случае ?
А то я работал над штукой для загрузки произвольного ttf в дельфишный объект TFont , которым после загрузки, можно нарисовать/написать куда захочется, например на битмап.
phomm вне форума Ответить с цитированием
Старый 24.07.2013, 23:16   #5
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Цитата:
А что такое "бинарный вид" в данном случае ?
Мне надо полученное изображение символа из ttf в конечном итоге привести к виду:
Например, есть картинка единицы в ttf, а в бинарном в данном контексте -
00000000
00110000
11110000
00110000
00110000
00110000
00110000
Т.е. изображение преобразовать в массив строк, где зарисованная часть картинки представлена "1", а пустоты "0".

Цитата:
А то я работал над штукой для загрузки произвольного ttf в дельфишный объект TFont , которым после загрузки, можно нарисовать/написать куда захочется, например на битмап.
Хм, это кажется и есть моя подзадача 1.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 24.07.2013, 23:58   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
00000000
00110000
11110000
00110000
00110000
00110000
00110000
Там не растровая графика, а векторная. Да и не туда, думаю, копаете.

Как вариант:
Создаете BMP
Канве этого BMP присваиваете нужный вам шрифт, и рисуете нужный символ.
Далее сохраняете BMP файл в MemoryStream и переводите байты в двоичную систему.

Если нужен только сам символ, то устанавливаете цвет канвы(белый), цвет шрифта - черный, теперь циклом проходитесь по нарисованному, и все, что не равно белому - считать частью символа.
Далее массив перегоняете в 0 и 1.

Последний раз редактировалось Человек_Борща; 25.07.2013 в 00:07.
Человек_Борща вне форума Ответить с цитированием
Старый 25.07.2013, 06:19   #7
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Каждый размер шрифта будет давать разный "бинарный вид" в таком случае, приглядитесь хотя бы в ворде - там появляются и исчезают пиксели при изменении размеров шрифта, ибо векторное изображение буквы "растрируется" в пиксели по некоему алгоритму, а ещё поверх может быть применено сглаживание шрифтов, тогда часть пикселей будет не белая или чёрная а ещё и серая.

Короче, непонятна Ваша задача конечная, такое ощущение, что Вы придумали себе черезтридцатьтризаборное решение и выпытываете у нас как реализовать именно его, типичная XYZ
Не поленитесь, распишите саму задачу. А пока что, Человек_Борща подсказывает вполне годное решение в лоб.
"Первая часть" задачи изложена тут (код там же) http://programmersforum.ru/showthread.php?t=180046
phomm вне форума Ответить с цитированием
Старый 25.07.2013, 09:44   #8
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Человек_Борща, спасибо, хорошую идею подкинули, так и реализовал.

Цитата:
а ещё поверх может быть применено сглаживание шрифтов, тогда часть пикселей будет не белая или чёрная а ещё и серая.
Этот вопрос решил установкой формата пикселя 1 бит.

Цитата:
непонятна Ваша задача конечная
Делаю конвертер из шрифта ttf в очень узкоспециализированный формат шрифтов.

Вам тоже, phomm, спасибо за помощь.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SDL 2.0 + TTF CodeBlocks Murashov Qt и кроссплатформенное программирование С/С++ 6 30.11.2012 18:40
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 Elvisnya Общие вопросы Delphi 3 28.04.2011 15:59
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54