purebasic.info

PureBasic forum
Текущее время: Пн ноя 19, 2018 1:01 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: font file parse lib (розыск)
СообщениеДобавлено: Пт окт 26, 2018 4:50 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 362
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
Необходимо разобрать кучу шрифтов собранных за многие годы.
Куча настолько большая и заведомо замусоренная, что натравливать на неё всякие популярные каталогизаторы в лоб - бесперспективно.
Начал поиски библиотеки или консольной утилиты для простого извлечения хотя бы минимальных-основных метаданных и что то не могу найти что то сишное.
Поиск ведёт в основном в одно место и оно PHP )))
https://github.com/PhenX/php-font-lib
PHP Font Lib
Build Status

This library can be used to:

Read TrueType, OpenType (with TrueType glyphs), WOFF font files
Extract basic info (name, style, etc)
Extract advanced info (horizontal metrics, glyph names, glyph shapes, etc)
Make an Adobe Font Metrics (AFM) file from a font
You can find a demo GUI here.

This project was initiated by the need to read font files in the DOMPDF project.

Usage Example
$font = \FontLib\Font::load('../../fontfile.ttf');
$font->parse(); // for getFontWeight() to work this call must be done first!
echo $font->getFontName() .'<br>';
echo $font->getFontSubfamily() .'<br>';
echo $font->getFontSubfamilyID() .'<br>';
echo $font->getFontFullName() .'<br>';
echo $font->getFontVersion() .'<br>';
echo $font->getFontWeight() .'<br>';
echo $font->getFontPostscriptName() .'<br>';

В описании присутствует Extract basic info (name, style, etc), т.е. именно то что нужно на данном этапе, но хотелось бы что то доступное из PB (библиотека или консольная утилита)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Пт окт 26, 2018 6:34 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1712
Откуда: Алматы
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
если бы делал я - то наверное это был бы список всех найденных шрифтов, а справа большой канвас, в котором будет зафигачен какой-то текст. при тырке в списке мышкой - перерисовка канваса с найденным шрифтом.

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


хотя пример из справки с RegisterFontFile очень даже справится с такой задумкой. правда если я правильно понял о чем топик стартер написал :) я в последнее время несколько туплю.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Пт окт 26, 2018 6:40 pm 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 275
Благодарил (а): 36 раз.
Поблагодарили: 28 раз.
Пункты репутации: 0
Для TrueType можно использовать https://docs.microsoft.com/en-us/windows/desktop/api/wingdi/nf-wingdi-getfontdata
А вот если там каша... кстати на пхп либа зачетная, если сильно нужно, то не грех бы и перевести ее (си-образным синтаксисом вас не напугать, как я понимаю, разве что "деклассировать" придется...)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Пт окт 26, 2018 8:00 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 362
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
Уточню суть проблемы. Дублей заведомо много, но учитывая срок накопления с десяток лет, имя,размер,дата файла точно не стопроцентный критерий, ибо издавалось и перепаковывалось одно и тоже многократно. Нужно вытащить метаданные (естественно без установки в систему), создать базу из них и крутить алгоритмы поиска и принятия решений что оставить, а что точно мусор из прошлого.
p.s. Хозяин коллекции не я, но помочь навести порядок очень нужно.
p.p.s. Нашел фрагмент коллекции у себя, оказалось около 20 тыс. файлов, причём часть точно архивы содержащие другие возможные дубли )))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Пт окт 26, 2018 8:30 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1712
Откуда: Алматы
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
по crc сравнивать файлы шрифта нельзя?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Пт окт 26, 2018 8:44 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 362
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
SereZa писал(а):
по crc сравнивать файлы шрифта нельзя?

В первом сообщении под спойлером
echo $font->getFontName() .'<br>';
echo $font->getFontSubfamily() .'<br>';
echo $font->getFontSubfamilyID() .'<br>';
echo $font->getFontFullName() .'<br>';
echo $font->getFontVersion() .'<br>';
echo $font->getFontWeight() .'<br>';
echo $font->getFontPostscriptName() .'<br>';

как может crc помочь? )))
p.s. можно конечно начать искать спецификации на внутреннюю структуру файлов, но кто то точно это уже делал, библиотека для php тому пример.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Сб окт 27, 2018 8:51 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Сб мар 28, 2015 11:06 pm
Сообщений: 159
Откуда: Україна
Благодарил (а): 11 раз.
Поблагодарили: 11 раз.
Пункты репутации: 4
Тож думал как привести в порядок свою коллекцию из ~150к шрифтов, но из за нехватки времени отложил в долгий ящик..
кроме PHP Font Lib попадалось на глаза ещё Google Fonts Tools и fonttools на питоне.
В качестве катологизатора выбор пал на FontExpert, замысел был такой:
Импортнуть все шрифты в базу FontExpert тем самым отсеять дубликаты по crc(хешу) и именам
потом пройтись Google Fonts Tools или PHP Font Lib извлекая дополнительную информацию (кириллица или латиница и доп инфу) и добавлять эту инфу напрямую в саму базу FontExpert (которая в формате Sqlite) в виде тегов и групп которые есть в FontExpert.
Потом используя "обновлённую" базу FontExpert рассортировать сами файлы (FontExpert сами шрифты добавляет в свой каталог) по разным папкам (кириллица отдельно, латиница отдельно) но "привязку" к FontExpert оставить...
зы: так как сами шрифты со временем могут переименовываться разработчиками или "клонироваться" была примечена compare-font в комплекте Google Fonts Tools которая сравнивает сами глифы

Так же есть ещё AKFontInfo плагин к тоталу (можно попробовать прикрутить этот плагин к своей проге или получить нужный выхлоп из тотала) тотал можно заюзать и для переименований http://i.prntscr.com/HQbEYsRvRLa90Sbc4dsF1A.png

если самому колхозить, до думаю будет полезен 010 Editor в нём есть шаблоны для TTF и OTF http://i.prntscr.com/nsj5662PR4Kz-sFkV0nc8w.png

freetype.dll api https://www.freetype.org/freetype2/docs ... FT_FaceRec


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Сб окт 27, 2018 9:34 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 362
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
LinXP писал(а):
...
Так же есть ещё AKFontInfo плагин к тоталу (можно попробовать прикрутить этот плагин к своей проге или получить нужный выхлоп из тотала)
...

ок. спасибо.
С чего то нужно начинать и кандидат для начала вполне приемлемый.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Сб окт 27, 2018 6:37 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
jobless я немножко непонял где находится эти шрифты, на винте или на сайте какомто.
Если на компе то в инете можно найти поисковик копий.
Скидать все шрифты в одну кучу и указать папку для поиска и все найдется.
Останется только выбрать какие оставить.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Сб окт 27, 2018 7:17 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 362
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
balex1978 писал(а):
поисковик копий.

копий чего?
Ф файле шрифта кто то когда то например копирайт в метаданных потёр и это уже другой файл а результат установки в систему в качестве шрифта у них будет один и тот же.
Или речь о интеллектуальном анализе качеств шрифта на схожесть из разных копий файлов?

p.s. плагин тотала в частности позволит собрать для анализа
Описание полей:
FontName Название шрифта (Читабельное, включая стиль)
FamilyName Название семейства
FullName Полное уникальное название шрифта
StyleName Название стиля
Styles Более подробное перечисление стилей (первые буквы каждого)
StylesLong Более подробное перечисление стилей (целые слова)
StylesN Более подробное перечисление стилей (числовое значение, подробности см. ниже)
FaceName Название шрифта как оно указывается при применении в сист. ф-циях
Font_TypeN Тип шрифта - TrueType, OpenType, PostScript (числовое значение)
Font_Type Тип шрифта - TrueType, OpenType, PostScript (текстовое название)
Is_Cyrillic Признак «кирилличности» шрифта - имеются ли русские символы (производится проверка наличия «ячейки» под русскую Unicode «А»)
GlyphsCount Количество символов в шрифте
Copyright
UniqueFontIdentifier
Version
Manufacturer
Designer
Description
LicenseDescription
URLVendor
URLDesigner
Trademark
LicenseInfoURL


StylesN - это сумма значений для стилей:
1 Italic
2 Underscore
4 Negative
8 Outline
16 Strikeout
32 Bold
Пример: 33 - это Bold Italic

и то только в том случае, если вся эта инфа присутствует в метаданных. Часто совсем пусто. Анализ всей этой кучи позволит принимать решения.
Несомненно можно открывать простыни англоязычных спецификаций структур файлов, но у меня точно такой цели нет. И уже вроде вижу как решить задачу малой кровью, чуть позже покажу.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Сб окт 27, 2018 9:41 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
Цитата:
Ф файле шрифта кто то когда то например копирайт в метаданных потёр и это уже другой файл
ну да и так все файлики подтертые :lol: , прикалываешся.
Думаю более 90 % ничего непотерто.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Вс окт 28, 2018 5:52 pm 
Не в сети
ассистент

Зарегистрирован: Вт июл 16, 2013 3:48 pm
Сообщений: 11
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
jobless писал(а):
Начал поиски библиотеки или консольной утилиты для простого извлечения хотя бы минимальных-основных метаданных и что то не могу найти что то сишное.


FreeType?
На ее основе я, например, создавал собственный диалог выбора шрифтов (правда, не на PB)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Пн окт 29, 2018 2:12 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Сб мар 28, 2015 11:06 pm
Сообщений: 159
Откуда: Україна
Благодарил (а): 11 раз.
Поблагодарили: 11 раз.
Пункты репутации: 4
FreeType, на вид прикольная штука, но новичкам (мне) пришлось овердохрена времени потратить чтоб хоть как-то завести её на пурике...
может кто из продвинутых поправит\допилит..


Вложения:
freetype_win32.rar [451.5 KiB]
Скачиваний: 12
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: font file parse lib (розыск)
СообщениеДобавлено: Вт окт 30, 2018 2:32 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 362
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
LinXP писал(а):
FreeType, на вид прикольная штука, но новичкам (мне) пришлось овердохрена времени потратить чтоб хоть как-то завести её на пурике...
может кто из продвинутых поправит\допилит..

Спасибо, во всяком случае с тем что мне нужно, не торопясь разберусь и результат покажу, а в полном объёме у меня цели по прежнему нет.
p.s. если кому интересно, ещё полезная ссылка https://github.com/ubawurinna/freetype-windows-binaries


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB