Здравствуйте, HotDog, Вы писали:
HD>Вообще пипец конечно, на дворе 2016 год, майкрософт со своим фонтом, на своей ОС, со своим самым последним, современным фреймворком не в состоянии отрендерить букву без ошибок.
Да. Скорее всего единственным подходящим и относительно простым вариантом будет ориентироваться на геометрию текста. К сожалению, это не сделать автоматом в XAML и достаточно медленно, если текста будет много.
Можно спуститься на уровень GlyphRun и GlyphTypeface, там больше возможностей, и есть такие штуки как AdvanceWidths и Left/RightSideBearings.
P.S. Отправил тебе кое-чего через личку, но пришло уведомление, что письмо не доставлено. Если не трудно, стукни в email из моего профиля — вопрос есть.
Здравствуйте, Qulac, Вы писали:
Q>Видно дизайн у шрифта такой, отрезать выпирающие можно так: ClipToBounds="True"
В том то и дело, что мне нужно не отрезать, а показать весь текст без "обрезания".
Вообще пипец конечно, на дворе 2016 год, майкрософт со своим фонтом, на своей ОС, со своим самым последним, современным фреймворком не в состоянии отрендерить букву без ошибок.
Здравствуйте, Sinatr, Вы писали:
S>Если честно, то я проблем не вижу вообще. Добавьте Margin для TextBlock (c запасом).
Пример с TextBlock это самый простой пример продемонстрировать проблему.
На самом деле есть RichTextBox, куда пользователь может вбить любой шрифт с любым размером.
И просто вот так добавить Margin с запасом не получится
S>А чтобы точно "вписать" текст (если вы какой-то редактор делаете очень точный) см. это и вот это.
Задача стоит обратная. Мне нужно гарантированно показать весь текст без его деформации.
Здравствуйте, Don Reba, Вы писали:
DR>Всё просто же: нарисовать текст в невидимый буфер, по пикселям найти границы, вывести.
Ага, именно так я и делал на GDI+, но это ж костыль!
Если бы под MacOC не было нормального способа вывести весь текст, то Стив Джобс к стенке наверное поставил
Скопирую сюда из другого ответа
"Пример с TextBlock это самый простой пример продемонстрировать проблему.
На самом деле есть RichTextBox, куда пользователь может вбить любой шрифт с любым размером.
И просто вот так добавить Margin с запасом не получится"
Что толку с блога который уже 6 лет как мертв?
V>Ужос.
Конечно ужос. Или желаение вывести текст без ошибок это что то нереально оторванное от жизни?
Здравствуйте, HotDog, Вы писали:
HD>Ага, именно так я и делал на GDI+, но это ж костыль! HD>Если бы под MacOC не было нормального способа вывести весь текст, то Стив Джобс к стенке наверное поставил
А как это делается на МакОС? Попиксельные границы же не узнать, пока не интерполируешь кубические кривые с нужным разрешением и с учётом хинтинга и сглаживания.
Здравствуйте, HotDog, Вы писали:
HD>Что толку с блога который уже 6 лет как мертв?
Толк в актуальности информации, которая там представлена, а не в свежести постов.
V>>Ужос. HD>Конечно ужос. Или желаение вывести текст без ошибок это что то нереально оторванное от жизни?
Здравствуйте, Don Reba, Вы писали:
DR>А как это делается на МакОС? Попиксельные границы же не узнать, пока не интерполируешь кубические кривые с нужным разрешением и с учётом хинтинга и сглаживания.
MS же вычисляет попиксельные границы для regular шрифта, но на жирном и курсивном фонте лажает.
Есть идеи как посчитать left/right side bearings для richtextbox в котором богато форматированный текст? С таблицами, с изображениями, текст разных размеров шрифтов и стилей?
Здравствуйте, HotDog, Вы писали:
HD>Есть идеи как посчитать left/right side bearings для richtextbox в котором богато форматированный текст? С таблицами, с изображениями, текст разных размеров шрифтов и стилей?
В такой задаче действительно лучше пойти по пути достаточных Margin, чем делать auto-size. Мало того, что трудно нормальный layout обсчитать, так и сама эта операция — дорогая, медленная. Мы даже кеш глифов заводили для подобных штук, хотя у нас не Rich, а просто много текста в разных местах сцена. Заложи по-приличнее или, скажем, вычисляй Margin относительно размера шрифта.