2015-09-21 6 views
3

Я пытаюсь создать достойный кросс-браузер механизм рендеринга текста холста. Но я заметил, что пары кернинга не отображаются должным образом в Chrome, но в Safari и Firefox они работают нормально.Canvas fillText() и пары кернинга в Chrome

Chrome:

Firefox:

enter image description here

Safari:

enter image description here

Попробуйте скрипку здесь: http://jsfiddle.net/o1n5014u/

Пример кода:

var c = document.getElementById("myCanvas"); 
var ctx = c.getContext("2d"); 
ctx.font = "40px Arial"; 
ctx.fillText("VAVA Te", 10, 50); 

Кто-нибудь есть обходной путь? Я искал отчеты об ошибках, но я не могу найти что-либо.

+0

BTW, это то же самое для SVG, но тогда у нас есть 'font-kerning: normal;', который решает его. Хотелось бы, чтобы у нас было то же самое для Canvas ... – David

ответ

2

От W3 CSS3 Fonts:

Чтобы явно включить на font-kerning вам необходимо установить font-kerning свойство normal,

canvas{ 
    font-kerning : normal; 
} 

Проверить это JSFiddle

На основании этой статьи на Cross-browser kerning pairs & ligatures, Или же вы могут использовать optimizeLegibility, как это,

canvas{ 
    text-rendering: optimizeLegibility; 
} 

Проверить это JSFiddle

Декларация в настоящее время поддерживается: Safari 5, Webkit Nightlies & Chrome.

Firefox уже использует optimizeLegibility по умолчанию для текстовых размеров выше 20px.

+1

Я понятия не имел, что вы можете добавить типографские стили CSS в элемент 'canvas'. Благодаря! – David

Смежные вопросы