Допустимые горизонтальные и вертикальные единицы измерения в MathML:
Идентификатор | Описание |
em | em (единица измерения, зависящая от размера шрифта и обычно применяемая для горизонтальных размеров) |
ex | ex (единица измерения, зависящая от размера шрифта и обычно применяемая для вертикальных размеров) |
px | пиксель |
in | дюйм (1 дюйм = 2.54 сантиметра) |
cm | сантиметр |
mm | миллиметр |
pt | пункт (1 пункт = 1/72 дюйма) |
pc | picas (1 pica = 12 пунктов) |
% | процент от величины |
Типографские единицы измерения em и ex обсуждаются далее в пункте 'Дополнительные замечания'.
% является 'относительной единицей измерения'; когда значение атрибута задано в виде n% (для любого числового значения n), значение определяется как значение по умолчанию, умноженное на n и поделенное на 100. Значение по умолчанию (или способ, которым его можно получить, если оно не является константой) описано в таблице атрибутов для каждого элемента, а его смысл описан в последующей документации по атрибуту. (Элемент mpadded имеет свой синтаксис для% и не позволяет использовать его как идентификатор единицы измерения)
Для согласованности с CSS, единицы измерения длины в MathML могут быть необязательными. Когда это так, символ единицы измерения в синтаксисе атрибута заключается в квадратные скобки, например, число [h-unit]. Смысл значения атрибута без единиц измерения описан в документации для каждого атрибута; обычно указанное число умножается на значение по умолчанию. (В этом случае число nnn без единицы измерения эквивалентно числу nnn умноженному на 100 и со знаком %. Например, <mo maxsize="2"> (</mo> эквивалентно <mo maxsize="200 %"> (</mo>)
Как исключение (тоже для совместимости с CSS), числовые значения равные нулю не требуют указания идентификатора единицы измерения даже если этого требует синтаксис. В этом случае наличие или отсутствие идентификатора единицы измерения не играет роли, так как любое число умноженное на 0 есть 0.
Для большинства атрибутов в данной спецификации в качестве стандартных единиц измерения выбраны единицы, используемые в типографском наборе; когда не указано конкретное значение величины, то стандартные единицы измерения обычно указаны в таблице или в описании атрибута. Чаще всего используются такие единицы измерения как em или ex. Однако, могут использоваться любые единицы, если в описании конкретного атрибута не указано обратное.
Отметим, что некоторые атрибуты, например framespacing в <mtable>, могут содержать более одного числового значения, после каждого из которых следует своя единица измерения.
Принято использовать единицы измерения ex в основном для задания вертикальных размеров, а em - для горизонтальных, хотя это не является обязательным требованием. Эти единицы измерения зависят от шрифта, используемого для отображения элемента, в атрибутах которого они применяются, и его размера. А значит, они должны интерпретироваться после таких атрибутов, как fontfamily и fontsize, если они встречаются в одном элементе, так как изменение текущего шрифта или его размера может привести к изменению размера единиц измерения.
Определение длины каждой единицы измерения (но не синтаксис MathML для значений длины) такое же как в CSS, за исключением тех случаев, когда шрифт устанавливает специальные значения для em и ex, отличающиеся от значений, определенных в CSS (font size и 'x'-height соответственно).
Некоторые атрибуты MathML, перечисленные ниже, соответствуют свойствам отображения текста, определенным в CSS1. Это сделано для того, чтобы программы отображения могли запросить CSS-окружение о соответствующих свойствах при определении значений атрибутов по умолчанию.
Возможность определения стилевых свойств через атрибуты MathML и CSS имеет и недостатки. Как минимум, это запутывает, а в худшем случае, это приводит к непреднамеренному изменению смысла уравнений при изменении CSS для всего документа. Поэтому, эти атрибуты осуждаются. В свою очередь, MathML 2.0 вводит четыре новых математических стилевых атрибута. Эти атрибуты используют логические значения для того, чтобы лучше передать абстрактные категории используемых в математике символов, и предоставляют четкое разделение между MathML и CSS.
Следующая таблица показывает соответствие осуждаемых стилевых атрибутов MathML 1.01 и их CSS-аналогов:
Атрибут MathML | Свойство CSS | синтаксический символ | Элемент MathML |
fontsize | font-size | - | токены представления; mstyle |
fontweight | font-weight | - | токены представления; mstyle |
fontstyle | font-style | - | токены представления; mstyle |
fontfamily | font-family | css-fontfamily | токены представления; mstyle |
color | color | css-color-name | токены представления; mstyle |
background | background | css-color-name | mstyle |
Порядок обработки атрибутов и стилевых таблиц.
CSS или аналогичные стилевые таблицы могут задавать изменения свойств отображения элементов MathML. Так как свойства отображения могут изменяться как атрибутами элемента, так и программой отображения, необходимо определить порядок, в котором происходят изменения из разных источников. Примером автоматического согласования является ситуация с fontsize. В случае 'абсолютных' изменений, например, установки нового значения свойства, независимого от старого значения (в отличие от 'относительных' изменений, таких как инкремент или умножение на число), действуют только последние абсолютные изменения, поэтому источник изменений с наивысшим приоритетом должен обрабатываться последним.
В случае CSS, порядок обработки изменений, действующих на свойства отображения элемента MathML, из различных источников должен быть следующим: (изменяется первым; самый низкий приоритет)
Автоматические изменения свойств или атрибутов, основанных на типе родительского элемента и положении элемента в родительском (как упоминается выше об изменениях fontsize в соответствии с scriptlevel; такие изменения обычно применяются самим родительским элементом перед передачей свойств отображения текущему элементу
Из стилевых таблиц читателя: стили, которые не объявлены 'важными'
Явно заданные атрибуты текущего элемента MathML
Из стилевых таблиц автора: стили, которые не объявлены 'важными'
Из стилевых таблиц автора: стили, которые объявлены 'важными'
Из стилевых таблиц читателя: стили, которые объявлены 'важными' (изменяется последним; самый высокий приоритет).
Отметим, что порядок изменений, производимых стилевыми таблицами CSS, определен в самих CSS (это порядок, определяемый CSS2). Следующее объяснение относится только к случаю, когда в этом порядке происходят изменения, вызванные точным заданием атрибутов MathML.
Объяснение: Атрибуты отображения в MathML аналогичны атрибутам отображения в HTML (таким как align), которые, согласно определенному в CSS порядку, должны обрабатываться с одинаковым приоритетом. Более того, такой выбор очередности позволяет читателям решить, определяя стили CSS 'важными', какие из их установок должны переопределять явные установки MathML. Так как выражения MathML, состоящие из элементов содержания или представления, в первую очередь предназначены для передачи смысла, а 'графическое представление' (если таковое имеется) должно помогать этому (но не является важным само по себе), вероятно, что читатели захотят, чтобы их стилевые предпочтения имели приоритеты. Основным исключением является ситуация, когда атрибуты отображения предполагают изменение смысла выражения.
Значения по умолчанию для атрибутов MathML как правило даются вместе с подробным описанием соответствующего элемента. Значения по умолчанию, указанные в таблицах атрибутов обычным шрифтом, являются точными (если они не являются очевидными объяснениями), выделенные курсивом фрагменты описывают, как значения по умолчанию могут быть вычислены.
Значения по умолчанию, описанные как inherited, берутся из среды отображения, как описано для mstyle, или, в некоторых отдельно описанных случаях, из значений других атрибутов окружающих элементов, или из определенной части этих значений. Всегда используется значение, которое может быть задано точно, если оно известно; оно никогда не зависит от содержания или атрибутов данного элемента, только от его окружения. (Его смысл при использовании может, тем не менее, зависеть от этих атрибутов или содержания)
Значения по умолчанию, описанные как automatic, должны вычисляться программой отображения таким образом, чтобы получить высококачественное изображение. Способ, как этого добиться, обычно не указан в спецификации MathML. Всегда используется значение, которое может быть задано точно, если оно известно; но оно обычно зависит от содержания элемента и, возможно, от среды отображения.
Другие выделенные курсивом описания значений по умолчанию, которые встречаются в таблицах атрибутов, объясняются отдельно для каждого атрибута.
Одинарные или двойные кавычки, в которые должны быть заключены значения атрибута, расположенного в открывающем теге XML, не показаны в синтаксисе значений в таблице атрибутов, но показаны в тексте примеров.
Отметим, что, как правило, не существует значений, которые точно могут быть присвоены атрибутам MathML и имитируют эффект их отсутствия для атрибутов, являющихся inherited или automatic. Указание 'inherited' или 'automatic' точно не будет работать, и вообще запрещено. Более того, даже для атрибутов представления (для которых здесь приведены конкретные значения по умолчанию), должен использоваться элемент mstyle для изменения содержащихся в нем элементов. Поэтому, MathML DTD определяет большинство значений по умолчанию для атрибутов представления как #IMPLIED, что не позволяет обработчикам XML добавлять к этим атрибутам любые специальные значения по умолчанию. MathML schema работает по тем же правилам.