Romul81

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: На последней сборке никак не могу заставить ГД отображать контент шрифтом Serif. | Немного разобрался в этом вопросе. Дело в моей системе Win10 1803 x64 EN. На этой системе никаким методом не удалось отобразить контент шрифтом Times New Roman. Протестировал эту сборку на других системах. Обе Win 8.1 x64 EN, обладающие высокой степенью девственной чистоты )). Так вот. Шрифт отображается, будучи прописанным в font-family. НО, попутно выявил следующие проблемы: 1. Fallback-шрифты, прописанные в font-family, не работают никогда и ни при каких обстоятельствах. Протестировано в т.ч. и на linux (Ubuntu 18.04 Qt 5.9.5 и Arch Qt 5.15). Поэтому запись типа font-family: Tahoma, Verdana, "Lucida Sans Unicode", sans-serif; теряет всякий смысл. Webkit берёт в расчёт только первый шрифт, указанный в этом списке. При НЕнахождении этого шрифта, либо при отсутствии какого-либо символа в этом шрифте, задействуется системный механизм fallback. Webkit полностью "умывает руки" и предаёт это на уровень системы. А как это должно работать? Вот здесь можно почитать подробно и увидеть наглядно. Но и это ещё не всё. В Windows, начиная с 8-ки. Есть два механизма fallback. Один старый, чей механизм никому не понятен и нигде не объяснён. И второй новый - Font Linking. Так вот, мне так и не удалось с помощью этого механизма отключить страшный до жути MS Gothic (некоторые юникод-символы отображаются именно им) и задействовать к примеру гораздо более приятный Segoe UI Symbol. Хотя, опять же, если бы нормально работал браузерный механизм font-family, то все эти ухищрения не были бы нужны. Кстати говоря, в интернете достаточно много информации по поводу того, что в Qt4 и его QtWebKit это никогда не работало. Но мне не удалось найти свежую инфу на этот счёт относительно Qt5. То есть, это означает, что либо этого бага нет (и он каким-то образом проявляется только в GD), либо QtWebKit-ом вообще никто не пользуются и все переехали на QtWebEngine, бо QtWebKit как бы deprecated ещё с версии 5.5. 2. Хорошая новость в том, что работает @font-face и импорт шрифтов. Так что теоретически можно было бы обойти проблему с механизмом font-family и использовать импортированные шрифты, покрывающие нужные диапазоны юникода (используя одно семейство шрифтов). Но есть и плохая новость. Свойство unicode-range тоже не работает! Так что невозможно контролировать использование конкретных шрифтов в тех или иных конкретных диапазонах юникода. Получается парадоксальная ситуация. Программа, которая имеет именно лингвистическую направленность, имеет такие жёсткие ограничения на использование такого базового функционала как шрифты. Для нормальных браузеров это уже лет 10 как не является проблемой. Итак, когда можно ожидать переезда на QtWebEngine?.... Добавлено: З.Ы. Ещё один момент - механизм рендеринга шрифтов. В QtWebKit он ужасен. Кстати, в Win8.1 статья выглядит поприятнее, чем в Win10. Шрифты те же самые - импортированы по @font-face. И ещё кстати. По видимому прошли те времена, когда в Линуске были ШГ. Сейчас рендерится всё очень даже достойно. В том же самом QtWebKit. И даже в некоторой степени всё выглядит покрасивше, чем в Виндовс. |