24.02.2014, 05:48
|
|
Интересующийся
|
|
Регистрация: 01.09.2013
Сообщений: 12
|
|
font-face шрифты и canvas
Возникла проблема при подключении шрифтов через @font-face и выводу их на canvas.
Шрифты выводятся, но у одного из шрифтов отдельные буквы получаются значительно бледнее остальных в Firefox, Safari и Internet Explorer. При этом просто в html странице при использовании этого шрифта все нормально. В Chrome и Maxthon вообще все нормально и на canvas и в html.
Что это может быть? Как с этим бороться?
Заранее спасибо!
|
|
24.02.2014, 11:56
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Канвас не "выводит" текст, на нем печатают шрифтами, то есть переводят их в пикселы не на экране, а на картинке которая уже затем идет на экран. Никакого композинга в канвасе нет и даже сглаживания нет. Я полагаю вы печатаете на канвасе не сами, а через какую-то либу, которая возможно пытается там что-то компоновать. Так вот есть такое понятие в шрифтовой науке - хинтинг. Это привязка контура символа к пиксельной сетке. Значение которого повышается пропорционально уменьшению кегля шрифта (высоты).
Если штрих занимает 1 пиксель то сдвигом контура на 0.5 пикселя можно получить из болд - нормал, а из нормал - х нанэ. "Удачно" сдвинув по двум координатам можно добиться почти полного растворения символа в квантованном просранстве пикселей.
В общем это либо либа так рендерит, либо увеличивайте кегль.
Кстати, я как-то пытался оптимизировать веб-шрифты. Скажем мне нужны только два набора - кириллица и латинница. Скачал, открыл, выкосил лишнее, сгенерил - ок. Сконвертил в веб он-лайн - получил полное гавно. Все хинты слетели к чертям.
|
|
24.02.2014, 12:41
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от kostyanet
|
Сконвертил в веб он-лайн - получил полное гавно. Все хинты слетели к чертям.
|
Если ты про шрифтобелку, то там ведь есть куча галочек настроечных.
Сообщение от kostyanet
|
В общем это либо либа так рендерит
|
Вообще-то все это работает без всяких либ. Достаточно загрузить шрифт через @font-face. Вот только я хз как определить момент, когда шрифт загрузился.
Fairy-Wilbury, сделайте скриншот с проблемой что-ли.
__________________
В личку только с интересными предложениями
|
|
24.02.2014, 20:04
|
|
Интересующийся
|
|
Регистрация: 01.09.2013
Сообщений: 12
|
|
kostyanet,
Я использую ocanvas библиотеку для удобства работы с canvas. Но ведь проблема только в определенных браузерах... Не во всех.
danik.js,
Вот скриншот в Firefox:
|
|
24.02.2014, 21:18
|
|
Интересующийся
|
|
Регистрация: 01.09.2013
Сообщений: 12
|
|
Проверенно - на чистом js без оCanvas - то же самое. Проблема почему-то с заглавной S в первую очередь, но и некоторые другие буквы выглядят более блеклыми.
|
|
26.02.2014, 00:50
|
|
Интересующийся
|
|
Регистрация: 01.09.2013
Сообщений: 12
|
|
Неужели никто не сталкивался ни с чем подобным?..
В интернете тоже нет нигде ответа, ни на stack overflow, ни просто в поиске не удалось найти... = (
|
|
26.02.2014, 01:35
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
Canvas со шрифтами говняно работает, да ещё и по-разному от браузера к браузеру, смиритесь.
Попробуйте применить к canvas css:
image-rendering: optimizeSpeed;
image-rendering: -moz-crisp-edges;
image-rendering: -webkit-optimize-contrast;
image-rendering: optimize-contrast;
-ms-interpolation-mode: nearest-neighbor;
Это совсем не то что нужно, но вдруг поможет.)
Ещё видел вариант: отрисовать текст крупным кеглем(2х, 3х итд), а затем искусственно уменьшить размер canvas...
http://johnvalentine.co.uk/subpixel-html5-canvas.htm
__________________
29375, 35
Последний раз редактировалось Aetae, 26.02.2014 в 01:44.
|
|
26.02.2014, 02:12
|
|
Интересующийся
|
|
Регистрация: 01.09.2013
Сообщений: 12
|
|
Да как-то не вариант - смиряться...
Но нет, css не помогает = ((
Уменьшать пробовала уже - тоже не помогает. = (
|
|
26.02.2014, 02:37
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
А текст точно обычным html поверх наложить никак?)
__________________
29375, 35
|
|
26.02.2014, 03:50
|
|
Интересующийся
|
|
Регистрация: 01.09.2013
Сообщений: 12
|
|
Aetae,
Нет = ( В результате все должно быть на канвасе - это он-лайн конструктор...
Остальные шрифты при этом в порядке, вот именно конкретный он никак не хочет нормально отображать.
|
|
|
|