Окончательная победа над шрифтами?

Здравствуйте, мои маленькие любители Linux.

Сегодня мы продолжаем цикл увлекательнейших статей про fontconfig и шрифты. Как вы помните, в прошлый раз мы победили шрифты семейства DejaVu, понизив их приоритет ниже шрифтов Microsoft. Принесло ли это нам полное удовлетворение? Не совсем. Существует немалое количество сайтов, созданных любителями Open Source. И эти любители, не моргнув глазом, прописывают шрифты семейства DejaVu в своих CSS. Слава богу, таких людей все же не так много, и с убогостью их сайтов можно смириться.

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

Default font: serif<br>
<br>
Latin O:   O<br>
Latin o:    o<br>
Cirillic O:  О<br>
Cirillic o:   о<br>
<br>
Here they come interleaved:<br>
OОOОOОOОOОOО<br>
oоoоoоoоoоoо<br>

Что привело к очаровательнейшей картинке:
interleaved.png

Но сам по себе Times New Roman содержит одинаковые по высоте глифы! Отгадка нашлась быстро. В предыдущий раз мы всего-лишь подвинули ниже строчку со шрифтами семейства DejaVu. А стоящий на первом месте шрифт семейства Bitstream Vera мы (я уж точно) не трогали. В обычной жизни этого было бы достаточно, так как шрифт семейства Bitstream Vera не содержит кириллицы и по текущей локали fontconfig выдает нам первый шрифт, в котором есть кириллица, то есть шрифт от Microsoft. Но Gecko (а следовательно Firefox) позволяет отрисовывать страницу, содержащую символы из различных алфавитов и, видимо, для большей универсальности, он запрашивает у fontconfig шрифт отдельно для латиницы, кириллицы, греческого, арабского, китайского и прочих алфавитов. И получилось, что для латиницы он использовал семейство Bitsream Vera, а для кириллицы шрифты от Microsoft.

Так что правильным будет передвинуть Microsoft’ские шрифты на первое место.

Вот такая вот история вышла. Интересно, это конец?

Upd: В Debian и, скорее всего, в Ubunte, а может быть и в других дистрибутивах, достаточно положить файлик local.conf с правильно заданными приоритетами в /etc/fonts.

RSS feed | Trackback URI

15 Comments »

Comment by Alexander Solovyov Subscribed to comments via email
2007-11-11 19:20:31

Однако нет, я передвигал микрософтовские шрифты в начало…

 
Comment by Alexander Solovyov
2007-11-11 19:30:15

В общем, вот мой скрин с жуткими шрифтами в заголовках. Не совсем понятно, что же это может быть… В ФФ дефолтным шрифтом стоит Verdana.

Comment by GQ
2007-11-11 21:56:47

В ФФ дефолтным шрифтом стоит Verdana.

для кириллицы? а то там отдельно для разных алфавитов задаются?

То что ты показываешь - это откровенно DejaVu Serif.

Что у тебя выдает команда
fc-match serif
?

 
 
Comment by Alexander Solovyov
2007-11-11 22:08:47

для кириллицы? а то там отдельно для разных алфавитов задаются?

Угу, для кириллицы. Serif и Sans Serif стоит Verdana, monospace - Courier New.

>fc-match serif
TimesNewRoman-Regular.ttf: “Times New Roman” “Normal”

Comment by GQ
2007-11-13 18:13:18

Но рисуется заголовок шрифтом DejaVu Serif Bold. Увы, дальше я не экстрасенс :(

 
 
Comment by Alexander Solovyov
2007-11-13 18:32:31

> Но рисуется заголовок шрифтом DejaVu Serif Bold

Угу, я это вижу. Думаю, может попробовать их удалить? В /etc/fonts/ ничего больше такого подозрительного найти не могу…

Comment by GQ
2007-11-13 18:59:00

Не, если они никому не нужны, то проще всего действительно aptitude purge ttf-dejavu.
Собственно мне раньше этого более-менее хватало.

 
 
Comment by Alexander Solovyov
2007-11-13 23:22:59

Хаха! Кто б мне объяснил, почему я раньше до этого не додумался? ;) Наступила невероятнейшая красота. :)

Если их кто-то потребует, я создам dummy-пакет, чтоб эта зараза не проникла в систему. ;)

Comment by GQ
2007-11-13 23:57:49

Не, dummy-пакет это неправильно. Если кто-то зависит от ttf-dejavu и не предлагает msttcorefonts в качестве альтернативы - надо просто репортить на него баг.

 
Comment by GQ
2007-11-13 23:59:40

Но у меня как раз была идея, чтобы добиться приемлемого результата не удаляя шрифты DejaVu. И я этого добился, по крайне мере у себя.

 
 
Comment by redechnik Subscribed to comments via email
2007-12-26 12:24:42

Прошу прощения, не могли бы Вы подсказать к-нибудь инфу, или дать ссылку, как настроить греческие шрифты в Linux? - http://redechnik.livejournal.com/1499.html

Comment by GQ
2007-12-26 12:32:25

Просишь помочь, а сам запретил постить всем, кроме ЖЖюзеров. ОпенАйДи-то чем не угодил =\

Comment by redechnik Subscribed to comments via email
2007-12-26 12:51:03

Ой, а я и не знал :-((, снял запрет только что.
Спасибо!

 
 
 
Comment by anonymous
2008-06-05 20:20:21

Бред. Не вижу ничего убогого в шрифтах DejaVu…

 
Comment by lika2008
2008-06-06 14:30:57

я разместила local.conf в /etc/fonts, и на fc-match serif у меня TimesNewRoman, а на sans serif - Verdana. знает ли кто нибудь, в чём у меня проблема в отображении кириллицы + латиницы? см. скриншот.
или так и должно быть? у меня так на некотрых сайтах, и иногда это немного напрягает..(ubuntu 8.04, opera 9.27)

а в firefox тем не менее всё выглядит нормально.. (не считая того ужаса, что творится с “i”)

 
Name (required)
E-mail (required - never shown publicly)
URI
Subscribe to comments via email
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.

Trackback responses to this post