LINUX.ORG.RU

Шрифты, хинты и курсив


0

1

Я понимаю, конечно, что говорю о наболевшем, но всё-таки моя проблема немного иного характера. Сразу к делу.

Вот как выглядит шрифт тахома в моей мандриве:
http://s012.radikal.ru/i319/1010/bc/42bf6b005684.png
Претензий никаких, хинты идеальные.

А теперь посмотрим, как выглядит тот же шрифт, но курсивом:
http://s006.radikal.ru/i213/1010/16/c8fd9408caa5.png
Налицо уродливая интерпретация.

Проблема _немного_ исправляется антиалиасингом, НО я привык жить без него и у меня хороший ЭЛТ монитор, на нем круглые пикселы и шрифт без сглаживания выглядит чётко и гладко.

И что с этим всем можно сделать? Тахома, естественно, как пример. Этим болеет каждый шрифт в мандриве, который имеет хинты. Шрифт без хинтов, по известным причинам, вообще невозможно читать.


Что если добавить

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
  <match target="font">
  <!--...-->
  <edit mode="assign" name="embeddedbitmap"><bool>false</bool></edit>
  <edit mode="assign" name="autohint"><bool>true</bool></edit>
  <!--...-->
  </match>
</fontconfig>
в ~/.fonts.conf?

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

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

RPG
() автор топика

А теперь посмотрим, как выглядит тот же шрифт, но курсивом:

У тахомы разве есть курсив?

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

У всех шрифтов нет курсивов?

Тахома, естественно, как пример. Этим болеет каждый шрифт в мандриве, который имеет хинты. Шрифт без хинтов, по известным причинам, вообще невозможно читать.

RPG
() автор топика
Ответ на: комментарий от anon_666

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

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

Тахома, естественно, как пример

У тахомы курсива нет, поэтому пример не самый удачный. Курсив есть у верданы.

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

Кажется, я понял в чем дело. И правда, похоже хинтов для курсива у тахомы нет а у таймса - есть, таймс выглядит прилично.

Но ведь линуксу не объяснишь, что курсива у тахомы нет и в браузерах и некоторых приложениях он очень активно используется. В таком случае как отлавливать например «нелегальное» использование курсива в шрифтах. где он не предназначен, и делать там антиалиасинг?

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

Нет не хинтов, нет шрифта такого вообще, есть только Tahoma и Tahoma Bold - http://www.fontslive.com/font/tahoma-family.aspx

в браузерах и некоторых приложениях он очень активно используется


На сайтах я тахому курсив не видел, если такое где-то есть, то дизайнер этого сайта - не очень хороший дизайнер. В приложениях - тоже не знаю таких. Просто не нужно использовать Tahoma Italic в настройках, и приложения даже о нем не узнают.

как отлавливать например «нелегальное» использование курсива в шрифтах


я не разбирался детально, как именно, но мне кажется, что механизм здесь тот же, что предложил anon666, то есть fontconfig. У меня например использование «синтетического» курсива задано в /etc/fonts/conf.d/90-synthetic.conf

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

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

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

Решения я тоже нашёл. Не знаю, какой извращенец придумал такой формат конфига, но у меня вышло что-то вроде этого:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
	<match target="font">
	    <edit name="antialias" mode="assign">
	        <bool>false</bool>
	    </edit>
	</match>
	<match target="font" >
	    <test name="slant" qual="any" compare="eq">
	        <double>110</double>
	    </test>
	    <edit name="antialias" mode="assign">
	        <bool>true</bool>
	    </edit>
	    <edit mode="assign" name="autohint">
	        <bool>true</bool>
	    </edit>
	</match>
	<match target="font" >
	    <test compare="more" name="size" qual="any" >
	        <double>12</double>
	    </test>
	    <edit mode="assign" name="antialias" >
	        <bool>true</bool>
	    </edit>
	    <edit mode="assign" name="autohint">
	        <bool>true</bool>
	    </edit>
	</match>
</fontconfig>

Суть конфига: включать антиалиасинг если шрифт в высоту больше 12 пунктов или имеет непонятное начертание (код slant=110, не спрашивайте почему — сам не знаю, раз работает — значит так надо:). Автохинты включаю, потому что так антиалиас выглядит гораздо приятнее.

Минус метода — вот скажем хрому наплевать на конфиг вовсе.

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

тахома и с хинтами никогда нормальной не будет выглядеть (даже в винде) - это раз. два - на lcd без сабпиксела ввобще ни один курсив не будет нормально выглядеть (хотя это касается не только курсива, но и вообще).

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

У меня и не ЛСД. Тахома с хинтами нормально выглядит не курсивом, на случай курсивного начертания я сделал принудительно антиалиасы.

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