|
|
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
Прикрепляю картинку по которой ясно о каком размере речь. Класс FontMetrics не располагает такой информацией, или я нее смог найти. Можно ли считать верхний "кусочек" равным (asend-xheigth) примерно равным descend для широко распространенных шрифтов? Мне надо сгенерить хитрую картинку, где много чего подписано. Для этого сначала я решил воспользоваться форматом SVG, но очень быстро выяснилось, что со шрифтами у него не очень. В часности, либа batik не поддерживает возможность на этапе конструирования картинки узнать размер текстовой надписи. Ей подавай для такого рендерер. И еще сам батик не поддерживает аттрибуты dominant-baseline и alignment-baseline и font-size-adjust (сверял с документаций, да, не реализовано). Вобщем, вроде неплохая либа, но недоработано. Тогда я решил отнаследоваться от JComponent и вроде бы пока даже значительно проще получается. Но не фигню ли я делаю? Может есть еще какая нибудь продвинутая либа, на которую стоит посмотреть? Навскидку гугл ничего не предложил, но может я плохо гуглил? Если не найду как получить этот размер - задаем его жестко, руками. У JComponent тоже со шрифтами какая-то ерунда. По идеологии JComponent должен сам знать какого он размера, и это прекрасно работает, но как только добавляется шрифт, начинаются странности. Например, размер шрифта можно узнать только из paint и ниже по трассе вызовов, там где есть Graphics, а не зная размера не выставишь правильно width/height, а когда размер не выставлен правильно, то paint может вообще не вызваться, а не вызвав его мы не получим Graphics значит не посчитаем размер. Замкнутый круг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2013, 18:28:48 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
c JavaFX тоже, кстати, засада. Проект еще очень сырой: javafx.scene.text.Text t = new javafx.scene.text.Text(10,15, "asdasd"); System.out.println("w="+t.getWrappingWidth() ); выводит w=0.0 То есть картинку можно создать и показать, но сгенерить ее "просто так" нельзя. При этом высоту текста вообще не получить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2013, 01:37:50 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
Тема не простая. По поводу высоты, единственный вариант который приходит в голову это какой-нибудь парсер TTF. По поводу отображения, то, конечно нельзя узнать размер шрифта в пикселах не имея графического контекста. Потому что везде используются разные DPI. По этой причине рендеринг шрифтов в винде, в яве, на маке - везде разный и размеры одного и того же текста будут разными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2013, 02:19:05 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
Достать из FontMetrics xheight не получится, хотя можно попробовать поработать с FontRendererContext, может оттуда чего сможете вытащить. Насколько я знаю, для большинства шрифтов справедливо: Высота средней линии относительно базовой равна xheight. В свою очередь среднюю линию можно найти разделив на два расстояние от базовой линии до cap height. В качестве cap height можно использовать высоту из FontMetrics.getHeight() chabapok Можно ли считать верхний "кусочек" равным (asend-xheigth) примерно равным descend для широко распространенных шрифтов? Не думаю. В разных шрифтах эти величины имеют разные пропорции. Особенно это касается всяких иероглифов, где часто асцендер находится на одном уровне со средней линией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2013, 12:59:40 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
chabapok, интересно существует-ли вообще такой параметр как x-height применительно ко всему шрифту или он задаётся персонально для каждой буквы или для всего фонта для файла или ещё для бог знает какого домена данных. Под катом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2013, 13:14:27 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
Разные dpi? а шрифт исходно задан в дюймах или в точках? Я так понимаю, если в дюймах, то без контекста узнать размер шрифта в точках нельзя, а если изначально шрифт задан в точках - можно. Ну да, похоже что в em-ах он задан. Луч поноса тем кто это придумал. Всем спасибо. Вобью эти высоты жестко руками, для тех шрифтов что использую, и не буду парить мозг. а еще, без контекста вот так получается метрику получить: FontMetrics fm = sun.font.FontDesignMetrics.getMetrics(font); А вот можно ли из jdk закинуть FontDesignMetrics и зависимые классы в свой проект, чтоб точно в будущем не иметь проблем с приватным api - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2013, 17:43:54 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
maytonchabapok, интересно существует-ли вообще такой параметр как x-height применительно ко всему шрифту или он задаётся персонально для каждой буквыTeX задаёт em и ex как обязательные параметры шрифта . Что вполне логично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 17:32:09 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovmaytonchabapok, интересно существует-ли вообще такой параметр как x-height применительно ко всему шрифту или он задаётся персонально для каждой буквыTeX задаёт em и ex как обязательные параметры шрифта . Что вполне логично. А Tex работает с TrueType или у него свой набор шрифтов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 17:34:52 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
Свой формат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 17:36:58 |
|
||
|
как получить параметр шрифта x-height?
|
|||
|---|---|---|---|
|
#18+
maytonА Tex работает с TrueType или у него свой набор шрифтов?TeX вообще не работает со шрифтами. Только с их метриками. Соответственно, если есть конвертор метрик из TT в TeXовские ... Только вряд ли - TeX-у требуется минимум шесть параметров для "обычных" шрифтов и минимум двенадцать - для "математических". Плюс доп.параметры для "больших математических операторов", плюс "последовательности" для, опять-таки, математических символов разных размеров плюс нерасширяемость на юникод и прочая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 17:42:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38467585&tid=2128178]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 508ms |

| 0 / 0 |
