Я ищу высокоэффективный способ вычисления высоты div
фиксированной ширины, содержащей текст Unicode (нет HTML-тегов внутри, только текст!).
Мы попытались скопировать текст вскрытый абсолютно позиционированный элемент div
со скопированными стилями CSS и получением clientHeight
из него, но производительность этого решения не удовлетворяет нашим потребностям.Тот же подход реализован Ext.util.TextMetrics
.Для 5000+ div
элементов, использующих этот метод, требуется около 11-12 секунд, что много.
ПРИМЕЧАНИЕ Для нашей задачи нам нужно сделать это для каждого div
, хотя дажене все из них будут отображаться изначально.Это потому, что нам нужно заранее знать высоту каждого отдельного div
среди этих 5000+ элементов.
Мы попытались создать простой алгоритм переноса слов и вычислить высоту div
, определив количество строк изатем умножить его на высоту строки, и это сработало очень хорошо с точки зрения производительности.Для того же количества элементов div
в одной и той же конфигурации программного / аппаратного обеспечения это занимает 45 миллисекунд (более чем в 200 раз быстрее) - ширину символов предварительно рассчитывают заранее, используя медленный метод, упомянутый выше.На данный момент мы не приняли во внимание все особенности переноса слов и тот факт, что у нас есть текст Unicode.Мы думаем о том, чтобы сделать этот алгоритм кросс-браузерным и учесть эти особенности.Мы не уверены на 100%, что это возможно в кросс-браузерном режиме.
Итак, есть два вопроса:
- Есть ли другой способ очень быстро вычислить высоту текста вбраузер?
- В противном случае, какой алгоритм мы можем использовать для кросс-браузерной переноски слов (при условии, что нам необходимо поддерживать последние версии Chrome, Safari, Firefox и IE 9+)?Что насчет алгоритма переноса слов в Юникоде http://unicode.org/reports/tr14/?