|
|
От: |
Marty
|
https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg |
| Дата: | 07.12.22 19:52 | ||
| Оценка: | -1 | ||
S>Ну как бы PDF требует выводить текст не абы как, а WYSIWYG. И если вы показываете страничку в 50% зуме, то ожидается, что у неё границы слов будут там же, где и в 100%, а не как в TextOut, где ширина текста 24 кеглем не связана сколь-нибудь приемлемой формулой с шириной текста 12 кеглем.
S>Поэтому рассуждения о том, что можно рендерить PDF просто выплёвывая строчки в TextOut отдают, ммм, неполным профессионализмом.
// Выбираем из масштабной сетки (подсмотрел в гугл хроме)
std::array<unsigned, 14> scales = { 500, 250, 175, 150, 125, 110, 100, 90, 80, 75, 67, 50, 33, 25 };
textoutTestFontParams.height = 6; // 2.7
for(auto scale : scales)
{
auto tmpFontParams = textoutTestFontParams;
tmpFontParams.height = scale*textoutTestFontParams.height / 100;
std::string text;
umba::StringRefCharWriter writter = text;
umba::SimpleFormatter uss(&writter);
uss << textoutTestFontParams.fontFace << ": " << scale; // textoutTestFontParams.height;
int fontId = pDc->selectNewFont( tmpFontParams );
pDc->textOut( textoutTestPos, fontId, ColorRef{32,32,32}, text );
textoutTestPos.y += tmpFontParams.height;
}| Для 6ки | |
![]() | |
| Для 2.7 — выбирал, чтобы не особо было кратно 6ке | |
![]() | |
S>Ну как бы PDF требует выводить текст не абы как, а WYSIWYG. И если вы показываете страничку в 50% зуме, то ожидается, что у неё границы слов будут там же, где и в 100%, а не как в TextOut, где ширина текста 24 кеглем не связана сколь-нибудь приемлемой формулой с шириной текста 12 кеглем.
S>Поэтому рассуждения о том, что можно рендерить PDF просто выплёвывая строчки в TextOut отдают, ммм, неполным профессионализмом.
S>Двукратное изменение размеров — нетрудное упражнение. Всегда сложнее сделать 95% так, чтобы это было именно 95%.