OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 25 Сентябрь, 2018 13:47

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




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Портирование HostFonts
СообщениеДобавлено: Воскресенье, 04 Апрель, 2010 11:52 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Роман М. писал(а):
Откуда можно взять эти последние наработки?


«Сырой» архив выложен сюда: http://files.mail.ru/871B08 (19 Мб).

Описание используемых утилит OLex&OYacc: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1076
Потребуются также утилиты GnuWin32: http://gnuwin32.sourceforge.net/

Вопросы лучше через список рассылки или напрямую через электронную почту, поскольку документации никакой ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Портирование HostFonts
СообщениеДобавлено: Понедельник, 12 Сентябрь, 2011 00:19 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2185
Откуда: Красноярск
Да в ББ не Unicode UTF8, а UCS-2, в Unicode UTF8 для хранения используется переменное число битов а не всегда 2 как в UCS-2.

Для конвертации удобно использовать процедуру из подсистемы ИН Горячева.

Код:
PROCEDURE ToUtf8 (IN s : ARRAY OF CHAR; OUT us : ARRAY OF SHORTCHAR);
VAR (*  Автор: ГИН*)
   i, j, val, ulen : INTEGER;
BEGIN
   i := 0; j := 0; ulen := LEN(us) - 1;
   WHILE (i < LEN(s)) & (s[i] # 0X) & (j < ulen) DO
      val := ORD(s[i]);
      IF val < 128 THEN
         us[j] := SHORT(CHR(val)); INC(j)
      ELSIF val < 2048 THEN
         IF j < ulen - 1 THEN
            us[j] := SHORT(CHR(val DIV 64 + 192)); INC(j);
            us[j] := SHORT(CHR(val MOD 64 + 128)); INC(j)
         ELSE
            ulen := 0
         END
      ELSE
         IF j < ulen - 2 THEN
            us[j] := SHORT(CHR(val DIV 4096 + 224)); INC(j);
            us[j] := SHORT(CHR(val DIV 64 MOD 64 + 128)); INC(j);
            us[j] := SHORT(CHR(val MOD 64 + 128)); INC(j)
         ELSE
            ulen := 0
         END
      END;
      INC(i)
   END;
   us[j] := 0X
END ToUtf8;


Последний раз редактировалось Иван Денисов Понедельник, 12 Сентябрь, 2011 11:52, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Портирование HostFonts
СообщениеДобавлено: Понедельник, 12 Сентябрь, 2011 11:38 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8989
Откуда: Россия, Орёл
В ББ используется UCS-2. UTF - это представление с переменным числом бит.


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

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


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

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


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

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