URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5462
[ Назад ]

Исходное сообщение
"Проблема со шрифтами в opera и konqueror"

Отправлено Al , 11-Янв-08 14:06 
Столкнулся с проблемой, суть в следующем: Есть некоторый документ, в котором прописаны некоторые стили, цвет шрифта, цвет, фона, сам шрифт(название итд), размер итд
С помощью javascript получаем значение каждого свойства через document.styleSheets.cssRules.stylе и его значение в дальнейшем. Проблема в том что например опера, вместо шрифта times new roman при запросе скрипта, выдаёт bitstream Vera Serif, а konqueror вообще не выдаёт ничего(для times new roman), т.е. font-family при запросе javascriptom пустой остаётся. В то же время например шрифт monospace нормально выдаётся при javascript запросе в любых браузерах, все остальные свойства(цвет, размер итд) нормально выдаются во всех браузерах(opera,netcape, konqueror)
Вопрос, почему opera меняет шрифты которых не знает? А точнее как с помощью javascript функций получить список шрифтов поддерживаемых браузером, и как сделать так чтобы например опера при "ненахождении шрифта у себя" не меняла его на хз что.

Содержание

Сообщения в этом обсуждении
"Проблема со шрифтами в opera и konqueror"
Отправлено XAnder , 11-Янв-08 15:04 
>Вопрос, почему opera меняет шрифты которых не знает? А точнее как с
>помощью javascript функций получить список шрифтов поддерживаемых браузером, и как сделать
>так чтобы например опера при "ненахождении шрифта у себя" не меняла
>его на хз что.

Про Оперу не знаю. Но есть мысль насчёт узнавания поддерживаемых шрифтов. Где-то видел весьма изящный способ проверки поддержки разных шрифтов браузером. Ссылку не помню, к сожалению, но суть там была в том, что некоторая строка простых символов (например "ABCDEFG", но лучше длиннее) выводится разными шрифтами. Сначала стандартными, потом всякими разными, которые нужно проверить. Примерно так:

<p style="font-family: serif">ABCDEFG</p>
<p style="font-family: sans-serif">ABCDEFG</p>
<p style="font-family: monospace">ABCDEFG</p>
<p style="font-family: MyFont1">ABCDEFG</p>
<p style="font-family: MyFont2">ABCDEFG</p>
...

Затем для каждого полученного абзаца смотрим ширину (вроде бы свойство offsetWidth, но могу и ошибаться). Если ширина абзаца со шрифтом MyFontN не совпадает с шириной никакого из трёх стандартных, то этот шрифт точно есть в браузере.

Развивая эту идею, можно добиться многих интересных результатов. Пробуйте.


"Проблема со шрифтами в opera и konqueror"
Отправлено MasterWeb , 05-Май-08 23:37 
Тестировал Оперу 9.5, Мазил2 и Сафари3.

Code:
--------------------------------------------------------------------------------

<HTML>
<BODY></BODY>
<SCRIPT>
    s="1,2,3;4,5,6;8,9,0".replace(/;/g,"</TD></TR><TR><TD>").replace(/,/g,"</TD><TD>");
    document.body.innerHTML="<TABLE border=1><TR><TD>"+s+"</TD></TR><TABLE>";
</SCRIPT>
</HTML>

--------------------------------------------------------------------------------
Работает теперь во всех браузерах. (Раньше работал только в IE, начиная с версии 3.)

Code:
--------------------------------------------------------------------------------

<HTML>
<STYLE>
    P.Over{color:#FF0000;}
    P.Out{color:#00FF00;}
</STYLE>
<BODY>
    <P class=Out id=pID>Hello!</P>
</BODY>
<script>
    //var p=document.body.all["pID"];
    var p=document.body.all.pID;
    p.onmouseover=Over;
    p.onmouseout=Out;
    function Over(){this.className="Over"};
    function Out(){this.className="Out"};
</script>
</HTML>

--------------------------------------------------------------------------------
Работает тоько в IE(4 и моложе) и Опере9.5.

Это только примеры. Демонстрация. Я сравнивал возможности, которые предоставляет объектная модель браузеров. Детально сравнивал. Я сравнивал, по сути, эти браузеры с IE5.5. Ни Опера, ни, тем более, все остальные, даже близко к IE5.5 не подошли. А ведь сейчас мы имеем IE7.
Вывод: Браузеры Опера и все остальные отстали не на 10 лет от IE7, они отстали от него навсегда.