Commit 5e068391 authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Поправил измерения для максимальной ширины символа для документа (emSize)

Поправил измерения для текста (ранее мерили всегда с ppi 72, теперь с реальными размерами)

ToDo Мерить нужно только со 100% и один раз для всего документа
ToDo Мерить только с 96 ppi

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@47310 954022d7-b5bf-4e40-9824-e11837661b57
parent 462e7783
......@@ -837,7 +837,7 @@ DrawingContext.prototype = {
getFontMetrics: function (units) {
var fm = this.fmgrMeasure,
d = Math.abs(fm.m_lDescender),
r = getCvtRatio(1/*pt*/, units >= 0 && units <=3 ? units : this.units, 72),
r = getCvtRatio(0/*px*/, units >= 0 && units <=3 ? units : this.units, this.ppiX),
factor = this.getFontSize() * r / fm.m_lUnits_Per_Em;
return new FontMetrics(
factor * fm.m_lAscender,
......@@ -881,7 +881,7 @@ DrawingContext.prototype = {
g_font_loader, this.fmgrGraphics[0], font.FontSize, fontStyle, this.ppiX, this.ppiY);
r2 = g_font_infos[ font.FontFamily.Index ].LoadFont(
g_font_loader, this.fmgrMeasure, font.FontSize, fontStyle, 72, 72);
g_font_loader, this.fmgrMeasure, font.FontSize, fontStyle, this.ppiX, this.ppiY);
}
if (r1 === false || r2 === false) {
......@@ -909,7 +909,7 @@ DrawingContext.prototype = {
*/
measureText: function (text, units) {
var fm = this.fmgrMeasure,
r = getCvtRatio(1/*pt*/, units >= 0 && units <=3 ? units : this.units, 72);
r = getCvtRatio(0/*px*/, units >= 0 && units <=3 ? units : this.units, this.ppiX);
for (var tmp, w = 0, w2 = 0, i = 0; i < text.length; ++i) {
tmp = fm.MeasureChar( text.charCodeAt(i) );
w += tmp.fAdvanceX;
......
......@@ -621,7 +621,6 @@
if (factor === this.getZoom())
return this;
this.cleanSelection();
this._calcEmSize();
this.buffers.main.changeZoom(factor);
this.buffers.overlay.changeZoom(factor);
this._initCellsArea(true);
......@@ -1104,12 +1103,25 @@
}
},
_calcEmSize: function () {
// ToDo Мерить нужно только со 100% и один раз для всего документа
// set default worksheet header font for calculations
var c = this.settings.cells;
this._setFont(/*drawingCtx*/ undefined, c.fontName, c.fontSize);
// Измеряем в pt
this.stringRender.measureString(
"0123456789", {wrapText: false, shrinkToFit: false, isMerged: false, textAlign: khaLeft});
this.emSize = this.stringRender.getWidestCharWidth();
var ppiX = this._getPPIX(); // ToDo Мерить только с 96
var ptConvToPx = asc_getcvt(1/*pt*/, 0/*px*/, ppiX);
var pxConvToPt = asc_getcvt(0/*px*/, 1/*pt*/, ppiX);
// Максимальная ширина в Pt
var maxWidthInPt = this.stringRender.getWidestCharWidth();
// Переводим в px и приводим к целому (int), а затем переводим обратно в pt
this.emSize = asc_round(maxWidthInPt * ptConvToPx) * pxConvToPt;
// Проверка для Calibri 11 должно быть asc_round(maxWidthInPt * ptConvToPx) = 7
if (!this.emSize) {throw "Error: can't measure text string";}
},
_prepareComments: function () {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment