powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Реально ли в java подсчитать длину строки в пикселях из русских букв?
25 сообщений из 39, страница 1 из 2
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39262576
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я создаю excel файл с помощью библиотеки org.apache.poi и мне надо вместить в 3 строки длинный текст.
Но в зависимости от символов, одинаковые по кол-ву символов строки будут реально разной длинный в пикселях.
Можно ли это как-то высчитать в зависимости от стиля шрифта и высоты букв?
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39262620
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01,
если это будет моноширный шрифт.
иначе не реально
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39262692
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01,

Можно спросить "с какой целью интересуетесь"? Что вы будете делать с этим, когда узнаете ширину текста?
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39262696
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick,

Наверное ширину столбца хочет сам подобрать, но кто ж ТС знает. :)
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39262697
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01Можно ли это как-то высчитать в зависимости от стиля шрифта и высоты букв?
В Java AWT есть API для вычисления ширины текста в определенном шрифте, но фактическая ширина будет отличаться потому что Windows рендерит шрифты иначе, да ещё и куча факторов влияют на фактический размер. Сейчас с популярностью высоких разрешений масштабирование всё более актуально.

Так что лучше не заморачиваться и решить проблему другими средствами. Правильным стилем или VB скриптом.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39262718
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

Вот я и спрашиваю... а то ведь есть же autoSizeColumn(int column) . Может у него какие-то другие планы на это счёт.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39262802
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПаша01Можно ли это как-то высчитать в зависимости от стиля шрифта и высоты букв?
В Java AWT есть API для вычисления ширины текста в определенном шрифте, но фактическая ширина будет отличаться потому что Windows рендерит шрифты иначе, да ещё и куча факторов влияют на фактический размер. Сейчас с популярностью высоких разрешений масштабирование всё более актуально.

Так что лучше не заморачиваться и решить проблему другими средствами. Правильным стилем или VB скриптом.

по моему, +15 процентов к длине в AWT - нормальное приближение, которое часто будет хорошим.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39262974
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что я разбиваю текст по количеству символов, например, по 53 символа максимум в каждой строке. Ширина колонки фиксированная. Проблемы будут, если в тескте будет много букв верхнего регистра. Тогда строка вылезет.
Пока что лучшее решение для себя, что я смог придумал, это искать в тексте заглавные буквы и считать их как 1,5 от буквы нижнего регистра. К примеру, тогда я буду считать строки "ЖЖ" и "пти" равными по длине в пискелях. Тогда текст будет более равномерно разделяться. Кончено, тут тоже есть недочеты, но лучше пока не придумал.
Ещё хороше идеей было бы сделать из, к примеру, 3 строк в excel-документе смердженную ячейку. Но мне надо каждую строку подчеркивать жирной одинарной линией. Но если я так делаю с помощью библиотеки Apache POI, то толщина линии внутри смерженной ячейки слишком тонкая получается. Короче вот так (

...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263092
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01,

Ну, посчитал, а дальше что? Что если длина больше требуемой?
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263096
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickПаша01,

Ну, посчитал, а дальше что? Что если длина больше требуемой?

Тогда у меня выбора не остается и я создам смерженную ячейку. Но это крайний вариант для очень длинного текста.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263225
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01,
не трать на это времЯ. этот вопрос поднимается регулярно на этом форуме в различных ветках и всегда заканчивается одинаково -
ТС убеждается в невозможности реализовать задуманное.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263378
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяне трать на это времЯ. этот вопрос поднимается регулярно на этом форуме в различных ветках и всегда заканчивается одинаково -

Не правда. Уже несколько лет подобных вопросов не было.

вадяТС убеждается в невозможности реализовать задуманное.
Ну, почему же.
Всегда есть FontMetrics в качестве костыля.
Можно ему даже попробовать графический контекст из POI скормить.


Ну, и, если затачиваться на Excel, всегда можно попробовать WinAPI+JNA.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263396
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01Тогда у меня выбора не остается и я создам смерженную ячейку. Но это крайний вариант для очень длинного текста.
Это какой-то бланк, формуляр? Тогда ж всё оформление поломается. Но если есть возможность добавить смерженную ячейку, то почему бы просто не увеличить ширину имеющейся.

И, к стати, на счёт длины строки в хелпе POI написано как примерно посчитать setColumnWidth , но для каждого шрифта и размера букв свой коэффициент.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263399
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickИ, к стати, на счёт длины строки в хелпе POI написано как примерно посчитать setColumnWidth , но для каждого шрифта и размера букв свой коэффициент.
Сейчас сам на это посмотрел - оно ещё размера пикселей и DPI зависит. В связи с распространением мониторов высокого разрешения, и если ещё взять во внимание возможность применения пользовательской настройки DPI, то задача вообще не разрешима.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263438
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос был совершенно нелепый. А именно: как сделать то, что не надо делать? Правильный ответ очевиден: не надо этого делать.
Поэтому вопрос и был нелепым. Ещё автор и русский язык не знает. Это ж надо такое "слово" извергнуть из недр организма: "смерженный". Поясняю: программирование - это умственный труд, а кто умеет работать головой, тот умеет выражать свои мысли, не придумывая нелепые слова.
В общем. Как заполняют таблицу, если в колонке может быть длинный текст? Очевидно, задают форматирование ячеек с перетеканием текста на другие строки. Зная этот факт, можно догадаться посмотреть в документации по POI - нельзя ли это сделать в POI? Чудо свершилось: там нужные функции форматирования присутствуют. Другой способ - создать в Excel вручную шаблон таблицы с нужным форматированием ячеек, затем заполнять его в программе с помощью POI.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263520
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, "не все так очевидно" ( C ) дочь офицера

Часто, это действительно очень сильно хочется и требуется заказчиком.

Но проблема в том, что вся точная информация о шрифте доступна только в момент рендеринга на конкретное устройство. Поэтому:
1) обходиться только возможностями форматирования конкретного формата и посылать заказчика с его хотелками (вменяемые заказчики обычно с таким подходом согласны и готовы умерить свои требования).
2) Давать возможность пользователю ручного до-форматирования документа перед печатью (Excel для это замечательно подходит). Есть как свои плюсы, так и минусы.
3) Продолжать мучатся с подсчетом ширины символов, но отдавая себе отчет, что подсчет в большинстве случае все равно может быть только крайне приблизительный. Кроме того, что лично меня пугает, не известно, в каком кол-ве случаев мы результирующий документ "улучшим", а в каком, сделаем систему полностью не работоспособной. Всегда есть риск наткнутся на какую-то не типовую/не документированную конфигурацию, когда наш код просто свалится или будет работать совершенно не корректно /достаточно на интерфейс MS Windows посмотреть, когда при некоторых настройках масштабирования интерфейс становится совершенно не читаемым/.

IMHO
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263546
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНо проблема в том, что вся точная информация о шрифте доступна только в момент рендеринга на конкретное устройство. Поэтому:
1) обходиться только возможностями форматирования конкретного формата и посылать заказчика с его хотелками (вменяемые заказчики обычно с таким подходом согласны и готовы умерить свои требования).
2) Давать возможность пользователю ручного до-форматирования документа перед печатью (Excel для это замечательно подходит). Есть как свои плюсы, так и минусы.
3) Продолжать мучатся с подсчетом ширины символов, но отдавая себе отчет, что подсчет в большинстве случае все равно может быть только крайне приблизительный. Кроме того, что лично меня пугает, не известно, в каком кол-ве случаев мы результирующий документ "улучшим", а в каком, сделаем систему полностью не работоспособной. Всегда есть риск наткнутся на какую-то не типовую/не документированную конфигурацию, когда наш код просто свалится или будет работать совершенно не корректно /достаточно на интерфейс MS Windows посмотреть, когда при некоторых настройках масштабирования интерфейс становится совершенно не читаемым/.


Всё верно расписал. В HTML есть такая единица измерения как em, которая привязана к размеру шрифта. По идее, при масштабировании шрифтов она тоже должна расти.
В Excel как-то не всё так просто. Там тоже можно задать ширину в единицах шрифта, но некого "стандартного".
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263664
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВсё верно расписал. В HTML есть такая единица измерения как em, которая привязана к размеру шрифта.
Остается вопрос, насколько корректно привязано.

BlazkowiczВ Excel как-то не всё так просто
Вообще-то, уже много десятков лет, существует ТИПОГРАФСКАЯ единица измерения point. От которой считаются и размеры в документе и, удивительно ))), размеры шрифтов.

Т.ч. в point'ах, теоретически ))), проблем быть не должно. Но вот дальше, проблема корректной реализации и конкретной подстановки шрифтов. Никто не гарантирует, что Times New Roman на экране и на принтере будет один и тот же. Точнее, ранее гарантировалось прямо обратное, что они для _нормальной_/'профессиональной техники должны быть разные )))

IMHO

note: http://www.transcriber.ru/etudesrus/intro_units.htm
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39263915
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тысяча чертей, во что я вляпался
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39264496
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01Тысяча чертей, во что я вляпался

Ну есть же JasperReports. Он и в Excel может при желании.
И даже выглядеть будет почти так же как нарисовали в JasperStudio. :-)
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39264499
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть видео от одного бордатого господина который называет себя "Володя из почти университета".
Вобщем он пояснял интересный эффект когда расчитывается длина строки в пикселах для смешанно арабо-европейских
шрифтов то можно получить vulnerablility класса бесконечных циклов и рекурсий.

И вобщем сама по себе постановка для измерения длины получается весьма условной.

Это так. Для продолжения дискурса.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39264530
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton.....можно получить vulnerablility класса бесконечных циклов и рекурсий.....
не знаю, что такое vulnerablility, но бесконечный цикл получить можно "как два пальца обосновать" ( C )

maytonИ вобщем сама по себе постановка для измерения длины получается весьма условной.

Да нет там никакой условности.

Если шрифт и устройство рендеринга совпадает - задача решается точно
Если формат файла предназначен для обмена "картинкой" или типографский (pdf,bmp,jpg и т.д.) - задача решается точно
Но поскольку Excel текстовый файл и не очень понятно, насколько шрифты (и устройство рендеринга, ОС) в момент генерации и в момент просмотра будет совпадать - задача решается лишь приближенно, на конечном устройстве вывода ручное форматирование (например пагинация) может "уехать"

В свое время верстали > 500 страниц справочника в MS Word'е (), коллеги-издатели-дизайнеры-верстальщики глядя на нас крутили пальцем у виска ))), т.к. в Word'е ряд типографских задач нормально не решается (пагинация), Word делает автоматически (и может "уезжать") в нормальных полиграфических продуктах (Adobe PageMaker) делалось полуавтомат/вручную и прибивалось "гвоздями". Но мы люди ленивые, нам верстать было влом, мы макрос на это дело написали, а "бюджет" на верстальщиков пополам с дизайнером поделили )))


Памятники истории и культуры Санкт-Петербурга, состоящие под государственной охраной : Справочник / В.И. Андреева, Н.Н. Веснина, С.Б. Горбатенко, Б.М. Кириков ; ][Отв. ред. Кириков Б.М.]. - Санкт-Петербург : Альтсофт, 2000. - 877 с. : ил. - Авт. указаны на об. тит. л. - ISBN 5-93099-008-5 : 450 р.
- Указ. имен., топогр.: с. 823-873
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39264549
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этот негодник. Прошу прощения видео смотрел с год назад и поэтому моя аннотация
по сабжу может быть не совсем точной. Если так - то сорри

YouTube Video
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39264622
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Спасибо за ролик. Есть идея попробовать записать excel файл с моим текстом и прочитав его, определить длину каждого слова. И исходя из этого я буду собирать строки. Надо попробовать.
...
Рейтинг: 0 / 0
Реально ли в java подсчитать длину строки в пикселях из русских букв?
    #39264639
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01Есть идея попробовать записать excel файл с моим текстом и прочитав его, определить длину каждого слова.
Это как?

Т.е. вместо "подсчитать длину строки в пикселях" задача заменяется на "подсчитать длину строки в байтах" ? ))))
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Реально ли в java подсчитать длину строки в пикселях из русских букв?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]