Spec-Zone.ru › Matplotlib 1.5

mathtext

Inheritance diagram of matplotlib.mathtext

matplotlib.mathtext

mathtext — модуль для разбора подмножества синтаксиса TeX для математических выражений и их отрисовки с помощью бэкенда matplotlib.

Для ознакомления с его использованием см. Написание математических выражений. Данный документ в основном посвящен деталям реализации.

Модуль использует pyparsing для разбора выражений TeX.

Поддерживаются шрифты Bakoma Distribution TeX Computer Modern и STIX. Существует экспериментальная поддержка использования произвольных шрифтов, но результаты могут отличаться без соответствующей настройки и метрик для этих шрифтов.

class matplotlib.mathtext.Accent(c, state)

Bases: matplotlib.mathtext.Char

Метрики шрифта для акцентов нужно обрабатывать по-другому, так как они уже корректно смещены от базовой линии в шрифтах TrueType.

grow()
render(x, y)

Отрисовка символа на холсте.

shrink()
class matplotlib.mathtext.AutoHeightChar(c, height, depth, state, always=False, factor=None)

Bases: matplotlib.mathtext.Hlist

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

class matplotlib.mathtext.AutoWidthChar(c, width, state, always=False, char_class=)

Bases: matplotlib.mathtext.Hlist

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

class matplotlib.mathtext.BakomaFonts(*args, **kwargs)

Bases: matplotlib.mathtext.TruetypeFonts

Используйте шрифты Bakoma TrueType для рендеринга.

Символы распределены по нескольким файлам шрифтов, каждый из которых имеет собственное кодирование.

alias = '\\]'
get_sized_alternatives_for_symbol(fontname, sym)
target = ']'
class matplotlib.mathtext.Box(width, height, depth)

Основы: matplotlib.mathtext.Node

Представляет любой узел с физическим расположением.

grow()
render(x1, y1, x2, y2)
shrink()
class matplotlib.mathtext.Char(c, state)

Основы: matplotlib.mathtext.Node

Представляет отдельный символ. В отличие от TeX, информация о шрифте и метрики хранятся с каждым Char, чтобы упростить поиск метрик шрифта при необходимости. Обратите внимание, что TeX-блоки имеют ширину, высоту и глубину, в отличие от Type1 и Truetype, которые используют полную ограничивающую рамку и продвижение в направлении X. Метрики должны быть преобразованы в формат TeX, а продвижение (если оно отличается от ширины) должно быть преобразовано в узел Kern, когда Char добавляется к своему родительскому узлу Hlist.

get_kerning(next)

Возвращает величину кернинга между этим и заданным символом. Вызывается, когда символы объединяются в Hlist для создания узлов Kern.

grow()
is_slanted()
render(x, y)

Отображение символа на холсте

shrink()
matplotlib.mathtext.Error(msg)

Вспомогательный класс для поднятия ошибок парсера.

class matplotlib.mathtext.Fil

Основы: matplotlib.mathtext.Glue

class matplotlib.mathtext.Fill

Основы: matplotlib.mathtext.Glue

class matplotlib.mathtext.Filll

Основы: matplotlib.mathtext.Glue

class matplotlib.mathtext.Fonts(default_font_prop, mathtext_backend)

Основы: object

Абстрактный базовый класс системы шрифтов для использования в mathtext.

Класс должен уметь принимать ключи символов и имена файлов шрифтов и возвращать метрики символов. Он также делегирует задачу фактического отрисовки классу бэкенда.

default_font_prop: Объект FontProperties для использования по умолчанию для не-математического шрифта или базового шрифта для рендеринга шрифтов Unicode (универсальный).

mathtext_backend: Подкласс MathTextBackend для делегирования фактического рендеринга.

destroy()

Исправить циклические ссылки перед уничтожением объекта.

get_kern(font1, fontclass1, sym1, fontsize1, font2, fontclass2, sym2, fontsize2, dpi)

Получить расстояние кернинга для шрифта между sym1 и sym2.

fontX: одно из имен шрифтов TeX:

tt, it, rm, cal, sf, bf or default/regular (non-math)

fontclassX: TODO

symX: символ в сыром формате TeX. Например, ‘1’, ‘x’ или ‘sigma’

fontsizeX: размер шрифта в пунктах

dpi: текущее количество точек на дюйм

get_metrics(font, font_class, sym, fontsize, dpi)

font: одно из имен шрифтов TeX:

tt, it, rm, cal, sf, bf or default/regular (non-math)

font_class: TODO

sym: символ в сыром формате TeX. Например, ‘1’, ‘x’ или ‘sigma’

fontsize: размер шрифта в пунктах

dpi: текущее количество точек на дюйм

Возвращает объект со следующими атрибутами:

  • advance: Расстояние продвижения (в пунктах) глифа.
  • height: Высота глифа в пунктах.
  • width: Ширина глифа в пунктах.
  • xmin, xmax, ymin, ymax - прямоугольник чернил глифа
  • iceberg - расстояние от базовой линии до верхней точки глифа. Это соответствует определению «высоты» в TeX.
get_results(box)

Получить данные, необходимые бэкенду для отрисовки математического выражения. Значение возврата зависит от бэкенда.

get_sized_alternatives_for_symbol(fontname, sym)

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

get_underline_thickness(font, fontsize, dpi)

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

get_used_characters()

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

get_xheight(font, fontsize, dpi)

Получить x-высоту для заданного font и fontsize.

render_glyph(ox, oy, facename, font_class, sym, fontsize, dpi)

Отрисовать глиф в

  • ox, oy: положение
  • facename: Одно из имен шрифтов TeX
  • font_class:
  • sym: имя символа TeX или отдельный символ
  • fontsize: размер шрифта в пунктах
  • dpi: DPI для отрисовки.
render_rect_filled(x1, y1, x2, y2)

Отрисовать заполненный прямоугольник от (x1, y1) до (x2, y2).

set_canvas_size(w, h, d)

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

class matplotlib.mathtext.Glue(glue_type, copy=False)

Основы: matplotlib.mathtext.Node

Большая часть информации в этом объекте хранится в базовом классе GlueSpec, который используется несколькими объектами glue. (Это оптимизация памяти, которая, вероятно, больше не важна, но проще придерживаться того, что делает TeX.)

grow()
shrink()
class matplotlib.mathtext.GlueSpec(width=0.0, stretch=0.0, stretch_order=0, shrink=0.0, shrink_order=0)

Основы: object

См. Glue.

copy()
classmethod factory(glue_type)
class matplotlib.mathtext.HCentered(elements)

Основы: matplotlib.mathtext.Hlist

Удобный класс для создания Hlist, содержимое которого центрируется в его ограничивающем блоке.

class matplotlib.mathtext.Hbox(width)

Основы: matplotlib.mathtext.Box

Блок только с шириной (ноль высоты и глубины).

class matplotlib.mathtext.Hlist(elements, w=0.0, m='additional', do_kern=True)

Базовое класс: matplotlib.mathtext.List

Горизонтальный список блоков.

hpack(w=0.0, m='additional')

Основная задача hpack() — вычисление размеров результирующих блоков и корректировка отступов, если один из этих размеров задан заранее. Вычисленные размеры обычно охватывают весь материал внутри нового блока; но некоторые элементы могут выступать за пределы, если используется отрицательный отступ, если блок переполнен или если \vbox включает в себя другие блоки, смещенные влево.

  • w: задаёт ширину
  • m: либо ‘точно’, либо ‘дополнительно’.

Таким образом, hpack(w, 'exactly') создаёт блок с шириной ровно w, в то время как hpack(w, 'additional') создаёт блок с шириной, равной естественной ширине плюс w. По умолчанию создаётся блок с естественной шириной.

kern()

Вставка узлов Kern между узлами Char для установки кернинга. Узлы Char сами определяют необходимую величину кернинга (get_kerning()), а эта функция просто создаёт связанный список правильным образом.

class matplotlib.mathtext.Hrule(state, thickness=None)

Базовое класс: matplotlib.mathtext.Rule

Удобный класс для создания горизонтальной линии.

class matplotlib.mathtext.Kern(width)

Базовое класс: matplotlib.mathtext.Node

Узел Kern имеет поле ширины для задания (обычно отрицательной) величины отступа. Эта корректировка отступа появляется в горизонтальных списках между буквами, как A и V, когда дизайнер шрифтов решил, что выглядит лучше сдвинуть их ближе или дальше друг от друга. Узел кернинга также может появиться в вертикальном списке, когда его width обозначает дополнительный отступ в вертикальном направлении.

depth = 0
grow()
height = 0
shrink()
class matplotlib.mathtext.List(elements)

Базовое класс: matplotlib.mathtext.Box

Список узлов (горизонтальный или вертикальный).

grow()
shrink()
class matplotlib.mathtext.MathTextParser(output)

Базовое класс: object

Создаёт MathTextParser для заданного бэкенда output.

get_depth(texstr, dpi=120, fontsize=14)

Возвращает смещение базовой линии от нижней части изображения в пикселях.

texstr
Действительная строка mathtext, например, r’IQ: $sigma_i=15$’
dpi
Точки на дюйм для отрисовки текста
fontsize
Размер шрифта в пунктах
parse(s, dpi=72, prop=None)

Парсит данное математическое выражение s при заданном dpi. Если prop предоставлен, это объект FontProperties, определяющий «стандартный» шрифт для использования в математическом выражении, используемый для всего не-математического текста.

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

to_mask(texstr, dpi=120, fontsize=14)
texstr
Действительная строка mathtext, например, r’IQ: $sigma_i=15$’
dpi
Точки на дюйм для отрисовки текста
fontsize
Размер шрифта в пунктах

Возвращает кортеж (array, depth)

  • array — массив NxM uint8 альфа-убайтов маски растрового tex.
  • depth — смещение базовой линии от нижней части изображения в пикселях.
to_png(filename, texstr, color='black', dpi=120, fontsize=14)

Записывает выражение tex в файл PNG.

Возвращает смещение базовой линии от нижней части изображения в пикселях.

filename
Записываемый имя файла или файл-объект
texstr
Действительная строка mathtext, например, r’IQ: $sigma_i=15$’
color
Действительный аргумент цвета matplotlib
dpi
Точки на дюйм для отрисовки текста
fontsize
Размер шрифта в пунктах

Возвращает смещение базовой линии от нижней части изображения в пикселях.

to_rgba(texstr, color='black', dpi=120, fontsize=14)
texstr
Действительная строка mathtext, например, r’IQ: $sigma_i=15$’
color
Любой аргумент цвета matplotlib
dpi
Точки на дюйм для отрисовки текста
fontsize
Размер шрифта в пунктах

Возвращает кортеж (array, depth)

  • array — массив NxM uint8 альфа-убайтов маски растрового tex.
  • depth — смещение базовой линии от нижней части изображения в пикселях.
exception matplotlib.mathtext.MathTextWarning

Базовое класс: Warning

class matplotlib.mathtext.MathtextBackend

Базовое класс: object

Базовый класс для кода бэкенда mathtext. Подклассы MathtextBackend предназначены для взаимодействия между mathtext и конкретным графическим бэкендом matplotlib.

Подклассы должны переопределить следующее:

  • render_glyph()
  • render_rect_filled()
  • get_results()

И необязательно, если вам нужно использовать стиль кеглинга Freetype:

  • get_hinting_type()
get_hinting_type()

Получить тип кеглинга Freetype для использования с этим конкретным бэкендом.

get_results(box)

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

render_glyph(ox, oy, info)

Отрисуйте глиф, описанный info, в точку отсчёта (ox, oy).

render_rect_filled(x1, y1, x2, y2)

Отрисуйте заполненный чёрный прямоугольник от (x1, y1) до (x2, y2).

set_canvas_size(w, h, d)

Установите размеры холста для отрисовки.

class matplotlib.mathtext.MathtextBackendAgg

Базовое класс: matplotlib.mathtext.MathtextBackend

Отрисуйте глифы и прямоугольники в буфер FTImage, который затем передаётся в изображение Agg бэкендом Agg.

get_hinting_type()
get_results(box, used_characters)
render_glyph(ox, oy, info)
render_rect_filled(x1, y1, x2, y2)
set_canvas_size(w, h, d)
class matplotlib.mathtext.MathtextBackendBitmap

Базовое класс: matplotlib.mathtext.MathtextBackendAgg

get_results(box, used_characters)
END_OF_DOCUMENT_MARKER
class matplotlib.mathtext.MathtextBackendCairo

Основывается на: matplotlib.mathtext.MathtextBackend

Хранит информацию для отрисовки математического текста в бэкенде Cairo.

get_results(box, used_characters)
render_glyph(ox, oy, info)
render_rect_filled(x1, y1, x2, y2)
class matplotlib.mathtext.MathtextBackendPath

Основывается на: matplotlib.mathtext.MathtextBackend

Хранит информацию для отрисовки математического текста с использованием механизма путей текста.

get_results(box, used_characters)
render_glyph(ox, oy, info)
render_rect_filled(x1, y1, x2, y2)
class matplotlib.mathtext.MathtextBackendPdf

Основывается на: matplotlib.mathtext.MathtextBackend

Хранит информацию для отрисовки математического текста в бэкенде PDF.

get_results(box, used_characters)
render_glyph(ox, oy, info)
render_rect_filled(x1, y1, x2, y2)
class matplotlib.mathtext.MathtextBackendPs

Основывается на: matplotlib.mathtext.MathtextBackend

Хранит информацию для отрисовки математического текста в бэкенде PostScript.

get_results(box, used_characters)
render_glyph(ox, oy, info)
render_rect_filled(x1, y1, x2, y2)
class matplotlib.mathtext.MathtextBackendSvg

Основывается на: matplotlib.mathtext.MathtextBackend

Хранит информацию для отрисовки математического текста в бэкенде SVG.

get_results(box, used_characters)
render_glyph(ox, oy, info)
render_rect_filled(x1, y1, x2, y2)
class matplotlib.mathtext.NegFil

Основывается на: matplotlib.mathtext.Glue

class matplotlib.mathtext.NegFill

Основывается на: matplotlib.mathtext.Glue

class matplotlib.mathtext.NegFilll

Основывается на: matplotlib.mathtext.Glue

class matplotlib.mathtext.Node

Основывается на: object

Узел в модели TeX-ящика

get_kerning(next)
grow()

Увеличивает размер на один уровень. Нет ограничений на увеличение размера.

render(x, y)
shrink()

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

class matplotlib.mathtext.Parser

Основывается на: object

Это парсер, основанный на pyparsing, для математических выражений. Он фактически парсит полные строки, содержащие математические выражения, при этом обычный текст может также появляться вне пар математических выражений.

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

class State(font_output, font, font_class, fontsize, dpi)

Основывается на: object

Хранит состояние парсера.

Состояния добавляются и извлекаются из стека по мере необходимости, и «текущее» состояние всегда находится на вершине стека.

copy()
font
Parser.accent(s, loc, toks)
Parser.auto_delim(s, loc, toks)
Parser.binom(s, loc, toks)
Parser.c_over_c(s, loc, toks)
Parser.customspace(s, loc, toks)
Parser.end_group(s, loc, toks)
Parser.font(s, loc, toks)
Parser.frac(s, loc, toks)
Parser.function(s, loc, toks)
Parser.genfrac(s, loc, toks)
Parser.get_state()

Получить текущее состояние State парсера.

Parser.group(s, loc, toks)
Parser.is_dropsub(nucleus)
Parser.is_overunder(nucleus)
Parser.is_slanted(nucleus)
Parser.main(s, loc, toks)
Parser.math(s, loc, toks)
Parser.math_string(s, loc, toks)
Parser.non_math(s, loc, toks)
Parser.operatorname(s, loc, toks)
Parser.overline(s, loc, toks)
Parser.parse(s, fonts_object, fontsize, dpi)

Парсить выражение s, используя заданный fonts_object для вывода, при заданном fontsize и dpi.

Возвращает дерево разбора, состоящее из экземпляров Node.

Parser.pop_state()

Извлечь State из стека.

Parser.push_state()

Добавить новый State в стек, который представляет собой копию текущего состояния.

Parser.required_group(s, loc, toks)
Parser.simple_group(s, loc, toks)
Parser.snowflake(s, loc, toks)
Parser.space(s, loc, toks)
Parser.sqrt(s, loc, toks)
Parser.stackrel(s, loc, toks)
Parser.start_group(s, loc, toks)
Parser.subsuper(s, loc, toks)
Parser.symbol(s, loc, toks)
Parser.unknown_symbol(s, loc, toks)
class matplotlib.mathtext.Rule(width, height, depth, state)

Основывается на: matplotlib.mathtext.Box

Узел Rule представляет собой твёрдый чёрный прямоугольник; он имеет поля width, depth и height, как и в Hlist. Однако, если любой из этих размеров равен inf, фактическое значение будет определяться выполнением правила до границы самого внутреннего охватывающего ящика. Это называется «динамическим размером». Ширина никогда не является динамической в Hlist; высота и глубина никогда не являются динамическими в Vlist.

render(x, y, w, h)
END_OF_DOCUMENT_MARKER
class matplotlib.mathtext.Ship

Базы: object

После настройки ящиков, это отправляет их на вывод. Так как ящики могут быть внутри ящиков внутри ящиков, основная работа Ship выполняется двумя взаимно рекурсивными процедурами, hlist_out() и vlist_out(), которые обходят узлы Hlist и узлы Vlist внутри горизонтальных и вертикальных ящиков. Глобальные переменные, используемые в TeX для хранения состояния во время обработки, здесь стали переменными-членами.

static clamp(value)
hlist_out(box)
vlist_out(box)
class matplotlib.mathtext.SsGlue

Базы: matplotlib.mathtext.Glue

class matplotlib.mathtext.StandardPsFonts(default_font_prop)

Базы: matplotlib.mathtext.Fonts

Используйте стандартные шрифты PostScript для отрисовки в backend_ps

В отличие от других классов шрифтов, BakomaFont и UnicodeFont, этот требует Ps backend.

basepath = '/home/tcaswell/.virtualenvs/dd35/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/afm'
fontmap = {'tt': 'pcrr8a', 'sf': 'phvr8a', 'cal': 'pzcmi8a', 'rm': 'pncr8a', None: 'psyr', 'it': 'pncri8a', 'bf': 'pncb8a'}
get_kern(font1, fontclass1, sym1, fontsize1, font2, fontclass2, sym2, fontsize2, dpi)
get_underline_thickness(font, fontsize, dpi)
get_xheight(font, fontsize, dpi)
class matplotlib.mathtext.StixFonts(*args, **kwargs)

Базы: matplotlib.mathtext.UnicodeFonts

Класс обработки шрифтов для шрифтов STIX.

В дополнение к тому, что предоставляет UnicodeFonts, этот класс:

  • поддерживает «виртуальные шрифты», которые представляют собой полные наборы символов от A до Z с различными стилями шрифтов в специальных кодовых точках Unicode, таких как «Черный».
  • обрабатывает альтернативные символы размером для шрифтов STIXSizeX.
cm_fallback = False
get_sized_alternatives_for_symbol(fontname, sym)
use_cmex = False
class matplotlib.mathtext.StixSansFonts(*args, **kwargs)

Базы: matplotlib.mathtext.StixFonts

Класс обработки шрифтов для шрифтов STIX (по умолчанию использует шрифты без засечек).

class matplotlib.mathtext.SubSuperCluster

Базы: matplotlib.mathtext.Hlist

SubSuperCluster — своего рода обходной путь, чтобы обойти тот факт, что этот код выполняет двухэтапный анализ, как TeX. Это позволяет нам хранить достаточную информацию в самом списке hlist, а именно ядро, подстрочный и надстрочный индекс, таким образом, что если следует другой индекс, который нужно добавить, его можно настроить на лету.

class matplotlib.mathtext.TruetypeFonts(default_font_prop, mathtext_backend)

Базы: matplotlib.mathtext.Fonts

Общий базовый класс для всех настроек шрифтов, которые используют шрифты TrueType (через FT2Font).

class CachedFont(font)

Базы: object

TruetypeFonts.destroy()
TruetypeFonts.get_kern(font1, fontclass1, sym1, fontsize1, font2, fontclass2, sym2, fontsize2, dpi)
TruetypeFonts.get_underline_thickness(font, fontsize, dpi)
TruetypeFonts.get_xheight(font, fontsize, dpi)
class matplotlib.mathtext.UnicodeFonts(*args, **kwargs)

Базы: matplotlib.mathtext.TruetypeFonts

Абстрактный базовый класс для обработки шрифтов Unicode.

Хотя некоторые достаточно полные шрифты Unicode (такие как DejaVu) могут работать в некоторых ситуациях, единственный шрифт Unicode, о котором мне известно, с полным набором математических символов, — это STIX.

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

get_sized_alternatives_for_symbol(fontname, sym)
use_cmex = True
class matplotlib.mathtext.VCentered(elements)

Базы: matplotlib.mathtext.Hlist

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

class matplotlib.mathtext.Vbox(height, depth)

Базы: matplotlib.mathtext.Box

Ящик только с высотой (нулевая ширина).

class matplotlib.mathtext.Vlist(elements, h=0.0, m='additional')

Базы: matplotlib.mathtext.List

Вертикальный список ящиков.

vpack(h=0.0, m='additional', l=inf)

Основная задача vpack() — вычисление размеров получившихся ящиков и корректировка склейки, если один из этих размеров задан заранее.

  • h: задает высоту
  • m: это либо ‘точно’, либо ‘дополнительно’.
  • l: максимальная высота

Таким образом, vpack(h, 'exactly') создаёт ящик с высотой h, в то время как vpack(h, 'additional') создаёт ящик, высота которого равна естественной высоте плюс h. Значения по умолчанию создают ящик с естественной шириной.

class matplotlib.mathtext.Vrule(state)

Базы: matplotlib.mathtext.Rule

Удобный класс для создания вертикальной линии.

matplotlib.mathtext.get_unicode_index(symbol) → integer

Возвращает целое числовой индекс (из таблицы Unicode) символа. symbol может быть одиночным символом Unicode, командой TeX (например, r’pi’), или именем символа Type1 (например, ‘phi’).

matplotlib.mathtext.math_to_image(s, filename_or_obj, prop=None, dpi=None, format=None)

Принимая математическое выражение, отрисовывает его в очень отсечённом ограничивающем ящике в файл изображения.

s
Математическое выражение. Математическая часть должна быть заключена в знаки доллара.
filename_or_obj
Путь к файлу или объект типа «потоковый файл» для записи данных изображения.
prop
Если указано, объект FontProperties(), описывающий размер и стиль текста.
dpi
Переопределяет значение dpi вывода, иначе используйте значение по умолчанию, связанное с форматом вывода.
format
Формат вывода, например, ‘svg’, ‘pdf’, ‘ps’ или ‘png’. Если не указано, будет выведено из имени файла.
matplotlib.mathtext.unichr_safe(index)

Возвращает символ Unicode, соответствующий индексу, или символ замены, если это узкое построение Python и запрашиваемый символ находится за пределами BMP.

© 2012–2016 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
http://matplotlib.org/1.5.3/api/mathtext_api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API