Большие шрифты «xterm» на дисплеях HIDPI

15

После нескольких лет счастливого использования различных эмуляторов терминала, таких как Konsole , Gnome-TERMINAL и, в последнее время, XFCE Terminal, в соответствующих средах рабочего стола, я решил использовать старый добрый xterm с его растровыми шрифтами . Он работает просто отлично, поддерживает Unicode, а семейство фиксированных шрифтов по умолчанию содержит символы практически всех языков, и это здорово.

Но я столкнулся с важной проблемой. Шрифты действительно маленькие. Даже так называемый Огромный размер (который является растровым шрифтом 10x20) очень мал для меня и непригоден для использования.

Моя настройка по умолчанию для среды XFCE - 120 точек на дюйм, но с xpdyinfoразрешением 97x97 DPI

$ xdpyinfo |grep resolution
  resolution:    97x97 dots per inch

Поэтому я попытался изменить DPI xrandr, но это не помогло.

$ xrandr --dpi 120

Результат вроде бы применяется

$ xdpyinfo | grep resolution
  resolution:    120x120 dots per inch

но это никак не меняет разрешение xterm. Я даже пытался использовать масштабирование, но оно затронуло весь X, а не одно приложение:

$ xrandr --output LVDS1 --scale 0.5x0.5

Есть обходные пути для Qt и Gtk , но что Xlib-приложения нравятся Xterm, Xcalc, Xman, Xfigeи т.д.? Должны ли мы смотреть, как они исчезают, поскольку DPI дисплея увеличивается? Пожалуйста, помогите, если вы знаете какие-либо обходные пути.


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


PS1: я установил 100 DPI шрифтов для X, но я не мог их использовать

$ sudo apt-get install xfonts-100dpi

PS2: Fontforgeкоторый также использует Xlib, использует хорошую тему и нормальный размер шрифта. Я не знаю, как это происходит.

PS3: я тестирую otf2bdfи bdftopcfиспользую для создания экспериментальных PCFрастровых шрифтов для HIDPI из векторных TTF/OTFшрифтов.

PS4: После установки шрифтов 100DPI это было хорошо, хотя в нем отсутствует отличная языковая поддержка fixedшрифта по умолчанию .

$ xterm -font -Adobe-Courier-Bold-r-Normal-*-34-*-100-100-*-*-*-*

Я использовал fontsel. Это действительно полезно.

PS5: это тоже полезно.

PS6: я смог бы создать растровый шрифт 120DPI из Courier New с 20pt

$ otf2bdf -p 20 -r 120 cour.ttf > cour.bdf
$ bdftopcf cour.bdf | gzip - > cour.pcf.gz
$ sudo cp cour.pcf.gz /usr/share/fonts/X11/misc/
$ fc-cache
$ xterm -font -*-*-*-*-*-*-*-*-120-120-*-*-*-*

PS7: 75 DPI жестко закодирован шрифтом BDF. Может быть, изменение это поможет.

PS8: vncdesk - хороший инструмент для масштабирования одного окна .

HO1
источник
Xft.dpi: 120в ~/.Xresourcesне работает?
ILMostro_7
xrdb -query | grep dpiуже сообщает:Xft.dpi: 120
Ho1
Вы создали ~/.Xresourcesфайл или ~/.Xdefaults, или б / е подходит в вашей системе? Ссылка, на которую вы указали, и которую вы назвали полезной, не является всеобъемлющим набором опций, доступных для xterm. Например, Xft.lcdfilter: lcddefault Xft.antialias: true Xft.hinting: true Xft.hintstyle: hintslightи многое другое.
ILMostro_7
1
@ MartinSchröder Да, на самом деле я проверил свои собственные шрифты с разрешением 120 точек на дюйм, сгенерированные из шрифта TrueType Courier New . Но в нем отсутствуют все языки, которые поддерживает «Семейство фиксированных растровых шрифтов», поэтому я ищу лучший способ сделать это. В настоящее время в моем systme, / и т.д. / X11 / приложение-умолчанию / XTerm, так как по умолчанию VT100.font6 (огромный) устанавливаются 10x20 шрифта из фиксированного семейства шрифтов, который является довольно небольшим на моем экране. Я был бы счастлив, если бы у нас был en.wikipedia.org/wiki/Fixed_%28typeface%29 для 20x40, но у нас его нет.
Ho1
1
Вам нужно использовать растровые шрифты? xtermтакже поддерживает шрифты TrueType. xterm -fa 'DejaVu Sans Mono' -fs 40(хотя не переключаться между шрифтами, когда глифы недоступны, как некоторые другие эмуляторы терминала)
Стефан Шазелас

Ответы:

10

Вы сами подсказали ответ, сославшись на https://en.wikipedia.org/wiki/Fixed_(typeface).

Это стандартный фиксированный растровый шрифт, который был расширен Маркусом Куном, чтобы иметь довольно полный набор символов. Вопрос в том, как масштабировать растровое изображение .

До сих пор вы добились масштабирования векторного шрифта и преобразования его в растровое изображение (ttf → bdf → pcf) . Это хорошая стратегия, но, как вы упоминаете, ей не хватает языковой поддержки. Это кажется странным, так как Courier New - один из наиболее полных шрифтов Unicode, но я отвлекся! Возможно, попробуйте использовать Mono, который является клоном.

Однако я не понимаю , почему вы делаете это как Xterm делает поддержку TrueType .

Модифицировать ~/.Xresourcesтакие как это:

XTerm*renderFont: true
XTerm*faceName: VeraMono
XTerm*faceSize: 10

Но вернемся к задаче: вам нужен больший растровый шрифт.

Наибольшее доступное растровое изображение:

10x20   -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1

Маркус был настолько хорош, что он поставляет исходные файлы BDF. Если в вашем дистрибутиве нет последних обновлений (с апреля 2009 года), вы можете получить пакет непосредственно у него.

Пакет шрифтов "-misc-fixed- *":

http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz

Вместо преобразования туда и обратно между ФКП и BDF вы могли бы / должны придерживаться исходного формата. Вы можете использовать редактор шрифтов BDF, чтобы изменить размер шрифта. Не ожидайте сглаживания или подобного обмана, но по крайней мере вы можете получить читаемый размер.

Или вы можете использовать bdfresize от Hiroto Kagotani (также встречается в некоторых пакетных системах).

ОБНОВИТЬ:

Я не знаю, как масштабировать только одно окно (никогда не было необходимости). Вы можете отследить этот вопрос суперпользователя. Когда у меня возникла необходимость, я масштабировал всю среду.

Вы можете понизить дисплей 3200x1800 до 1920x1080, используя:

xrandr --dpi 141
xrandr --output eDP1 --scale 0.6x0.6

Другие приемы масштабирования экрана в разных оконных менеджерах можно найти здесь . Они предлагают использовать VNC:

Один из подходов состоит в том, чтобы запустить приложение в полноэкранном режиме и без оформления на своем рабочем столе VNC. Затем масштабируйте зрителя. С помощью Vncdesk ( vncdesk-git из AUR) вы можете настроить рабочий стол для каждого приложения, а затем запустить сервер и клиент с помощью простой команды, например vncdesk 2.

У x11vnc есть экспериментальная опция -appshare, которая открывает один просмотрщик для каждого окна приложения. Возможно, что-то может быть взломано с этим.

Клаус Андерсен
источник
Отличный ответ, спасибо. Я с радостью приму ответ. Почему не верно? 1) Я хочу использовать его на старом медленном компьютере. 2) Фиксированное семейство имеет отличную языковую поддержку, как описано в cl.cam.ac.uk/~mgk25/ucs-fonts.html И последнее: есть ли способ просто масштабировать одно окно в X? Я думаю, что это улучшит ответ.
Ho1
1
Для оригинального плаката требуется широкая поддержка различных языков, но Vera ограничена, но ее дополнительный продукт DejaVu поддерживает множество различных наборов символов. С этой точки зрения также хорошо подходят более или менее свободно доступные моноширинные шрифты от MS, как Courier10, так и Calibri. Я влюбился, вроде как, в Калибри!
Гбоффи
0

Прямо сейчас вы можете увеличить размер шрифта, удерживая кнопку управления и правую кнопку мыши (т.е. ctrl+right mouse button) и выбрать размер шрифта. Чтобы сделать его по умолчанию, вам нужно иметь Xresourcesконфигурацию. Я пытаюсь, и я обновлю ответ, как только получу.

Обновить:

Вы можете создать .Xresourcesфайл в вашем домашнем каталоге и добавить строку ниже xterm*font: *-fixed-*-*-*-18-*. Затем объедините ваши изменения с утилитой ресурсов X-сервера, используя xrdb(т.е. xrdb -merge ~/.Xresources), или вы можете перезапустить Xтакже. Новый xtermsдолжен иметь измененный размер шрифта.

Thushi
источник
Спасибо за ваш ответ, я использую самый большой растровый шрифт, доступный для фиксированного семейства шрифтов: 10x20, который используется для огромного размера шрифта, но он также очень мал на дисплеях HIDIP. Обратите внимание, что я говорю о растровых шрифтах, а не о шрифтах TrueType.
Ho1
0

Я не уверен, но вы можете, возможно, объединить шрифт и размер как это:

xterm -fn helvetica -fs 20x10

небольшой тест шрифтов

С уважением, maniat1k

maniat1k
источник
Спасибо за ваш ответ. Это обеспечивает большие шрифты:, xterm -fs 20x10но это не «семейство фиксированных шрифтов»: en.wikipedia.org/wiki/Fixed_%28typeface%29 , поэтому оно не содержит международных символов, которые есть в семействе фиксированных шрифтов.
Ho1