- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
[code]
lengthMapping.put("pt", Float.valueOf(1f));
// Not sure about 1.3, determined by experiementation.
lengthMapping.put("px", Float.valueOf(1.3f));
lengthMapping.put("mm", Float.valueOf(2.83464f));
lengthMapping.put("cm", Float.valueOf(28.3464f));
lengthMapping.put("pc", Float.valueOf(12f));
lengthMapping.put("in", Float.valueOf(72f));
[/code]
MAPTbIwKA 08.10.2020 16:42 # 0
nemyx 08.10.2020 16:46 # 0
guest8 08.10.2020 16:50 # −999
bormand 08.10.2020 16:44 # 0
Т.е. за 2.83464 и 28.3464 ты уверен?
Напомнило код про invsqrt, где threeHalves было с именем, а какая-то жёсткая битмаска прям так захардкожена.
guest8 08.10.2020 16:49 # −999
oaoaoammm 08.10.2020 16:50 # 0
А 1.3 это просто какая-то питушня, наверное, это должно было быть 3.1, то есть число пи
Fike 08.10.2020 17:35 # 0
а сделано это для того, чтобы в случае чего их можно было менять независимо друг от друга
bormand 08.10.2020 16:47 # 0
На "обычных" мониках вроде как 96 ppi. Т.е. 1 поинт для таких мониторов это 96 / 72 = 1.3(3) пикселя. Что не сильно отличается от экскрементального значения.
guest8 08.10.2020 16:50 # −999
bormand 08.10.2020 16:51 # +1
4к-бляди должны страдать и носить очки.
guest8 08.10.2020 16:58 # −999
guest8 09.10.2020 03:33 # −999
guest8 09.10.2020 04:11 # −999
guest8 09.10.2020 04:11 # −999
MAPTbIwKA 09.10.2020 15:22 # 0
Скорее всего Swing это НЕ dpi aware, так что он всегда фигачит поинты из расчета 72 поинта на 96 пикселей, и уже винда потом скейлит пиксели
MAPTbIwKA 09.10.2020 18:55 # 0
И фонты и рисовалки происходят в условных единицах user units. Это такие device independent пикеслы.
Далее, к компоненту привязан AffineTransform , который может как-то эти пиксели поскейлить.
По умолчанию для экранов (не для принтеров!) он их не скейлит никак, потому что считается, что экран примерно 72 точки на дюйм или как-то так.
Так что 1 поинт шрифта есть один user unit есть один пиксел. Оттуда он попадает видимо в GDI или API X11.
На прыще и XP вообще пофиг на dpi в этом случае, а вот Vista+ уже этот пиксель может поскейлить, ибо скейлит всё.
Но можно так же заказать getNormalizingTransform(), которая
Returns a AffineTransform that can be concatenated with the default AffineTransform of a GraphicsConfiguration so that 72 units in user space equals 1 inch in device space.
То есть пытается честно сделать user unit равной 1/72 инча.
И на винде, и на прыщах они берут DPI, и делять его на 72, и получают scale, на который потом умножают.
То есть ты рисуешь линию длиной 72pt (инч), а винда или X11 (Xft не используется, джава сама всё рендерит) тебе сообщает, сколько тебе нужно пикселей чтобы получить реальный инч.
Но тот инч, опять таки, виртуальный, потому что DPI редко когда отражает настоящий размер экрана, но тут уж джава не виновата
gost 09.10.2020 18:56 # +1
bormand 09.10.2020 18:59 # +1
Попробуй нарисовать японский иероглиф в консоли чтобы колонки не распидорасило.
Именно поэтому я за "Аску".
gost 09.10.2020 19:01 # +1
Подтверждаю. Всё, что больше семи бит — не нужно.
guest8 09.10.2020 19:02 # −999
Desktop 09.10.2020 19:03 # 0
шрифты это пиздец
локализация это пиздец
даты это пиздец
и сверху это всё отполировано футом хуя французского короля!
guest8 09.10.2020 19:04 # −999
defecate-plusplus 09.10.2020 19:06 # −1
Sers 09.10.2020 19:08 # 0
bormand 09.10.2020 19:06 # 0
А чем рисуешь?
guest8 09.10.2020 19:13 # −999
defecate-plusplus 09.10.2020 19:15 # 0
guest8 09.10.2020 19:28 # −999
defecate-plusplus 09.10.2020 20:30 # 0
ну я тебе могу сказать, что последнее дерьмо, которое было про связку жабы и хтмл, это было flying saucer, от которого как раз нахер отказались
а так щревты (а нам нужны были красивые пуксель пёрфект) тогда лечились (барабанная дробь в бубен) заменой одного ждк на другой (это притом, что в жабе как раз свои щревты, не системные)
Fike 09.10.2020 21:29 # 0
nemyx 09.10.2020 09:00 # 0
Блядь, как всё сложно!
К слову, в англоязычных странах по стандарту пункт равен 1/72,27 дюйма. Пункт, равный 1/72 дюйма, придумали в «Адобе», вероятно, потому что поняли, что плавающий питух — априори говно. Т. е. адобовский пункт равен 72,27/72 = 1,00375 британского/американского пункта.
Был ещё пункт Дидо, который равен 1/72 французского дюйма (который равен 2,706 см), т. е. 2,706/2,54 ≈ 1,066 адобовского пункта или 1,07 британского/американского пункта. Но его вроде сейчас уже нигде не используют, хотя формально на него ссылаются стандарты.
MAPTbIwKA 09.10.2020 15:05 # +1
Так точно
The point is a typographic unit invented by Father Sébastien Truchet in 1699 to describe
the arithmetic progression of type sizes [276]. This unit, related to the Paris foot (pied
du roi, the actual length of the king’s foot), was redefined by Pierre-Simon Fournier
in 1664 and later by François-Ambroise Didot in 1783. Since the end of the nineteenth
century, the Anglo-Saxons have used the pica point [87]. The PostScript language sought
to simplify calculations by defining the point to be exactly 72 1 of an inch. Today we have
points of three different sizes: the pica point (approximately 0.351 mm), the Didot point2
(approximately 0.376 mm), and the PostScript point (approx. 0.353 mm)
Читаю вот эту книжечку сейчас: https://www.oreilly.com/library/view/fonts-encodings/9780596102425/
bormand 09.10.2020 15:08 # 0
Блин, ну ещё бы по длине королевского хуя измеряли... Кстати, а после каждой замены короля все расчёты приходилось переделывать?
CHayT 09.10.2020 15:15 # +1
Плохая идея. Из-за особенностей человеческой психологии с каждым новым королём длина фута бы росла, пока не достигла мили.
Desktop 09.10.2020 15:17 # 0
фут это хуй дофина
Fike 09.10.2020 21:30 # 0
Your dick got the HIV
My dick plays on the double feature screen
Your dick went straight to DVD
Desktop 09.10.2020 15:15 # −1
кстати, всяких футов было дохера и больше в разных странах и даже в пределах одной страны
MAPTbIwKA 09.10.2020 15:18 # 0
>pied du roi
Пидурой?
Desktop 09.10.2020 15:19 # 0
nemyx 09.10.2020 16:17 # +2
Спрашивают инженеры у Николая Первого:
–— Как в Европе чугунку будем класть или шире?
—– Нахуй шире?
Ну вот ровно на хуй шире и сделали.
Desktop 09.10.2020 16:20 # 0
- то есть за ширину колеи взяли пять царских хуёв
nemyx 09.10.2020 16:24 # 0
Steve_Brown 09.10.2020 13:43 # +1
Так вот из-за кого размер экранных шрифтов теперь задается не в пикселях, а в пунктах. И все разъезжается.
По хорошему, пункты в пиксели должна переводить программа с учетом физической плотности экрана и масштаба отображения. А для кнопок и менюшек это бессмысленно.
Но, видимо, тогда так было проще. Ну и, наверное, не было формата типа теперешней веб-страницы, где текст сочетается с пиксельными картинками.
MAPTbIwKA 09.10.2020 15:13 # +2
>По хорошему, пункты в пиксели должна переводить программа с учетом физической плотности экрана и масштаба отображения.
Это правда. Ну вот у Apple Macintosh экран был как раз такого размера, что 72 пикселя на нем были размером с дюймовочку.
А у MS 72 поинта превращались в 96 пикселей. Причем "дюйм" тоже стал виртуальным, и зависел от размера экрана и разрешения.
> А для кнопок и менюшек это бессмысленно.
Да.
Это привело к багру: если при увеличении DPI просто менять кол-во пикселей в поинте, то шрифт выедет за пределы кнопки: кнопка-то в пикселях, а не в поинтах.
В XP так всё и работало, потому менять DPI в XP лучше бы не.
Начиная с Vista появилось два способа реакции на смену DPI:
* Если приложение НЕ dpi-aware (не стоит ключик в заголовке) то винда тупо скейлит всё: и пиксели и поинты.
* Если приложение dpi-aware, то оно само должно разбираться.
bormand 09.10.2020 15:25 # 0
Выглядит позорно, к слову. Но всяко лучше, чем распидорашенные окошки во времена XP.
nemyx 09.10.2020 16:19 # 0
MAPTbIwKA 09.10.2020 16:25 # +2
XP бы не распидорашивало, если бы так могли бы указывать ширины кнопок в поинтах, но в GDI так было нельзя, а если бы и можно было, то иконки то всё равно в пикселях.
А вот в Direct2D (поверх которого работает WPF) появился Device Independent Pixel, который равен 1/96 "виртуального дюйма" (в котором 72 пункта), и он зависит от DPI.
Алсо, посмотрел, как это в прыщах.
В прыщах есть DPI у сервера. Он сам скейлит шрифты, если ты рендеришь их на сервере.
А если ты рендеришь их через Xft (как примерно все сейчас делают), то есть ресурс Xft.dpi.
Если его установить, то он будет использоваться. Если нет, то Xft откатится к DPI сервера.
Этот ресурс перезаписывает гном если ему поменять скейлинг экрана.
Проверил на слаке:
* forefox и chrome читают Xft, но скейлят И картинки и текст (как винда)
* gvim скейлит только текст и размеры кнопок (полагаю, так делают Qt и GTK все). Иконочки остаются страые, и выглядят как говно
* xfontsel, xcalc, xterm без -fa (то есть все, кто рендерит шрифты на сервере) зависят только от DPI сервера, и меняют только размеры шрифтов
Так что XP/GDI слегка соснули у GTK и QT (там кнопки скейлятся), но в целом прыщи соснули у Vista-style scaling: скелйить и картинки и шрифт умеют только хром и файрфокс, а напрмиер gvim не умеет.
А вообще это всё говнище адское. DPI не имеет никакого отношения к количеству точек на дюйм. Там и дюйм-то блядь виртуальный.
bormand 09.10.2020 16:32 # +1
Вот кстати да. Если на 13" монике с фуллхд въебать размеры в реальных дюймах, то там ничего не влезет. Т.е. высокая плотность не всегда означает, что мы хотим рисовать крупнее.
З.Ы. И для таких моников, скорее всего, репортится классическое 96?
guest8 09.10.2020 17:10 # −999
bormand 09.10.2020 17:27 # 0
З.Ы. EDID у встроенной панели нету, лол. Либо прыщи не знают, как его добыть.
gost 09.10.2020 17:29 # 0
Выглядит охуенно, кстати, пиксели еле-еле видны, только если сильно присмотреться.
bormand 09.10.2020 17:30 # +1
Ладно, раз уж хуями меримся - 5.1" 1440x2560.
З.Ы. Именно поэтому у андроида "плотность" (для картинок) и "размер" (для лейаутов) - ортогональные вещи. И надо уметь обрабатывать обе.
bormand 09.10.2020 17:08 # 0
Остальным приложухам достаточно ui scale (т.е. юзер сам выбирает как ему удобно) или класса плотности (обычное аля hdpi, ретина аля xdpi и т.п.).
guest8 09.10.2020 17:17 # −999
bormand 09.10.2020 17:20 # 0
guest8 09.10.2020 17:21 # −999
guest8 10.10.2020 01:38 # −999
nemyx 10.10.2020 02:16 # 0
guest8 10.10.2020 02:18 # −999
nemyx 10.10.2020 02:52 # 0
У цветного есть щелевая маска или апертурная решётка, а сам люминофор разбит на тройки разных цветов (R, G, B). Для цветного «родной» будет плотность пикселей, равная плотности троек люминофоров. На практике же за ней не гнались, потому что довольно сложно скорректировать развёртку, чтобы пиксели точно попали на эти тройки.
Я упомянул диаметр луча. Монитор EGA (родное 640×350) в режимах CGA (320×200) реально уменьшал частоту развёртки, а поскольку фокусировка была рассчитана на 350 строк, между строками были заметные чёрные полосы. В VGA учли этот недостаток, и режимы CGA стали эмулироваться: луч пробегал 400 строк, но каждую строку кадра CGA рисовал два раза.
На многих мониторах с рекомендуемым разрешением 1024×768 или 1280×1024 можно было включить режим 1600×1200, однако, поскольку фокусировка была рассчитана на меньшее разрешение, луч цеплял соседние зёрна, и границы пикселей смазывались.
bormand 10.10.2020 03:59 # 0
Sers 10.10.2020 10:26 # 0
Лучше прочитай, как взломать сапёр, удерживая shift.
rotoeb 08.10.2020 16:49 # −20
Обратите внимание: код выглядит гораздо элегантнее и компактнее, а также нет ебаной буквы "f" (не ёбаной, а именно ебáной).
guest8 08.10.2020 16:51 # −999
rotoeb 08.10.2020 16:52 # −20
Кстати, зачем нужна буква "f"? "Java" такая тупая, что не может догадаться о дробности числа по наличию точки?
oaoaoammm 08.10.2020 16:57 # −1
guest8 08.10.2020 17:00 # −999
rotoeb 08.10.2020 17:01 # −20
guest8 08.10.2020 17:05 # −999
rotoeb 08.10.2020 17:11 # −20
rotoeb 08.10.2020 17:14 # −20
guest8 08.10.2020 17:15 # −999
rotoeb 08.10.2020 17:18 # −20
Увы, есть - существуют функции "parseFloat" и "parseInt" (последнюю я всегда заменяю на "*1").
>>>"в перле нет ни на что разделений, лол"
Это чудесно, но в остальном "Perl" - помойное говно. Поэтому я всё ещё за "PHP".
Sers 08.10.2020 20:32 # −1
bootcamp_dropout 08.10.2020 16:56 # 0
rotoeb 08.10.2020 16:59 # −20
В меднолобой "Java" такое, поди, невозможно?
guest8 08.10.2020 17:03 # −999
Sers 10.10.2020 17:49 # 0
bormand 08.10.2020 17:02 # 0
Кто-нибудь в курсе, в каком формате правильно выводить цветные пиксели в окно - с линейным маппингом или как sRGB?
guest8 08.10.2020 17:05 # −999
bormand 08.10.2020 17:19 # −1
Моники же вроде бы sRGB пространстве работают, чтобы тёмные детали лучше передавались.
И если я например возьму цвета 0x808080 и 0xFFFFFF, то они нихуя не вдвое будут отличаються на глаз из-за этой нелинейности?
guest8 08.10.2020 18:12 # −999
guest8 08.10.2020 18:13 # −999
bormand 08.10.2020 18:20 # 0
Затем делать все расчёты в линейном пространстве, иначе все цвета распидорасит нахуй даже от банальной попытки сменить яркость.
А затем перед выводом преобразовать из линейного в sRGB (или что там юзер себе в ICC профиле понаставил), чтобы отменить все эффекты, которые произойдут в монике и показать именно то, что я задумал...
Как-то так?
guest8 08.10.2020 18:45 # −999
bormand 08.10.2020 19:03 # 0
MAPTbIwKA 08.10.2020 19:26 # +2
To compose to the screen or perform floating-point operations, you need to work in the correct color space. We recommend that you perform floating point operations in a linear color space. Then, to present your images to the screen, convert the data to standard RGB data (sRGB, gamma 2.2-corrected) color space.
https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/converting-data-color-space
Ну а sRGB уже винда сама в профайл переведет, наверное. Если он выбран, и присобачен к экрану. У большинства пользователей НЕ присобачен, если они не проф дизайнеры. Сидят на своем sRGB, и текут
bormand 08.10.2020 19:40 # +1
Видимо для таких моников должен быть вариант с выводом в 16 бит на канал или даже флоаты...
guest8 08.10.2020 20:11 # −999
bormand 08.10.2020 19:46 # +1
guest8 08.10.2020 20:13 # −999
Sers 08.10.2020 20:17 # −1
guest8 09.10.2020 01:28 # −999
bormand 09.10.2020 01:33 # +20
А вот у новых походу уже сразу заводская калибровка под sRGB норм, разницы не заметно.
guest8 09.10.2020 01:36 # −999
Desktop 09.10.2020 01:38 # 0
Sers 10.10.2020 17:51 # −2
Поделитесь.
Была идея запилить роутер, который бы фильтровал траффик, отпиздовывая на корню все запросы к неугодным ресурсам. Но я обжегся о сертификаты.
Потом я узнал, что такой функцианал есть в проге "AdVor", - но это прокси-сёрвер, там все запросы только через прокси.
rotoeb 10.10.2020 18:48 # 0
Sers 10.10.2020 18:57 # −2
rotoeb 10.10.2020 18:51 # +1
Fike 10.10.2020 19:21 # 0
Sers 10.10.2020 19:57 # −2
Mr_Durga 11.10.2020 00:32 # −1