Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Определить размер строки |
Автор: v2v 22.8.2008, 19:06 |
hello уважаемые. как бы мне решить вот такую вот задачку: есть строка состоящая из букв цифр и знаков препинания, есть название шрифта (Times..)и размер шрифта в пикселях (12). также известно общее число знаков в строке. как определить размер этой строки в пикселях? Помоему существует зависимость между высотой букв (размер шрифта ) и их длинной : 3/4 если не ошибаюсь(нужно ваше уотчнение). Но этого недостаточно.......если в слове появляются знаки препинания - значение размера подсчитаного через такую зависимость сильно не совпадает . Не хотелось бы городить город сложными алгоритмами посдсчёта отдельного размера каждого символа: как бы так попроще: хелп. |
Автор: Alexandr87 22.8.2008, 20:56 |
Есть реализации, типа Java`вской FontMetrics. Можешь ее глянуть, исходники вроде есть. |
Автор: aleksh 22.8.2008, 20:56 |
когда-то сталкивался с подобной задачей, в итоге пошел обходным путем (уже не помню каким, вспомню отпишу). проблема в том, что в киреллице есть такие буквы как "ю, ш, щ, ы" -- они очень сильно портят попытки подсчета, ибо шире остальных, да и вывод на экран (ведь для этого нужно длинну высчитать?) вносит свои коррективы, проще "зарезервировать место с запасом", иначе, как мне видется, городить город таки придется |
Автор: maxim1000 23.8.2008, 10:14 |
ну раз уж шрифт не моноширинный (если я правильно понял), то можно поскладывать ширину всех символом, возможно, добавив межбуквенное расстояние а вообще, лучше бы указать, на какой платформе такая задача возникла, какие библиотеки доступны - тогда перенесу в соответствующий раздел, и, возможно, там ответят быстрее |
Автор: Akina 23.8.2008, 21:20 | ||
|
Автор: DsKTY 24.8.2008, 17:34 |
Если нет нужды в 100% точности до пикселя, можно попробовать взять текст, по структуре подобный тому который используется в строке, подсчитать среднюю длину символа и потом просто умножать колл-во символов в строке на полученную среднюю ширину. |
Автор: ksili 24.8.2008, 18:39 |
DsKTY, чтобы понять чему подобен по структуре имеющийся текст, надо его весь по буквам просмотреть. Ну а если так, то что нам мешает при этом посчитать точную длину? Хотя может я вас не так понял? |
Автор: DsKTY 25.8.2008, 20:02 |
Ну вот к примеру текст из вашей подписи, разбитый на 2 части: "Ничто так не развивает аналитическое мышление, как" и "отладка сложной программы без возможности пошагового выполнения (с)". Первая часть содержит 50 символов и имеет длину 313 пикселей. Вторая часть содержит 67 символов и имеет длину 418 пикселей. Т.е. средняя ширина букв для первой части будет 6.28px, для правой - 6.23. Если принять за коэффициент 6.28, то длина второй части получится 420px, если наоборот, то длина первой части будет 311.5px. Т.е как уже писал выше, способ годится, если нет нужды вычислять длину с 100% точностью, и допустима небольшая разбежка. Под "подобной структурой" я понимал, что текст по которому высчитывается коэффициент, не должен содержать слишком много коротких или длинных символов. |