Чому шрифти не відображаються однаково в браузері та терміналі?


1

Якщо бути більш конкретним, припустимо, у мене є односхилий шрифт з деякими гліфами, більшими за звичайну ширину символів (наприклад, значки наближення).

У більшості термінальних емуляторів більші символи просто перекриються символом праворуч, тоді як, наприклад, для хромування, більші символи підштовхують решту рядка, щоб зробити простір для себе.

Чому так? Що відображає текст у цих програмах? Це сама програма? Це компонент операційної системи? Чи розроблені термінали спеціально для уникнення цієї проблеми?

І додаткове запитання: чи є спосіб змусити хром вести себе як більшість терміналів, щоб одноразові шрифти залишалися односхилими, навіть коли є більші гліфи.

Щоб забезпечити деяку інформацію, я працюю над гіпер , який в основному є терміналом у хромі, і це спричиняє проблеми з вирівнюванням символів.


1
"Що таке візуалізація тексту в цих додатках?" - Відповідь, на жаль, залежить: Це залежить.
Даніель Б

Виглядає як справді приємний проект! :)
egmont

"припустимо, у мене є односхилий шрифт з деякими гліфами, більшими за звичайну ширину символів" - тоді це не односхилий шрифт ... "Монорозміщений шрифт, який також називають шрифтом фіксованої висоти, фіксованої ширини або непропорційним шрифтом, це шрифт, чиї букви та символи займають однакову кількість горизонтального простору ".
DavidPostill

@DavidPostill Я добре знаю це завдяки. Тим не менш, існує багато одношарових шрифтів, які скріплені гліфами з інших шрифтів, часто іконок. Дивіться, наприклад, github.com/ryanoasis/nerd-fonts . Це корисно, наприклад, робити досить підказки щодо терміналу.
Kaidjin

Відповіді:


1

Більшість програм (включаючи браузери) відповідають розмірам гліфів, визначеним у шрифті. Насправді вони, ймовірно, використовують методи, які відображають більш довгі рядки за один крок (хоча я не знаю деталей). Якщо частина гліфів трохи ширша за решту, то це не повністю монопросторний шрифт, це майже монопростір за деякими винятками.

Емулятори терміналів використовують спеціальний метод малювання, вони розташовують кожного символу незалежно, оскільки їм потрібно примусити символів до сітки, інакше загальний макет просто розвалиться. Особливо добре це можна побачити в дії, якщо ви вибрали немоноспеціальний шрифт (результат буде виглядати некрасиво, але залишиться вирівняним по сітці). (Зауважте, що це konsoleможе бути винятком, я бачив, як це робить дивні речі.)

Для того, щоб браузери ведуть себе як емулятори терміналу, я рекомендую вам спробувати розміщуючи кожен і кожен символ окремо в своєму власному spanабо divз position: absoluteабо fixed, або що - то подібним.


1
Дякую, що підтверджує те, що я думав. Ми вже використовуємо spans в гіпертермі для виправлення поведінки, на жаль, це трохи шкодить продуктивності.
Кайджин

0

Операційні системи надають ряд засобів для малювання тексту, які розробники можуть вибрати. Для емуляторів терміналів зазвичай потрібні монорозміщені шрифти, а відображення тексту, яке ви бачите, є природним результатом цього обмеження. Браузери використовують більш досконалі засоби, які дозволяють пропорційно пропонувати шрифти та багато іншого. Це не означає, що користувачеві буде надано багато варіантів. Як правило, кращим є перегляд браузера, який ви бачите. Звичайно, не всі погодиться.

Чи може Chromium надати текст за вашим бажанням? Сумніваюсь, але ви можете перевірити текстові параметри.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.