История изменений
Исправление Zubok, (текущая версия) :
тогда не понятно почему у меня везде отображается как нужно. Даже на iOS, где точно нет такого шрифта и есть поддержка woff.
В iOS вообще могут быть другие правила замены. Там вообще могут заменяться все шрифты на какой-нибудь системный. В iOS нет fontconfig, поэтому эта платформа - темный лес. А еще на чем проверялось? В Linux еще fontconfig участвует в процессе.
Я вот запустил
$ FC_DEBUG=1 firefox-esr
Видно, что в fontconfig идут запросы по поводу Droid Sans Mono отдельно для «en», отдельно для «ru». Я еще не уверен, что правильно интерпретирую вывод, надо время, но мне кажется, что английские он находит, а русские - нет, поэтому заменяет их. Так как у меня нет системного шрифта Droid Sans Mono, то он рисует тем, что скачал, но отрисовка какая-то неправильная по ширине. А вот русские 100% заменяет на какой-то из sans-serif. Наверняка это у меня DejaVu Sans.
Вот у меня Droid Sans Mono в системе отсутствует. И тем шрифтом, что скачивается с сайта, неправильно отображается 1111/WWWW. У других, у кого системный стоит, у них отображается нормально 1111/WWWW, но тоже с русскими проблема. А раз у них выравнивание нормальное, то, значит, браузер, хоть и скачал woff, но fontconfig по запросу все равно предпочел системный Droid Sans Mono для отображения английских символов. А вот русские символы браузер в шрифте не находит, поэтому fontconfig делает замену на sans-serif.
Вот интерпретация lang согласно https://www.freedesktop.org/software/fontconfig/fontconfig-user.html:
lang String List of RFC-3066-style languages this
font supports
Вот паттерн в fontconfig, который формирует firefox. В lang нет ru. У DejaVu есть. Здесь нет кирилистических языков вроде. Нет болгарского, например.
First font Pattern has 20 elts (size 32)
family: "@font-face:Droid Sans Mono"(s)
style: "Regular"(s)
stylelang: "en"(s)
fullname: "Droid Sans Mono"(s) "Droid Sans Mono Regular"(s)
fullnamelang: "en"(s) "en"(s)
slant: 0(i)(s)
weight: 80(i)(s)
width: 100(i)(s)
foundry: "unknown"(s)
outline: True(s)
scalable: True(s)
charset:
0000: 00002001 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
0001: 00000000 00020000 000c0000 01000000 00000000 00000000 00000000 00000000
0002: 00000000 00000000 00000000 00000000 00000000 00000000 14000040 00000000
0020: 771f07ff 06008044 80000010 00000000 00000000 00001000 00000000 00000000
0021: 00000000 00000004 00000000 00000000 00000000 00000000 00000000 00000000
00e0: 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00fb: 0000001e 00000000 00000000 00000000 00000000 00000000 00000000 00000000
(s)
lang: aa|ay|bi|br|ch|co|da|de|en|es|eu|fj|fo|fr|fur|fy|gd|gl|gv|ho|ia|id|ie|io|
is|it|lb|mg|nb|nds|nl|nn|no|nr|oc|om|pt|rm|sma|smj|so|sq|ss|st|sv|sw|tl|ts|
uz|vo|wa|xh|yap|zu|an|fil|ht|jv|kj|kwm|li|ms|ng|pap-an|pap-aw|rn|rw|sc|
sg|sn|su|za(s)
fontversion: 65536(i)(s)
fontformat: "TrueType"(s)
decorative: False(s)
hash: "sha256:70757dd66725b2b95e7be0c7aeb5c114a4f8a7766714fec65597802c2412cfdd"(s)
postscriptname: "DroidSansMono"(s)
ftface: face(s)
-moz-font-entry: face(s)
fontconfig ясно говорит, что в фонте woff на ЛОР нет кириллицы.
Исходная версия Zubok, :
тогда не понятно почему у меня везде отображается как нужно. Даже на iOS, где точно нет такого шрифта и есть поддержка woff.
В iOS вообще могут быть другие правила замены. Там вообще могут заменяться все шрифты на какой-нибудь системный. В iOS нет fontconfig, поэтому эта платформа - темный лес. А еще на чем проверялось? В Linux еще fontconfig участвует в процессе.
Я вот запустил
$ FC_DEBUG=1 firefox-esr
Видно, что в fontconfig идут запросы по поводу Droid Sans Mono отдельно для «en», отдельно для «ru». Я еще не уверен, что правильно интерпретирую вывод, надо время, но мне кажется, что английские он находит, а русские - нет, поэтому заменяет их. Так как у меня нет системного шрифта Droid Sans Mono, то он рисует тем, что скачал, но отрисовка какая-то неправильная по ширине. А вот русские 100% заменяет на какой-то из sans-serif. Наверняка это у меня DejaVu Sans.
Вот у меня Droid Sans Mono в системе отсутствует. И тем шрифтом, что скачивается с сайта, неправильно отображается 1111/WWWW. У других, у кого системный стоит, у них отображается нормально 1111/WWWW, но тоже с русскими проблема. А раз у них выравнивание нормальное, то, значит, браузер, хоть и скачал woff, но fontconfig по запросу все равно предпочел системный Droid Sans Mono для отображения английских символов. А вот русские символы браузер в шрифте не находит, поэтому fontconfig делает замену на sans-serif.
Вот интерпретация lang согласно https://www.freedesktop.org/software/fontconfig/fontconfig-user.html:
lang String List of RFC-3066-style languages this
font supports
Вот паттерн в fontconfig, который формирует firefox. В lang нет ru. У DejaVu есть. Здесь нет кирилистических языков вроде. Нет болгарского, например.
First font Pattern has 20 elts (size 32)
family: "@font-face:Droid Sans Mono"(s)
style: "Regular"(s)
stylelang: "en"(s)
fullname: "Droid Sans Mono"(s) "Droid Sans Mono Regular"(s)
fullnamelang: "en"(s) "en"(s)
slant: 0(i)(s)
weight: 80(i)(s)
width: 100(i)(s)
foundry: "unknown"(s)
outline: True(s)
scalable: True(s)
charset:
0000: 00002001 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
0001: 00000000 00020000 000c0000 01000000 00000000 00000000 00000000 00000000
0002: 00000000 00000000 00000000 00000000 00000000 00000000 14000040 00000000
0020: 771f07ff 06008044 80000010 00000000 00000000 00001000 00000000 00000000
0021: 00000000 00000004 00000000 00000000 00000000 00000000 00000000 00000000
00e0: 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00fb: 0000001e 00000000 00000000 00000000 00000000 00000000 00000000 00000000
(s)
lang: aa|ay|bi|br|ch|co|da|de|en|es|eu|fj|fo|fr|fur|fy|gd|gl|gv|ho|ia|id|ie|io|is|it|lb|mg|nb|nds|nl|nn|no|nr|oc|om|pt|rm|sma|smj|so|sq|ss|st|sv|sw|tl|ts|uz|vo|wa|xh|yap|zu|an|fil|ht|jv|kj|kwm|li|ms|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za(s)
fontversion: 65536(i)(s)
fontformat: "TrueType"(s)
decorative: False(s)
hash: "sha256:70757dd66725b2b95e7be0c7aeb5c114a4f8a7766714fec65597802c2412cfdd"(s)
postscriptname: "DroidSansMono"(s)
ftface: face(s)
-moz-font-entry: face(s)
fontconfig ясно говорит, что в фонте woff на ЛОР нет кириллицы.