«Виола»: математический модуль
Наверное, можно подумать, что я забросил заниматься браузером «Виола» — первым графическим браузером с потрясающими для своего времени возможностями. На самом деле — ничего подобного: почти каждый день, с редкими пропусками, я что-то в нём правлю.
Тот исходный код, который мне достался, был в статусе беты, но даже для беты тут очень много вполне очевидных багов, которые нужно исправить. А ещё — много впечатляющих вещей, которые автор, по всей видимости, не успел доделать. Часть из них я нашёл чисто случайно, как, например, модуль для отображения математических формул.
Нашёлся он совершенно случайно, когда я чинил баг с отображением символьных сущностей HTML — плёвая ошибка: дело было в том, что char у меня в компиляторе — тип со знаком, а в компиляторе автора, видимо, был без него. Из-за этого часть функций, работающих с символами, работала неверно.
В общем, обнаружив модуль для отображения математических функций, я занялся им. Основное поправил, но кое-что до сих пор работает неправильно, буду позже править, думаю на это уйдёт ещё много сил.
Вот как выглядят формулы:
<math>&integral;<sup>∞</sup><sub>0</sub> e<sup>-x</sup> = <box>σ<over>2</box></math>Это третья формула на моём скриншоте, можно посмотреть чему соответствуют отдельные элементы. Как можно убедиться, реализованное в «Виоле» почти в точности совпадает со стандартом HTML Math, разрабатываемым когда-то Консорциумом Всемирной паутины, который так и остался в стадии черновика. Правда в браузере реализована только малая часть.
Синтаксис довольно простой, но, в принципе, несложные формулы записать можно. Вся математика отображается красным, я думал это какой-то баг, но нет, это такая особенность.
А как ты понял, что красная математика это особенность, а не баг?
Я подумал, что это баг, потому что все сущности выводились на обычном фоне, а математические — на красном. Они явно были картинками, а не символами, как всё остальное, поэтому я подумал, что это баг декодирования картинки. Позже выяснилось, что это и не картинки, рисуется всё векторно и цвет там ставится явным образом:
static char _slotValue_HTML_math4[] = "red";
Ааа, я просто подумал, что может быть какая-то история прям за этим быть, копание в vcs(кстати, она там была CVS, SVN или вообще без неё?), а то такой красный, выглядит как ошметок отладки, пока прозрачность трушную не сделал например.
Без, конечно :-)
CVS уже существовала в те годы, но в ранние 90-е не так уж много проектов её использовали.