LINUX.ORG.RU

Стили для Qt4


0

0

Попробовал стили для Qt4 - skulpture (справа на скриншоте) и bespin (слева в двух вариантах). Мне они понравились гораздо больше уже порядком приевшегося "пластика". Однако, как видно на шоте, у bespin'а проблемы со сглаживанием шрифтов. Так же у bespin'а есть свой конфигуратор + в комплекте идет пачка тем (r2d2, coruscant, bos_taurus и т.д.) для него самого, для emerald'а и бутсплеш. Естественно, оба стиля работают с KDE4.

В остальном ничего особенного - openbox + conky + netwmpager + dockapp'ы (не видно - спрятаны за левой границей экрана).

>>> Просмотр (1024x768, 169 Kb)

★★★

Проверено: Shaman007 ()

Ответ на: комментарий от anonymous

> Совершенно верно, а происходит это потому, что Qt3 читает (мы говорим о глобальных параметрах в /etc/fonts/conf.d) переменную "size", а Qt4 ищет значение в "pixelsize", а "size" отличается от "pixelsize" на минус 3px, и если оба эти параметра не указать явно, то Qt4 будет фактически вести отсчет (пример) не с 10px, как Qt3 - а с 7, и для Qt3 шрифт 8px еще не попадает под действие правил сглаживания или хинтинга, а для Qt4 эти правила уже вступят в силу, т.к. он считает этот-же шрифт равный 11px, хотя визуально они и выглядят одного размера - смотрите мой скриншот выше.

Это все очень интересно, я серьезно.

Но дело в том, что если бы вы сходили по ссылке, то увидели бы, что баг проявляется на системе, где в fonts.conf нет _никакого_ порога на включение хинтинга. Кроме того, посмотрите наконец внимательно на скриншот, на который я давал ссылку. По-вашему в каком-то из представленных случаев _отключен_ хинтинг, т.к. тулкит увидел порог? По-моему во всех случаях хинтинг включен. Но работает по-разному, видно это на букве "F".

Rikz ★★★
()
Ответ на: комментарий от Rikz

>Но дело в том, что если бы вы сходили по ссылке, то увидели бы, что баг проявляется на системе, где в fonts.conf нет _никакого_ порога на включение хинтинга.

В том-то и дело, что я всегда нарушаю местные правила и хожу по-ссылкам. Все верно - баг(но баг-ли это) потому и проялвяется, что порог не задан ЯВНО. Qt4 при такой дефолтной настройке увеличивает значение на три пикселя, и от него отталкивается, подлючая другие параметры subpixel. На вашем скриншоте это хорошо видно, и не только на букве "F", а и всех остальных тоже.  Вот мой файл (назовем его 01-main-rule.conf), и при таких насройках показанный вами баг не наблюдается. http://img262.imageshack.us/my.php?image=nohinting1lx0.png

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
        <match target="pattern">
                <edit mode="assign" name="hinting">
                        <bool>true</bool>
                </edit>
                <edit mode="assign" name="hintstyle">
			<const>hintmedium</const>
                </edit>
                <edit mode="assign" name="autohint">
                        <bool>true</bool>
                </edit>
                <edit mode="assign" name="antialias">
                        <bool>true</bool>
                </edit>
                <edit mode="assign" name="rgba">
                        <const>rgb</const>
                </edit>
        </match>
	<match target="pattern">
		<test compare="less_eq" name="size">
			<double>11</double>
		</test>
		<edit mode="assign" name="autohint">
			<bool>false</bool>
		</edit>
		<edit mode="assign" name="antialias">
			<bool>false</bool>
		</edit>
		<edit mode="assign" name="rgba">
			<const>none</const>
		</edit>
	</match>
	<match target="pattern">
		<test compare="less_eq" name="pixelsize">
			<double>14</double>
		</test>
		<edit mode="assign" name="autohint">
			<bool>false</bool>
		</edit>
		<edit mode="assign" name="antialias">
			<bool>false</bool>
		</edit>
		<edit mode="assign" name="rgba">
			<const>none</const>
		</edit>
	</match>
	<match target="pattern">
		<test qual="any" compare="less" name="size">
			<double>7</double>
		</test>
		<edit mode="assign_replace" name="size">
			<double>8</double>
		</edit>
	</match>
	<match target="pattern">
		<test qual="any" compare="less" name="pixelsize">
			<double>10</double>
		</test>
		<edit mode="assign_replace" name="pixelsize">
			<double>11</double>
		</edit>
	</match>
	<!--match target="pattern">
		<test qual="any" compare="not_eq" name="slant">
			<double>0</double>
		</test>
		<edit mode="assign_replace" name="slant">
			<double>0</double>
		</edit>
	</match-->
</fontconfig>

anonymous
()
Ответ на: комментарий от anonymous

Порог не задан явно => порога нет. Так считает Gtk и Qt3. Значит либо баг в них, либо в Qt4. Поскольку до появления Qt4 никто и не задумывался на этот счет, то думаю, что виноват именно Qt4.

Что вы хотите сказать, показывая скриншот, где шрифт в меню слишком мал, чтобы для него включился хинтинг, не очень понял. С тем же успехом я мог бы отключить хинтинг совсем, сделать скриншот Gtk, Qt3/4 и утверждать, что они ведут себя с настройками хинтинга одинаково.

Конфиг произвел впечатление, но во-первых мне вообще не хочется отключать хинтинг ни для каких размеров. Во-вторых по-моему задание ограничений и для pixelsize и для size очень похоже на костыль для тулкита, который не в состоянии вести себя так, как другие.

Rikz ★★★
()
Ответ на: комментарий от Rikz

>Что вы хотите сказать, показывая скриншот, где шрифт в меню слишком мал, чтобы для него включился хинтинг, не очень понял. С тем же успехом я мог бы отключить хинтинг совсем, сделать скриншот Gtk, Qt3/4 и утверждать, что они ведут себя с настройками хинтинга одинаково.

Я ожидал этот вопрос - но, во-первых - на моем скриншоте шрифт точно такого-же размера, как и на вашем :-), а во-вторых - я специально поместил на скрине в правой части оперу с выставленным 16 кеглем, чтобы было явно видно, что хинтинг и сглаживание включены.

>Конфиг произвел впечатление, но во-первых мне вообще не хочется отключать хинтинг ни для каких размеров.

Ваше право конечно, только я считаю, что это вы зря! Ну, какой скажите хинтинг может быть на дисплее ~100dpi у кегля меньше 16-18px (и то, с очень большой натяжкой)? Таким мизерным количеством точек - никакую гарнитуру передать не представляется возможным, хорошо, хоть буквы еще можно одну от другой отличить :-) Поэтому принцип заложенный в шрифте Tahoma является на мой взгляд самым верным в таких ситуациях.

>Во-вторых по-моему задание ограничений и для pixelsize и для size очень похоже на костыль для тулкита, который не в состоянии вести себя так, как другие.

Я вот это мне уже не ведомо - тут надо у разработчиков спросить: почему одни и те-же числовые параметры понимаются разными тулкитами по-разному, вероятно они в детстве любили очень советский мультфильм про обезьяну, удава, слона и попугая.

anonymous
()
Ответ на: комментарий от anonymous

> Я ожидал этот вопрос - но, во-первых - на моем скриншоте шрифт точно такого-же размера, как и на вашем :-),

Кхм. Какое имеет значение то, что размер шрифта на скриншоте одинаковый? У вас в меню нет хинтинга, совсем. Ни в одном из тулкитов. Из-за специальным образом установленного порога. А в том скриншоте, что показывал я, хинтинг есть во всех случаях. Но он отличается у Gtk+Qt3 и Qt4.

Второй вопрос можно не обсуждать, он к проблеме имеет мало отношения. Вы же знаете, кому-то нравится один шрифт, кому-то другой. Кому-то со сглаживанием, кому-то без. То же с хинтингом, его настройками и порогами включения.

> Я вот это мне уже не ведомо - тут надо у разработчиков спросить: почему одни и те-же числовые параметры понимаются разными тулкитами по-разному, вероятно они в детстве любили очень советский мультфильм про обезьяну, удава, слона и попугая.

Дело в том, что я все еще не убежден, что дело в порогах.

Rikz ★★★
()
Ответ на: комментарий от Rikz

>Порог не задан явно => порога нет. Так считает Gtk и Qt3. Значит либо баг в них, либо в Qt4. Поскольку до появления Qt4 никто и не задумывался на этот счет, то думаю, что виноват именно Qt4.

Нет, это не верно. Это было давно (насколько давно - не знаю). Сравните размеры шрифтов в Опере и КДЕ (которые на Qt3 написаны) То, что в КДЕ имеет размер 8, в Опере почему-то - 11! Metal кстати лезет туда-же, куда и Опера - ему на 3px надо больше указывать, чем KDE. Firefox, OpenOffice - так-же проявляют чудеса самодеятельности, fltk - сам-себе на уме, хорошо хоть, что остальной софт поддается еще влиянию иксовых конфигов.

anonymous
()
Ответ на: комментарий от anonymous

Если честно, мне уже поднадоело писать длинные сообщения, а короткими не отделаешься. Подведу итоги:

- Qt4 _при некоторых обстоятельствах_ отображает шрифты не так, как Gtk и Qt3 при тех же настройках.

- Баг проявляется у десятков людей (смотрим мою первую ссылку, там ответы на оригинальное письмо)

Про те программы, о которых вы сказали: у Opera серьезные проблемы с определением и настройкой DPI. Даже поставляемый вместе с браузером костыль "Force DPI" в настройках не помогает. Это не я придумал, это глас народа, услышать его можно, набрав в гугле "Opera DPI". Про Firefox почти ничего не знаю, то же самое с FLTK. Т.к. не использую ни то ни другое. OpenOffice в довольно большом количестве случаев собирается не с системной библиотекой freetype, а с той, что идет вместе с офисом. Отсюда тотальный игнор системных настроек шрифтов. Говорят, в версии от Infra-ресурс часть этих замечательных особенностей исправили, не знаю, на мой взгляд выглядит так же паршиво.

Rikz ★★★
()
Ответ на: комментарий от Rikz

>Дело в том, что я все еще не убежден, что дело в порогах.

Может и не в этом дело конечно. Возможно оказывают влияние опции с которыми был собран libfreetype и (или) libxft, дело может быть и конкретно в этом шрифте Bitstream - насколько я понимаю именно под него (и DejaVu соответственно) пишутся эти библиотеки - т.к. явно видно избирательное действие на литеру "e", а другие остаются не затронутыми, а Qt вероятно из-за своей кросс-платформенности ориентируется и на другие шрифты, поэтому он не учитывает некоторых специфичных инструкций Bitstream, и сглаживает поэтому все буквы подряд. Мало очень информации для размышлений. Хотелось-бы посмотреть на другие шрифты и другие буквы.

anonymous
()
Ответ на: комментарий от anonymous

Все может быть. Я пока жду новостей от человека, который собирался писать баг в Trolltech. 
Если интересно взглянуть на другие случаи, то вот Lucida Grande 10: 
http://img441.imageshack.us/img441/7783/74572827pq4.png

Слева Qt4, справа Qt3. Настройки одни и те же:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <match target="font" >
  <edit mode="assign" name="rgba" >
   <const>rgb</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="autohint" >
   <bool>true</bool>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hinting" >
   <bool>true</bool>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hintstyle" >
   <const>hintslight</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="antialias" >
   <bool>true</bool>
  </edit>
 </match>
</fontconfig>

Приложения из Gtk не заснял, но, поверьте, там в точности то же, что и у Qt3

Rikz ★★★
()
Ответ на: комментарий от Rikz

> Если интересно взглянуть на другие случаи, то вот Lucida Grande 10:

Ну и четко видно, что справа хинтится, слева хинтится меньше. Вначале я подумал, что это средний хинтинг vs слабый (плохо их различаю, мне нравится только сильный - средний имхо делает буквы слишком жирными и уродливыми, хотя проверял только с виндовыми шрифтами). Но по конфигу хинтинг должен быть слабый, следовательно слева его нет вообще..

Попробовал то же самое у себя в федоре. Шрифт в гноме стоит "шрифт приложения" - tahoma, "шрифт документа" - Sans, где Sans - DejaVu Sans - в qt шрифт не настраивал, но он, похоже, использует всюду Sans, и с полным хинтингом, как и настроено в гноме. Федора 8, никакой особой магии в fonts.conf нет, по поводу этого шрифта есть только

<match target="font">
<test name="family" compare="eq" qual="any">
...
<string>DejaVu LGC Sans</string>
...
</test>
<edit name="autohint" mode="assign"> <bool>true</bool> </edit>
</match>

Выглядят qt3 и qt4 абсолютно одинаково, вот так: http://img85.imageshack.us/my.php?image=qt4qt3vw1.png

anonymous
()
Ответ на: комментарий от anonymous

Да, автохинтер я включаю для всех dejavu шрифтов, они так лучше смотрятся - там встроенного хинтинга то ли нет, то ли кривой он, в общем хреново они с ним смотрятся. А с автохинтером очень даже приятно - еще бы кернинг там сделали, совсем отлично бы было..

anonymous
()
Ответ на: комментарий от anonymous

Фактически, у меня на последнем скрине слева в Qt4 - полный хинтинг. Справа, там где Qt3 - hintslight, т.е. легкий хинтинг. Так, как он должен выглядеть. Qt4 так не умеет.

Если в fonts.conf прописать hintfull, то Qt4 и Qt3 выглядят одинаково. Если прописать hintslight, то Qt3 делает легкий хинтинг, а Qt4 все равно полный.

Rikz ★★★
()

отвратительно

anonymous
()

Красиво конечно, но охуен както уже привычнее

Orlangoor ★★★★★
()
Ответ на: комментарий от troorl

> Зачем мне ваши ссылки, если я сам вижу, что шрифты выглядят абсолютно одинаково.

Чувак, если для тебя шрифт со сглаживанием и без сглаживания выглядит совершенно одинаково, то тебе к офтальмологу срочно надо :)

AP ★★★★★
()
Ответ на: комментарий от Komintern

> qtcurve рулит однозначно.

+1, и на GTK портирован отменно - единство стиля радует глаз.

Ardolynk
()

А как изменить тему для QT4 если нет у меня КДЕ4? Не ставить же из-за этого все кеды.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.