LINUX.ORG.RU

История изменений

Исправление 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 на ЛОР нет кириллицы.