AIMP Forum

AIMP for Windows => Ошибки и замечания / Bugs => Skin Editor, Skin Engine => Обработано / Processed => Topic started by: D2NP on June 27, 2018, 09:32:32

Title: [x] [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: D2NP on June 27, 2018, 09:32:32
Это происходит на определенных размерах текста(11,12,15,-14,..), пример прикрепил.
На текстовых метках отображается нормально.
(https://i.imgur.com/D0Z8s75.png)
Title: Re: [2077] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Artem on June 29, 2018, 21:55:16
Похоже на косяк Windows:
https://forums.embarcadero.com/thread.jspa?messageID=667590&tstart=0
https://github.com/virtual-treeview/virtual-treeview/issues/465

Поправлю в ближайшем обновлении
Title: Re: [x] [2077] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: D2NP on July 08, 2018, 18:22:41
Похоже проблема перекочевала и на текстовые метки. Но как-то странно, то воспроизводится, то нет. Закономерности не выявил.
Открываю проект из первого сообщения, в окне редактора отображается нормально, собираю(Ctrl+F9) - у трех элементов текст обрезан. В другой раз в редакторе и в плеере отображается нормально. Или как-то влияет запущенный AIMP или переоткрытие проектов в одном окне редактора.

Может собраться нормально, но после перезапуска плеера обрезает.

SE 1042\ AIMP 2080
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: D2NP on December 18, 2018, 20:22:14
Прикрепил пример на котором проблема воспроизводится.

Если в тексте(название трека\альбома\исполнителя в главном окне (https://www.aimp.ru/forum/index.php?topic=58713.0)) встречаются:
амперсанд - &
латинская, заглавная - T

слова, в которых встречаются сочетания с заглавной и строчной:
Va
Vo
Ky
Fa

(пока это всё, что нашел)
то текст обрезается. В прикрепленном примере обрезается слово Remix скриншот (https://i.imgur.com/0drWlit.png)

Проблема воспроизводится как в редакторе, так и в плеере
SE 1045, AIMP 2084


При каком-то стечении обстоятельств из-за латинской f (в третьей строчке на скриншоте) обрезается текст. Но каким-то образом проблема самоустранилась и воспроизвести её пока не могу.
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Artem on December 25, 2018, 15:31:13
Похоже, пофиксить эту проблему на своей стороне я не смогу. Предлагаю отключить этот режим сглаживания.
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Black_AVP on December 25, 2018, 16:12:04
Прикрепил пример на котором проблема воспроизводится.
...
Интересно, в этом примере все шрифты 11pt, но если зайти в диалог выбора шрифта и просто нажать Ок, ничего не меняя при любом методе сглаживания, то текст уменьшается примерно на 2 пункта и вернуть его к прежнему виду тоже не получается - он не соответствует ни 13 ни 14 pt.
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Zhenya on December 25, 2018, 18:07:39
Интересно, в этом примере все шрифты 11pt, но если зайти в диалог выбора шрифта и просто нажать Ок, ничего не меняя при любом методе сглаживания, то текст уменьшается примерно на 2 пункта и вернуть его к прежнему виду тоже не получается - он не соответствует ни 13 ни 14 pt.

Это старая проблема. Или может быть связано с ней. Если сейчас установить метку в SE, заполнить Template, потом "поменять" размер на тот же (8 по умолчанию), то размер текста в метке уменьшится.
В плеере тоже можно это встретить — открыть настройки информационной ленты, нажать "Предпросмотр", "поменять" размер шрифта на тот же, ещё раз "Предпросмотр" — размер шрифта сильно увеличился.

Я вроде из-за этого и не смог реализовать честные проценты при изменении размера шрифта:

2. Сейчас 300% в скине (слева) больше, чем 300% в v4.13 (справа):

(https://i.imgur.com/rVq3WJ0.png)

Из-за ошибки с размерами шрифта в AIMP, скин сделан пока что не так, как я изначально задумывал — с изменением размера в процентах. Сейчас размер просто увеличивается с каждым шагом слайдера (в v4.13 размер на некоторых шагах не меняется).
Надеюсь в следующей сборке AIMP это будет исправлено и я сделаю изменение размера именно в процентах.
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Black_AVP on December 25, 2018, 19:33:13
Нашёл способ вернуть шрифт к исходному размеру - снять отметку с чекбокса "Размер" в диалоге.
Попутно ещё одно наблюдение: если тот чекбокс не отмечен, значение Height отрицательная величина, Size - положительная, если чекбокс отмечен - наоборот.
Вроде, первый вариант правильный. Может, в этом и ошибка?
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: D2NP on December 26, 2018, 20:20:17
Похоже, пофиксить эту проблему на своей стороне я не смогу. Предлагаю отключить этот режим сглаживания.
Что ж, так и сделаю.

Нашёл способ вернуть шрифт к исходному размеру - снять отметку с чекбокса "Размер" в диалоге.
Попутно ещё одно наблюдение: если тот чекбокс не отмечен, значение Height отрицательная величина, Size - положительная, если чекбокс отмечен - наоборот.
Вроде, первый вариант правильный. Может, в этом и ошибка?
В примере я вручную задавал величину Size: 11, сам редактор присвоил бы отрицательную: -11. Так или иначе, текст обрезает независимо от величины.
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Black_AVP on December 26, 2018, 20:38:33
... Так или иначе, текст обрезает независимо от величины.
Это понятно. Тут вторая проблема обнаружилась - изменение размера шрифта, возможно они и связаны.
Специально даже посмотрел в Delphi в испекторе объектов - Size должна быть положительной величиной, а Height - отрицательной.
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Artem on December 26, 2018, 21:04:38
Специально даже посмотрел в Delphi в испекторе объектов - Size должна быть положительной величиной, а Height - отрицательной.

Нет, не обязательно, может быть и наоборот, однако это несет разную смысловую нагрузку:
https://support.microsoft.com/en-us/help/74299/info-calculating-the-logical-height-and-point-size-of-a-font
Title: Re: [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Black_AVP on December 26, 2018, 21:46:45
Нет, не обязательно, может быть и наоборот, однако это несет разную смысловую нагрузку:
https://support.microsoft.com/en-us/help/74299/info-calculating-the-logical-height-and-point-size-of-a-font
Так, вроде, и там пишут, что задание Height отрицательным значением обеспечивает наиболее близкое соответствие высоты символа. Только не понятно: Height - как аргумент текстовых функций или TFont.Height и как тогда вычисляется Size.
Сейчас в редакторе два этих параметра шрифта взаимно меняют знак  в зависимости от состояния чекбокса "Размер" .
Title: Re: [x] [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Artem on December 26, 2018, 22:47:55
Height - как аргумент текстовых функций или TFont.Height и как тогда вычисляется Size.

Легко:
function TFont.GetSize: Integer;
begin
  Result := -MulDiv(Height, 72, FPixelsPerInch);
end;

Title: Re: [x] [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Black_AVP on December 27, 2018, 08:33:27
Да, действительно, и для Size можно задавать отрицательные значения, раньше считал, что Size должно быть всегда положительным. Проверил на Делфях на TLabel. Результат, естественно, разный для Size = 16 и Size = -16, однако, ничего не обрезается (AutoSize = true).
Но, как вижу, проблема профикшена.
Title: Re: [x] [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Artem on December 27, 2018, 09:28:18
Да, действительно, и для Size можно задавать отрицательные значения, раньше считал, что Size должно быть всегда положительным. Проверил на Делфях на TLabel. Результат, естественно, разный для Size = 16 и Size = -16, однако, ничего не обрезается (AutoSize = true).
Но, как вижу, проблема профикшена.

Оно повторяется если ставить TFont.Quality в ClearTypeNatural и пихать определенный текст туда.
Title: Re: [x] [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Black_AVP on December 27, 2018, 09:49:09
А если в системе включён ClearType, остальные способы вывода шрифтов будут делаться в обход сисемным настройкам?
Title: Re: [x] [1045][2084] При сглаживании Normal ClearType обрезается часть текста кнопки
Post by: Artem on December 27, 2018, 10:00:42
А если в системе включён ClearType, остальные способы вывода шрифтов будут делаться в обход сисемным настройкам?

Системные настройки влияют только на Quality = Default.