LINUX.ORG.RU

Как программа определяет, что шрифт - итальянец?

 


0

1

На читаемое название и название шрифта программам ложить, их только гарнитура интересует. Я попробовал взять калибри италик и переименовал его в Arial, название сменил на Arial Italic. Однако он всё равно прочитался как стандартный Arial. Каким образом программы отличают итальянцев от простых шрифтов? Не по размеру носа же?

https://imgur.com/HFMH8VN.png

Данные хранятся в данных, а не в метаданных (название файла в файловой системе).

anonymous
()

В самом шрифте есть данные и о названии, и о начертании, и о поддерживаемых размерах (если это pcf, bdf, psf и прочие растровые) и о поддерживаемых кодировках и о многом другом.

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

Я знаю, по Family определяет имя шрифта, проблема в том, что для итальянцев и простых параметр одинаков.

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

Вот этот ШГ сделан из Calibri Italic, но видится системой как не италик:

https://imgur.com/OpTWf8P.png

Название гарнитуры итальянцев и простых идентичное.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)

А я кажется понял, судя по поведению libreoffice writer, итальянцы это генерированные химеры. Странно, что тогда забыли в маздайке итальянские шрифты и как система отличает их от нормальных.

PS: Я понял, это костыль с названием.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от anonymous

Если к имени файла добавить i на конце, то шрифт считается итальянским. Так что метаданные влияют на поведение софта.

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

fc-match и fc-list тебе в помощь

fc-list : file family style покажет имя файла, семейство(family) и стиль. Попробуй найти зависимость между ними. Как думаешь, где хранятся эти (не)зависимые данные.

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

Там всё нормально. Шрифт копия старого итальянца. Когда он называется arial.ttf, он ведет себя как простой (даже если он итальянец), когда ariali.ttf, он ведет себя как итальянец. Проверено на libreoffice writer. Я думаю это сделано из-за того, что автоматическая смена простых шрифтов на итальянцев не очень хорошо работает.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 2)
Ответ на: комментарий от steemandlinux

Насколько я помню есть «честные» италик гарнитуры, изначально нарисованные с наклоном, а есть генерируемые шрифтовым движком «химеры» из обычных шрифтов. У дизайнеров такое считается «фуфуфу», так как это механически искажённое начертание без учёта того как это будет выглядеть и восприниматься в итоге. Когда я был со всем этим связан генерацию «химер» я отключал. Соответственно если софт смотрит в сам файл шрифта он не увидит там италика если гарнитура не имеет этого начертания. А если софт работает через fontconfig или иные шрифтовые движки - по дефолту он будет видеть как «честные» италики, так и синтезированные.

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

А вообще забавно, неужели нельзя было инфу в файл добавить о том, что это италик. Определять по последней букве в файле это такое.

cp ariali.ttf arial.ttf

Просто наркоманию выдаёт.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 2)
Ответ на: комментарий от steemandlinux

Это следствие того что в типографском деле италики - это не подмножество обычных начертаний, а отдельное семейство шрифтов со своими гарнитурами. И только приход компьютерной вёрстки и первоначальный недостаток качественных и бесплатных гарнитур привёл к распространению этого убогого подхода - автоматической генерации италиков из шрифтов прямого начертания. И большинство, привыкшее к подобному поведению, стало считать италик просто одним из вариантов начертания любого шрифта. Но формально это не так, поэтому никакого особого признака для выделения этого начертания не существует, кроме буковки i. А в истинно италик гарнитурах обычно в названии указано что это италик.

А так в типографском деле полно гарнитур не имеющих косого начертания, равно как и гарнитур с косым начертанием и не имеющих прямого.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 3)
Ответ на: комментарий от anonymous
.fonts/ariali.ttf: Arial:style=Italic
.fonts/arial.ttf: Arial:style=Book

По факту оба итальянца.

А всё анонимус, ты прав:

.fonts/ariali.ttf: Arial:style=Italic
.fonts/arial.ttf: Arial:style=Italic

В названии должно быть слово Italic. Криво конечно то, что для этого отдельный байт не предусмотрен.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 2)
Ответ на: комментарий от anonymous

Все я понял что там за костыль и как он работает. Пробел - разделитель в названии.

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

Блин, там вместо отдельных байтов используются пробелы в качестве разделителя. Я убираю из названия итальянского шрифта Italic и fontforge пишет что это простой шрифт.

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

Блин, да потому что не нужен никакой флаг для италиков. Италик - это отдельная гарнитура, имеющая италик в названии, это не вариант начертания прямой гарнитуры, так же как девочка - это не вариант мальчика с третьей дырочкой, это отдельный пол. Генерация псевдоиталиков движком - это пошлое дно. Шрифт это авторская работа, если создатели шрифта не нарисовали его Italic варианта - значит его нет, и не нужно его выдумывать кибернетически. Это так же пошло как картины Сафронова, отсканированные чужие картины или фото, обработанные фотошопом, напечатанные на принтере и выдаваемые за «авторскую работу».

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

Т.е. костыль это то, что в wusiwug одно название шрифта привязано к разным начертаниям? Тогда зачем fontconfig выдает это как один шрифт с разными стилями?

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

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

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

Чувствуется, ты мышевоз до мозга костей.

Ну да намышевозил:

font=fontforge.open("calibri.ttf")
font.fontname="Arial"
font.fullname="Arial"
font.familyname="Arial"
font.generate('arial.ttf')

.fonts/arial.ttf: Arial:style=Book

font=fontforge.open("calibri.ttf")
font.fontname="Arial-Italic"
font.fullname="Arial"
font.familyname="Arial Italic"
font.generate('arial.ttf')

.fonts/arial.ttf: Arial:style=Italic

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 2)
Ответ на: комментарий от steemandlinux

Да, это костыль, как раз для работы со сгенерёнными италиками. И в фонтконфиге та же причина. Потому что всем уже давно насрать и никто не понимает в чём разница между понятиями «семейство шрифтов», «гарнитура» и «начертание». Имеет место быть путаница. Гарнитура может включать в себя вариант с наклонным начертанием, наравне с другими, например light и bold, может не включать, это всё на совести авторов этой гарнитуры. А может и целиком состоять из разновидностей наклонного начертания и не иметь прямого. Наклонное начертание не есть неотъемлимая часть любой гарнитуры вообще. То что ты видишь в списке это не «название шрифта», это название гарнитуры+вариант начертания этой гарнитуры.

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

А все я понял, fontconfig стандартизирует backward compatibility, чтобы авторам программ не приходилось писать свои велосипеды, который определяют как вести себя например при наличии итальянца и отсутствии его «нормального» собрата и при этом случайно не нагнуть уже готового итальянца.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

Опять какие-то куски вывода, неизвестно как полученные.

И что ты хотел показать? Что не умеешь fontforge, или то что fontforge не умеет устанавливать стиль шрифта. И приходится кодировать стиль в названии, и пусть fontforge распарсит название и вытащит стиль.

Причем тут шрифты, если у тебя проблемы с проблемными утилитами?

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

Ну примерно так. Беда в том, что не надо себя никак в этом случае вести. Если у «итальянца» нет прямого начертания - его нет! И не нужно ничего «выппямлять» самостоятельно. Это же касается и шрифтов с прямым начертанием. Нарисовали авторы кроме прямого ещё и италик - замечательно, покажите оба. А если нет - ну значит нет. Только вот этого всего уже никто не понимает к сожалению, кроме тех кто с типографским дизайном профессионально работает. Обычным юзером хочется писать «наклоном» с любым шрифтом, без разницы предусмотрен ли он изначально в дизайне или нет.

Причём это бред приводит к тому, что для шрифтов изначально ТОЛЬКО италик генерится «ещё больше италик», а для шрифтов изначально bold генерится «ещё больше bold» и выглядит это всё омерзительно, и эти случаи приходится отдельно вносить в исключения.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 2)
Ответ на: комментарий от anonymous

Не хранится информация о стилях отдельно. Есть только понятие насыщенности. Иначе бы fontconfig не реагировал на добавление слова Italic в название.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

Потому что то что называется «стилем» это не разновидность основного шрифта, это отдельный шрифт. Нет шрифта Ариал и его стиля италик, есть шрифт Ариал, и есть шрифт Ариал Италик. Это два разных шрифта, относящихся к одной гарнитуре, Ариал, входящей в семейство бессерифных шрифтов.

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

Опять редактирование сообщений. Дай гранату звезды мартышке

Нет понятия стиля

У шрифтов есть понятие стиля. И полное название шрифта (OTF) кодируется примерно так Название семейства шрифта можно с пробелами:style=Название стиля можно с пробелами:другой_атрибут_шрифта=Значение атрибута можно с пробеалми

А с fontforge все в порядке.

https://github.com/fontforge/fontforge/issues/1061

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

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

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

Что в название достаточно добавить Italic и шрифт видится как итальянский.

Это кривизна fontforge’а, ссылку на баг тебе уже дал. Он не умеет напрямую устанавливать стиль и приходится вкорячивать стиль в название.

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

Почему-то у некоторых шрифтов эти параметры можно редактировать, а у некоторых они константные:

[code] font.sfnt_names The strings in the sfnt ‘name’ table. A tuple of all MS names. Each name is itself a tuple of strings (language,strid,string). Language may be either the (english) name of the language/locale, or the number representing that language in Microsoft’s specification. Strid may be one of the (English) string names (Copyright, Family, SubFamily, etc.) or the numeric value of that item. The string itself is in UTF-8.

Mac names will be automagically created from MS names [/code]

Притом эта константа сбрасывается редактированием названия.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

Ты хочешь произвольно менять свойства шрифта, что свойства не будут соответствовать содержанию? Что ты хочешь?

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

Этим занимается fontconfig или что там вместо него в других системах. Fontconfig наконфигурить так, что вместо жирного шрифта будет выбирать написание справа-налево. Изучай fontconfig или что там вместо него в других системах, и их конфигурации.

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