У меня есть строка текста, которую я недавно добавил в действие PDF, управляемое jspdf, в нашем приложении Ember. В Chrome, Firefox, Safari и др. Все выглядит хорошо, но в Edge интервал между символами неуместен - он очень широкий, что удлиняет линию и вызывает наложение текста (эта строка выравнивается по правому краю с большим количеством текста, выровненным по левому краю) , Вот соответствующий код:
doc.setFont('Helvetica').setTextColor(153, 153, 153).setFontSize(size);
doc.text(string, this.get('positioning').rightEdge, yPos, { 'align': 'right' });
(positioning
- это объект с кучей магических чисел для местоположений документа, а string
, yPos
и size
- целочисленные аргументы метода. doc
- это объект jsPDF, добавляемый, если это не очевидно.)
Вот как это выглядит в Chrome (то есть, что мы хотим видеть):
Вот результат Edge:
Я пытался выровнять текст по левому краю, и он все еще растянут. Изменение размера, похоже, тоже не помогает. Если я передам отрицательное значение для аргумента charSpacing
в вызов doc.text()
, я смогу смягчить проблему, но тогда это повредит другие браузеры; Мне нужно будет передать этот аргумент только для Эджа, который кажется действительно глупым.
Почему jspdf и / или Edge делают это, и что я могу с этим поделать?
ETA: Я обнаружил, что это происходит (для меня) только со строкой, построенной вокруг вызова Date.Prototype.toLocaleDateString()
, например:
`Draft - Printed on ${Date.now().toLocaleDateString('en-us', dateFormatOptions)} at ${Date.now().toLocaleTimeString('en-us', timeFormatOptions)}`;
Значит, у jspdf проблема с локализованными строками?