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/ |