Шрифты и формат BBT

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
Ответить
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 27.04.20 23:57

Во всяком случае, глядя на оба инструмента сразу, можно представить себе, что они создали где-то стили (кстати, где?)
По нажатию на кнопочку устанавливается стиль. Также можно установить конкретные параметры (шрифт и т.п.)

В целом такая идея выглядит не совсем абсурдной. Но, во-первых, непонятно, как она должна работать, во-вторых, она не работает.

Попробую разобраться, держа в руках оба исходника. В принципе-то можно взять старую версию и надеяться, что оно когда-то работало.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 28.04.20 00:00

Итак, время 00:00, надо ложиться спать пораньше. Где же берутся стили?

WMTextStyleTool (который более работающий)

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 28.04.20 00:14

Оказывается, они берутся из файлов UserTextStyles.XML и DefaultTextStyles.XML (и наверняка это написано в документации :) )
Инициализация происходит в процедуре Texts.InitDefaultStyles. Сразу меняем там размер 10 на 14.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 29.04.20 23:16

В формате файла Oberon (.Text) стили кодируются номерами. Размеры шрифтов меняются при масштабировании. При последующем сохранении, размеры, которые получились, кодируются в примерно таком виде в файле .Text: "Oberon24b.Scn.Fnt".

Кроме того, в раскодировщике файла Оберон видны следы своеобразного OLE - там вырезан код, который должен загрузить библиотеку, отвечающую за отображения объектов такого типа.

При преобразовании текста в формат bbt стили букв угадываются по цвету и им даются имена, которых в формате Оберон в принципе нет (там только анонимные цифры). Именованные шрифты - это само по себе это может быть даже и неплохо.

Плохо то, что если документ открыт в формате bbt, то масштабирование не работает. Чтобы оно заработало, нужно, видимо, сделать две вещи:

1. Сделать, чтобы масштабирование меняло стили, если стили есть. Сейчас оно их не меняет.
2. Сделать, чтобы стили запоминались вместе с документом.

Есть более энтропийный способ - расширить все стили, после этого они потеряют имена и станут "Ad hoc" стилями, непосредственно заданными в тексте. Как лучше поступить - неясно, но это влияет на веб-браузер. Есть промежуточный вариант - сделать, чтобы стили масштабировались, но не сохранялись. Тогда будет удобнее работать, но придётся менять размер шрифта каждый раз. Выглядит терпимым.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 29.04.20 23:17

Как сделать масштабирование шрифта? Есть процедура WMTextView.GetNewSize - начнём копать от неё вглубь стека.

Код: Выделить всё

ChangeAttribute
WMTextView.TextView.WheelMove
Дальше вглубь копать безполезно. Теперь нужно научиться менять шрифт в присутствии CharacterStyle.
Для этого нужно понять, хранится ли стиль в самом текстовом документе или он глобален. Второй случай хуже. Возвращаемся в TextUtilities.BluebottleDecoder.

Нда. Стиль глобален, но зато он глобален. Если мы его оторвём и запихнём в документ, мы сможем масштабировать этот документ. Зато пока стиль един, мы можем управлять сразу всеми документами. Как лучше-то? По идее, если стиль глобален, то клонировать его по документом - увеличивает энтропию. И что же нам, терпеть без масштабирования? Или мы ещё что можем сделать - ввести параметр масштаба для данного документа. Но и это может нас куда-нибудь далеко завести.

В общем, пока оставим, пожалуй, как есть. Мы таки можем управлять стилем документов в формате bbt, если нам прямо приспичило их увеличивать или уменьшать. Хотя ещё можно как сделать: уничтожать стили при первой попытке изменения масштаба. Но сначала проверим, что изменение масштаба при уничтоженных стилях работает.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 29.04.20 23:41

Вообще, если смотреть на VS Code, они там не заморачиваются со стилями, а делают единый размер для всего документа. Это нормально для всего, кроме вёрстки. Хотя... у нас bbt как раз для вёрстки (веб-страниц)... Блииин.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 30.04.20 00:04

После временного отключения вызовов SetCharacterStyle и SetParagraphStyle масштабирование bbt заработало. Ну ок, включаю обратно и давайте уничтожать стили при попытке масштабирования и писать об этом в KernelLog.
Последний раз редактировалось БудДен 30.04.20 01:24, всего редактировалось 1 раз.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 30.04.20 00:08

Ещё не совсем ясно, где же обработчик Ctrl-стрелка-вверх, который то же самое делает. Но потом поищем.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 30.04.20 01:19

Обработчик нашёлся. Теперь всё "работает" так:

- при попытке масштабирования с помощью ctrl-колесо мыши или ctrl-стрелка вверх стили в документе bbt стираются и масштабирование работает
- однако при последующем сохранении стили откуда-то воскресают. Ну и хорошо, это не баг, это фича.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 30.04.20 20:39

В ходе долгой и мучительной отладки, но особенно в ходе чтения журнала модификаций, удалось понять, что шрифт Vera не содержит кириллицы, которая заменяется какой-то помойкой. Ввиду этого будут заменены все шрифт. Шрифт IBMPlexMono содержит баг - двойная кавычка выглядит как одинарная, поэтому его я тоже выкину.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 30.04.20 22:13

Адище. В итоге я нашёл, что PTMono Regular и PTSans Regular приемлемо выглядят и отображаются без глюков. Поэтому остальные шрифты постараюсь изжить. Также есть WMDefaultFont, который, ессно, без кириллицы. На него ставлю HALT. Посмотрим, что будет...

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 30.04.20 22:43

PT Sans Regular ничего, PT Mono regular сошёл с дистанции из-за знака равенства, который при определённом размере становится минусом, а потом опять превращается в знак равенства. Теперь нету моноширинного шрифта, буду искать дальше... Anonymous Pro Bold не содержит багов, но на вид чудовищен.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 01.05.20 00:58

В итогде везде, где мог, поставил DejaVu , но есть ещё встроенный шрифт, который нельзя не загружать. В целом стало лучше.

Игнат99
Сообщения: 124
Зарегистрирован: 27.09.23 15:29

Re: Шрифты и формат BBT

Сообщение Игнат99 » 27.09.23 17:02

БудДен писал(а):
29.04.20 23:41
Вообще, если смотреть на VS Code, они там не заморачиваются со стилями, а делают единый размер для всего документа. Это нормально для всего, кроме вёрстки. Хотя... у нас bbt как раз для вёрстки (веб-страниц)... Блииин.
https://github.com/btreut/a2

Надеюсь что не совсем ошибся темой. Просто хотелось бы узнать в каком состоянии сейчас ОС А2 в рамках русификации?

Создал этот репозитарий 8 лет назад, а потом по настойчивому требованию одного студента из Швейцарии передал ему права. Он сказал что имеет некое отношение к этой системе.

Для меня было важно иметь операционную систему запускающуюся на голом железе и имеющую читаемый исходный код.
Все возможности по перетаскиванию окон были для меня избыточны.

Вместо них я хотел использовать "бесконечный" дисплей. Для тестирования этой возможности я открыл файл операционной системы в текстовом редакторе. И даже более 2 файлов. Затем растянул окно до максимальной координаты окон, так чтоб весь текст был в буфере обмена.

К сожалению на моём Линуксе это привело к ошибке. Я решил что в Голубой Бутылки (в смысле из старинного стекла) или А2 слишком много не отловленных багов. И совсем нет тестов (если я не путаю). И на том этапе (когда я не мог тратить слишком много времени на отлов ошибок), я посчитал А2 слишком сырой в силу её студенческой разработки.

Хотя целостность ассемблера и дизассемблера очень подкупала.

Ну и совсем недавно я узнал что на 8-битных процессорах практически невозможно запускать оконный интерфейс из за ограничений в адрессации и скорости. Хорошо когда есть возможность представить структуру чипа в топологии.

Так например микропроцессор 6800 совершенно не подходит в отличии от 68000 или z80 или 8086 где имеются достаточный объем внутренней памяти или кеша около ядра. На ARM Cortex-A9 Samsung на базе чипа Exynos 4210 с тактовой частотой 1.2 ГГц с которым я работал к сожалению были ошибки при переключении ядер. Поэтому до сих пор все приложения для старых планшетов 2012 года по сути имеют только один поток.

Так как я предположительно считаю что вскоре векторная математика будет заменена на более общую, то эта часть - векторные операции ассемблера вскоре устареют. И возможно это отразится и на операциях с плавающей точкой. (не спрашивайте как и почему - просто интуиция)

Поэтому часть ОС А2 по перетаскиванию и перерисовыванию окон на экране, мне видится совершенно устаревшей по 2 вышеназванным причинам.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Шрифты и формат BBT

Сообщение БудДен » 27.09.23 23:23

Состояние работоспособное, запускается на x86 в QEMU и на некоторых железках (здесь в форуме где-то есть список железок, на которых запускалась, и результаты). Также запускается как приложение в Linux и Win32. Также запускается на Zybo Z7 (видеокарта в FPGA) и на эмуляторе оной (без эмуляции FPGA). При запуске на железке гуй не работает, ввод команд только через UART.

Под Linux баги есть, но в целом работать можно (я работал). Касаемо окошек - я не любитель бесконечных дисплеев, сделал команды Alt-Enter 4 (на левую половину экрана), Alt-Enter 6 (на правую) и Alt-Enter 5 (на весь экран). Такой вот мозаичный менеджер окошек для бедных.

Приложения Oberon и Voyager я выкинул для облегчения полёта, равно как и кооперативную версию (она всё равно не вполне работоспособна была).

Выкинуть гуй из ЯОС можно, но не нужно, т.к. там уникальная (на данный момент) среда разработки, позволяющая переходить к определениям сущностей (процедур, типов, модулей). Других таких сред для активного оберона нет, и без этого я не вижу смысла вообще пользоваться этой технологией, ну разве только для тех, кто может прочитать и запомнить наизусть миллион строк.

Игнат99
Сообщения: 124
Зарегистрирован: 27.09.23 15:29

Re: Шрифты и формат BBT

Сообщение Игнат99 » 27.09.23 23:32

Я в другой ветке форума предложил технологию похожую на топологию для создания приложений.
И там же предложил концепцию нового чипа на который по моему мнению нужно держать ориентир.
Основную организацию мемоник консонантного письма предлождил для ассемблера.

viewtopic.php?f=12&t=666&p=4204#p4202

Ответить