Я был уверен, что буду и по Линуксом пользоваться седьмой Оперой. И действительно, она установилась и отлично побежала, всё привычное и хорошее. Но тут я соблазнился всё же попробовать Mozilla Firebird. В последний раз, когда я пробовал Мозиллу, это было что-то совершенно неподъёмное и глючное, а Mozilla Phoenix (это, если не ошибаюсь, та же Firebird в ранних версиях) - слишком сырое. Но сейчас всё оказалось совсем по-другому. Firebird мне очень понравилась - быстро поднимается, быстро рендерит, отлично показывает ивритские сайты (в отличие от Оперы). Все те штуки, к которым я привык в Опере, есть в Mozilla Firebird в виде extensions, которые можно дополнительно сгрузить (например, mouse gestures, или больше возможностей управлять табами). Даже для Notes Оперы (возможность легко писать в левом сайдбаре автосохраняющиеся иерархические записки - я к этому очень привык) нашлась extension в Firebird (правда, не иерархические пока, а только две записки, но это уже нормально, а потом, небось, улучшат), что окончательно решило вопрос - перехожу на Мозиллу. Единственное, что осталось решить - проблему фонтов.
В общем, я подозревал с самого начала, что без True Type шрифтов лучше в X и не соваться - слишком уродливо и плохая поддержка языков. Gentoo инсталлирует базовый набор Виндовских шрифтов (бесплатный майкрософтовский набор core fonts, правда некоторые там называются (имя вендора) monotype, а другие microsoft - непонятно, почему) вместе с X, надо только всунуть путь к ним в FontPath конфиг-файла, что я сразу и сделал после инсталляции X. Оказалось, однако, что это только начало. xlsfonts распознал и продолжал распознавать все эти True Type-шрифты, но когда я установил Gnome2, в его диалоге выбора шрифтов их не было. Почему? Оказалось, я ничего не знал о загадочных штуках под названием Xft и FontConfig. Xft обеспечивает особенно хороший рендеринг шрифтов, с anti-aliasing, smoothing и hinting особенно хорошего качества (правда, я не очень понял, что из этого делает он сам, а для чего использует freetype, с помощью которой читает True-Type шрифты - и если использует freetype, которая, в общем-то, модуль внутри X, почему и без Xft все эти штуки не работают). FontConfig используется в качестве библиотеки общего назначения для каталогизирования и выбора шрифтов - настолько общего назначения, что она не зависит от X (например, её можно использовать в аппликациях для печати, когда X вообще не установлен). Поэтому она не получает список директорий шрифтов и не знает по умолчанию о моих True-Type шрифтах в /usr/X11R6/lib/X11/fonts/trutype . Пришлось отыскивать её конфиг-файлы (в /etc/fonts/), разбираться в них и добавлять эту директорию в список. После этого True-Type шрифты стали распознаваться в Gnome2 и он стал их использовать автоматически (видимо, благодаря FontConfig'у).
Интересно получилось, например, с LogJam: после того, как я его установил и запустил, он сначала отказался показывать русские буквы, писал вместе этого маленькие картинки с четырьмя цифрами (Unicode-код) вместо каждой буквы. Если же я запускал его так: GDK_USE_XFT=0 logjam (спасибо
Хоть теперь Xft красиво рендерит True-Type шрифты (кроме некоторых проблем с Оперой и Мозиллой, о которых ниже), некоторыми вещами я не очень доволен в этой конфигурации, точнее недоволен не конфигурацией, а тем, что не понимаю, как некоторые вещи обнаружить. В опциях десктопа Gnome можно установить качество обработки шрифтов - делать ли им anti-aliasing и hinting, и какого уровня; насколько я понимаю, это опции Xft (я вообще не очень разбираюсь в том, что они значат и какие лучше выставлять, только понял, что subpixel smoothing мне не нужен, т.к. экран у меня не LCD). Но мне непонятно, каким образом выставленные там опции действуют после этого на всех запускаемых аппликациях, т.е. где эта информация сохраняется и как она распостраняется на другие аппликации (и делается ли это на уровне Gtk и тогда работает только в аппликациях, использующих Gtk? Или делается как-то на уровне Xft?). Это, впрочем, любопытство программиста. Другие вещи мешают мне больше. Я не знаю, например, как узнать, какой именно фонт в точности использует данная аппликация (можно как-то?). Пример номер раз: в конфигурации десктопа Gnome я выбираю дифолтные шрифты для всяких целей (Desktop Preferences->Fonts). По умолчанию, например, там стоит выбор "Sans" в одном месте и "Monospace" в другом. Я знаю (из чтения конфигурации FontConfig), что это на самом деле сборные имена для многих шрифтов, из которых, по-видимому, FontConfig сам выбирает наиболее подходящий во время runtime. Например, "Sans" это Helvetica, или Arial, или Verdana, или Nimbus Sans, или Luxi Sans... Когда я выбрал шрифт "Sans", FotoConfig выбрал за меня один из них, наиболее подходящий, и использует именно его. Но какой именно шрифт он выбрал? Я не вижу возможности это узнать! Перепробовав один за другим выбрать "настоящие" шрифты, и сравнивая, по образцу выбранного шрифта, к-й показывается во время отбота, их с выбором "Sans", я понял, что в данном случае он выбирает Verdana. Но это же ненормальный способ это узнавать - как же узнать это быстрее и лучше? Пример 2: та же проблема в терминале (программа gnome-terminal) - он сразу включает какой-то незнакомый мне шрифт. Этот шрифт мне в принципе даже нравится, но я хочу знать, какой это шрифт. Заходя в опции выбора шрифта внутри программы, я обнаруживаю, что включена опция "Use the same font as other applications" - но где записано, какой это шрифт? Отключив эту опцию, и перебирая методически все шрифты вручную, я обнаруживаю, что это был Andale Mono. Как я должен был узнать это без перебора? И, кстати, это не тот шрифт, что я выбрал в опциях десктопа, в опции "Terminal font" - зачем же тогда нужна эта опция?
Опера и Мозилла. В каких отношениях Опера находится с Xft, мне не очень понятно. С одной стороны, она явно использует Xft, и когда, например, я убираю опции anti-aliasing и hinting в десктопе Gnome и перегружаю Оперу, она начинает всё показывать "плохо", теми же шрифтами, но явно хуже всё рендерится - что подсказывает мне, что она пользуется Xft. С другой стороны, даже когда Xft не знала про True-Type шрифты, Opera про них знала и давала их выбрать в своей конфигурации, т.е. список шрифтов она, видимо, берёт у X? Не очень это мне понятно. Более серьёзная проблема возникла в другом месте: Опера плохо показывала страницы ЖЖ, слишком маленький шрифт, причём явно серифный, хоть обычно я привык к ЖЖ sans-serif (собственно, понял, что привык, только после того, как заметил, что Опера как-то "не так" показывает - обычно я совершенно не замечаю такие вещи). Инспекция исходников стадартной схемы ЖЖ показала, что там везде прописана font-family "Verdana, Arial, Helvetica", что на моей системе вроде бы должно выбирать Verdana, о которой теперь все знают (и X, и Xft). Но Opera почему-то выбирала Times New Roman, и только после того, как я поменял в её конфигурации шрифт в категории "Normal" с Times New Roman на Verdana, она начала правильно показывать ЖЖ. Но это, мне кажется, баг в Опере, т.к. я всё время был в author mode, где она обязуется использовать шрифты, прописанные на странице, а не указанные мной. Я не хотел бы оставлять Verdana в качестве дифолтного шрифта для всего веба! В общем, я потыкался, потыкался, но так это и не исправил и бросил, т.к. всё равно решил переходить на Mozilla Firebird.
В Мозилле всё было интерсней. Она с самого начала правильно показывала большинство сайтов, в том числе ивритские - но ЖЖ показывала плохо: слишком маленькие шрифты (и не уверен, что правильные). Попытка как-то это сконфигурировать внутри Мозиллы не очень удалась. После долгих мучений я обнаружил, что, во-первых, работают только выборы шрифтов в разделе кодировки "Western", хотя я смотрел при этом русские страницы в ЖЖ - но выборы шрифтов ни в кодировке "Cyrillic", ни в кодировке "Unicode" ничего не меняли. Western-то тут при чём? Это меня весьма удивило (баг? недоработка?). Во-вторых, в любом случае эти шрифты работают, только если включить опцию "Always use my fonts", и хотя это исправило показ ЖЖ более или менее, я опять-таки не хотел включать эту опцию для всего веба. Более того, проявился любопытный баг, о котором как-то писал
Я уже отчаялся, но решил ещё напоследок разобраться с тем, как моя Мозилла общается с Xft. И обнаружилось, что никак: я установил Мозиллу через binary package Генту под названием mozilla-firebird-bin (обычно в Генту нет специальных отдельных пакетов для прекомпилированных программ, это - одно из исключений; это не значит, что в Генту всегда обязательно компилировать, просто обычно скомпилированный binary package используется в рамках того же пакета в дереве Portage Генту, просто с другими опциями), и там она скомпилирована и устанавливается с такими особыми опциями: она не использует Xft, но при этом не надеется на X в смысле использования True-Type шрифтов, а сама находит их и использует сама с помощью библиотеки FreeType (той же, что сидит в сервере X в виде модуля freetype, но эта Мозилла делает всё сама со стороны клиента, если я правильно понял). Я решил, что, возможно, из-за этого все проблемы, и решил скомпилировать Мозиллу заново из исходников, заставив её при этом использовать GTK2 и Xft2. После компиляции (которая заняла часа три, что ли) всё заработало отлично, шрифты сами собой стали показываться правильно, и, что совсем уже непонятно, исчез баг, связанный с <font size=-1>. Казалось бы, эта проблема должна сидеть внутри engine, обрабатывающей HTML, и не должна быть связана с шрифтами? Загадка (возможно, что какие-то другие опции при компиляции Мозиллы, отличные от опций прекомпилированного варианта, сыграли тут роль, но если так, то я не имею ни малейшего понятия, что это могли быть за опции).
Теперь в Mozilla Firebird всё просто замечательно, и я точно перехожу на неё. Сгружу сегодня всякие extensions, в первую очередь - для записок (notes), для Google searchbar, и для mouse gestures, а насчёт других посмотрим уж. Осталось только одна проблема с шрифтами, которая, тем не менее, сильно мне мешает: очень плохо рендерится текст на тёмном фоне (это верно как в Мозилле, так и в программе-терминале, например). Скажем, если я захожу в какой-то дневник в ЖЖ, в котором стиль сделан так, что всё показывается на чёрном фоне, то я просто с трудом вижу буквы, они слишком тонкие, а также неровно тонкие (т.е. заметно, что некоторые палочки толще других, и из-за этого теребит в глазах всё время). Я не знаю, что с этим сделать - я пытался играться с опциями anti-aliasing, но это не очень помогло. Менять дифолтные шрифты? Но на какие? Проблема ли это именно True-Type шрифтов, связано ли это как-то с Xft? Если кто-то знает, как можно этому помочь, отзовитесь.
Рука бойцов писать устала. О клавиатуре, настройке раскладок и выборе мейлера - в другой раз.