Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Нестандартные шрифты на холсте Canvas. (https://javascript.ru/forum/xhtml-html-css/36644-nestandartnye-shrifty-na-kholste-canvas.html)

Mike_Kharkov 23.03.2013 03:42

Нестандартные шрифты на холсте Canvas.
 
Всем привет.
Недавно начал экспериментировать(в первые для себя) с различными манипуляциями над тегом Canvas и задался одним вопросом:
Можно ли как то отображать на холсте нестандартные шрифты?(при условии, что они заранее не установлены на компьютере естественно.)
(Не используя картинки!)
Можно ли как то задействовать в этом плане сервис Cufon?
Если да - то как именно?
(Имею ввиду как именно все это дело подключать? Это же не элементы dom дерева, насколько я понимаю?)
Возможно так же существует какая то альтернатива в этом плане?
P.S. Заранее благодарен за ответ..

danik.js 23.03.2013 05:58

Цитата:

Сообщение от Mike_Kharkov
Можно ли как то задействовать в этом плане сервис Cufon?

Думаю можно. Он ведь создает js-объект на основе шрифта если правильно помню. Можно поковыряться в исходниках cufon и разобраться как можно писать текст имея такой шрифт.
Но возможно есть и проще решения. Кстати, а разве писать подключенными через @font-face шрифтами нельзя?

Mike_Kharkov 23.03.2013 07:23

Цитата:

Сообщение от danik.js (Сообщение 242117)
Кстати, а разве писать подключенными через @font-face шрифтами нельзя?

Пробовал - но лично у меня подключить не получилось.
(Хотя при подключении к другим блокам всё работает нормально. Если с винта подгружать.)
Вот пример:
В самой рамке находится canvas(к шрифту попытался подключить оформление через font-face.) а с лева от неё для примера тег span также c подключенными через font-face шрифтами.
http://webmaster.ayrveda.ru/fonts2/canvas.html
Правда сейчас на хостинг файл закинул и увидел что всё совсем по другому смотрится..
В каждом браузере по разному.
Но на холсте сами шрифты(именно в канвасе) пытаются отображаться только в хроме! И только только после неоднократной перезагрузки страницы.. (хотя с компа ничего не отображается на холсте. Только левый блок со спаном работает в норме.)
В мазилле + ie наоборот с компа Span в норме - но с хостинга не работает..
P.S. Возможно причины в путях - но перепробовал вроде все варианты.
Хотя тоже самое происходит и с демо версией шрифта.
http://webmaster.ayrveda.ru/fonts2/orbitronio-demo.html
(Значит с моей стороны ошибок по идее нет. Это хостинг наверное как то конфликтует с этими файлами..)
Ну да бог с ним. Здесь хотя бы в теории разобраться, что бы с винта всё работало в норме..

Aetae 23.03.2013 08:10

Хардкорный вариант: самому сгенерировать из шрифта картинку(вектор) + объект с описанием позиций, кернинга итд.=))

Но на самом деле готовые варианты точно есть, надо просто хорошенько погуглить "html canvas font".(например)

Mike_Kharkov 23.03.2013 08:32

Цитата:

Сообщение от Aetae (Сообщение 242122)
Но на самом деле готовые варианты точно есть, надо просто хорошенько погуглить "html canvas font".(например)

Спасибо за ссылку - но к сожалению мне не удалось разобраться что там вообще происходит? ))
(То есть какая цель этого кода?)
Закинул код в свой редактор - открыл в браузере и что дальше? ))
(ничего не понял.)
То есть я понимаю, что что то там(шрифты) попадает на холст после клика по кнопке - но детали мне не ясны.
P.S. C инглишем пока дружу не очень - поэтому гуглить могу только по русскоязычным ресурсам. (Чем сегодня собственно и занимался. Но к сожалению безрезультатно.)

danik.js 23.03.2013 09:32

Цитата:

Сообщение от Mike_Kharkov
Пробовал - но лично у меня подключить не получилось.

Ты рисуешь на канвасе когда шрифт еще не подгружен. Поэтому нужный шрифт отобразится только если он закэширован браузером.
Кроме того, у тебя неправильные заголовки Content-Type. Хром по-видимому их игнорирует, а лис - нет.
Так что если исправить заголовки и дожидаться загрузки шрифта - все будет работать. Другое дело - как дождаться этой самой загрузки.
Как вариант - внедрять шрифты через data:uri. Разумеется это будет отличный вариант только для поддерживающих woff браузеров.

Mike_Kharkov 23.03.2013 09:36

Спасибо!
Цитата:

Сообщение от danik.js (Сообщение 242129)
Кроме того, у тебя неправильные заголовки Content-Type.

P.S. А в чём ошибка Content-Type?
В том что он не заполнен?
(я так понимаю речь идёт о <meta content="" name="keywords">
<meta content="" name="description">)
Такая конструкция проходит валидацию насколько мне известно..
(Или я что то упустил?)

Mike_Kharkov 23.03.2013 09:45

Цитата:

Сообщение от danik.js (Сообщение 242129)
Другое дело - как дождаться этой самой загрузки.

А JQ + JS такими возможностями не располагают?
(просто я далеко не спец. в этом направлении..)

danik.js 23.03.2013 09:48

Уфф, лучше просто показать:


Цитата:

Сообщение от Mike_Kharkov
А JQ + JS такими возможностями не располагают?

Что такое JQ ?

Mike_Kharkov 23.03.2013 09:54

Цитата:

Сообщение от danik.js (Сообщение 242134)
Что такое JQ ?

JQuery.
P.S. Не совсем разобрался, что означают индикаторы на дополнении к браузеру(на сколько я понимаю.)
Тоесть как понять(по этому скрину) в чём ошибка content-type?


Часовой пояс GMT +3, время: 04:33.