OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 09:02

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




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 15:07 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Просто в A2 (AOS) есть (присутствует с самых ранних версий) библиотека для рендеринга шрифтов и называется OpenType :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 15:14 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
OpenType.Mod
Цитата:
MODULE OpenType; (** AUTHOR "eos, PL"; PURPOSE "Bluebottle port of OpenType"; *)

Так что, был-ли я корректен? :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 15:14 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Ярослав, а этой библиотеке можно скормить TTF шрифты или только те, что имеют AOS-овский формат?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 15:19 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Иван Кузьмицкий писал(а):
Ярослав, а этой библиотеке можно скормить TTF шрифты или только те, что имеют AOS-овский формат?

TTF понимает. Но какие-то баги есть. Куда ж без них :D


Вложения:
Комментарий к файлу: Баг с отображением italic
Italic bug.png
Italic bug.png [ 658 байт | Просмотров: 8742 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 15:59 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Уточните, библиотека понимает http://ru.wikipedia.org/wiki/OpenType хорошо и http://ru.wikipedia.org/wiki/TrueType с багами, или только TrueType с багами?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 16:29 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Ярослав Романченко писал(а):
OpenType.Mod
Цитата:
MODULE OpenType; (** AUTHOR "eos, PL"; PURPOSE "Bluebottle port of OpenType"; *)

Так что, был-ли я корректен? :lol:
В контексте AOS - корректна, конечно.

Перед тем как использовать библиотеки AOS, надо хорошенько проверить её на предмет зависимостей от низлежайшей ОС.
FreeType хороша своей независимостью от ОС ибо растеризует текст в буфер памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 17:21 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Пётр Кушнир писал(а):
Уточните, библиотека понимает 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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 19:08 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
В принципе, концептуально выгодно не иметь зависимости от бинарного чужого компонента, в то же время, компонент из АОС явно не сильно прокачан технически, зато "своё", поэтому его можно будет портировать быстрее. И в то же время, на основе этого порта можно построить шрифтовый движок с известными и обозримыми интерфейсами, которые (в ситуации когда компонент АОС перестанет удовлетворять запросам проекта ББ) позволят реализовать работу с freetype уже внутри реализации, без изменения клиентского кода.
Что касается проекта нового хоста ББ, то использование в хост-части интерфейсов на КП привнесёт ещё один уточняющий слой абстракции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 22:19 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Пётр Кушнир писал(а):
В принципе, концептуально выгодно не иметь зависимости от бинарного чужого компонента, в то же время, компонент из АОС явно не сильно прокачан технически, зато "своё", поэтому его можно будет портировать быстрее. И в то же время, на основе этого порта можно построить шрифтовый движок с известными и обозримыми интерфейсами, которые (в ситуации когда компонент АОС перестанет удовлетворять запросам проекта ББ) позволят реализовать работу с 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.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Вторник, 19 Март, 2013 22:26 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Эффективно, но при этом теряется контроль над жизненно важным кодом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Среда, 20 Март, 2013 08:34 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
FreeType пилится вот уже добрых два десятка лет. Скорее всего, никаких проблем со шрифтами мы там не встретим, а это важно, чтобы не получить сырость на таком серьёзном участке, как тексты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Четверг, 21 Март, 2013 11:48 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Начал аккуратненько, в документ, собирать информацию по особенностям вывода текста во FreeType и соответствующих API вызовах, требуемых для реализации HostFonts. Как соберу, начну транслировать заголовки FT на КП.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Воскресенье, 24 Март, 2013 15:57 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Нашёл затерянную обвязку к 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

Разрабатывал для Винды и с тех пор не проверял.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Четверг, 25 Апрель, 2013 23:19 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Друзья, было бы крайне интересно узнать о прогрессе реализации задачи или возможных возникших трудностях.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Пятница, 26 Апрель, 2013 00:20 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Прогресса нема. Настроя нет, поэтому всё и стоит на месте. Скорее всего, это и является главной причиной.
Застрял на снятии метрик с глифов шрифта. Функция FT_Load_Glyph наверно неправильно декларирована.

Прикладываю наработки.
Вложение:
FT-Fonts-lab.zip [7.99 КБ]
Скачиваний: 345


Для запуска требуется иметь файл tahoma.ttf в рабочей папке ББ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека FreeType
СообщениеДобавлено: Пятница, 26 Апрель, 2013 14:14 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
До боли знакомо.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2

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


Кто сейчас на конференции

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB