Где находятся иконки приложений linux

gnome3 где хранит иконки программ

У части ярлычков (иконок) программ картинки низкого разрешения или вообще отсутсвуют/несоответвуют. Где эта шляпа хранит файлы ярлыков в которых зашита или из которых ссылается на иконку.

Ты действительно думаешь, что проблема в гноме?

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

может и не в гноме, но в нем это видно, в консоле насрать, а третьего не дано.

Очень часто на ЛОРе мне кажется, что мои собеседники — идиоты.

мне тоже так часто кажется. Вот смотрю на тебя и все больше убеждаюсь — не кажется.

Очень часто на ЛОРе мне кажется, что мои собеседники — идиоты.

Тоже замечал.
Особенно ярко выглядит ТС.

еще раз внимательно
в Home:/usr/share/icons/hicolor есть

при этом гном в списках программ отображает самую низкую — 16х16 для приложения. Почему?

Могу только предположить, гном проверяет несколько путей по которым могут лежать иконки и хватает первую попавшуюся. А в пакетах приложений иконки распихиваются по разным местам. Как-то пытался через strace найти файл локализации (для терминала вроде какого-то), так вот файл открывался с 14 попытки.

ну собственно в том и вопрос — куда ложить (класть?) иконки что бы гнум их нашел

strace -o a.txt nautilus —no-desktop

строк вида
stat(«/usr/share/icons/gnome/22×22/actions/. »
lstat(«/usr/share/icons/gnome/24×24/status/. »
open(«/usr/share/icons/gnome/16×16/actions/. »

793 штуки, вот так сразу и не скажу куда ложить или класть,
вообще предлагаю забить на это или положить

Интересно Вы тему иконок со стороны устанавливали? Например с gnome-look.org

не морщи мозг и поставь фаензу

Поставить кастомную иконку для конкретной программы можно с помощью alacarte, например.

нет, я гнома со стороны ставил на старую систему. он сам что то нашел и пользуется.

Источник

Где хранятся иконки?

Я хочу изменить иконку определенной темы. Где темы сохраняют свои иконки?

4 ответа

Во всем мире: /usr/share/icons/ или в вашей домашней папке:

/usr/share/icons/ обычно содержит предустановленные темы (доступны всем пользователям)

/.icons/ обычно содержит папки с темами, установленными пользователем.

Кроме того, многие приложения имеют свои значки в /usr/share/pixmaps/ или в папке с тем же именем, что и приложение под /usr/share/.

Есть несколько мест: (в скобках несколько примеров)

  • /usr/share/pixmaps/ (chromium-browser.png display-im6.q16.xpm firefox.png flash-player-properties.png gimp.xpm gvim.svg texstudio.xpm)
  • /usr/share/app-install/icons/ (adobeflashplugin.png julia.svg texmaker.png thunderbird.png vim.svg vlc.png wine.svg grace.svg)

/.local/share/icons/ (soffice.png java-lang-thread.png org-jabref-jabrefmain.png) одно из мест, где Ubuntu ищет значки, если вы используете относительный путь

  • /usr/share/icons/. и подпапки ( matlab.png . /hicolor/ масштабируемые /apps/chromium-browser.svg . /hicolor/ масштабируемые /apps/geany.svg . /hicolor/ масштабируемые /apps/okular.svgz . /default.kde4/48×48/apps/acroread.png)
  • /usr/share/. просто подпапки ( . /vlc/vlc.ico . /gimp/2.0/images/gimp-logo.png), но это больше для значков, используемых в программе, чем логотип программы
  • /snap/. просто подпапки ( . /inkscape/3080/meta/gui/inkscape.svg . /languagetool/10/snap/gui/icon.png)

    /.icons вряд ли эта папка существует (но иногда)

    Большинство папок уже объявлено здесь, все источники, которые я использовал:

    Источник

    Как найти ярлыки программ в Linux и работать с ними

    Операционная система Linux, как уже стало ясно, значительно отличается от Windows. И порой в ней необходимо потратить какое-то время, чтобы найти ярлыки приложений. К счастью, в новых версиях сделать это достаточно просто, но как быть с более ранними? Рассмотрим подробно способы поиска ярлыков и работы с ними на примере Linux Ubuntu 19.10.

    Как найти ярлыки в «Меню приложений»

    В новых версиях Linux Ubuntu в левом нижнем углу есть иконка «Меню приложений». При нажатии на нее отображается список установленных и востребованных у пользователя программ.

    Иконки всех установленных приложений доступны вот в этом меню

    В списке есть две категории – «Популярные» и «Все» приложения

    Отсюда можно выделять любые иконки и копировать в панель «Избранное», расположенную в левом краю экрана.

    Поиск ярлыков в файловом проводнике

    Найти ярлыки программ можно и в системной папке. Для начала открываем файловый менеджер и жмем по элементу «Другие места».

    Открываем файловый менеджер и жмем по элементу «Другие места»

    В новом списке выбираем «Компьютер».

    Открываем раздел «Компьютер», чтобы перейти к искомой папке

    После этого открываем папку «usr».

    Далее жмем на папку «usr»

    Дальше переходим к репозиторию «share».

    Открываем одну из последних папок – «share»

    И находим среди большого количества папок ту, что называется «applications». В ней обычно и хранятся все ярлыки, особенно в ранних версиях ОС Linux Ubuntu. В нашем случае все они отображаются как текстовые файлы с расширением desktop.

    В папке «applications» расположены все ярлыки приложений в формате desktop

    Копирование ярлыков на Рабочий стол и боковую панель

    Просто переместить иконку на рабочий стол Linux Ubuntu не получится. Можно открыть «Меню приложений», нажать и удерживать нужную иконку и переместить ее в боковое меню «Избранное». Приводим примеры с приложением Telegram Desktop.

    Эту же операцию можно произвести другим путем – переходим в репозиторий /usr/share/applications, находим в списке элемент «telegramdesktop.desktop», жмем по иконке правой кнопкой мыши и выбираем пункт «Копировать в…».

    Можно скопировать иконку на панель «Избранное», а на Рабочем столе, к сожалению, она активна не будет

    Указываем в новом окне путь «Домашняя папка», репозиторий «.local», затем «share» и «applications». Выбираем эту папку нажатием на зеленую кнопку в правом верхнем углу, и в результате на панели задач «Избранное» появится ярлык данного приложения.

    Выбираем место для копирования, как указано на скриншоте, и подтверждаем действие

    В последних версиях операционной системы Linux Ubuntu, к сожалению, создавать ярлыки на Рабочем столе невозможно. В более ранних можно задействовать те же самые методы, перемещая иконку одним кликом.

    Создание ярлыка приложения, если его нет в папке «applications»

    Если ярлыка нет ни в одном из указанных мест, можно создать его. Для этого заранее скачиваем приложение Krusader, открываем консоль «Терминал» и даем команду на его запуск с правами администратора:

    Открываем программу Krusader от имени администратора через консоль «Терминал»

    Данное приложение запустится с root-правами. Нажимаем на любую иконку, переходим к подменю «Создать» и выбираем элемент «Создать текстовый файл». Можно также воспользоваться комбинацией Shift + F4.

    Нажимаем на «Создать текстовый файл» в данном подменю

    Вводим название будущего файла, в нашем случае выглядеть он будет как «Telegram.desktop», после нажимаем на кнопку ОК.

    Указываем название и не забываем про формат desktop

    В результате в репозитории будет создан пустой текстовый файл, нам же необходимо задать ему значение. Содержимое должно выглядеть примерно следующим образом:

    Version=1.0

    Name=Telegram

    Comment=Desktop version of Telegram

    Exec=/usr/bin/telegram-desktop

    Icon=/usr/share/icons/hicolor/512×512/apps/telegram.png

    Terminal=false

    StartupWMClass=TelegramDesktop

    Type=Application

    GenericName=Тестовая программа

    Keywords=telegram

    Categories=

    NoDiplay=false

    Обязательно сохраняем полученный результат и проверяем наличие иконки в «Меню приложений». Открываем и смотрим, работает ли программа. Иконку Telegram мы привели в качестве примера, данный способ универсален для любых других приложений.

    Заключение

    В Linux Ubuntu работать с ярлыками достаточно просто, отыскать их также не составит труда даже пользователю с базовыми навыками. Копировать их на Рабочий стол в обновленной версии, к сожалению, невозможно, но в более ранних версиях копирование срабатывало. И даже если иконка в папке «applications» отсутствует, можно самостоятельно создать текстовый файл, указать в нем ссылку на скрипт, наименование, дополнительные данные, и в итоге новый рабочий ярлык будет доступен.

    Источник

    Куда Linux ставит программы. Коротко о файловой системе Linux.

    Файловая система Linux очень сильно отличается от того, к чему привык пользователь Windows. Тут нет привычных дисков с их буквенным обозначением и нет папки Program Files.

    Файловая система Линукс располагает папки по типу дерева, которое идет от некого корня.

    И главное, любая папка может физически находится на другом диске, как логическом, так и физическом.

    Скажем папку Home ставят на другой диск, папка хранит все документы пользователя и в случае переустановки системы, они так и останутся.

    Надо быть справедливым, такая возможность есть и у Виндоувс, и правильно так поступать(расскажу, если кто не знает), да и всякие свои файлы и программы обычно люди ставят на другой, не системный диск.

    И так, мы отвлеклись. Каждая папка Linux хранит свой тип файлов:

    /etc — здесь хранятся файлы разных конфигураций, настройки системы, скажем файл fstab хранит информация ваших файловых системах, в нем задаеться информация как их монтировать и что с ними делать. В былые времена я руками туда вписывал разделы виндусевских дисков, сейчас, благо, все монтируется автоматически.

    /dev это папка файлов устройств, да в Линуксе каждое устройство это файл.

    /boot это загрузчик

    /media сюда монтируются съемные носители

    Но это все тема отдельная, нас интересует именно куда программы то ставятся.

    Тут я имею ввиду программы, которые ставит установщик из стандартных пакетов.

    /usr вот в эту папку идут все программы пользователя. Там содержаться и исполняемые файлы, и библиотеки и прочее.

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

    Ну ладно, продолжим.

    /usr/bin — сюда помещаются исполняемые файлы программ

    usr/lib — а здесь библиотеки, которые нужны программе

    usr/sbin — сюда помещаются исполняемые файлы от имени администратора

    /usr/share — прочие файлы программ

    Как я писал выше, что существует правило распределения файлов, но оно не всегда соблюдается.

    /opt ряд программ устанавливается в эту папку, там создаеться папка программы, в которой все ее файлы, по типу, как это происходит в виндоувс. Изначально это папка для установки проприетарных программ.

    Но некоторые программы «идут еще дальше и , как сказать, ставят себя в папку /home/имя_пользователя/opt

    Узнать, куда разместились файлы программы можно командой:

    А через пакетный менеджер можно получить более подробную информацию, включая все графические файлы и тд

    Источник

    Файлы ярлыков приложений («.desktop») и их меню

    В Linux значки и описания программ (приложений) хранятся отдельно от исполняемых файлов. Для GUI-программ составляют «файлы рабочего стола» (desktop files), схожие по назначению с ярлыками в Windows. Более удобного имени нет, поэтому пусть и здесь будут ярлыками.

    Расширение — «.desktop»; имя любое. Формат ярлыков схож с форматом файлов «.ini» в Windows. То есть это структурированный текст, разделённый на группы; имя группы в квадратных скобках; в группах заданы строки-параметры вида «ключ=значение»; строка-комментарий начинается с #.

    Общие ярлыки приложений хранят в /usr/share/applications; свои — в

    /.local/share/applications. Для примера — сценарий оболочки и его ярлык.

    # Хранить следует здесь:

    # Сделать исполняемым: chmod u+x

    # Десять самых жадных до процессора процессов/потоков.

    # Процессы отсортированы по убыванию жадности.

    /usr/bin/watch -p -n 1 \

    «ps k -%cpu -eL -o pid,comm,%cpu | head»

    # Завершить — Ctrl C.

    # Общее название группы для всех файлов «.desktop».

    # Строка [Desktop Entry] — первая; прочие — в любом порядке.

    # Какой версии спецификации соответствует сам этот файл.

    # Свежая — 1.1. Не обязательно.

    # Кодировка самого файла. Обычно — UTF-8.

    # Списки есть, например, у iconv. Не обязательно (устарело).

    # Тип объекта: Application — приложение;

    # Directory — категория; Link — ссылка на ресурс Интернета.

    # «Категория» здесь — это заголовок подменю

    # в общем меню приложений. Здесь не переводится.

    # В значении может быть несколько частей,

    # их отделять символом ;.

    # И в конце строки рекомендуется поставить символ ;.

    # Если символ ; используется сам по себе — экранировать: \;.

    # Команда для запуска. Желательно указать полный путь.

    # Можно короткое имя, если программа доступна через $PATH.

    # Если нужно запустить с правами суперпользователя,

    # то нужно начинать команду, например, с gksudo -gk.

    # Понадобится установить программу gksudo или kdesudo.

    # Рабочий каталог. Не обязательно.

    # Нужно ли сначала открыть окно эмулятора терминала,

    # а потом запустить в нём значение Exec.

    # «Да» — true; «нет» — false. Обычно «нет».

    # Файл значка. Обычно указывают короткое имя без расширения.

    # Стандартные форматы файлов: PNG, SVG (SVGZ).

    # Значки обычно хранят в /usr/share/icons.

    # Нужно ли оповещать о запуске: помигать указателем мыши

    # или аплетом списка задач и тому подобное. Обычно «да».

    # Название ярлыка, видимое как подпись к значку или

    # как имя пункта в меню. Здесь на английском.

    Name=Top 10 greedy threads

    # Желательно перевести. Список условных обозначений

    # языков есть, например, у locale.

    Name[ru]=Десять самых жадных потоков

    # Описание, обычно видимое как всплывающая подсказка.

    Comment=Shows Top 10 cpu eating processes/threads

    Comment[ru]=Показывает 10 самых жрущих ЦПУ процессов/потоков

    # Не показывать в меню. Обычно «нет».

    # Файловые ассоциации, если есть, будут работать.

    # Не показывать в меню, убрать из файловых ассоциаций.

    # И вообще сделать вид, что приложения не существует.

    # Показывать только в указанной рабочей среде:

    # GNOME, KDE, Xfce, ещё какие-нибудь через ;.

    # Не показывать в указанных рабочих средах.

    # В файле должен быть только один из параметров:

    # либо OnlyShowIn, либо NotShowIn.

    Такие файлы можно помещать на Рабочий стол по необходимости: перетаскиванием; или же копированием/ссылкой файла в

    /Рабочий стол (англоязычный —

    /Desktop). Расположение каталога рабочего стола может быть указано в файле

    /.config/user-dirs.dirs. Его читает программа xdg-user-dirs-update, создавая указанные каталоги.

    Проверить синтаксическую корректность ярлыка можно программой desktop-file-validate.

    Если нужно на Рабочий стол добавить каталог, то может быть достаточно символьной ссылки. Или составить ярлык, где в Exec будет имя диспетчера файлов либо xdg-open, а потом аргумент — путь к каталогу:

    В среде GNOME разработчики пытаются запретить размещение файлов на Рабочем столе. Может понадобиться специальное расширение для GNOME Shell.

    Ярлык для адреса Интернета имеет другое значение Type и вместо ключа Exec содержит URL:

    Адрес будет открыт браузером по умолчанию. Если нужен другой браузер, следует сделать обычный ярлык с Type=Application, далее в Exec задать имя браузера с аргументом-URL.

    Есть сколько-то общепринятых категорий в спецификации к файлам меню: Audio, Education, Graphics, System и другие. Файлы категорий синтаксически аналогичны файлам ярлыков. Расширение — «.directory». Хранят их обычно в /usr/share/desktop-directories. Свои — в

    /.local/share/desktop-directories. Пример файла для категории «Система» (условное имя файла — system.directory). Не используйте его как есть.

    Comment=System tools and utilities

    Comment[ru]=Средства администрирования системы

    Графическая среда обычно автоматически при запуске каждого сеанса пересобирает меню из имеющихся ярлыков и категорий для каждого пользователя.

    Формат файлов меню — XML. Расширение — «.menu». Только пример, без пояснений. Не используйте его как есть.

    Проверить синтаксическую корректность меню можно программой xmllint. Все меню не проходят валидацию (не находится DTD), вероятно, из-за беспорядка на сайте FreeDesktop.org.

    Редакторы меню для GUI: KMenuEdit для KDE; LXMenuEditor (lxmed) для LXDE, требует Java; MenuLibre для GNOME, XFCE; Mozo для Mate.

    Свои меню хранят в

    /.config/menus. Точнее, в $XDG_CONFIG_DIRS/menus/$applications.menu. Здесь XDG_MENU_PREFIX — это «gnome-«, «kde-» и тому подобное.

    Своё меню вроде как должно перекрывать (заменять собой) автоматическое. Добавочные (не перекрывание, а слияние) меню хранят в $XDG_CONFIG_DIRS/menus/applications-merged/.

    Документация: ярлыки; меню. Для семейства программ xdg-* и desktop-* есть man-страницы. XDG (X Desktop Group) — старое название сообщества FreeDesktop.org.

    У Debian (и производных) есть своя система меню, отличающаяся от XDG. Эти меню применяют в разных небольших диспетчерах окон: awesome, fvwm, openbox и других. Документация — в пакете menu.

    Дубликаты не найдены

    GNU/Linux

    697 постов 13.1K подписчика

    Правила сообщества

    Все дистрибутивы хороши.

    Полезно. Много не знал.

    Добавлю от себя — не уверен что так везде, но у меня в дебиане на рабочем столе *.desktop файлы не функционируют если не давать им права на исполнение. (chmod +x *.desktop)

    помню удалил кнопку отвечающая за вызов меню завершения работы. Пришлось по инструкции делать свою )

    А просто восстоновить меню в редакторе не легче ли было .

    В среде GNOME разработчики пытаются запретить размещение файлов на Рабочем столе. Может понадобиться специальное расширение для GNOME Shell.

    Что б засрать рабстол ярлыками

    Ага, а нахрена он тогда еще нужен?

    Спасибо! Готовая справка по .desktop!

    Где ж ты был два дня назад?)

    Это как взять какую-нибудь книгу, открыть на середине и сделать пост этой страницы

    Спасибо @balaev84av, вроде и много времени прошло, а я нашёл в этой не большой статье ответ на свой вопрос, плюс чуть-чуть нового узнал.

    P.S. Ответ был в строке

    Тема Actions не раскрыта!

    [Desktop Action 10-NewWindow]

    Name=Open a New Window

    Name[ru]=Открыть в новом окне

    также не раскрыта тема с формированием gnome-control-centr меню и что локальные не работают.

    А и еще bamf соответствие и что такое параметр WMClass

    Ну и утилиты которыми собирать и проверять.

    т.к. не работают относительные пути в ярлыке .desktop XFCE (Xubuntu)

    для запуска портативных программ вместо такой строки:

    Иконка отображается только так:

    если картинку закинуть в /usr/share/picmaxs или $HOME/.local/share/picmax
    то картинка будет работать так Icon=doublecmd.png вроде можно даже без расширения

    если приложение надодится в env PATH то не надо указывать прямой путь для Exec=

    также можно положить его в $HOME/.local/bin/ и не надо также указывать прямой путь

    правда надо понимать что локальные файлы в приоритете над глобальными!

    у ярлыков еще есть мараметр обработки для всяких gnome-control-centr и вот эта дрянь работает только глобально

    Архивация и компрессия файлов. Часть 2

    Многие файлы содержат сколь-нибудь повторяющуюся, лишнюю информацию. Поэтому технически возможно преобразовывать её так, чтобы уменьшить общий размер. Это и есть компрЕссия (compression, «компрЕшэн»), или сжатие, данных.

    Сжатие не следует воспринимать как «удаление ненужных частей». Важно, чтобы восстановленный файл имел точно такое же содержимое, что исходный (совпадения размеров файлов — не достаточно).

    Есть много алгоритмов компрессии и много форматов сжатых файлов. В UNIX и Linux популярны форматы сжатия Bzip2, Gzip (традиционный), LZMA, XZ. Для примера — те же три файла:

    Компрессор gzip для формата Gzip обычно удаляет файл-операнд; иначе нужна опция -k (от keep):

    Шаблоны имён здесь раскрывает оболочка. Расширение имени здесь добавляется, а не заменяет исходное.

    Понятие «степень сжатия» (compression ratio) толкуется по-разному: 1) «какую долю от размера исходного файла составляет размер сжатого файла» либо 2) «какую долю удалось убрать». Обычно выражается в процентах.

    Выше видно, что нулевой файл имеет степень сжатия (1) в четыре процента (то есть сжат в 25 раз), случайный файл — 104% (то есть лучше было бы его вовсе не сжимать), текстовый файл — 32% (то есть примерно втрое уменьшился).

    Вот вывод компрессором информации об архиве, в том числе степени сжатия в смысле (2):

    $ gzip -l file3.txt.gz | column -t

    compressed uncompressed ratio uncompressed_name

    29806 102400 70.9% file3.txt

    В выводе не учтены внутренние вспомогательные данные формата, здесь — около 3 КиБ: 100 — 71 = 29; 32 — 29 = 3.

    Нередко алгоритм допускает несколько степеней сжатия. По умолчанию программа обычно выбирает нечто среднее. За более сильное сжатие (меньше размер) приходится платить увеличенными временем упаковки и расходом оперативной памяти. Нередко выигрыш в степени сжатия оказывается незначителен. Скорость распаковки остаётся прежней.

    file2.rnd: -0.0% — replaced with file2.rnd.gz

    file3.txt: 70.9% — replaced with file3.txt.gz

    В данном случае — никакой разницы.

    Опция -f — принудительное выполнение (от force), то есть здесь — заменить (replace) уже существующий сжатый файл новым. Опция —best — сжать наилучшим доступным алгоритмом (с параметрами, нацеленными на наиболее сильное сжатие).

    Можно попробовать другой компрессор/формат, например bzip2 (Bzip2, «.bz2»):

    $ bzip2 -k file3.txt

    Здесь есть небольшой выигрыш: 32 — 28 = 4.

    Нет простого способа узнать, насколько сильным будет сжатие. Тексты часто сжимаются со степенью (1) ниже 50%. Хуже всего сжимаются хаотичные (случайные, шум) данные.

    Для удобства можно считать, что для файлов средних размеров сжатие уместно, если степень (1) составляет 60% и ниже (то есть сэкономлено 40% места и больше). Если файл большой (1 ГиБ и выше), то даже небольшая экономия при сжатии может быть уместна. Уже сжатый файл обычно бесполезно сжимать ещё раз. Файлы размером ниже 3 КиБ сжимать тоже бесполезно.

    Для «декомпрессии» (распаковки, извлечения оригинала) сжатого файла часто есть не только опция компрессора, но и отдельная программа-распаковщик. Или сам компрессор может быть запущен под другим именем файла (например, с жёсткой ссылкой) для распаковки — это зависит от программиста.

    $ gzip -d -kf file2.rnd.gz

    $ gunzip -kf file2.rnd.gz

    Здесь или опция -d, или программа gunzip. Опции -k, -f — с прежним смыслом. Аналогично с BZip2:

    $ bzip2 -d -kf file3.txt.bz2

    $ bunzip2 -kf file3.txt.bz2

    $ diff -qs /bin/bunzip2 /bin/bzip2

    Файлы /bin/bunzip2 и /bin/bzip2 идентичны

    Чтобы задействовать содержимое оригинального (несжатого файла), обычно нужно явным способом распаковать сжатый. На это тратится процессорное время; в мобильном компьютере может быть повышенный расход заряда аккумулятора. Кроме того, степень сжатия непредсказуема или даже (1) выше 100%, поэтому при массовых правках файлов свободное место на диске может внезапно закончиться.

    Чтобы задействовать содержимое оригинального (несжатого файла), обычно нужно явным способом распаковать сжатый. На это тратится процессорное время; в мобильном компьютере может быть повышенный расход заряда аккумулятора. Кроме того, степень сжатия непредсказуема или даже (1) выше 100%, поэтому при массовых правках файлов свободное место на диске может внезапно закончиться.

    Есть несколько форматов файловых систем, где файлы сжимаются/распаковываются автоматически (говорят: «на лету» (on-the-fly) или «прозрачная (transparent) распаковка»).

    Есть аналоги привычных утилит с именами, начинающимися на bz (для BZip2), xz или z (GZip): bzcat, bzless, bzgrep и другие. Делают то же, что оригиналы, но со сжатыми файлами.

    Midnight Commander, подобные ему двухпанельные диспетчеры файлов, некоторые другие диспетчеры — могут открывать/распаковывать архивы/сжатые файлы. Иногда есть возможность имитировать монтирование архива как каталога (только на чтение, иногда ещё и на запись). В таких случаях программе может понадобиться предварительно распаковать файлы во временный каталог (обычно куда-то в /tmp/). Это заметно как зависание программы при работе с большим (несколько десятков МиБ и выше) архивом.

    В UNIX и Linux компрессия традиционно является операцией над одиночным файлом. То есть для компрессии каталога с содержимым — нужно сначала создать архив, а потом его сжимать (либо, реже, — сжать каждый файл, а потом заархивировать всё).

    Архиватор tar может задействовать какой-либо компрессор, если тот воспринимает просто имя файла как сигнал к сжатию либо воспринимает опцию -d как сигнал к распаковке (декомпрессии). Опции tar для внешних компрессоров: -z для gzip, -j для bzip2, -J для xz. Для остальных компрессоров — опция -I (заглавная i, после которой указать имя программы). Примеры:

    # Архив tar внутри сжатого файла Gzip одной командой.

    $ tar -cvz -f archive.tar.gz «old»

    $ du -s archive.tar.gz

    archive.tar.gz: gzip compressed data

    # Архив tar внутри сжатого файла Bzip2 одной командой.

    $ tar -cj -f archive.tar.bz2 «old»

    $ du -s archive.tar.bz2

    archive.tar.bz2: bzip2 compressed data, block size = 900k

    # Архив tar внутри сжатого файла LZMA одной командой.

    $ tar -c -I lzma -f archive.tar.lzma «old»

    $ du -s archive.tar.lzma

    archive.tar.lzma: LZMA compressed data, streamed

    Вместо множественных расширений вида «.tar.gz» могут попадаться одиночные: «.tgz», «.tbz», «.txz» и другие — по традиции или при необходимости соблюдать ограничения на длину имени. Устаревший компрессор — compress; расширение «.Z»; в tar есть опция -Z.

    # Примеры распаковки сжатых архивов одной командой:

    $ tar -xj -f archive.tar.bz2

    $ tar -x -I lzma -f archive.tar.lzma

    Чтобы изменить содержимое сжатого архива, программе приходится его предварительно распаковывать, а после внесения изменений — заново упаковывать обратно. Это затраты времени, оперативной памяти и, возможно, пространства на диске для временного хранения. Может оказаться удобнее — упаковать файлы в поддереве по отдельности, не создавая архива. У gzip/gunzip есть опция -r (от recursive). Для других программ можно задействовать find (и, если нужно, xargs).

    В семействе Windows привыкли воспринимать архивацию и компрессию как единую, неделимую операцию. Часто говорят «заархивировать» в смысле «получить сжатый архив»; «разархивировать» — «выполнить и декомпрессию, и извлечение из архива». Или: «упаковать» и «распаковать» файлы. И сжатые файлы называют «архивами». Для большинства пользователей важно именно сжатие данных, а архивация подразумевается сама собой.

    Популярные в Windows форматы сжатых файлов с возможностью хранения файлового поддерева (архива): ZIP, RAR. Соответственно программы: для командной строки — zip.exe, rar.exe; для GUI — WinZip, WinRAR. Диспетчер файлов системы Windows — Проводник (Explorer) может смонтировать архив ZIP как подкаталог там, где находится сам файл архива. Есть и другие программы, в том числе поддерживающие много форматов, например: 7-Zip, PeaZip (и вышеуказанные WinZip, WinRAR).

    Набор программ p7zip (в том числе 7z, 7za) является вариантом 7-Zip для командной строки UNIX и Linux. Формат 7z может давать более сильное сжатие, чем Gzip и Bzip2.

    В Linux может быть проблема с форматом ZIP для файловых имён, содержащих не-латиницу. У ZIP есть свой внутренний формат хранения имён. Если создать архив в Windows, а потом попытаться распаковать в Linux, имена превратятся в наборы кракозябров. В последнее время дистрибутивы обычно поставляют исправленные программы unzip и zip. Или придётся пробовать перекодировать имена программой iconv или convmv.

    Возможные (ненадёжно) варианты перекодировки имени (предполагаемый в примере файл сохранил расширение «.pdf» на латинице, поэтому файл можно как-то задействовать через шаблон оболочки):

    $ N=$(ls *.pdf | iconv -f cp1252 -t cp850 | iconv -f cp866)

    # Или другой вариант:

    $ N=$(ls *.pdf | iconv -t iso8859-1 | iconv -f cp866)

    # После каждого варианта просмотреть

    # содержимое переменной N для перекодированного имени.

    # И если имя выглядит разумно, то:

    Программы для Windows часто поставляются в виде особых архивов, в том числе формата Microsoft Cabinet («.cab»). Такие архивы по лицензионным соглашениям запрещено распаковывать вручную. Для Linux есть программа cabextract.

    Иногда в России встречаются старые форматы архивов с внутренней компрессией: ARJ, HA, LHA и другие. Для Linux могут найтись программы: arj, ha, unar. Иначе может понадобиться устанавливать FreeDOS/Wine или иную среду выполнения DOS/Windows-программ, а потом искать соответствующие декомпрессоры.

    В Windows нередко создают «самораспаковывающиеся» (self-extracting) архивы: это программа-распаковщик, к которой присоединён собственно архив. Как и обычная программа для Windows, имеют расширение «.exe». Предназначены для пользователей, у которых нет своей копии распаковщика. Иногда такой архив можно распаковать и в Linux (зависит от формата архива и наличия программ, например 7-zip). Нежелательны к применению, потому что могут содержать программы-вирусы. Не следует запускать напрямую, а лучше — открыть отдельным распаковщиком. В Linux иногда делают сценарии оболочки, состоящие из команды на распаковку и присоединённого к сценарию архива; программы: makeself, shar (sharutils).

    В некоторых форматах архивов и/или сжатых файлов предусмотрено шифрование с паролем: 7z, RAR, ZIP и другие.

    Компрессия данных может встретиться и на системном уровне. Например, в некоторых файловых системах нулевые фрагменты (пустые блоки) внутри файлов не хранятся и не копируются (это называется «разреженные файлы», sparse files).

    Программы для GUI: Archive Manager (File Roller) для GNOME, Ark для KDE, Engrampa для MATE, PeaZip, Xarchiver. Они отображают содержимое архивов, подобно тому как диспетчеры файлов отображают содержимое каталогов; предоставляют меню команд создания/распаковки архивов. Но сами не содержат программного кода архиваторов/компрессоров, поэтому требуют установки библиотек (libarchive, liblzma, unrar и других) и самих архиваторов/компрессоров для командной строки.

    В файлах мультимедиа (изображения, звук, видео) часто применяют алгоритмы «несимметричного» сжатия, то есть с частичной потерей информации. Это позволяет сжать данные ещё сильнее (в десятки или больше раз). Некоторые потери в деталях изображений или в звуковых волнах уместны, если средний человек эти оттенки/детали/шумы и прочее не различает. Такие алгоритмы обычно имеют широкий набор настроек, поэтому нужно следить за тем, чтобы качество мультимедиа не стало плохим, явно заметным.

    Архивация и компрессия файлов. Часть 1

    (НЕ является руководством по резервному копированию. Во второй части используется тот же тестовый каталог с теми же файлами.)

    «АрхИв» (archive, «Акайв») в компьютерном смысле — набор файлов, подготовленный для длительного хранения. Предполагается, что файлами из архива какое-то время не будут пользоваться — подобно тому, как лишние вещи складывают в коробку и убирают в кладовку или ещё куда-то.

    Цели архивАции файлов: иметь запасные копии; переслать несколько файлов/каталогов одной операцией; если нужно/возможно — сэкономить/высвободить место на диске. Для экономии места лишние файлы удаляют или «сжимают» (синонимы: «упаковывают», «подвергают компрессии»).

    Форматы архивов по сути — контейнеры: содержат «слепок» (snapshot) или «образ» (image) некоторой части дерева файловой системы или всего дерева (или даже больше). Важно, чтобы из архива можно было «разархивИровать» (извлечь) не только содержимое файлов, но и их имена/пути, даты, права и остальные нужные метаданные.

    Традиционные и/или стандартные сейчас либо ранее (в POSIX) программы-архиваторы: cpio, pax, tar. Менее известные: dar, star.

    Наиболее популярна — tar. Имя означает «tape archiver». Слово «tape» означает здесь — «[магнитная] лента». Устройства хранения на кассетах с магнитными лентами есть и сейчас, в основном в крупных организациях. Такое устройство называют «стрИмером» (streamer), а кассету — «кАртриджем» (cartridge). В отличие от магнитного диска, для операций чтения/записи ленту нужно перематывать; и создавать на ленте полноценную файловую систему (форматировать) обычно нецелесообразно. Поэтому здесь не достаточно простого копирования, а нужен формат-контейнер, файл которого пишется в символьный файл-устройство стримера сплошным потоком, хотя и условно разделён на блоки.

    Примеры действий с архивами tar:

    # Создать тестовый каталог с содержимым.

    $ fallocate -l 100KiB works/old/file1.000

    # Файл из случайно сгенерированных байтов.

    $ dd if=/dev/urandom bs=1k count=100 of=works/old/file2.rnd

    # Текстовый файл. Аргумент iflag=fullblock нужен,

    # чтобы dd дождалась достаточного объёма данных от col,

    # не завершаясь раньше этого.

    $ man bash | col -b \

    | dd bs=1k count=100 iflag=fullblock \

    # Вот итоговый вид поддерева works от программы tree.

    # (Она не стандартная, устанавливают отдельно.)

    (Редактор постов, как обычно, съел несколько пробелов, поэтому вместо них — звёздочки. Должно быть, разработчик редактора — любитель Пакмана.)

    Предполагается заархивировать старые файлы, т. е. в old/.

    -c — создать архив;

    -v — выводить список обрабатываемых файлов;

    -f — архив не на ленте, а в указанном файле.

    Всё остальное — архивируемые файлы/каталоги; для архивации поддерева будет достаточным указать только родительский каталог.

    # Кавычки — просто выделение того, что именно идёт в архив.

    $ tar -c -v -f archive.tar «old»

    # Посмотреть свойства архива:

    archive.tar: POSIX tar archive (GNU)

    # Содержимое (список файлов).

    $ tar -t -f archive.tar

    $ du -k archive.tar

    # Освободить место, занятое старыми файлами.

    # Извлечь содержимое архива.

    # Сам архив останется прежним.

    # Однобуквенные опции можно набрать слитно с общим дефисом.

    $ tar -xvf archive.tar

    Опция -x — извлечь (скопировать) файлы из архива. Буква x — от extract. Если нужны только некоторые файлы, укажите их пути точно в том виде, в каком они записаны в архиве. В командном выражении пути файлов, извлекаемых из архива, указывают там, где при создании архива были указаны файлы, идущие в архив (то есть в конце).

    Можно попробовать указать шаблоны имён с символами * и ?, но дополнительно нужна опция —wildcards, например:

    $ tar -xv —wildcards -f archive.tar ‘*file. ‘

    Файлы извлекаются вместе с путями, так что каталог old со всем содержимым мог быть восстановлен в любом другом подходящем рабочем каталоге.

    Архив можно пополнить. Пополнение архивов бывает «добавлением» (append) или «обновлением» (update).

    Если нужно добавить какие-то ещё файлы — опция -r вместо -c; и опять указать пути к файлам в конце командного выражения.

    Если в том же каталоге появились новые файлы или поправлены старые, то это обновление (замена старых файлов на новые); вместо опции -c указать -u. Программа tar сама обнаружит и добавит в архив новые/исправленные файлы.

    $ mv today/file3.txt old/

    $ tar -uvf archive.tar «old»

    $ tar -tf archive.tar

    Опция —delete — удалить файлы из архива (только если архив не на ленте):

    # Всё равно этот файл состоял только из нулей.

    # Здесь путь к файлу не выводится.

    $ tar —delete -v -f archive.tar «old/file1.000»

    $ tar -tf archive.tar

    В архивах tar можно хранить несколько файлов с одинаковым путём. Выполняется повторными действиями добавления и обновления. В списке по -t очередь идёт снизу вверх, то есть сверху — архивированные последними. Опция —occurence=3 — выполнить действие над третьим по очереди добавления файлом из тех, что с одинаковым путём (нумерация начинается с единицы).

    И ещё много разных опций, например:

    -k — не извлекать файлы, если они уже есть в целевом каталоге;

    —keep-newer-files — почти то же, но с уточнением, если уже имеющиеся в целевом каталоге файлы — более новые (по метаданным даты и времени), чем в архиве;

    -p — метаданные о правах на файлы тоже восстанавливать из архива при извлечении;

    —same-owner — восстанавливать имя владельца и группы;

    -w — просить подтверждения на каждое действие.

    Документация: man tar, info tar.

    Благодаря сохранению метаданных, архиваторы иногда применяют для аккуратного копирования по конвейеру, например:

    $ find . -depth -print0 | cpio —null -pvd ../old

    Программа find часто служит генератором списка имён для архивации или иных массовых действий над файлами. Архиватор cpio всегда требует перенаправления: или |. Опции -print0 и —null — для корректной обработки путей, содержащих кириллицу, пробелы и иные символы за пределами правила «8.3» и подобных ему ограничений.

    Следите за тем, чтобы правильно строить пути (чтобы, например, не получилось в итоге works/old/today/file3.txt вместо works/old/file3.txt). Для начала стоит запустить только find.

    Формат tar имеет проблемы с хранением специальных файлов, со скоростью поиска файла в архиве, с хранением некоторых метаданных. Если это критично, то следует применять архиватор dar.

    Шрифты в Linux

    (НЕ является инструкцией по руссификации интерфейса.)

    Что такое шрифт

    Файл шрифта (font file) содержит наборы изображений (рисунков) символов и соответствующие символам коды. Технически шрифты могут быть растровыми (bitmap fonts) или векторными (outline/vector fonts).

    Растровые шрифты обычно применяют для текстового интерфейса. Рисунок символа (глиф) здесь — прямоугольный набор точек. Например, если размер текстового экрана 640×480 пикселов, а терминал настроен в режиме 80×30 (80 символов в 30 строках), то подойдёт шрифт, в котором ширина глифа — 8 пикселов, а высота — 16 (16×8).

    Пример того, как может выглядеть буква А в растровом шрифте с глифами размером 16×8 точек. Пустые/фоновые пикселы показаны символом

    Пустое место сверху можно оставить, чтобы строки не сливались, снизу — чтобы уместить, например, буквы р или у.

    Отрисовка растровых глифов на экране — относительно простая операция отображения уже готовых наборов точек на пикселы дисплея. Но растровые шрифты обычно содержат глифы только одного размера. В GUI нередко требуется отрисовывать символы разных размеров (разного кегля) одновременно, поэтому применяют векторные шрифты. Как и прочие векторные изображения, глифы таких шрифтов содержат наборы параметров для математических фигур; при использовании шрифта программа «растеризУет» глифы (создаёт набор точек). Готовые растеризованные глифы называют «кэшем шрифта» (font cache).

    Высоту заглавных символов называют «кеглем» (font size). Есть несколько шкал кегля; можно условно считать, что одна единица высоты примерно равна 0,3-0,4 мм. Например, «сделать двенадцатым кеглем» означает, что высота заглавных символов будет примерно 3,6-4,8 мм; «шрифт высотой десять» — 3-4 мм. Предполагается, что на разных мониторах растровые шрифты одинакового размера (в текстовом интерфейсе) выглядят различно; но векторные шрифты одного кегля (в GUI) должны выглядеть одинаково.

    На не очень новых мониторах с разрешением около 100 dpi кегль 5 и ниже — неразборчиво мал; для виджетов обычно выбирают кегль 10 или 12.

    Шрифты бывают моноширинными (monospace) и пропорциональными (proportional или не указано). «Моноширинный» означает, что все глифы одинаковой ширины, занимают одинаковое место по горизонтали; хотя между соседними символами в линии может быть видно немного свободного пространства (не пробелы), но сдвинуть символы поближе друг к другу не получится. Текстовый интерфейс — традиционно моноширинный. То есть, например, 80 символов в линии (видимой строке); символы выровнены по вертикали (строго друг над другом). В пропорциональном шрифте, например, символы Щ и Л — разной ширины; в линиях одного виджета (например, текстовой области) может умещаться разное число символов.

    Основную графическую идею (стиль) шрифта называют «гарнитУрой» (typeface, или font face). Символы одной гарнитуры схожи примерно так же, как инструменты из одного набора или предметы посуды из одного сервиза.

    Есть несколько классификаций гарнитур. В простых случаях выделяют «рубленые» шрифты (без засечек, sans serif) — обычно для заголовков или надписей; и шрифты «с засечками» (serif) — обычно для основного текста. ЗасЕчка — небольшой декоративный поперечный штрих на конце черты некоторого символа. «Декоративные» шрифты (в названии может быть script) — имитация письма от руки. Есть шрифты, состоящие разных вспомогательных символов (symbols, dingbats), например, шахматных фигур, маркеров или орнаментов.

    Внутри гарнитуры могут быть дополнительные стили — «начертания» (slants); обычно это нормальное начертание (Medium, Normal, Regular или Roman), курсИв[ное] (Italic, или Oblique), жирное/полужирное (Bold/Semibold). Начертания хранят в отдельных файлах; некоторые графические редакторы или офисные текстовые процессоры могут имитировать начертания, имея лишь один файл с нормальным начертанием.

    Шрифты в текстовой консоли

    Формат файлов шрифтов для текстового режима Linux — PC Screen Font («.psf» или «.psfu»). Здесь u означает Unicode. (Раньше для русского языка были кодировки KOI-8R и CP1251.) Документация по PC Screen Font есть в пакете kbd (/usr/share/doc/kbd/).

    Сами файлы шрифтов обычно хранят в /usr/share/consolefonts, /usr/share/syscons/fonts/, /usr/share/kbd/consolefonts или в /usr/share/fonts. Обычно файлы дополнительно сжаты gzip. Размер — несколько КиБ. Файлы, включающие и глифы кириллицы, обычно имеют в имени Cyrillic или сокращённо cyr.

    Традиционный шрифт — VGA или Fixed, более новый и приятный для глаз — Terminus. Пример файла шрифта гарнитуры Fixed:

    $ file -z CyrSlav-Fixed16.psf.gz

    CyrSlav-Fixed16.psf.gz: Linux/i386 PC Screen Font v1 data, 256 characters, Unicode directory, 8×16 (gzip compressed data, last modified: Wed Feb 1 12:35:37 2017, max compression, from Unix)

    В настоящее время текстовая консоль Linux может использовать шрифты в кодировке Unicode (по умолчанию — кодировка CP437 и встроенный в ядро шрифт). В шрифте допустимо 512 глифов; возможно отображение 8 цветов. Или 256 глифов, но 16 цветов. Показать набор символов текущего шрифта (выполнять в текстовой консоли, не в эмуляторе терминала):

    Для правильного соответствия глифов кодам Unicode — нужна вспомогательная таблица (translation map, unimap), которая раньше хранилась в отдельном файле, а сейчас может входить в основной файл шрифта (обычно, но не обязательно, с расширением «.psfu»). Таблицы unimaps («.acm» или «.acm.gz») хранят в /usr/share/consoletrans/, /usr/share/unimaps или /usr/share/syscons/scrnmaps/. Программа psfgettable служит для копирования таблицы unimap из шрифта; psfaddtable — для добавления.

    Вспомогательные программы для правки шрифтов: nafe ( https://sourceforge.net/projects/nafe/ ), psftools ( https://tset.de/psftools/index.html ), rw-psf ( https://github.com/talamus/rw-psf ). Они конвертируют символы в ascii-art (вроде вышеуказанного примера буквы А) или растровые изображения. После правки в текстовом или графическом редакторе можно конвертировать файл обратно в шрифт.

    Настройки применения шрифта — файл /etc/default/console-setup или

    Применить настройки на текущей консоли:

    Пакеты программ: kbd, console-setup. Документация: man-страницы console-setup, setfont, setupcon. В инсталляциях с systemd может быть файл настроек /etc/vconsole.conf и сервис systemd-vconsole-setup.service. Документация: man-страницы systemd-vconsole-setup.service, vconsole.conf.

    Шрифты в графической консоли

    Форматы шрифтов для GUI:

    Portable Compiled Font (PCF, «.pcf» или сжатый «.pcf.gz»), растровый;

    Bitmap Distribution Format (BDF, «.bdf» или сжатый «.bdf.gz»), растровый;

    TrueType Font (TTF, «.ttf»), векторный;

    OpenType Font (OTF, «.otf»), векторный;

    Type 1 PostScript font ASCII (PFA, «.pfa»), векторный;

    Type 1 PostScript font binary (PFB, «.pfb»), векторный;

    и ещё несколько более редких.

    Наиболее популярные форматы: TTF, OTF (и их контейнер для веб-страниц — Web Open Font Format, «.woff»/».woff2″).

    Размеры файлов — от сотен КиБ до нескольких МиБ или ещё больше; зависит от количества символов (которых могут быть тысячи). Обычно файлы, содержащие латиницу и кириллицу, специально не помечаются. Файлы, содержащие символы восточных языков, содержат в имени указание на язык, например: arabic, thai.

    NotoSans-Regular.ttf: TrueType font data

    $ ls -ks NotoSans-Regular.ttf

    Графическая подсистема X Window System задействует шрифты сама или через библиотеки. X-программа (клиент сервера X Window) может запросить отрисовку шрифта по записи формата X Logical Font Description (XLFD). Запись состоит из 14 полей через дефисы. Пример:

    Здесь cronyx — семейство шрифтов, times — гарнитура, medium и i (italic) — начертания, 14 — кегль, 100 — предполагаемые разрешения дисплея по горизонтали и вертикали, iso10646 и следующее поле — кодировка. Остальные поля менее важны; звёздочка является метасимволом и предлагает программе самой выбрать значение поля.

    Значения можно подбирать GUI-программой xfontsel. Кнопка select копирует запись в буфер X, откуда её можно вставить в редактор средней кнопкой мыши (колёсиком).

    Посмотреть список доступных серверу шрифтов — xlsfonts.

    Посмотреть таблицу глифов — xfd (или вообще указать некоторой X-программе использовать заданный шрифт опцией -fn):

    $ xfd -fn ‘-cronyx-times-medium-i-*-*-14-*-100-100-*-*-iso10646-1’

    Кодировка iso10646 — одно из названий Unicode. Поддержка Unicode в самой X Window System работает плохо, поэтому сейчас юникодные шрифты обрабатываются отдельными библиотеками. Но желательно иметь хоть какой-то шрифт в одной из кодировок семейства iso8859 или иной — просто для начального запуска сервера X Window.

    Настройки применения шрифтов в общем файле /etc/X11/xorg.conf:

    # Прочие параметры этой секции.

    В указанных каталогах следует запустить программы mkfontscale и mkfontdir. В результате должны появиться файлы encodings.dir, fonts.alias, fonts.dir.

    Шрифт можно подключить временно, вручную:

    xset +fp /usr/share/fonts/X11/misc

    # Перечитать списки шрифтов.

    Вспомогательная шрифтовая библиотека для GUI — Fontconfig. Она ведёт каталоги установленных в системе шрифтов и предоставляет программам шрифты, подходящие по требованиям. Библиотека Fontconfig сама не занимается растеризацией шрифтов.

    К библиотеке прилагается семейство программ fc-*, в том числе:

    fc-cache — создать/пересоздать кэш шрифтов;

    fc-list — показать список установленных в системе шрифтов (выводится много информации, в том числе поддерживаемые языки). Возможно задать условие, например (вывод сокращён):

    # Показать установленные шрифты, имеющие символы русской кириллицы.

    DejaVu Sans,DejaVu Sans Light

    Nimbus Roman No9 L

    fc-validate — узнать, есть ли в шрифте символы алфавита для заданного языка, например:

    $ fc-validate -l ru NotoSans-Regular.ttf

    NotoSans-Regular.ttf:0 Satisfy the coverage for ru language

    $ fc-validate -l en NotoSans-Regular.ttf

    NotoSans-Regular.ttf:0 Satisfy the coverage for en language

    $ fc-validate -l ru NotoKufiArabic-Regular.ttf

    NotoKufiArabic-Regular.ttf:0 Missing 66 glyph(s) to satisfy the coverage for ru language

    $ fc-validate -l en NotoKufiArabic-Regular.ttf

    NotoKufiArabic-Regular.ttf:0 Missing 72 glyph(s) to satisfy the coverage for en language

    $ fc-validate -l ar NotoKufiArabic-Regular.ttf

    NotoKufiArabic-Regular.ttf:0 Satisfy the coverage for ar language

    То есть в основном файле есть символы для русского, английского языков; в файле для арабского языка есть только арабица.

    Документация: man-страницы; HTML-документация в /usr/share/doc/fontconfig. Обозначения языков — по RFC-3066/ISO 639.

    Основной XML-файл настроек Fontconfig — /etc/fonts/fonts.conf. Документация: man fonts-conf. Там же указаны имена других файлов, например пользовательский

    Каталоги для хранения шрифтов: общий /usr/share/fonts/, пользовательский

    /.fonts/). В fonts.conf можно указать другие.

    Желательно иметь в GUI: пропорциональные шрифты с засечками и без них (для большинства виджетов), моноширинный шрифт (для эмулятора терминала), шрифт со вспомогательными символами (для офисного текстового процессора).

    Семейства свободно доступных шрифтов, которые считают приятными для глаз: Cantarell, Droid, Noto, Ubuntu. Шрифты со вспомогательными символами: OpenSymbol, Symbola; или Dingbats и Wingdings из Windows.

    Для установки шрифта, поддерживаемого Fontconfig, нужно скопировать его файлы в один из каталогов хранения (можно во вложенный каталог). Желательно правильно установить целевые права, например 444 для файлов и 555 для каталогов. Потом запустить fc-cache (может сработать автоматически).

    Офисные документы, электронные книги и другие файлы документов/изображений нередко могут хранить внутри себя сами файлы шрифтов (полностью или частично), но часто — содержат только что-то вроде ссылки на имя шрифта. Если скопировать файл документа/изображения на другой компьютер, где нет подходящего шрифта — программа либо покажет пустые/неверные глифы, либо попробует (зависит от программистов) «подставить» хоть какой-то подходящий шрифт (substitute a font). Даже при подстановке вид документа/изображения может быть испорчен из-за того, что размеры глифов в разных шрифтах не совпадают.

    Для офисных документов популярны семейства шрифты из Windows: Arial, Courier New, Times и другие (форматы TTF, OTF).

    Их можно скопировать из инсталляции Windows (каталог Windows\Fonts\).

    В дистрибутивах могут быть пакеты, копирующие файлы шрифтов из Интернета. Помещать сами эти шрифты в пакет запрещено лицензионным соглашением.

    Можно скопировать их из Интернета самостоятельно и распаковать программой cabextract. Ищите в репозиториях сервиса SourceForge.net по выражению «Microsoft core fonts».

    Для подстановки можно применять шрифты семейства Liberation (соответственно Sans, Mono, Serif). Они, насколько возможно, «метрически совместимы» (metrically compatible) со шрифтами из Windows, то есть глифы сходных размеров. Другие метрически совместимые шрифты:

    семейство Croscore (соответственно Arimo, Cousine, Tinos);

    [Astra] Sans, [Astra] Serif и Mono от фирмы Paratype;

    семейство XO Fonts (Oriel, Courser, Thames, символьные шрифты Symbol и Windy).

    В графической подсистеме X Window System растеризацией занимается своя библиотека Xft. В последние годы операции растеризации передаются внешним библиотекам: Cairo, FreeType, Pango. Графическая подсистема Wayland сама никак не взаимодействует со шрифтами, все программы обращаются к внешним библиотекам.

    Растеризованные глифы малого кегля могут выглядеть грубо/нечётко. Чтобы улучшить вид, применяют методы отрисовки под общим названием «сглаживание» (anti-aliasing). Иногда сглаженные глифы выглядит отчасти цветными из-за «субпиксельного рендеринга» — то есть дорисованные пикселы не чёрные или серые, а других цветов. Эффект зависит от порядка расположения цветных элементов (субпикселов) в пикселах.

    В шрифтах TrueType могут быть дополнительные встроенные данные (hints) по отрисовке; их применение называется «хИнтинг» (hinting). В библиотеке FreeType наилучший алгоритм отрисовки (TrueType Bytecode Interpreter) был запрещён патентами примерно до 2010 года/версии 2.4.

    Источник

    Читайте также:  Текущая кодовая страница windows
  • Оцените статью