OberonCore
https://forum.oberoncore.ru/

Портирование HostFonts
https://forum.oberoncore.ru/viewtopic.php?f=34&t=2488
Страница 2 из 2

Автор:  Димыч [ Воскресенье, 04 Апрель, 2010 11:52 ]
Заголовок сообщения:  Re: Портирование HostFonts

Роман М. писал(а):
Откуда можно взять эти последние наработки?


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

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

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

Автор:  Иван Денисов [ Понедельник, 12 Сентябрь, 2011 00:19 ]
Заголовок сообщения:  Re: Портирование HostFonts

Да в ББ не 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:38 ]
Заголовок сообщения:  Re: Портирование HostFonts

В ББ используется UCS-2. UTF - это представление с переменным числом бит.

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/