Поскольку автоподбор не работает в API, я работаю над разработкой специальной функции для расчета размера шрифта, подходящего для текста в текстовом поле. Однако результаты противоречивы, и я пока не нашел эффективного решения.
Вот функция, над которой я работаю:
function calculateTextFit($boxWidth, $boxHeight, $text, $fontSizeStartPT, $ScaleX, $ScaleY)
{
// (AgendaSlide, TitleSlide 1.2)
$fontAdjustmentFactor = $fontSizeStartPT > 26 ? 1.2 : 1.1;
$minFontSize = $this->ptToPixels(8) * $ScaleY;
$maxFontSize = $this->ptToPixels($fontSizeStartPT) * $ScaleY;
$lineSpacing = $this->ptToPixels(1.4) * $ScaleY;
$boxWidth = $this->emuToPixels($boxWidth) * $ScaleX; // Масштабування по X
$boxHeight = $this->emuToPixels($boxHeight) * $ScaleY; // Масштабування по Y
$areaSize = $boxWidth * $boxHeight;
preg_match_all('/(\n|\r|\n\n)/', $text, $matches);
$totalLineBreaks = count($matches[0]);
// is this an Asian language (Chinese, Korean, Japanese)?
$hasAsianCharacters = preg_match('/[\x{4E00}-\x{9FFF}\x{3040}-\x{30FF}\x{AC00}-\x{D7AF}\x{31F0}-\x{31FF}]/u', $text);
$textLen = mb_strlen($text);
for ($fontSize = $maxFontSize; $fontSize >= $minFontSize; $fontSize--) {
$fontWidth = $hasAsianCharacters ? $fontSize : $fontSize * $fontAdjustmentFactor ;
$textSize = $textLen * $fontWidth * $fontSize * $lineSpacing;
$textSize = $textSize + ($totalLineBreaks * $lineSpacing * $boxWidth);
if ($textSize pixelsToPt($fontSize);
return $newFontSize < 5 ? 5 : $newFontSize;
}
}
return $this->pixelsToPt($minFontSize);
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -a-textbox
API Google Slides: как поместить текст в текстовое поле ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как добавить слайды из другой презентации с помощью API Google Slides в PHP?
Anonymous » » в форуме Php - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Функция слайд-шоу Google Slides не работает в iframe, отображается белым цветом
Anonymous » » в форуме Php - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-