OberonCore https://forum.oberoncore.ru/ |
|
Библиотека FreeType https://forum.oberoncore.ru/viewtopic.php?f=47&t=2504 |
Страница 2 из 2 |
Автор: | Ярослав Романченко [ Вторник, 19 Март, 2013 15:07 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Просто в A2 (AOS) есть (присутствует с самых ранних версий) библиотека для рендеринга шрифтов и называется OpenType |
Автор: | Ярослав Романченко [ Вторник, 19 Март, 2013 15:14 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
OpenType.Mod Цитата: MODULE OpenType; (** AUTHOR "eos, PL"; PURPOSE "Bluebottle port of OpenType"; *) Так что, был-ли я корректен? |
Автор: | Иван Кузьмицкий [ Вторник, 19 Март, 2013 15:14 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Ярослав, а этой библиотеке можно скормить TTF шрифты или только те, что имеют AOS-овский формат? |
Автор: | Ярослав Романченко [ Вторник, 19 Март, 2013 15:19 ] | ||
Заголовок сообщения: | Re: Библиотека FreeType | ||
Иван Кузьмицкий писал(а): Ярослав, а этой библиотеке можно скормить TTF шрифты или только те, что имеют AOS-овский формат? TTF понимает. Но какие-то баги есть. Куда ж без них
|
Автор: | Пётр Кушнир [ Вторник, 19 Март, 2013 15:59 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Уточните, библиотека понимает http://ru.wikipedia.org/wiki/OpenType хорошо и http://ru.wikipedia.org/wiki/TrueType с багами, или только TrueType с багами? |
Автор: | Роман М. [ Вторник, 19 Март, 2013 16:29 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Ярослав Романченко писал(а): OpenType.Mod В контексте AOS - корректна, конечно.Цитата: MODULE OpenType; (** AUTHOR "eos, PL"; PURPOSE "Bluebottle port of OpenType"; *) Так что, был-ли я корректен? Перед тем как использовать библиотеки AOS, надо хорошенько проверить её на предмет зависимостей от низлежайшей ОС. FreeType хороша своей независимостью от ОС ибо растеризует текст в буфер памяти. |
Автор: | Ярослав Романченко [ Вторник, 19 Март, 2013 17:21 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Пётр Кушнир писал(а): Уточните, библиотека понимает http://ru.wikipedia.org/wiki/OpenType хорошо и http://ru.wikipedia.org/wiki/TrueType с багами, или только TrueType с багами? Понимает шрифты с версией 1.0, указанной в заголовке, с расширениями .TTF и .OTF. Шрифты в Adobe Compact Font Format (CFF) не поддерживаются.Роман М. писал(а): FreeType хороша своей независимостью от ОС ибо растеризует текст в буфер памяти. Думаете, для AOS изобретали-бы что-то концептуально сложнее чем буфер в памяти? Кажется зависимостей там очень мало, при беглом взгляде только Strings и Files
|
Автор: | Пётр Кушнир [ Вторник, 19 Март, 2013 19:08 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
В принципе, концептуально выгодно не иметь зависимости от бинарного чужого компонента, в то же время, компонент из АОС явно не сильно прокачан технически, зато "своё", поэтому его можно будет портировать быстрее. И в то же время, на основе этого порта можно построить шрифтовый движок с известными и обозримыми интерфейсами, которые (в ситуации когда компонент АОС перестанет удовлетворять запросам проекта ББ) позволят реализовать работу с freetype уже внутри реализации, без изменения клиентского кода. Что касается проекта нового хоста ББ, то использование в хост-части интерфейсов на КП привнесёт ещё один уточняющий слой абстракции. |
Автор: | Роман М. [ Вторник, 19 Март, 2013 22:19 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Пётр Кушнир писал(а): В принципе, концептуально выгодно не иметь зависимости от бинарного чужого компонента, в то же время, компонент из АОС явно не сильно прокачан технически, зато "своё", поэтому его можно будет портировать быстрее. И в то же время, на основе этого порта можно построить шрифтовый движок с известными и обозримыми интерфейсами, которые (в ситуации когда компонент АОС перестанет удовлетворять запросам проекта ББ) позволят реализовать работу с freetype уже внутри реализации, без изменения клиентского кода. На мой взгляд нужно взвешивать выгоду по-другому. А именно: исходя из знаний в предметной области. Если знаний для развития и поддержания некоторого компонента недостаточно, то лучше искать специализированный компонент, подходящий под эти нужды.Что касается проекта нового хоста ББ, то использование в хост-части интерфейсов на КП привнесёт ещё один уточняющий слой абстракции. Что концептуально выгоднее: один раз вложить ресурсы в интеграцию сторонней библиотеки, подддерживаемой сообществом, при этом не тратя ресурсы на поддержание, или же дорабатывать компонент, в особенностях которого совершенно не разбираешься? Вопрос в разумном вложении ресурсов. http://en.wikipedia.org/wiki/FreeType писал(а): In 2007, Sun Microsystems switched from using a proprietary font rasterizer to using FreeType in the OpenJDK Java development kit.
|
Автор: | Пётр Кушнир [ Вторник, 19 Март, 2013 22:26 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Эффективно, но при этом теряется контроль над жизненно важным кодом. |
Автор: | Иван Кузьмицкий [ Среда, 20 Март, 2013 08:34 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
FreeType пилится вот уже добрых два десятка лет. Скорее всего, никаких проблем со шрифтами мы там не встретим, а это важно, чтобы не получить сырость на таком серьёзном участке, как тексты. |
Автор: | Роман М. [ Четверг, 21 Март, 2013 11:48 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Начал аккуратненько, в документ, собирать информацию по особенностям вывода текста во FreeType и соответствующих API вызовах, требуемых для реализации HostFonts. Как соберу, начну транслировать заголовки FT на КП. |
Автор: | Роман М. [ Воскресенье, 24 Март, 2013 15:57 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Нашёл затерянную обвязку к FreeType, начатую ещё в 2010 году. Эта версия содержит лишь часть заголовков. FreeType.cp И небольшой примерчик ранних попыток переноса на FT: Код: MODULE TestFTmini; IMPORT (*Fonts,*) Ports, Lib := LibsFreeType, Log := StdLog; PROCEDURE WriteLn (s: ARRAY OF CHAR); BEGIN Log.String("->" + s); Log.Ln END WriteLn; PROCEDURE LogError (code: INTEGER); BEGIN Log.String("Error #"); Log.Int(code); Log.Ln END LogError; PROCEDURE Test*; CONST grid = 4096; VAR (*f: Fonts.Font;*) library: Lib.FT_Library_ptr; (* handle to library *) face: Lib.FT_Face_ptr; (* handle to face object *) error, (*height, width,*) fontSize, a, b, scale, asc, dsc: INTEGER; isScalable: BOOLEAN; (* filepathname: *) BEGIN WriteLn("Test"); fontSize := 10 * Ports.point; a := fontSize MOD grid; b := fontSize DIV grid; scale := a DIV grid + b; Log.String("Scale: "); Log.Int(scale); Log.Ln; error := Lib.FT_Init_FreeType( library ); IF error # 0 THEN LogError(error); HALT(1) END; (* WriteLn("FT_Init_FreeType"); *) error := Lib.FT_New_Face( library, "tahoma.ttf", 0, face ); (* %windir%\fonts\ *) IF error # 0 THEN LogError(error); HALT(1) END; (* WriteLn("FT_New_Face"); *) isScalable := Lib.FT_FACE_FLAG_SCALABLE * BITS(face.face_flags) = Lib.FT_FACE_FLAG_SCALABLE; asc := (face.height + face.descender) DIV 64; dsc := (face.ascender - face.height) DIV 64; Log.String("Family name: "); Log.String(face.family_name$); Log.Ln; IF isScalable THEN Log.String("SCALABLE"); Log.Ln ELSE Log.String("NON-SCALABLE"); Log.Ln END; Log.String("Number of glyphs: "); Log.Int(face.num_glyphs); Log.Ln; Log.String("Height: "); Log.Int(face.height); Log.Ln; Log.String("Ascender: "); Log.Int(asc); Log.Ln; Log.String("Descender: "); Log.Int(dsc); Log.Ln; error := Lib.FT_Done_Face( face ); IF error # 0 THEN LogError(error); HALT(1) END; (* WriteLn("FT_Done_Face"); *) error := Lib.FT_Done_FreeType( library ); IF error # 0 THEN LogError(error); HALT(1) END; (* WriteLn("FT_Done_FreeType"); *) END Test; END TestFTmini. TestFTmini.Test Разрабатывал для Винды и с тех пор не проверял. |
Автор: | Пётр Кушнир [ Четверг, 25 Апрель, 2013 23:19 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Друзья, было бы крайне интересно узнать о прогрессе реализации задачи или возможных возникших трудностях. |
Автор: | Роман М. [ Пятница, 26 Апрель, 2013 00:20 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
Прогресса нема. Настроя нет, поэтому всё и стоит на месте. Скорее всего, это и является главной причиной. Застрял на снятии метрик с глифов шрифта. Функция FT_Load_Glyph наверно неправильно декларирована. Прикладываю наработки. Вложение: Для запуска требуется иметь файл tahoma.ttf в рабочей папке ББ. |
Автор: | Пётр Кушнир [ Пятница, 26 Апрель, 2013 14:14 ] |
Заголовок сообщения: | Re: Библиотека FreeType |
До боли знакомо. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |