MathML コア

W3C 勧告候補スナップショット

この文書の詳細
このバージョン:
https://www.w3.org/TR/2025/CR-mathml-core-20250624/
最新の公開バージョン:
https://www.w3.org/TR/mathml-core/
最新の編集者草案:
https://w3c.github.io/mathml-core/
履歴:
https://www.w3.org/standards/history/mathml-core/
コミット履歴
テストスイート:
https://github.com/web-platform-tests/wpt/tree/master/mathml/
実装報告:
https://wpt.fyi/results/?label=master&label=experimental&aligned&q=math%20%20not%28path%3A%2Fjs%29
編集者:
David Carlisle (NAG)
Frédéric Wang (Igalia)
元編集者:
Patrick Ion (Mathematical Reviews, American Mathematical Society)
Robert Miner (故人) (Design Science, Inc.)
フィードバック:
GitHub w3c/mathml-core (プルリクエスト, 新しい Issue, 未解決の Issue)

概要

この仕様は、ブラウザーでの実装に適した Mathematical Markup Language、すなわち MathML の中核的なサブセットを定義します。 MathML は、数学的表記を記述し、その構造と内容の両方を 捉えるためのマークアップ言語です。MathML の目的は、 HTML がテキストに対してこの機能を実現したのと同様に、World Wide Web 上で数学を提供、受信、処理できるようにすることです。

この文書のステータス

この節では、公開時点におけるこの 文書のステータスについて説明します。現在の W3C 公開文書の一覧およびこの技術報告書の最新改訂版は、 W3C 標準および草案 インデックス https://www.w3.org/TR/ で確認できます。

この文書は、Math ワーキンググループにより、 勧告トラックを使用して 勧告候補スナップショットとして公開されました。

勧告候補としての公開は、 W3C およびその会員による承認を意味するものではありません。勧告候補スナップショットは、 広範なレビューを受けており、 実装 経験を収集することを目的とし、 ワーキンググループのメンバーから、実装に対する ロイヤリティフリーのライセンス供与 への確約を得ています。

この勧告候補が提案勧告に進むのは、2025年9月30日より 前になることは想定されていません。

この文書は、 W3C 特許 ポリシーの下で活動するグループによって作成されました。 W3C は、このグループの成果物に関連して行われた 特許開示の公開リスト を管理しています。このページには、 特許を開示するための手順も含まれています。必須 クレームを含むと本人が考える特許について実際の 知識を有する個人は、 必須クレーム に関する情報を、 W3C 特許ポリシー第6節に従って開示しなければなりません。

この文書は、 2023年11月3日付 W3C プロセス文書に準拠します。

1. はじめに

このセクションは規範的ではありません。

[MATHML3] 仕様には、Web レンダリングエンジン間で一貫して実装したり、 ユーザー定義の構成で拡張したりすることを困難にする いくつかの欠点があります。たとえば、次のとおりです。

この MathML Core 仕様は、TeXBook の付録 G [TEXBOOK] および Open Font Format [OPEN-FONT-FORMAT]、 [OPEN-TYPE-MATH-ILLUMINATED] の追加規則を使用して、 数式の視覚的レンダリングを可能な限り正確にすることで、これらの問題に対処することを意図しています。また、最新の ブラウザー 実装および Web 技術 [HTML] [SVG] [CSS2] [DOM] にも依存し、必要に応じて それらとの相互作用を明確化したり、Web プラットフォームのレイヤー構造を 改善するための新しい低レベルプリミティブを導入したりします。

この枠組みに適合しない、または基礎的でない MathML3 の部分は 省略されています。代わりに、それらは別個の、より大規模な [MATHML4] 仕様で説明されています。今後の MathML Core のバージョンにどの数学機能を含めるか、または polyfill として実装するかの詳細は、まだ未決定です。この問題やその他の 潜在的な改善点は GitHub で 追跡されています

実装の詳細レベルを高め、実用的な サブセットに焦点を当て、ブラウザー主導の設計に従い、 自動化された Web Platform Tests に依存することで、この仕様は MathML の相互運用性を大幅に改善することが期待されています。さらに、MathML の レイヤー化への取り組みにより、ユーザーは MathML 4 仕様の残りを実装したり、より一般的には MathML Core を 最新の Web 技術、たとえば shadow treeカスタム要素、または [HOUDINI] の API を使用して拡張したりできるようになります。

2. MathML の基礎

2.1 要素と属性

MathML 要素という用語は、 MathML 名前空間にある任意の要素を指します。 この仕様で定義される MathML 要素は MathML Core 要素と呼ばれ、以下に一覧を示します。 以下に記載されていない MathML 要素は、 未知の MathML 要素と呼ばれます。

  1. annotation
  2. annotation-xml
  3. maction
  4. math
  5. merror
  6. mfrac
  7. mi
  8. mmultiscripts
  9. mn
  10. mo
  11. mover
  12. mpadded
  13. mphantom
  14. mprescripts
  15. mroot
  16. mrow
  17. ms
  18. mspace
  19. msqrt
  20. mstyle
  21. msub
  22. msubsup
  23. msup
  24. mtable
  25. mtd
  26. mtext
  27. mtr
  28. munder
  29. munderover
  30. semantics

グループ化要素は、 maction, math, merror, mphantom, mprescripts, mrow, mstyle, semantics および 未知の MathML 要素です。

スクリプト付き要素は、 mmultiscripts, mover, msub, msubsup, msup, munder および munderoverです。

根号 要素は、 mroot および msqrtです。

この仕様で定義される属性には名前空間がなく、 MathML 属性と呼ばれます。

2.1.1 最上位の <math> 要素

MathML は、単一の最上位要素またはルート math 要素を指定し、文書内の各 MathML マークアップのインスタンスをカプセル化します。その他すべての MathML コンテンツは <math> 要素内に含まれていなければなりません。

<math> 要素は、 2.1.3 グローバル属性 で説明される属性に加えて、 次の属性を受け入れます。

display 属性が存在する場合、 block または inlineASCII 大文字小文字不区別で 一致しなければなりません。 A. ユーザー エージェントスタイルシート で説明されるユーザーエージェントスタイルシートには、この属性に対する規則が含まれており、 display (block math または inline math) および math-style (normal または compact) プロパティの デフォルト値に影響します。 display 属性が存在しないか、無効な値を持つ場合、ユーザーエージェント スタイルシートはこれを inline と同様に扱います。

この仕様では、alttext 属性に 固有の観測可能な動作は定義しません。

注記
alttext 属性は、数式レイアウトを 実装していない一部のレガシーシステムで 代替テキストとして使用される場合があります。

<math> 要素の計算済み display プロパティが block math または inline math でない場合、その要素は 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合、 mrow 要素のレイアウトアルゴリズムを使用して 数式コンテンツボックスを生成します。その 数式コンテンツ ボックスは、CSS で説明される display: block (計算値が block math の場合)または display: inline (計算値が inline math の場合)として、 要素のレイアウトのコンテンツに使用されます。 さらに、計算済み display プロパティが block math に等しい場合、その 数式コンテンツボックスは コンテンツボックス内で水平方向の中央にレンダリングされます。

注記
TEX のディスプレイモード $$...$$ とインラインモード $...$ は、それぞれ display="block"display="inline" に対応します。

次の例では、 math 数式が 新しい行で全幅を使用するディスプレイモードでレンダリングされ、 数式コンテンツはコンテナー内で中央揃えされます。

<div style="width: 15em;">
  大きな総和記号と円周率を含むこの数式
  <math display="block" style="border: 1px dotted black;">
    <mrow>
      <munderover>
        <mo></mo>
        <mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow>
        <mrow><mo>+</mo><mn></mn></mrow>
      </munderover>
      <mfrac>
        <mn>1</mn>
        <msup><mi>n</mi><mn>2</mn></msup>
      </mfrac>
    </mrow>
    <mo>=</mo>
    <mfrac>
      <msup><mi>π</mi><mn>2</mn></msup>
      <mn>6</mn>
    </mfrac>
  </math>
  は簡単に証明できます。
</div>
数式の例(ディスプレイ)

比較として、同じ数式を インラインモードで表示すると次のようになります。数式は 強制的な改行なしでテキスト段落に埋め込まれます。 mrow のレイアウトアルゴリズムで指定されるベースラインが 垂直方向の配置に使用されます。 総和記号、等号、分数の中央はすべて揃いますが、 周囲のテキストのアルファベットベースラインとは 揃わないことに注意してください。

数式の例(インライン)

優れた数式レンダリングには数式用 フォントの使用が必要なため、 ユーザーエージェントスタイルシートは、 <math> 要素で font-family を継承するのではなく math 値に設定するべきです。さらに、 font-stylefont-weightdirectiontext-indent など、 親コンテナーに設定可能ないくつかの CSS プロパティは 数式に適用されることを意図していないため、 ユーザーエージェントスタイルシートには デフォルトでそれらをリセットする規則があります。

math {
  direction: ltr;
  text-indent: 0;
  letter-spacing: normal;
  line-height: normal;
  word-spacing: normal;
  font-family: math;
  font-size: inherit;
  font-style: normal;
  font-weight: normal;
  display: inline math;
  math-shift: normal;
  math-style: compact;
  math-depth: 0;
}
math[display="block" i] {
  display: block math;
  math-style: normal;
}
math[display="inline" i] {
  display: inline math;
  math-style: compact;
}

2.1.2 MathML 属性値の型

CSS データ型に加えて、一部の MathML 属性は次の MathML 固有の型に依存します。

符号なし整数
[CSS-VALUES-4] で定義される <integer> 値で、 その最初の文字が U+002D HYPHEN-MINUS 文字 (-) でも U+002B PLUS SIGN (+) でもないものです。
真偽値
true または falseASCII 大文字小文字不区別で 一致する文字列です。

2.1.3 グローバル属性

次の属性はすべての MathML 要素に共通し、指定できます。

2.1.4 HTML 要素と MathML 要素に共通する属性

idclassstyledata-*autofocusnoncetabindex 属性は、HTML 要素の idclassstyledata-*autofocusnonce および tabindex 属性に定義されているものと同じ構文および意味論を持ちます。

dir 属性が存在する場合、 ltr または rtlASCII 大文字小文字不区別で 一致しなければなりません。 その場合、ユーザーエージェントは、この属性を 要素の direction プロパティを対応する値に設定する 表示上のヒントとして扱うことが期待されます。 より正確には、 rtlASCII 大文字小文字不区別で 一致するものは rtl にマッピングされ、 ltrASCII 大文字小文字不区別で一致するものは ltr にマッピングされます。

注記
dir 属性は数式の方向性を設定するために使用され、 アラビア語圏ではしばしば rtl です。 ただし、右から左に書かれる言語では、左から右に書かれる 数式が埋め込まれることが多いため、 ユーザーエージェントスタイルシートは、 math 要素で direction プロパティを適宜リセットします。

次の例では、dir 属性を使用して、 「𞸎 に、(𞸟 に ١ を加えたもの) 分の ٢ 乗された 𞸑 を加えたもの」を右から左にレンダリングします。

<math dir="rtl">
  <mrow>
    <mi>𞸎</mi>
    <mo>+</mo>
    <msup>
      <mi>𞸑</mi>
      <mfrac>
        <mn>٢</mn>
        <mrow>
          <mi>𞸟</mi>
          <mo>+</mo>
          <mn>١</mn>
        </mrow>
      </mfrac>
    </msup>
  </mrow>
</math>
dir の例

すべての MathML 要素は、HTML のイベントハンドラーコンテンツ属性で説明されているように、 イベントハンドラーコンテンツ属性をサポートします。

すべての HTMLElement でサポートされるものとして HTML に記載されている すべてのイベントハンドラーコンテンツ属性は、MathMLElement IDL で定義されるとおり、 すべての MathML 要素でもサポートされます。

2.1.5 レガシー MathML スタイル 属性

mathcolor および mathbackground 属性が存在する場合、 <color> である値を持たなければなりません。 その場合、ユーザーエージェントはこれらの属性を、 要素の color および background-color プロパティを対応する値に設定する 表示上のヒントとして扱うことが期待されます。 mathcolor 属性は MathML のテキスト、バーなどの前景塗りつぶし 色を記述し、mathbackground 属性は要素の背景色を記述します。

mathsize 属性が存在する場合、 有効な <length-percentage> である値を持たなければなりません。 その場合、ユーザーエージェントは、この属性を 要素の font-size プロパティを対応する値に設定する 表示上のヒントとして扱うことが期待されます。 mathsize プロパティは、数式内のグリフの望ましい高さを 示しますが、それに応じて他の部分(空白、シフト、 バーの線の太さなど)も拡大縮小します。

注記
上記の属性は完全な MathML との互換性のために実装されています。対象が MathML Core のみである 著者には、スタイル指定に CSS を使用することが推奨されます。

2.1.6 displaystyle 属性と scriptlevel 属性

displaystyle 属性が存在する場合、その値は 真偽値でなければなりません。 その場合、ユーザーエージェントは、この属性を 要素の math-style プロパティを対応する値に設定する 表示上のヒントとして扱うことが期待されます。 より正確には、 trueASCII 大文字小文字不区別で一致するものは normal にマッピングされ、 falseASCII 大文字小文字不区別で一致するものは compact にマッピングされます。 この属性は、数式がコンテンツのサイズや スクリプトのレイアウトを変更するなどして 論理的な高さを最小化しようとするべきか (値が false)、しないべきか (値が true)を示します。

scriptlevel 属性が存在する場合、その値は +<U>-<U>、または <U> でなければならず、ここで <U>符号なし整数です。 その場合、 ユーザーエージェントは scriptlevel 属性を、要素の math-depth プロパティを対応する値に設定する 表示上のヒントとして扱うことが期待されます。 より正確には、 +<U>-<U>、および <U> はそれぞれ add(<U>) add(<-U>) および <U> にマッピングされます。

displaystyle および scriptlevel の値は、 MathML 要素内で自動的に調整されます。 これらの属性を完全に実装するには、 A. ユーザーエージェントスタイルシート で説明されるように、ユーザーエージェントスタイルシートに 追加の CSS プロパティを指定しなければなりません。 特に、すべての MathML 要素に対してデフォルトの font-size: math が指定され、 scriptlevel の変更が考慮されることを保証します。

この例では、 munder 要素を使用して、基底「∑」に スクリプト「A」を付加します。デフォルトでは、総和 記号は親から継承した font-size でレンダリングされ、 A は縮小された下付き文字としてレンダリングされます。 displaystyle が true の場合、総和記号は より大きく描画され、「A」は下部スクリプトになります。 「A」で scriptlevel が 0 にリセットされると、 最上位の math ルートと同じ font-size を使用します。

<math>
  <munder>
    <mo></mo>
    <mi>A</mi>
  </munder>
  <munder displaystyle="true">
    <mo></mo>
    <mi>A</mi>
  </munder>
  <munder>
    <mo></mo>
    <mi scriptlevel="0">A</mi>
  </munder>
</math>
displaystyle-scriptlevel の例
注記
TEX の \displaystyle\textstyle\scriptstyle、および \scriptscriptstyle は、 displaystylescriptlevel の それぞれ true0false0false1、 および false と 2 に対応します。

2.1.7 有効として予約された 属性

intent 属性と arg 属性は、有効な属性として予約されています。

この仕様では、intent 属性および arg 属性に 固有の観測可能な動作は定義しません。

注記
これらの属性は [MATHML4] で説明されており、 この仕様の将来のバージョンで 定義される場合もあれば、されない場合もあります。著者は、これらが現在 開発中であり、変更される可能性があることに注意するべきです。

2.2 Web プラットフォームへの統合

2.2.1 HTML と SVG

MathML は、関連する仕様 [HTML] [SVG] で説明されているように、HTML および SVG と混在させることができます。

SVG の requiredExtensions 属性を評価するとき、ユーザーエージェントは MathML 名前空間で識別される言語拡張を サポートしていると宣言しなければなりません。

この例では、インラインの MathML 要素と SVG 要素が HTML 文書内で使用されています。SVG 要素 <switch><foreignObject>(適切な <requiredExtensions> を使用)は、図の中に、 テキストによるフォールバック付きの MathML 数式を埋め込むために使用されています。 HTML の input 要素は、 mtext 内で使用され、数式内にインタラクティブな入力フィールドを 含めています。annotation-xml 要素内の SVG および HTML の例については、3.7 意味論とプレゼンテーション も参照してください。

<svg style="font-size: 20px" width="400px" height="220px" viewBox="0 0 200 110">
  <g transform="translate(10,80)">
    <path d="M 0 0 L 150 0 A 75 75 0 0 0 0 0
             M 30 0 L 30 -60 M 30 -10 L 40 -10 L 40 0"
          fill="none" stroke="black"></path>
    <text transform="translate(10,20)">1</text>
    <switch transform="translate(35,-40)">
      <foreignObject width="200" height="50"
                     requiredExtensions="http://www.w3.org/1998/Math/MathML">
        <math>
          <msqrt>
            <mn>2</mn>
            <mi>r</mi>
            <mo></mo>
            <mn>1</mn>
          </msqrt>
        </math>
      </foreignObject>
      <text>\sqrt{2r - 1}</text>
    </switch>
  </g>
</svg>

<p>
  空欄を埋めてください:
  <math>
    <msqrt>
      <mn>2</mn>
      <mtext><input onchange="..." size="2" type="text"></mtext>
      <mo></mo>
      <mn>1</mn>
    </msqrt>
    <mo>=</mo>
    <mn>3</mn>
  </math>
</p>
html-svg の例

2.2.2 CSS スタイリング

ユーザーエージェントは、この 仕様で言及されている各種 CSS 機能をサポートしなければならず、これには 4. 数式レイアウト のための CSS 拡張で説明される新しい機能も含まれます。 また、 display: contents の計算規則に従わなければなりません。

この例では、MathML 数式は親の CSS color を継承し、 style 属性を介して指定された font-family を使用します。

<div style="width: 15em; color: blue">
  大きな総和記号と円周率を含むこの数式
  <math display="block" style="font-family: STIX Two Math">
    <mrow>
      <munderover>
        <mo></mo>
        <mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow>
        <mrow><mo>+</mo><mn></mn></mrow>
      </munderover>
      <mfrac>
        <mn>1</mn>
        <msup><mi>n</mi><mn>2</mn></msup>
      </mfrac>
    </mrow>
    <mo>=</mo>
    <mfrac>
      <msup><mi>π</mi><mn>2</mn></msup>
      <mn>6</mn>
    </mfrac>
  </math>
  は簡単に証明できます。
</div>
style の例

MathML Core 要素を含むすべての文書は、 ユーザーエージェントレベルのスタイルシートのデフォルトの一部として A. ユーザーエージェントスタイルシート で説明される CSS 規則を含まなければなりません。 特に、これにより、すべての MathML 要素で 書字モードhorizontal-lr に強制する !important 規則が追加されます。

float プロパティは、 親の計算済み display 値が block math または inline math である要素をフロート化せず、 フロー外にも移動させません。

::first-line および ::first-letter 疑似要素は、計算済み display 値が block math または inline math である要素には適用されず、 そのような要素は祖先に対して最初の整形済み行または最初の文字を 提供しません。

次の CSS 機能はサポートされず、無視されなければなりません。

  • 数式内での改行: white-space はすべての MathML 要素で nowrap として扱われます。
  • 配置プロパティ: align-contentjustify-contentalign-selfjustify-self は MathML 要素には効果を持ちません。
注記
これらの機能は、この文書の将来のバージョンで扱われる可能性があります。 現時点では、後方互換性の 問題につながる可能性があるため、著者がこれらのプロパティに 異なる値を設定することは推奨されません。

2.2.3 DOM と JavaScript

Web アプリケーション API をサポートするユーザーエージェントは、MathML の視覚的レンダリングが [DOM] ツリーと同期した状態に保たれることを保証しなければならず、特に MathML 属性が動的に変更されたときに必要な 更新を実行しなければなりません。

DOM 内で MathML 要素を表すすべてのノードは、 次の MathMLElement インターフェイスを 実装し、スクリプトに公開しなければなりません。

WebIDL[Exposed=Window]
interface MathMLElement : Element { };
MathMLElement includes GlobalEventHandlers;
MathMLElement includes HTMLOrForeignElement;

GlobalEventHandlers および HTMLOrForeignElement インターフェイスは [HTML] で定義されています。

次の例では、MathML 数式を使用して 分数「2 分の α」をレンダリングします。赤い α をクリックすると、 青い β に変更されます。

<script>
  function ModifyMath(mi) {
      mi.style.color = 'blue';
      mi.textContent = 'β';
  }
</script>
<math>
  <mrow>
    <mfrac>
      <mi style="color: red" onclick="ModifyMath(this)">α</mi>
      <mn>2</mn>
    </mfrac>
  </mrow>
</math>
dom-idl の例
課題
HTMLOrSVGElement の 名前を変更するとともに、[HTML] で MathMLElement を定義します。

2.2.4 テキストレイアウト

数式用フォントには一般に大きな 積分記号など非常に背の高いグリフが含まれるため、 テキストの過剰な行間隔を避けるには タイポグラフィメトリックを使用することが重要です。そのため、 ユーザーエージェントはテキストレイアウトを実行するとき、 OS/2 テーブル [OPEN-FONT-FORMAT] の USE_TYPO_METRICS フラグを考慮しなければなりません。

2.2.5 フォーカス

MathML は、インタラクティブなユーザーエージェントをサポートする場合、 HTML で説明されている フォーカス と同じ概念、アプローチ、およびガイダンスを使用して、 著者がインタラクティブ性を許可できる機能を提供します。 ただし、このセクションで説明される MathML への 適用に関する修正または 明確化があります。

要素がフォーカスされたとき、 Selectors Level 3 で定義されている、適用可能なすべての CSS フォーカス関連疑似クラスが、その仕様で定義されるとおり 適用されます。

埋め込まれた math 要素の内容 (トークン要素内の HTML 要素を含む)は、 それを含む所有者 HTML 文書の順次フォーカス順序(結合された順次フォーカス順序)に寄与します。

3. プレゼンテーションマークアップ

3.1 視覚整形モデル

3.1.1 ボックスモデル

デフォルトの display プロパティは、 A. ユーザーエージェントスタイルシートで説明されています。

  • <math> ルートでは、 display 属性の値に応じて inline math または block math になります。
  • 表形式 MathML 要素 mtablemtrmtd では、それぞれ inline-tabletable-row、および table-cell になります。
  • maction および semantics 要素の最初の子以外のすべての子では、 none になります。
  • その他すべての MathML 要素では、 block math になります。

異なる 書字モードで数式レイアウトを指定するため、 この仕様では [CSS-WRITING-MODES-4] の概念を使用します。

注記
特に指定がない限り、 この仕様の図では horizontal-lr および ltr書字モードを使用します。 数式レイアウトで使用されることがある他の 書字モードの例については、45、および 6を参照してください。

MathML 要素に使用されるボックスは、CSS と互換性のある方法でレイアウトを実行すると同時に、 数式内の非常に正確な位置と間隔を考慮するため、 いくつかのパラメーターに依存します。

  1. インラインメトリクス。 CSS の min-content インラインサイズmax-content インラインサイズ、および インラインサイズ1を参照してください。
    1 MathML 要素の汎用ボックスモデル
  2. ブロックメトリクス。 ブロックサイズ最初のベースラインセット および 最後のベースラインセット。 MathML ボックスには次のベースラインが定義されます。

    1. アルファベットベースライン。 通常、これは大文字ラテン グリフの下端と揃います。 アルファベットベースラインから ボックスの line-over 辺までの代数的距離を line-ascent と呼びます。 line-under 辺からボックスの アルファベットベースライン までの代数的距離を line-descent と呼びます。
    2. 数式ベースライン。これは 数式 軸とも呼ばれ、通常は分数線、 フェンスの中央、および二項演算子と揃います。これは アルファベットベースラインから line-over 方向へ AxisHeight だけシフトされます。
    3. ink-over ベースライン。追加の 空間を除き、描画される数式コンテンツの line-over 側の理論的限界を示します。 指定されていない場合、line-over 辺に揃えられます。 アルファベットベースラインから ink-over ベースラインまでの 代数的距離を ink line-ascent と呼びます。
    4. ink-under ベースライン。追加の 空間を除き、描画される数式コンテンツの line-under 側の理論的限界を示します。 指定されていない場合、line-under 辺に揃えられます。 ink-under ベースライン から アルファベットベースラインまでの 代数的距離を ink line-descent と呼びます。
    注記
    数式レイアウトでは、テキストを配置するときに ink extent に 依存することが非常に重要です。より複雑な 表記(たとえば平方根)ではこれは当てはまりません。 ink-ascent と ink-descent は すべての MathML 要素に対して定義されていますが、実際に使用されるのは トークン要素だけです。それ以外の場合は、通常の ascent と descent に一致するだけです。
    特に指定がない限り、MathML ボックスでは 最後のベースラインセット最初のベースラインセットと等しくなります。
  3. 任意の イタリック補正。 これは、ボックスのテキストが インライン軸に沿ってどれだけ傾いているかを示す尺度です。 2を参照してください。
    2 イタリック体の f と大きな積分記号の イタリック補正の例
    min-content インラインサイズおよび max-content インラインサイズの計算中、またはレイアウト中に 要求された場合は、フォールバック値として 0 が使用されます。
  4. 任意の 上部アクセント付加位置。 これは、ボックスをアクセントとして配置するときに使用するべき ボックスの インライン軸上の基準オフセットを提供します。 3を参照してください。
    3 サーカムフレックスアクセントの上部アクセント 付加位置の例
    min-content インラインサイズ (それぞれ max-content インラインサイズ)の計算中に要求された場合は、 min-content インラインサイズ(それぞれ max-content インラインサイズ)の半分が フォールバック値として使用されます。 レイアウト中に要求された場合は、ボックスの インラインサイズの半分がフォールバック値として使用されます。

MathML ボックスが与えられたとき、次のオフセットが定義されます。

  • 子ボックスの インラインオフセットとは、 親ボックスの inline-start 辺と 子ボックスの inline-start 辺との間のオフセットです。
  • 子ボックスの ブロック オフセットとは、 親ボックスの block-start 辺と 子ボックスの block-start 辺との間のオフセットです。
  • 子ボックスの line-left オフセットとは、 親ボックスの line-left 辺と 子ボックスの line-left 辺との間のオフセットです。
4 たとえばアラビア語の数式で使用される場合がある horizontal-tb および rtl の書字モードのボックスモデル。
5 たとえばモンゴル語の数式で使用される場合がある vertical-lr および ltr の書字モードのボックスモデル。
6 たとえば日本語の数式で使用される場合がある vertical-rl および ltr の書字モードのボックスモデル。
注記
MathML ボックス内の子ボックスおよびグラフィカル項目の位置は、 インラインオフセット および ブロックオフセットを使用して表されます。 便宜上、レイアウトアルゴリズムは、 フロー相対方向、行相対方向、または アルファベットベースラインを使用して オフセットを記述する場合があります。 子ボックスの配置は、ボックスおよびその子ボックスの メトリクスが計算された後に必ず実行されるため、 ある記述から別の記述へ常に変換できます。

以下は、行相対 メトリクスから得られるオフセットの例です。

ink ascent/descent の定義を改善するか?

3.1.2 レイアウトアルゴリズム

各 MathML 要素には、関連する 数式コンテンツボックスがあり、 この章のレイアウトアルゴリズムで次の 構造を使用して計算されます。

  1. 数式コンテンツの min-content インラインサイズ および max-content インラインサイズ の計算。
  2. ボックスレイアウト:
    1. フロー内の子ボックスのレイアウト。
    2. 数式コンテンツの インラインサイズink line-ascentink line-descentline-ascent および line-ascent の計算。
    3. 数式 コンテンツボックス内の子ボックスのオフセット、 および追加のグラフィカル項目 (バー、根号記号など)のサイズとオフセットの計算。
    4. [CSS-POSITION-3] で説明される、 絶対配置 および 固定配置 ボックスのレイアウトと配置。

次の追加手順を実行しなければなりません。

注記
上記の説明に従い、マージンの相殺は MathML 要素には適用されません。

ボックスレイアウト中、任意の インライン伸長サイズ制約および ブロック伸長サイズ制約パラメーターを、 装飾された演算子で使用できます。前者は、 インライン軸に沿って伸長された コア演算子が覆うべき 目標サイズを示します。 後者は、ブロック軸に沿って伸長された コア演算子が覆うべき ink line-ascent および ink line-descent を示します。 特に指定がない限り、これらのパラメーターは ボックスレイアウト中に無視され、子ボックスは 伸長サイズ制約なしでレイアウトされます。

課題 76: インライン方向のパーセンテージが何に対して解決されるかを定義する。 css/html5need specification updateneeds-tests
インライン方向のパーセンテージが何に対して解決されるかを定義する
課題 77: ブロック方向のパーセンテージが何に対して解決されるかを定義する。 css/html5need specification updateneeds-tests
ブロック方向のパーセンテージが何に対して解決されるかを定義する

3.1.3 匿名 <mrow> ボックス

匿名 ボックスとは、DOM ツリー内に関連付けられた 要素を持たず、レイアウト目的のためだけに生成されるボックスです。 匿名ボックスのプロパティは、それを囲む非匿名ボックスから 継承され、継承されないプロパティは 初期値を持ちます。 匿名 <mrow> ボックスとは、 displayblock math に等しく、 3.3.1.2 <mrow> のレイアウトで説明されるようにレイアウトされる 匿名ボックスです。

MathML 要素が 匿名 <mrow> ボックスを生成する場合、その要素は その子を匿名 <mrow> ボックスでラップします。すなわち、 視覚整形モデルにおけるその部分木は、 この MathML 要素の子に関連付けられたボックスを 自身の内部に含む 匿名 <mrow> ボックス から構成されます。

次の例では、 math 要素と mrow 要素は、 3.3.1.2 <mrow> のレイアウトで説明されるようにレイアウトされます。特に、 <math> 要素は、その <mo>≠</mo> 子の周囲に適切な間隔を追加し、 <mrow> 要素は、その <mo>|</mo> 子を垂直方向に伸長します。

mtd 要素は display: table-cell を持ち、 msqrt 要素は、その子の周囲に根号記号を表示します。 しかし、これらは子を 3.3.1.2 <mrow> のレイアウトで説明されるものと 類似した方法でも配置します。 <msqrt> 要素は、その <mo>+</mo> 子の周囲に適切な間隔を追加し、一方で <mtd> 要素は、その <mo> 子を垂直方向に伸長します。 これを可能にするために、 これら2つの要素はそれぞれ 匿名 <mrow> ボックスを生成します

<math>
  <mrow>
    <mo>|</mo>
    <mtable>
      <mtr>
        <mtd>
          <mi>x</mi>
        </mtd>
        <mtd>
          <mo>(</mo>
          <mfrac linethickness="0">
            <mn>5</mn>
            <mn>3</mn>
          </mfrac>
          <mo>)</mo>
        </mtd>
      </mtr>
      <mtr>
        <mtd>
          <msqrt>
            <mn>7</mn>
            <mo>+</mo>
            <mn>2</mn>
          </msqrt>
        </mtd>
        <mtd>
          <mi>y</mi>
        </mtd>
      </mtr>
    </mtable>
    <mo>|</mo>
  </mrow>
  <mo></mo>
  <mn>0</mn>
</math>
数式の例(ディスプレイ)

3.1.4 スタッキングコンテキスト

MathML 要素は、さまざまな間隔規則により重なり合うことがあります。また、 追加のグラフィカル項目 (バー、根号記号など)を含むこともできます。 計算済みスタイルが display: block math または display: inline math である MathML 要素は、新しいスタッキング コンテキストを生成します。このような MathML 要素の フロー内の子の描画順序 は、ブロック要素と完全に同じです。追加のグラフィカル 項目は、テキストと背景の後に描画されます( display: inline math の場合はステップ 7.2.4 の直後、 display: block math の場合はステップ 7.2 の直後)。

3.2 トークン要素

プレゼンテーションマークアップのトークン要素は、広い意味で、 意味を持つ数学表記の最小単位を 表現することを意図しています。トークンは、テキストにおける単語におおむね類似しています。しかし、 数学表記の厳密で記号的な性質のため、 トークン要素のさまざまなカテゴリとプロパティは MathML マークアップで重要な役割を果たします。対照的に、テキストデータでは、 個々の単語を特別にマークアップしたりスタイル指定したりする必要はほとんどありません。

注記
実際には、ほとんどの MathML トークン要素は、変数、数値、 演算子などの単純なテキストを含むだけで、高度な レイアウトを必要としません。ただし、改行を含むテキストや 任意の HTML5 フレージング要素を含むこともできます。

3.2.1 テキスト <mtext>

mtext 要素は、そのままレンダリングされるべき任意のテキストを 表現するために使用されます。一般に、 <mtext> 要素は 注釈的なテキストを示すことを意図しています。

<mtext> 要素は、 2.1.3 グローバル 属性で説明される属性を受け入れます。

次の例では、 mtext を使用して、 定義内に条件を示す語を配置しています。

<math>
  <mi>y</mi>
  <mo>=</mo>
  <mrow>
    <msup>
      <mi>x</mi>
      <mn>2</mn>
    </msup>
    <mtext>&nbsp;ならば&nbsp;</mtext>
    <mrow>
      <mi>x</mi>
      <mo></mo>
      <mn>1</mn>
    </mrow>
    <mtext>&nbsp;かつ&nbsp;</mtext>
    <mn>2</mn>
    <mtext>&nbsp;それ以外の場合。</mtext>
  </mrow>
</math>
mtext の例
3.2.1.1 <mtext> のレイアウト

要素の計算済み display プロパティが block math または inline math に等しくない場合、その要素は 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合は、以下のレイアウトが実行されます。

<mtext> 要素が、 強制改行 または ソフトラップ機会 のないテキストコンテンツのみを含む場合、そのテキストに対して生成された 匿名の子ノードは、関連する CSS 仕様で定義されるように レイアウトされ、次のようになります。

それ以外の場合、mtext 要素は ブロックボックス としてレイアウトされ、対応する min-content インラインサイズmax-content インラインサイズインラインサイズブロックサイズ最初のベースラインセット、および 最後のベースラインセット数式コンテンツボックスに使用されます。

3.2.2 識別子 <mi>

mi 要素は、識別子としてレンダリングされるべき 記号名または任意のテキストを表します。識別子には、 変数、関数名、記号定数を含めることができます。

<mi> 要素は、 2.1.3 グローバル属性 で説明される属性に加えて、次の属性を受け入れます。

レイアウトアルゴリズムは mtext 要素と同じです。 ユーザーエージェントスタイルシート は、4.2 math-auto 変換で導入される text-transform 値による自動イタリックを実装するため、 次のプロパティを含まなければなりません。

mi {
  text-transform: math-auto;
}

mathvariant 属性が存在する場合、 normalASCII 大文字小文字不区別で 一致しなければなりません。 その場合、ユーザーエージェントは、この属性を 要素の text-transform プロパティを none に設定する 表示上のヒントとして扱うことが期待されます。それ以外の場合は効果を持ちません。

注記

[MathML3] では、 mathvariant 属性は、 トークン要素の論理クラスを定義するために使用されていました。各クラスは、 所与の数式内で特定の意味を持つ、 タイポグラフィ的に関連する記号トークンの集合を提供していました。

MathML Core では、この属性は mi 要素の自動イタリックを無効にするためだけに使用されます。その他の用途では、 適切な Mathematical Alphanumeric Symbols [UNICODE] を 代わりに使用するべきです。C. 数学用英数字記号も参照してください。

次の例では、 mi を使用して 変数と関数名をレンダリングします。 4.2 math-auto 変換に従うと、デフォルトの スタイル text-transform: math-auto は、 最初の <mi> には効果を持たず("cos" は3文字で構成されています)、 2番目の <mi> を数式イタリックとしてレンダリングし("c" は単一の 文字 U+0063 Latin Small Letter C で構成され、 italic テーブルに従って U+1D450 Mathematical Italic Small C に マッピングされます)、3番目の <mi> には効果を持たず (mathvariant="normal" によって上書きされ、 text-transform が none に設定されます)、4番目の <mi> にも効果を持ちません(U+221E Infinity に対しては italic テーブルにマッピングが定義されていません)。

<math>
  <mi>cos</mi>
  <mo>,</mo>
  <mi>c</mi>
  <mo>,</mo>
  <mi mathvariant="normal">c</mi>
  <mo>,</mo>
  <mi></mi>
</math>
mi の例

3.2.3 数値 <mn>

mn 要素は、「数値リテラル」または 数値リテラルとしてレンダリングされるべきその他のデータを表します。一般的に いえば、数値リテラルとは数字の列であり、場合によっては 小数点を含み、符号なし整数または実数を表します。

<mn> 要素は、 2.1.3 グローバル 属性で説明される属性を受け入れます。そのレイアウトアルゴリズムは mtext 要素と同じです。

次の例では、 mn を使用して 小数を書いています。

<math>
  <mn>3.141592653589793</mn>
</math>
mn の例

3.2.4 演算子、 フェンス、区切り記号、またはアクセント <mo>

mo 要素は、 演算子、または演算子としてレンダリングされるべきものを表します。 一般に、数学演算子の表記規則は 非常に複雑であるため、MathML は <mo> 要素のレンダリング動作を指定するための 比較的高度な機構を提供します。

その結果、MathML で「演算子としてレンダリングされるべき」ものの 一覧には、通常の意味では数学演算子でない 多数の表記も含まれます。中置、前置、または 後置形式の通常の演算子に加えて、波括弧、 丸括弧、「絶対値」バーなどのフェンス文字、コンマ やセミコロンなどの区切り記号、記号の上のバーやチルダなどの 数学的アクセントが含まれます。この章では、この広い意味での 演算子を指すために「演算子」という用語を使用します。

<mo> 要素は、 2.1.3 グローバル属性 で説明される属性に加えて、次の 属性を受け入れます。

この仕様では、fence 属性および separator 属性に 固有の観測可能な動作は定義しません。

注記
著者は、 fence および separator を使用して、演算子の特定の意味論を記述できます。 デフォルト値は、 Operators_fence および Operators_separator テーブル、または同等に 演算子辞書の人間可読版 から決定できます。

次の例では、 mo 要素を 二項演算子 + に使用しています。デフォルトの間隔は、その演算子の 周囲で対称です。form 属性を使用して 前置演算子として扱うことを強制すると、 より狭い間隔が使用されます。 間隔は、 lspace および rspace 属性を使用して明示的に指定することもできます。

<math>
  <mn>1</mn>
  <mo>+</mo>
  <mn>2</mn>
  <mo form="prefix">+</mo>
  <mn>3</mn>
  <mo lspace="2em">+</mo>
  <mn>4</mn>
  <mo rspace="3em">+</mo>
  <mn>5</mn>
</math>
mo の例 1

別の使用例は、総和のような大演算子です。 displaystyle が true の場合、このような演算子は より大きく描画されますが、 largeop 属性で変更できます。 displaystyle が false の場合、下部スクリプトは実際には 下付き文字としてレンダリングされますが、 movablelimits 属性で変更できます。

<math>
  <mrow displaystyle="true">
  <munder>
    <mo></mo>
    <mn>5</mn>
  </munder>
  <munder>
    <mo largeop="false"></mo>
    <mn>6</mn>
  </munder>
  </mrow>
  <mrow>
    <munder>
      <mo></mo>
      <mn>5</mn>
    </munder>
    <munder>
      <mo movablelimits="false"></mo>
      <mn>7</mn>
    </munder>
  </mrow>
</math>
mo の例 2

演算子は、フェンス、 アクセント、矢印などの伸長可能な記号にも使用されます。次の例では、垂直矢印は mspace 要素の高さまで伸長します。 デフォルトの伸長動作は、 stretchy 属性で上書きできます。たとえば、伸長しない矢印を強制できます。 symmetric 属性により、 演算子を数式軸 (分数線)の上下に対称に伸長するべきかどうかを指定できます。 最後に、 minsize および maxsize 属性は、伸長サイズに 追加の制約を加えます。

<math>
  <mfrac>
    <mspace height="50px" depth="50px" width="10px" style="background: blue"/>
    <mspace height="25px" depth="25px" width="10px" style="background: green"/>
  </mfrac>
  <mo></mo>
  <mo stretchy="false"></mo>
  <mo symmetric="true"></mo>
  <mo minsize="250px"></mo>
  <mo maxsize="50px"></mo>
</math>
mo の例 3

演算子のデフォルトプロパティは、 3.2.4.2 辞書ベースの属性で説明されるように、 辞書ベースであることに注意してください。たとえば、二項 演算子は通常、その周囲にデフォルトで対称な間隔を持ち、一方、 フェンスは一般にデフォルトで伸長可能です。

3.2.4.1 装飾された演算子

MathML Core 要素は、次のいずれかである場合、 装飾された演算子 です。

  1. mo 要素。
  2. 最初の フロー内の子が存在し、かつ 装飾された演算子である スクリプト付き要素または mfrac
  3. フロー内の子が(任意の順序で)1つの 装飾された演算子と0個以上の 空白類似要素から構成される グループ化要素または mpadded

装飾された演算子コア演算子 は、次のように再帰的に定義される <mo> 要素です。

  1. mo 要素のコア演算子は、その要素自身です。
  2. 装飾された スクリプト付き要素または mfrac 要素のコア演算子は、その最初の フロー内の子のコア演算子です。
  3. 装飾された グループ化要素または mpadded のコア演算子は、その一意の 装飾された演算子である フロー内の子のコア演算子です。

装飾された演算子伸長軸は、その コア演算子が単一の文字 c から構成される テキストコンテンツのみを含み、その文字が インラインの 固有伸長軸を持つ場合は inline です。 それ以外の場合、装飾された演算子の伸長軸は block です。

同じ定義が視覚整形モデルのボックスにも適用され、そこでは 匿名 <mrow> ボックスグループ化要素として扱われます。

3.2.4.2 辞書ベースの 属性

装飾された演算子form プロパティは、 infixprefix、または postfix のいずれかです。 mo 要素上の対応する form 属性は、 存在する場合、これらの値のいずれかと ASCII 大文字小文字不区別で 一致しなければなりません。

装飾された演算子form を決定するアルゴリズムは次のとおりです。

  1. コア演算子form 属性が存在し、有効である場合、その ASCII 小文字化された値 を使用します。
  2. 装飾された演算子が、 複数の フロー内の子を持つ グループ化要素mpadded または msqrt の最初の フロー内の子である場合 (すべての 空白類似の子を無視する)、その form は prefix です。
  3. または、装飾された演算子が、 複数の フロー内の子を持つ グループ化要素mpadded または msqrt の最後の フロー内の子である場合 (すべての 空白類似の子を無視する)、その form は postfix です。
  4. または、装飾された演算子が、 スクリプト付き要素の 最初の フロー内の子以外の フロー内の子である場合、その form は postfix です。
  5. それ以外の場合、装飾された演算子の form は infix です。

装飾された演算子stretchysymmetriclargeopmovablelimits プロパティは、 false または true のいずれかです。後者の 場合、 装飾された演算子がそのプロパティを 持つといいます。 mo 要素上の対応する stretchysymmetriclargeopmovablelimits 属性は、 存在する場合、 真偽値でなければなりません。

装飾された演算子lspacerspaceminsize プロパティは <length-percentage> です。 装飾された演算子maxsize プロパティは、 <length-percentage> または ∞ のいずれかです。 mo 要素上の lspacerspaceminsize および maxsize 属性は、 存在する場合、 <length-percentage> でなければなりません。

装飾された演算子のプロパティを 決定するアルゴリズムは次のとおりです。

  1. コア演算子上に、対応する stretchysymmetriclargeopmovablelimitslspacerspacemaxsize、または minsize 属性が存在し、有効である場合、このプロパティの ASCII 小文字化された値 を使用します。
  2. それ以外の場合、 装飾された演算子の form を決定するアルゴリズムを実行します。
  3. コア演算子がテキスト コンテンツ Content のみを含む場合、 Category を、 演算子のカテゴリを 決定するアルゴリズム (Content, Form) の結果に設定します。ここで Form は、 前のステップで計算された form です。
  4. CategoryDefault で、かつ 装飾された演算子form が、その コア 演算子の属性として明示的に 指定されていない場合:
    1. Category を、 演算子の カテゴリを決定するアルゴリズム (Content, Form) の結果に設定します。ここで Forminfix です。
    2. CategoryDefault の場合、 Formpostfix に設定してアルゴリズムを再度実行します。
    3. CategoryDefault の場合、 Formprefix に設定してアルゴリズムを再度実行します。
  5. 演算子の カテゴリからそのプロパティを設定する アルゴリズムCategory に対して実行します。

レイアウト中に使用される場合、 stretchysymmetriclargeopmovablelimitslspacerspaceminsize の値は、 装飾された演算子の プロパティを決定するアルゴリズムによって、次の追加の 解決を伴って取得されます。

  • lspacerspace のパーセンテージ値は、 辞書から読み取った値、 または上記のフォールバック値に対する相対値として解釈されます。
  • minsize および maxsize のパーセンテージ値の解釈は、 3.2.4.3 演算子の レイアウトで説明されます。
  • lspacerspaceminsize、および maxsize の フォント相対長は、 装飾された演算子ではなく、 コア演算子の フォントスタイルに依存します。
3.2.4.3 演算子のレイアウト

<mo> 要素の計算済み display プロパティが block math または inline math に等しくない場合、その要素は 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合は、以下のレイアウトが実行されます。

演算子のテキストは、 <mo> 要素の visibilityvisible の場合にのみ描画されなければなりません。 その場合、 <mo> 要素の color で描画されなければなりません。

演算子は次のようにレイアウトされます。

  1. <mo> 要素の内容が単一の文字 c から 構成されていない場合、 3.2.1.1 <mtext> のレイアウトの レイアウトアルゴリズムにフォールバックします。
  2. 演算子が stretchy プロパティを持つ場合:
  3. 演算子が largeop プロパティを持ち、 <mo> 要素上の math-stylenormal の場合:
    1. MathVariants テーブルを使用して、少なくとも DisplayOperatorMinHeight の高さを持つグリフを探します。 見つからない場合、最大の非基本グリフにフォールバックします。 それも見つからない場合、 3.2.1.1 <mtext> のレイアウトの レイアウトアルゴリズムにフォールバックします。

    2. 数式コンテンツの min-content インラインサイズmax-content インラインサイズインラインサイズ、およびブロックメトリクスは、 見つかったグリフによって与えられます。
    3. グリフを描画します。
    8 総和記号の基本サイズと displaystyle サイズ
  4. それ以外の場合、 3.2.1.1 <mtext> のレイアウトの レイアウトアルゴリズムにフォールバックします。

上記のいずれかのステップで 伸長可能なグリフをシェイプする アルゴリズムが 使用された場合、数式コンテンツの イタリック補正 は、そのアルゴリズムが返した値に設定されます。

3.2.5 空白 <mspace>

空要素 mspace は、その属性で設定された 任意の望ましいサイズの空白を表します。

<mspace> 要素は、 2.1.3 グローバル属性 で説明される属性に加えて、次の 属性を受け入れます。

widthheightdepth が 存在する場合、その値は有効な <length-percentage> でなければなりません。

  • width 属性が存在し、有効で、パーセンテージでない場合、 その属性は、要素の width プロパティを対応する値に設定する 表示上のヒント として使用されます。
  • height 属性が存在しない、無効、またはパーセンテージの場合、要求される line-ascent は 0 です。 それ以外の場合、要求される line-ascent は height 属性の解決済み 値であり、負の値は 0 に制限されます。
  • height 属性と depth 属性の両方が 存在し、有効で、パーセンテージでない場合、それらは 要素の height プロパティを、文字列 "calc("、height 属性値、 " + "、depth 属性値、 および ")" の連結結果に設定する 表示上のヒント として使用されます。 これらの属性のうち一方だけが 存在し、有効で、パーセンテージでない場合、その属性は 要素の height プロパティを対応する値に設定する 表示上のヒント として扱われます。

次の例では、 mspace を使用して、 数式内に強制的に間隔を設けています(空間を 視覚的に確認しやすくするため、1px の青い境界線を 追加しています)。

<math>
  <mn>1</mn>
  <mspace width="1em"
          style="border-top: 1px solid blue"/> 
  <mfrac>
    <mrow>
      <mn>2</mn>
      <mspace depth="1em"
              style="border-left: 1px solid blue"/>
    </mrow>
    <mrow>
      <mn>3</mn>
      <mspace height="2em"
              style="border-left: 1px solid blue"/>
    </mrow>
  </mfrac>
</math>
mspace の例

<mspace> 要素の 計算済み display プロパティが block math または inline math に等しくない場合、その要素は 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合、 <mspace> 要素は 9に示すようにレイアウトされます。 数式コンテンツの min-content インラインサイズmax-content インラインサイズ、および インラインサイズは、 width プロパティの 解決済み値に等しくなります。 数式コンテンツの ブロックサイズは、 height プロパティの解決済み 値に等しくなります。 数式コンテンツの line-ascent は、 上で決定された要求 line-ascent に等しくなります。

9 <mspace> 要素のボックスモデル
注記
height/depth という用語は [MATHML3] に由来し、それ自体が [TEXBOOK] から着想を得ています。
3.2.5.1 空白類似要素 の定義

多くの MathML プレゼンテーション要素は、通常 空白としてレンダリングされ、それらが現れる式の 数学的意味に影響を与えないという意味で「空白類似」です。 その結果、これらの要素は他の MathML 式で やや例外的な方法で機能することがよくあります。

MathML Core 要素は、次のいずれかである場合、 空白類似要素 です。

  1. mtext または mspace
  2. または、 すべての フロー内の子が 空白類似である グループ化要素または mpadded

同じ定義が視覚整形モデルのボックスにも適用され、そこでは 匿名 <mrow> ボックスグループ化要素として扱われます。

注記
mphantom は、その内容が 空白類似でない限り、自動的に空白類似と定義されるわけではないことに注意してください。 これは、隣接する要素が空白類似であるかどうかによって 演算子の間隔が影響を受けるためです。 <mphantom> 要素は 主として式の整列を補助することを意図しているため、 <mphantom> に隣接する演算子は、 同じ大きさの空白領域に隣接しているかのようにではなく、 <mphantom> の内容に隣接しているかのように 動作するべきです。

3.2.6 文字列リテラル <ms>

ms 要素は、数式処理システムや 「プログラミング言語」を含むその他のシステムによって解釈されることを意図した式内の 「文字列リテラル」を表現するために使用されます。

<ms> 要素は、 2.1.3 グローバル 属性で説明される属性を受け入れます。そのレイアウトアルゴリズムは mtext 要素と同じです。

次の例では、 ms を使用して リテラル文字列を書いています。

<math>
  <mi>s</mi>
  <mo>=</mo>
  <ms>"こんにちは世界"</ms>
</math>
ms の例
注記
MathML3 では、lquote 属性と rquote 属性を使用して、それぞれ開始引用符と終了引用符に 使用する文字列を指定できました。これらは現在ではサポートされておらず、 代わりに引用符を <ms> 要素のテキストの一部として指定しなければなりません。 視覚的レンダリングを維持するため、レガシー 文書に CSS 規則を追加できます。たとえば、 左から右方向では:
ms:before, ms:after {
  content: "\0022";
}
ms[lquote]:before {
  content: attr(lquote);
}
ms[rquote]:after {
  content: attr(rquote);
}

3.3 一般レイアウトスキーマ

トークン以外にも、MathML プレゼンテーション 要素にはいくつかの系統があります。ある系統の要素は、下付き文字や 上付き文字などのさまざまな「スクリプト」表記を扱います。別の系統は 行列や表を扱います。このセクションで 説明する残りの要素は、分数や根号などの その他の基本表記を記述するか、スタイルプロパティの 設定やエラー処理などの一般的な機能を扱います。

3.3.1 部分式のグループ化 <mrow>

mrow 要素は、任意の数の部分式をまとめてグループ化するために使用され、通常は 1つ以上の他の式を「オペランド」として作用する 1つ以上の <mo> 要素「演算子」から 構成されます。

次の例では、 mrow を使用して、 和「1 + 2/3」を分数の分子( mfrac の最初の子)としてグループ化し、 5乗される フェンス付き式( msup の最初の子)を構築しています。 mrow だけでは、グループ化された内容の周囲に視覚的なフェンスは 追加されないため、 mo 要素を使用して明示的に指定する必要があることに注意してください。

mrow 要素内では、子の垂直方向の整列 (アルファベットベースラインまたは 数式ベースラインに従う)が 正しく実行され、フェンスが垂直方向に伸長され、 二項 + 演算子の周囲の間隔が自動的に計算されることがわかります。

<math>
  <msup>
    <mrow>
      <mo>(</mo>
      <mfrac>
        <mrow>
          <mn>1</mn>
          <mo>+</mo>
          <mfrac>
            <mn>2</mn>
            <mn>3</mn>
          </mfrac>
        </mrow>
        <mn>4</mn>
      </mfrac>
      <mo>)</mo>
    </mrow>
    <mn>5</mn>
  </msup>
</math>
mrow の例

<mrow> 要素は、 2.1.3 グローバル 属性で説明される属性を受け入れます。フロー内の子 child1, child2, …, childN を持つ <mrow> 要素は、10に示すようにレイアウトされます。子ボックスは すべての アルファベットベースライン を揃えた状態で、順番に一列に配置されます。

10 <mrow> 要素のボックスモデル
注記
ボックスモデルによって アルファベット ベースラインの整列が保証されるため、 すべての フロー内の子で AxisHeight が同じである典型的な場合には、 分数線や対称な伸長可能演算子も 数式軸に沿って揃えられます。
3.3.1.1 ブロック軸に沿って演算子を伸長するアルゴリズム
11 ブロック軸に沿った 演算子の対称および非対称 伸長

ブロック 軸に沿って演算子を伸長するアルゴリズム は次の手順で構成されます。

  1. ブロック伸長サイズ 制約 または インライン伸長サイズ制約 が存在する場合、レイアウトされている要素は 装飾された演算子です。 装飾された演算子である1つの フロー内の子を 同じ伸長サイズ制約でレイアウトし、 その他すべての フロー内の子を 伸長サイズ制約なしでレイアウトして 終了します。
  2. それ以外の場合、 フロー内の子のリストを、 stretchy プロパティと block 伸長軸を持つ 装飾された演算子を含む第1のリスト LToStretch と、 第2のリスト LNotToStretch に分割します。
  3. LNotToStretch の すべての項目に対して、伸長サイズ制約なしでレイアウトを実行します。 LToStretch が空の場合は終了します。 LNotToStretch が空の場合、 LToStretch の すべての項目に対して ブロック伸長サイズ 制約 (0, 0) で レイアウトを実行します。
  4. 制約なしの目標サイズ UascentUdescent を、それぞれ 前のステップでレイアウトされた フロー内の子の マージンボックスの最大 ink ascent と最大 ink descent として計算します。
  5. LToStretch のすべての要素を、 ブロック伸長サイズ制約 (Uascent, Udescent) で レイアウトまたは再レイアウトします。
3.3.1.2 <mrow> のレイアウト

ボックスが 匿名 <mrow> ボックスではなく、 関連付けられた要素の計算済み display プロパティが block math または inline math に等しくない場合、その要素は 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合は、以下のレイアウトが実行されます。

子ボックスが 装飾された演算子ではなく、 0 でない イタリック補正を持つ場合、その子ボックスを 傾斜しているといいます。

注記
大演算子は 0 でない イタリック補正を持つ場合がありますが、その 補正はスクリプトを付加するときに使用されます。 より一般には、すべての 装飾された演算子 は、その周囲の間隔が lspace および rspace によって指定されるように計算されるため、 非傾斜として扱われます。

min-content インラインサイズ (それぞれ max-content インラインサイズ)は、 次のアルゴリズムを使用して計算されます。

  1. ボックスが math 要素に対応する場合、または 装飾された演算子ではない場合は add-space を true に設定し、 それ以外の場合は false に設定します。
  2. inline-offset を 0 に設定します。
  3. previous-italic-correction を 0 に設定します。
  4. フロー内の子について:
    1. 子が 傾斜していない場合、 inline-offsetprevious-italic-correction だけ増加させます。
    2. 子が 装飾された 演算子 で、add-space が true の場合、 inline-offset を その lspace プロパティだけ増加させます。
    3. inline-offset を、 子の マージンボックスmin-content インラインサイズ (それぞれ max-content インラインサイズ)だけ増加させます。
    4. 子が 傾斜している場合、 previous-italic-correction を その イタリック補正に設定します。それ以外の場合は 0 に設定します。
    5. 子が 装飾された 演算子 で、add-space が true の場合、 inline-offset を その rspace プロパティだけ増加させます。
  5. inline-offsetprevious-italic-correction だけ増加させます。
  6. inline-offset を返します。

フロー内の子は、 ブロック軸に沿って 演算子を伸長するアルゴリズムを使用してレイアウトされます。

数式コンテンツの インラインサイズは、 数式コンテンツの min-content インラインサイズmax-content インラインサイズと同様に計算されますが、 代わりに フロー内の子の マージンボックスインラインサイズを使用します。

数式コンテンツの ink line-ascent(それぞれ line-ascent)は、 すべての フロー内の子の マージンボックスink line-ascent(それぞれ line-ascent)の最大値です。同様に、 数式コンテンツの ink line-descent(それぞれ line-descent)は、 すべての フロー内の子の マージンボックスink line-descent (それぞれ ink line-ascent)の最大値です。

フロー内の子は、次の アルゴリズムを使用して配置されます。

  1. ボックスが math 要素に対応する場合、または 装飾された演算子ではない場合は add-space を true に設定し、 それ以外の場合は false に設定します。
  2. inline-offset を 0 に設定します。
  3. previous-italic-correction を 0 に設定します。
  4. フロー内の子について:
    1. 子が 傾斜していない場合、 inline-offsetprevious-italic-correction だけ増加させます。
    2. 子が 装飾された 演算子 で、add-space が true の場合、 inline-offset を その lspace プロパティだけ増加させます。
    3. 子の インラインオフセットinline-offset に設定し、その ブロック オフセットは、 子の アルファベットベースラインアルファベット ベースラインと揃うように設定します。
    4. inline-offset を、 子の マージンボックスインラインサイズだけ増加させます。
    5. 子が 傾斜している場合、 previous-italic-correction を その イタリック補正に設定します。それ以外の場合は 0 に設定します。
    6. 子が 装飾された 演算子 で、add-space が true の場合、 inline-offset を その rspace プロパティだけ増加させます。

数式コンテンツの イタリック補正は、 最後の フロー内の子のイタリック 補正、すなわち previous-italic-correction の最終値に設定されます。

3.3.2 分数 <mfrac>

mfrac 要素は分数に使用されます。また、二項係数やルジャンドル記号などの 分数に似たオブジェクトをマークアップするためにも使用できます。

<mfrac> 要素の計算済み display プロパティが block math または inline math に等しくない場合、 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合、以下のレイアウトが実行されます。

<mfrac> 要素は、 2.1.3 グローバル属性 で説明される属性に加えて、次の 属性を受け入れます。

linethickness 属性は、分数線に使用する 分数線の太さ を示します。 存在する場合、有効な <length-percentage> である値を持たなければなりません。 属性が存在しないか無効な値を持つ場合、 FractionRuleThickness がデフォルト 値として使用されます。パーセンテージはそのデフォルト値に対する相対値として解釈されます。 負の値は 0 として解釈されます。

次の例には、異なる linethickness 値を持つ4つの分数が含まれています。分数線は常に プラス記号とマイナス記号の中央に揃えられます。 分子と分母は水平方向に中央揃えされます。 displaystyle でない分数では、より小さい間隔と font-size が使用されます。

<math>
  <mn>0</mn>
  <mo>+</mo>
  <mfrac displaystyle="true">
    <mn>1</mn>
    <mn>2</mn>
  </mfrac>
  <mo></mo>
  <mfrac>
    <mn>1</mn>
    <mn>2</mn>
  </mfrac>
  <mo>+</mo>
  <mfrac linethickness="200%">
    <mn>1</mn>
    <mn>234</mn>
  </mfrac>
  <mo></mo>
  <mrow>
    <mo>(</mo>
    <mfrac linethickness="0">
      <mn>123</mn>
      <mn>4</mn>
    </mfrac>
    <mo>)</mo>
  </mrow>
</math>
mfrac の例

<mfrac> 要素は、その子の内部で displaystylefalse に設定し、 すでに false である場合は scriptlevel を 1 増加させます。 2番目の子の内部では math-shiftcompact に設定します。 分数線と隣接する別の項目(たとえば、マイナス記号や別の分数の分数線)との 視覚的な混同を避けるため、 デフォルトで要素の周囲に 1 ピクセルの空間が追加されます。 ユーザーエージェントスタイルシート は次の規則を含まなければなりません。

mfrac {
  padding-inline: 1px;
}
mfrac > * {
  math-depth: auto-add;
  math-style: compact;
}
mfrac > :nth-child(2) {
  math-shift: compact;
}

<mfrac> 要素に 2つ未満または2つを超える フロー内の子がある場合、そのレイアウトアルゴリズムは mrow 要素と同じです。 それ以外の場合、最初の フロー内の子を 分子、 2番目の フロー内の子を 分母 と呼び、レイアウトアルゴリズムは以下で説明されます。

注記
実際には、<mfrac> 要素には フロー内である2つの子があります。したがって CSS 規則は基本的に、 分子分母に対して、 scriptleveldisplaystyle および math-shift の変更を行います。
3.3.2.1 線の太さが 0 でない分数

分数線の太さが 0 でない場合、 <mfrac> 要素は 12に示すようにレイアウトされます。 分数線は、<mfrac> 要素の visibilityvisible の場合にのみ描画されなければなりません。 その場合、分数線は <mfrac> 要素の color で描画されなければなりません。

12 <mfrac> 要素のボックスモデル

コンテンツの min-content インラインサイズ (それぞれ max-content インラインサイズ)は、 分子マージンボックスmin-content インラインサイズ (それぞれ max-content インラインサイズ)と、 分母マージンボックスmin-content インラインサイズ (それぞれ max-content インラインサイズ)の最大値です。

インライン伸長サイズ 制約 または ブロック伸長サイズ制約が存在する場合、 分子も同じ伸長サイズ 制約でレイアウトされ、 それ以外の場合は伸長サイズ制約なしでレイアウトされます。 分母は常に 伸長サイズ制約なしでレイアウトされます。

数式コンテンツの インラインサイズは、 分子マージンボックスインラインサイズと、 分母マージンボックスインラインサイズの最大値です。

NumeratorShift は次の値の最大値です。

DenominatorShift は次の値の最大値です。

数式コンテンツの line-ascent は次の値の最大値です。

数式コンテンツの line-descent は次の値の最大値です。

分子 (それぞれ 分母)の インラインオフセットは、 数式コンテンツの インラインサイズの半分 − 分子マージンボックスインラインサイズの半分 (それぞれ 分母マージンボックスインラインサイズの半分)です。

分子(それぞれ 分母)の アルファベットベースラインは、 アルファベットベースラインから NumeratorShift(それぞれ DenominatorShift)の距離だけ、 line-over(それぞれ line-under)方向にシフトされます。

数式コンテンツボックスは、 コンテンツボックス内で、それらの block-start 辺が 揃い、それらの辺の中央が同じ 位置になるように配置されます。

分数線の インラインサイズコンテンツボックスインラインサイズであり、 その inline-start 辺は コンテンツボックスのものと揃えられます。 分数線の中心は、数式コンテンツボックスアルファベット ベースラインから、 AxisHeight の距離だけ line-over 方向にシフトされます。 その ブロックサイズ分数線の太さです。

3.3.2.2 線の太さが 0 の分数

分数線の太さが 0 の場合、 <mfrac> 要素は代わりに 13 に示すようにレイアウトされます。

13 分数線なしの <mfrac> 要素のボックスモデル

数式コンテンツの min-content インラインサイズmax-content インラインサイズ および インラインサイズは、 3.3.2.1 線の太さが 0 でない分数と同じように計算されます。

インライン伸長サイズ 制約または ブロック伸長サイズ制約が存在する場合、 分子も同じ伸長サイズ 制約でレイアウトされ、 それ以外の場合は伸長サイズ制約なしでレイアウトされます。 分母は常に 伸長サイズ制約なしでレイアウトされます。

math-stylecompact の場合、 TopShiftBottomShift はそれぞれ StackTopShiftUpStackBottomShiftDown に設定されます。 それ以外の場合、math-stylenormal であり、 それぞれ StackTopDisplayStyleShiftUpStackBottomDisplayStyleShiftDown に設定されます。

Gap は、 (BottomShift分母マージンボックスink line-ascent)+ (TopShift分子マージンボックスink line-descent) と定義されます。 math-stylecompact の場合、GapMinStackGapMin であり、 それ以外の場合、math-stylenormal であり、StackDisplayStyleGapMin です。 Δ = GapMinGap が正の場合、 TopShiftBottomShift はそれぞれ Δ/2 と Δ − Δ/2 だけ増加します。

数式コンテンツの line-ascent は次の値の最大値です。

数式コンテンツの line-descent は次の値の最大値です。

分子分母インラインオフセットは、 3.3.2.1 線の太さが 0 でない分数と同じように 計算されます。

分子(それぞれ 分母)の アルファベットベースラインは、 アルファベットベースラインから TopShift(それぞれ − BottomShift)の距離だけ line-over(それぞれ line-under)方向にシフトされます。

数式コンテンツボックスは、 コンテンツボックス内で、それらの block-start 辺が 揃い、それらの辺の中央が同じ 位置になるように配置されます。

3.3.3 根号 <msqrt>, <mroot>

根号要素は、 コンテンツの上に線を持つ根号記号 √ を使用した式を構築します。 msqrt 要素は 平方根に使用され、一方 mroot 要素は 立方根など、指数付きの根号を描画するために使用されます。

<msqrt> 要素と <mroot> 要素は、 2.1.3 グローバル 属性で説明される属性を受け入れます。

次の例には、 msqrt で記述された平方根と、 mroot で記述された立方根が含まれています。 msqrt には複数の子があり、 平方根がそれらすべてに適用されることに注意してください。 mroot にはちょうど2つの子があります。これは、 最初の子(平方根)に適用される、 第2の子(数値 3)を指数とする根です。 また、これらの要素は mroot の指数内でのみ font-size を変更しますが、 分数の分子と分母内よりもさらに小さく 縮小されることにも注意してください。

<math>
  <mroot>
    <msqrt>
      <mfrac>
        <mn>1</mn>
        <mn>2</mn>
      </mfrac>
      <mo>+</mo>
      <mn>4</mn>
    </msqrt>
    <mn>3</mn>
  </mroot>
  <mo>+</mo>
  <mn>0</mn>
</math>
msqrt-mroot の例

<msqrt> 要素と <mroot> 要素は math-shiftcompact に設定します。 <mroot> 要素は、 最初の子以外のすべての子で scriptlevel を 2 増加させ、 displaystyle を "false" に設定します。 ユーザーエージェントスタイルシート は、その動作を実装するために次の規則を 含まなければなりません。

mroot > :not(:first-child) {
  math-depth: add(2);
  math-style: compact;
}
mroot, msqrt {
  math-shift: compact;
}

<msqrt> 要素または <mroot> 要素の計算済み display プロパティが block math または inline math に等しくない場合、 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合、以下のレイアウトが実行されます。

<mroot> に2つ未満または2つを超える フロー内の子がある場合、 そのレイアウトアルゴリズムは mrow 要素と同じです。 それ以外の場合、最初の フロー内の子を mroot 基底 と呼び、 2番目の フロー内の子を mroot 指数 と呼び、そのレイアウトアルゴリズムは以下で説明されます。

注記
実際には、<mroot> 要素には フロー内である2つの子があります。したがって CSS 規則は基本的に、 指数に対して scriptlevel および displaystyle の変更を行います。

<msqrt> 要素は、 msqrt 基底と呼ばれる 匿名 <mrow> ボックスを生成します

3.3.3.1 根号記号

根号記号は、 <msqrt> 要素または <mroot> 要素の visibilityvisible の場合にのみ描画されなければなりません。 その場合、根号記号は その要素の color で描画されなければなりません。

根号 グリフは、 文字 U+221A SQUARE ROOT に対して得られるグリフです。

根号 間隔は、 RadicalVerticalGap です(math-stylecompact の場合)。 math-stylenormal の場合は RadicalDisplayStyleVerticalGap です。

伸長可能な根号グリフの目標サイズは、 RadicalRuleThickness根号間隔、および基底の ink height の合計です。

根号グリフのボックスメトリクス および 根号本体の描画は、 根号グリフの目標サイズの ブロック寸法まで 伸長可能なグリフをシェイプする アルゴリズムによって与えられます。

3.3.3.2 平方根

<msqrt> 要素は、 14に示すようにレイアウトされます。

14 <msqrt> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ (それぞれ max-content インラインサイズ)は、 根号グリフについての ブロック軸に沿って伸長された グリフの推奨インラインサイズ と、 msqrt 基底マージンボックスmin-content インラインサイズ(それぞれ max-content インラインサイズ) の合計です。

数式コンテンツの インラインサイズは、 根号グリフのボックスメトリクスの advance width と、 msqrt 基底のマージンボックスの インラインサイズの合計です。

数式コンテンツの line-ascent は次の値の最大値です。

数式コンテンツの line-descent は次の値の最大値です。

上線の インラインサイズは、 msqrt 基底のマージンボックスの インラインサイズです。 msqrt 基底と 上線の インラインオフセットも同じであり、 根号グリフのボックスメトリクスの 幅に等しくなります。

msqrt 基底アルファベットベースラインは、 アルファベットベースラインと揃えられます。 上線の ブロックサイズRadicalRuleThickness です。その垂直方向の中心は、 アルファベットベースラインから line-over 方向へ、 数式コンテンツの line-ascentRadicalExtraAscenderRadicalRuleThickness の半分 に等しい距離だけシフトされます。

最後に、根号本体の描画は次のように実行されます。

3.3.3.3 指数付きの根

<mroot> 要素は、 15に示すようにレイアウトされます。 最初に mroot 指数を無視し、 mroot 基底 と 根号グリフを、 3.3.3.2 平方根 と同じアルゴリズムを使用して、 14 に示すようにレイアウトし、マージンボックス B(緑色で表示)を生成します。

15 <mroot> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ (それぞれ max-content インラインサイズ)は、 max(0, RadicalKernBeforeDegree)、 mroot 指数mroot 指数マージンボックスmin-content インラインサイズ (それぞれ max-content インラインサイズ)、 max(−min-content インラインサイズ, RadicalKernAfterDegree) (それぞれ max(−mroot 指数マージンボックスmax-content インラインサイズ, RadicalKernAfterDegree))、 および B の min-content インラインサイズ (それぞれ max-content インラインサイズ)の合計です。

同じクランプ処理を使用して、 AdjustedRadicalKernBeforeDegreeAdjustedRadicalKernAfterDegree はそれぞれ max(0, RadicalKernBeforeDegree) と max(−指数の マージンボックスインラインサイズ, RadicalKernAfterDegree) と定義されます。

数式コンテンツの インラインサイズは、 AdjustedRadicalKernBeforeDegree、 指数の マージンボックスインラインサイズAdjustedRadicalKernAfterDegree および B の インラインサイズの合計です。

数式コンテンツの line-ascent は次の値の最大値です。

数式コンテンツの line-descent は次の値の最大値です。

指数の インラインオフセットは、 AdjustedRadicalKernBeforeDegree です。 mroot 基底の inline-offset は、それに 指数の マージンボックスインラインサイズを加えた値です。

B の アルファベットベースラインは、 アルファベットベースラインと揃えられます。 指数の アルファベットベースラインは、 line-under 辺から、 RadicalDegreeBottomRaisePercent × B の ブロックサイズ + 指数の マージンボックスline-descent の距離だけ離れるようにシフトされます。

注記
一般に、根指数の前のカーニングは正であり、 その後のカーニングは負です。これは、根要素が inline-start 側にいくらかの空間を持ち、根指数が 根号本体と重なることを意味します。

3.3.4 スタイル変更 <mstyle>

歴史的に、 mstyle 要素は、その内容のレンダリングに影響する スタイル変更を行うために導入されました。

<mstyle> 要素は、 2.1.3 グローバル属性 で説明される属性を受け入れます。 そのレイアウトアルゴリズムは mrow 要素と同じです。

注記
<mstyle> は完全な MathML との互換性のために実装されています。 対象が MathML Core のみである著者には、スタイル指定に CSS を使用することが推奨されます。

次の例では、 mstyle を使用して scriptlevel および displaystyle を設定しています。 これらがそれぞれ子孫の font-size と下付き文字の配置に影響することを確認してください。 MathML Core では、代わりに単に mrow 要素を使用することもできます。

<math>
  <munder>
    <mo movablelimits="true">*</mo>
    <mi>A</mi>
  </munder>
  <mstyle scriptlevel="1">
    <mstyle displaystyle="true">
      <munder>
        <mo movablelimits="true">*</mo>
        <mi>B</mi>
      </munder>
      <munder>
        <mo movablelimits="true">*</mo>
        <mi>C</mi>
      </munder>
    </mstyle>
    <munder>
      <mo movablelimits="true">*</mo>
      <mi>D</mi>
    </munder>
  </mstyle>
</math>
mstyle の例

3.3.5 エラーメッセージ <merror>

merror 要素は、その内容を 「エラーメッセージ」として表示します。この要素の目的は、他の入力から MathML を生成するプログラムが、その入力内の構文エラーを報告するための 標準的な方法を提供することです。

次の例では、 merror を使用して、LaTeX に似た入力の 解析エラーを示しています。

<math>
  <mfrac>
    <merror>
      <mtext>構文エラー: \frac{1}</mtext>
    </merror>
    <mn>3</mn>
  </mfrac>
</math>
merror の例

<merror> 要素は、 2.1.3 グローバル属性 で説明される属性を受け入れます。 そのレイアウトアルゴリズムは mrow 要素と同じです。 ユーザーエージェントスタイルシート は、エラーメッセージを視覚的に強調するため、 次の規則を含まなければなりません。

merror {
  border: 1px solid red;
  background-color: lightYellow;
}

3.3.6 コンテンツの周囲の 空間を調整する <mpadded>

mpadded 要素は、その フロー内の子コンテンツと同じようにレンダリングされますが、 コンテンツのサイズと相対配置点が <mpadded> の属性に従って変更されます。

<mpadded> 要素は、 2.1.3 グローバル属性 で説明される属性に加えて、次の 属性を受け入れます。

widthheightdepthlspace および voffset が存在する場合、有効な <length-percentage> である値を持たなければなりません。

次の例では、 mpadded を使用して 分数の周囲の間隔を調整しています (視覚化するため青い背景を使用しています)。 属性がない場合は mrow のように動作しますが、 属性によってボックスのサイズ (width、height、depth)と、そのボックス内での分数の位置 (lspace と voffset)を指定できます。

<math>
  <mrow>
    <mn>1</mn>
    <mpadded style="background: lightblue;">
      <mfrac>
        <mn>23456</mn>
        <mn>78</mn>
      </mfrac>
    </mpadded>
    <mn>9</mn>
  </mrow>
  <mo>+</mo>
  <mrow>
    <mn>1</mn>
    <mpadded lspace="2em" voffset="-1em" height="1em" depth="3em" width="7em"
             style="background: lightblue;">
      <mfrac>
        <mn>23456</mn>
        <mn>78</mn>
      </mfrac>
    </mpadded>
    <mn>9</mn>
  </mrow>
</math>
mpadded の例
3.3.6.1 内部ボックス と要求されたパラメーター

mpadded 要素は、 mpadded 内部ボックスと呼ばれる 匿名 <mrow> ボックスを生成します。このボックスには、 内部インラインサイズ、内部 line-ascent、および内部 line-descent と呼ばれる パラメーターがあります。

要求された <mpadded> パラメーターは次のように決定されます。

  • 要求された width は、 width プロパティの解決済み値です。 width 属性が存在し、有効で、パーセンテージでない場合、 その属性は、要素の width プロパティを対応する値に設定する 表示上のヒント として使用されます。
  • height 属性が存在しない、無効、またはパーセンテージの場合、要求された height は内部 line-ascent です。 それ以外の場合、要求された height は height 属性の解決済み値であり、 負の値は 0 に制限されます。
  • depth 属性が存在しない、無効、またはパーセンテージの場合、要求された depth は内部 line-ascent です。 それ以外の場合、要求された depth は depth 属性の解決済み値であり、 負の値は 0 に制限されます。
  • lspace 属性が存在しない、無効、またはパーセンテージの場合、要求された lspace は 0 です。それ以外の場合、要求された lspace は lspace 属性の解決済み値であり、 負の値は 0 に制限されます。
  • voffset 属性が存在しない、無効、またはパーセンテージの場合、要求された voffset は 0 です。それ以外の場合、要求された voffset は voffset 属性の解決済み値です。
    注記
    負の voffset 値は 0 に制限されません。
3.3.6.2 <mpadded> のレイアウト

<mpadded> 要素の計算済み display プロパティが block math または inline math に等しくない場合、 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合、 16に示すようにレイアウトされます。

16 <mpadded> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ(それぞれ max-content インラインサイズ)は、 3.3.6.1 内部ボックスと要求されたパラメーター で計算された要求 width ですが、 「内部インラインサイズ」の代わりに mpadded 内部ボックスmin-content インラインサイズ(それぞれ max-content インラインサイズ)を 使用します。

数式コンテンツの インラインサイズは、 3.3.6.1 内部ボックスと要求されたパラメーター で計算された要求 width です。

数式コンテンツの line-ascent は要求 height です。 数式コンテンツの line-descent は要求 depth です。

mpadded 内部ボックスは、その アルファベットベースラインが、 アルファベットベースラインから、 要求された voffset だけ line-over 方向へシフトされるように配置されます。

3.3.7 部分式を不可視にする <mphantom>

歴史的に、 mphantom 要素は、その内容を不可視にレンダリングしつつ、 通常どおりレンダリングした場合に内容が持つ アルファベットベースラインの位置を含む、 同じメトリクスサイズやその他の寸法を 保持するために導入されました。

次の例では、 mphantom を使用して、分数の分子と分母の 対応する部分の整列を保証しています。

<math>
  <mfrac>
    <mrow>
      <mi>x</mi>
      <mo>+</mo>
      <mi>y</mi>
      <mo>+</mo>
      <mi>z</mi>
    </mrow>
    <mrow>
      <mi>x</mi>
      <mphantom>
        <mo form="infix">+</mo>
        <mi>y</mi>
      </mphantom>
      <mo>+</mo>
      <mi>z</mi>
    </mrow>
  </mfrac>
</math>
mphantom の例

<mphantom> 要素は、 2.1.3 グローバル 属性で説明される属性を受け入れます。そのレイアウトアルゴリズムは mrow 要素と同じです。 ユーザーエージェントスタイルシート は、内容を非表示にするために次の規則を 含まなければなりません。

mphantom {
  visibility: hidden;
}
注記
<mphantom> は完全な MathML との互換性のために実装されています。 対象が MathML Core のみである著者には、スタイル指定に CSS を使用することが推奨されます。

3.4 スクリプトおよび極限スキーマ

このセクションで説明する要素は、基底の周囲に1つ以上のスクリプトを 配置します。記号にさまざまな種類のスクリプトや装飾を 付加することは、数学で非常に一般的な表記方法です。 純粋に視覚的なレイアウトだけを考えるなら、単一の汎用要素で、 所与の基底の周囲にある従来の任意の スクリプト位置へスクリプトや装飾を配置するのに十分でしょう。 しかし、一般的な表記の抽象構造を より適切に表現するため、MathML は より専門化された複数のスクリプト要素を提供します。

下付き文字/上付き文字要素に加えて、MathML には基底の 上下にスクリプトを配置する上部スクリプト要素と 下部スクリプト要素があります。 これらの要素は、大演算子に極限を配置したり、 基底の上下にアクセントや線を配置したりするために使用できます。

3.4.1 下付き文字と上付き文字 <msub>, <msup>, <msubsup>

msubmsup および msubsup 要素は、 MathML 式に下付き文字および上付き文字を付加するために使用されます。 これらは 2.1.3 グローバル属性 で説明される属性を受け入れます。

次の例は、下付き文字と 上付き文字の基本的な使用法を示しています。 スクリプト内では font-size が自動的に縮小されます。

<math>
  <msub>
    <mn>1</mn>
    <mn>2</mn>
  </msub>
  <mo>+</mo>
  <msup>
    <mn>3</mn>
    <mn>4</mn>
  </msup>
  <mo>+</mo>
  <msubsup>
    <mn>5</mn>
    <mn>6</mn>
    <mn>7</mn>
  </msubsup>
</math>
msub-msup-msubsup の例

<msub><msup>、または <msubsup> 要素の計算済み display プロパティが block math または inline math に等しくない場合、 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合、以下のレイアウトが実行されます。

3.4.1.1 <msub><msup><msubsup> の子

<msub> 要素に 2つ未満または2つを超える フロー内の子がある場合、そのレイアウトアルゴリズムは mrow 要素と同じです。 それ以外の場合、最初の フロー内の子を msub 基底、 2番目の フロー内の子を msub 下付き文字と呼び、レイアウトアルゴリズムは 3.4.1.2 下付き文字付きの 基底で説明されます。

<msup> 要素に 2つ未満または2つを超える フロー内の子がある場合、そのレイアウトアルゴリズムは mrow 要素と同じです。 それ以外の場合、最初の フロー内の子を msup 基底、 2番目の フロー内の子を msup 上付き文字と呼び、レイアウトアルゴリズムは 3.4.1.3 上付き文字付きの 基底で説明されます。

<msubsup> 要素に 3つ未満または3つを超える フロー内の子がある場合、そのレイアウトアルゴリズムは mrow 要素と同じです。 それ以外の場合、最初の フロー内の子を msubsup 基底、2番目の フロー内の子を msubsup 下付き文字、 3番目の フロー内の子を msubsup 上付き文字と呼び、レイアウトアルゴリズムは 3.4.1.4 下付き文字と上付き文字付きの基底で説明されます。

3.4.1.2 下付き文字付きの基底

<msub> 要素は、 17に示すようにレイアウトされます。 LargeOpItalicCorrection は、msub 基底largeop プロパティを持つ 装飾された演算子である場合は、その イタリック補正であり、 それ以外の場合は 0 です。

17 <msub> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ(それぞれ max-content インラインサイズ)は、 msub 基底マージンボックスmin-content インラインサイズ(それぞれ max-content インラインサイズ)− LargeOpItalicCorrection + msub 下付き文字マージンボックスmin-content インラインサイズ(それぞれ max-content インラインサイズ)+ SpaceAfterScript です。

インライン伸長サイズ制約 または ブロック伸長サイズ制約 が存在する場合、msub 基底も同じ伸長サイズ 制約でレイアウトされ、それ以外の場合は伸長サイズ 制約なしでレイアウトされます。スクリプトは常に 伸長サイズ制約なしでレイアウトされます。

数式コンテンツの インラインサイズは、 msub 基底マージンボックスのインラインサイズ − LargeOpItalicCorrection + msub 下付き文字マージンボックスインラインサイズ + SpaceAfterScript です。

SubShift は次の値の最大値です。

数式コンテンツの line-ascent は次の値の最大値です。

数式コンテンツの line-descent は次の値の最大値です。

msub 基底インラインオフセットは 0 であり、 msub 下付き文字インラインオフセットは、 msub 基底マージンボックスインラインサイズLargeOpItalicCorrection です。

msub 基底は、その アルファベットベースラインアルファベットベースラインと一致するように配置されます。 msub 下付き文字は、その アルファベットベースラインが、 アルファベットベースラインから SubShift だけ line-under 方向にシフトされるように配置されます。

3.4.1.3 上付き文字付きの基底

<msup> 要素は、 18に示すようにレイアウトされます。 ItalicCorrection は、msup 基底が、 largeop プロパティを持つ 装飾された演算子でない場合は、その イタリック補正であり、 それ以外の場合は 0 です。

18 <msup> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ(それぞれ max-content インラインサイズ)は、 msup 基底マージンボックスmin-content インラインサイズ(それぞれ max-content インラインサイズ)+ ItalicCorrection + msup 上付き文字マージンボックスmin-content インラインサイズ(それぞれ max-content インラインサイズ)+ SpaceAfterScript です。

インライン伸長サイズ制約 または ブロック伸長サイズ制約 が存在する場合、msup 基底も同じ伸長サイズ 制約でレイアウトされ、それ以外の場合は伸長サイズ 制約なしでレイアウトされます。スクリプトは常に 伸長サイズ制約なしでレイアウトされます。

数式コンテンツの インラインサイズは、 msup 基底マージンボックスインラインサイズ + ItalicCorrection + msup 上付き文字マージンボックスインラインサイズ + SpaceAfterScript です。

SuperShift は次の値の最大値です。

数式コンテンツの line-ascent は次の値の最大値です。

数式コンテンツの line-descent は次の値の最大値です。

msup 基底インラインオフセットは 0 であり、 msup 上付き文字インラインオフセットは、 msup 基底マージンボックスインラインサイズ + ItalicCorrection です。

msup 基底は、その アルファベットベースラインアルファベットベースラインと一致するように配置されます。 msup 上付き文字は、その アルファベットベースラインが、 アルファベットベースラインから SuperShift だけ line-over 方向にシフトされるように配置されます。

3.4.1.4 下付き文字と上付き文字付きの基底

<msubsup> 要素は、 18に示すようにレイアウトされます。 LargeOpItalicCorrectionSubShift3.4.1.2 下付き文字付きの基底と同様に設定されます。 ItalicCorrectionSuperShift3.4.1.3 上付き文字付きの基底と同様に設定されます。

19 <msubsup> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ(それぞれ max-content インラインサイズ および インラインサイズ)は、 3.4.1.2 下付き文字付きの 基底および 3.4.1.3 上付き文字付きの 基底で計算された 数式コンテンツの min-content インラインサイズ(それぞれ max-content インラインサイズ および インラインサイズ)の最大値です。

インライン伸長サイズ制約 または ブロック伸長サイズ制約 が存在する場合、msubsup 基底も同じ伸長サイズ 制約でレイアウトされ、それ以外の場合は伸長サイズ 制約なしでレイアウトされます。スクリプトは常に 伸長サイズ制約なしでレイアウトされます。

インライン伸長サイズ制約 または ブロック伸長サイズ制約 が存在する場合、msubsup 基底も同じ伸長サイズ 制約でレイアウトされ、それ以外の場合は伸長サイズ 制約なしでレイアウトされます。スクリプトは常に 伸長サイズ制約なしでレイアウトされます。

SubSuperGap は、 ブロック軸に沿った2つのスクリプト間の間隔であり、 (SubShiftmsubsup 下付き文字マージンボックスink line-ascent)+ (SuperShiftmsubsup 上付き文字マージンボックスink line-descent) と定義されます。 SubSuperGap が少なくとも SubSuperscriptGapMin でない場合、 条件を満たすことを保証するため、次の手順が 実行されます。

  1. Δ を SuperscriptBottomMaxWithSubscript −(SuperShiftmsubsup 上付き文字マージンボックスink line-descent) とします。 Δ > 0 の場合、Δ を、Δ と SubSuperscriptGapMinSubSuperGap の最小値に設定し、 SuperShift(したがって SubSuperGap も)を Δ だけ増加させます。
  2. Δ を SubSuperscriptGapMinSubSuperGap とします。 Δ > 0 の場合、 SubscriptShift(したがって SubSuperGap も)を Δ だけ増加させます。

数式コンテンツの ink line-ascent(それぞれ line-ascentink line-descentline-descent)は、 上で調整された SubShiftSuperShift の値を使用して、 3.4.1.2 下付き文字付きの 基底および 3.4.1.3 上付き文字付きの 基底で計算された 数式コンテンツの ink line-ascent(それぞれ line-ascentink line-descentline-descent)の最大値に設定されます。

msubsup 基底とスクリプトの インラインオフセットおよび ブロックオフセットは、 3.4.1.2 下付き文字付きの 基底および 3.4.1.3 上付き文字付きの 基底で説明されるのと同じように設定されます。

注記

msubsup 下付き文字(それぞれ msubsup 上付き文字)が空の ボックスであっても、<msubsup> は一般に 3.4.1.3 上付き文字付きの基底 (それぞれ 3.4.1.2 下付き文字付きの基底)と同じようには レンダリングされません。これは SubSuperGap に対する追加の制約があるためです。 さらに、空の msubsup 下付き文字 (それぞれ msubsup 上付き文字) の配置によって、全体のサイズも変化する場合があります。

アルゴリズムを単純に保つため、 空のスクリプトを特別な方法で処理しようとはしません。

3.4.2 下部スクリプトと上部スクリプト <munder>, <mover>, <munderover>

mundermover および munderover 要素は、 MathML 式の下または上に配置される アクセントまたは極限を付加するために使用されます。

<munderover> 要素は、 2.1.3 グローバル 属性で説明される属性に加えて、次の 属性を受け入れます。

同様に、<mover> 要素 (それぞれ <munder> 要素)は、 2.1.3 グローバル属性で説明される属性に加えて、 accent 属性(それぞれ accentunder 属性)を受け入れます。

accentaccentunder 属性が存在する場合、その値は 真偽値でなければなりません。 これらの属性が存在しないか無効な場合、 false に等しいものとして扱われます。 ユーザーエージェントは、 3.4.4 スクリプト内の displaystyle、scriptlevel、および math-shift で説明されるようにこれらを実装しなければなりません。

次の例は、下部スクリプトと上部スクリプトの基本的な使用法を示しています。 スクリプトがアクセントとして意図されている場合を除き、 スクリプト内では font-size が自動的に縮小されます。

<math>
  <munder>
    <mn>1</mn>
    <mn>2</mn>
  </munder>
  <mo>+</mo>
  <mover>
    <mn>3</mn>
    <mn>4</mn>
  </mover>
  <mo>+</mo>
  <munderover>
    <mn>5</mn>
    <mn>6</mn>
    <mn>7</mn>
  </munderover>
  <mo>+</mo>
  <munderover accent="true">
    <mn>8</mn>
    <mn>9</mn>
    <mn>10</mn>
  </munderover>
  <mo>+</mo>
  <munderover accentunder="true">
    <mn>11</mn>
    <mn>12</mn>
    <mn>13</mn>
  </munderover>
</math>
munder-over-munderover の例

<munder><mover>、または <munderover> 要素の計算済み display プロパティが block math または inline math に等しくない場合、 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合、以下のレイアウトが実行されます。

3.4.2.1 <munder><mover><munderover> の子

<munder> 要素に 2つ未満または2つを超える フロー内の子がある場合、そのレイアウトアルゴリズムは mrow 要素と同じです。 それ以外の場合、最初の フロー内の子を munder 基底、2番目の フロー内の子を munder 下部スクリプトと呼びます。

<mover> 要素に 2つ未満または2つを超える フロー内の子がある場合、そのレイアウトアルゴリズムは mrow 要素と同じです。 それ以外の場合、最初の フロー内の子を mover 基底、2番目の フロー内の子を mover 上部スクリプトと呼びます。

<munderover> 要素に 3つ未満または3つを超える フロー内の子がある場合、そのレイアウトアルゴリズムは mrow 要素と同じです。 それ以外の場合、最初の フロー内の子を munderover 基底、2番目の フロー内の子を munderover 下部スクリプト、 3番目の フロー内の子を munderover 上部スクリプトと呼びます。

<munder><mover>、または <munderover> 要素の計算済み math-style プロパティが compact に等しく、かつその基底が movablelimits プロパティを持つ 装飾された演算子である場合、 それらのレイアウトアルゴリズムはそれぞれ、 3.4.1.2 下付き文字付きの 基底3.4.1.3 上付き文字付きの 基底、および 3.4.1.4 下付き文字と上付き文字付きの基底<msub><msup><msubsup> について説明されるものと同じです。

それ以外の場合、 <munder><mover>、および <munderover> のレイアウトアルゴリズムはそれぞれ、 3.4.2.3 下部スクリプト付きの 基底3.4.2.4 上部スクリプト付きの 基底、および 3.4.2.5 下部スクリプトと上部スクリプト付きの基底 で説明されます。

3.4.2.2 インライン軸に沿って演算子を伸長するアルゴリズム

インライン 軸に沿って演算子を伸長するアルゴリズム は次のとおりです。

  1. インライン伸長サイズ制約または ブロック伸長サイズ制約 が存在する場合、レイアウトされている要素は 装飾された演算子です。 基底を同じ伸長サイズ制約でレイアウトします。
  2. まだレイアウトされていない フロー内の子のリストを、 stretchy プロパティと inline 伸長軸を持つ 装飾された演算子を含む第1のリスト LToStretch と、 第2のリスト LNotToStretch に分割します。
  3. LNotToStretch の すべての項目に対して、伸長サイズ制約なしでレイアウトを実行します。 LToStretch が空の場合は終了します。 LNotToStretch が空の場合、 LToStretch の すべての項目に対して インライン伸長 サイズ制約 0 で レイアウトを実行します。
  4. 目標サイズ T を、 前のステップでレイアウトされた子ボックスの マージンボックスインラインサイズの最大値として計算します。
  5. LToStretch のすべての要素を、 インライン伸長サイズ制約 T でレイアウトまたは再レイアウトします。
3.4.2.3 下部スクリプト付きの基底

<munder> 要素は、 20に示すようにレイアウトされます。 LargeOpItalicCorrection は、munder 基底largeop プロパティを持つ 装飾された演算子である場合は、その イタリック補正であり、それ以外の場合は 0 です。

20 <munder> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ(それぞれ max-content インラインサイズ)は、 以下の数式コンテンツの インラインサイズと同様に 計算されますが、 munder 基底マージンボックスmunder 下部スクリプトマージンボックスインラインサイズを、 munder 基底マージンボックスmunder 下部スクリプトマージンボックスmin-content インラインサイズ(それぞれ max-content インラインサイズ)に置き換えます。

フロー内の子は、 インライン軸に沿って 演算子を伸長するアルゴリズムを使用してレイアウトされます。

数式コンテンツの インラインサイズは、 次の2つの値の絶対差を求めることで計算されます。

m を上記の2番目の項目で計算された最小値とすると、 munder 基底インラインオフセット は −m − 基底の マージンボックスインラインサイズの半分です。 munder 下部スクリプトインラインオフセットは、 −m − munder 下部スクリプトマージンボックスインラインサイズの半分 − LargeOpItalicCorrection の半分です。

パラメーター UnderShiftUnderExtraDescender は、次の3つの場合をこの順序で考慮して決定されます。

  1. munder 基底largeop プロパティを持つ 装飾された演算子である場合。 UnderShift は次の値の最大値です。

    UnderExtraDescender は 0 です。

  2. munder 基底が、 stretchy プロパティと inline の 伸長軸を持つ 装飾された演算子である場合。 UnderShift は次の値の最大値です。

    UnderExtraDescender は 0 です。
  3. それ以外の場合、 accentunder 属性が trueASCII 大文字小文字不区別で一致しない場合、 UnderShiftUnderbarVerticalGap に等しく、それ以外の場合は 0 です。 UnderExtraAscenderUnderbarExtraDescender です。

数式コンテンツの line-ascent は次の値の最大値です。

数式コンテンツの line-descent は次の値の最大値です。

munder 基底アルファベットベースラインは、 アルファベットベースラインと揃えられます。 munder 下部スクリプトアルファベットベースラインは、 アルファベットベースラインから munder 基底マージンボックスink line-descent + UnderShift に等しい距離だけ line-under 方向にシフトされます。

数式コンテンツボックスは、 コンテンツボックス内で、それらの block-start 辺が 揃い、それらの辺の中央が同じ 位置になるように配置されます。

3.4.2.4 上部スクリプト付きの基底

<mover> 要素は、 21に示すようにレイアウトされます。 LargeOpItalicCorrection は、mover 基底largeop プロパティを持つ 装飾された演算子である場合は、その イタリック補正であり、それ以外の場合は 0 です。

21 <mover> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ(それぞれ max-content インラインサイズ)は、 以下の数式コンテンツの インラインサイズと同様に 計算されますが、 mover 基底マージンボックスmover 上部スクリプトマージンボックスインラインサイズを、 mover 基底マージンボックスmover 上部スクリプトマージンボックスmin-content インラインサイズ(それぞれ max-content インラインサイズ)に置き換えます。

フロー内の子は、 インライン軸に沿って 演算子を伸長するアルゴリズムを使用してレイアウトされます。

TopAccentAttachment は、 mover 上部スクリプト上部アクセント付加位置であり、 それが未定義の場合は mover 上部スクリプトマージンボックスインラインサイズの半分です。

数式コンテンツの インラインサイズは、 レイアウトに インライン軸に沿って 演算子を伸長するアルゴリズムを適用し、 次の2つの値の絶対差を求めることで計算されます。

m を上記の2番目の項目で計算された最小値とすると、 mover 基底インラインオフセット は −m − 基底の margin の インラインサイズの半分です。 mover 上部スクリプトインラインオフセットは、 −m − mover 上部スクリプトマージンボックスインラインサイズの半分 + LargeOpItalicCorrection の半分です。

パラメーター OverShiftOverExtraDescender は、次の3つの場合をこの順序で考慮して決定されます。

  1. mover 基底が、 largeop プロパティを持つ 装飾された演算子である場合。 OverShift は次の値の最大値です。

    OverExtraAscender は 0 です。

  2. mover 基底が、 stretchy プロパティと inline の 伸長軸を持つ 装飾された演算子である場合。 OverShift は次の値の最大値です。

    OverExtraDescender は 0 です。
  3. それ以外の場合、OverShift は次の値に等しくなります。

    1. accent 属性が trueASCII 大文字小文字不区別で一致しない場合、 OverbarVerticalGap
    2. または、 AccentBaseHeight から mover 基底マージンボックスline-ascent を引いた値(この差が非負の場合)。
    3. それ以外の場合は 0。

    OverExtraAscenderOverbarExtraAscender です。

注記
アクセント上部スクリプトと、 AccentBaseHeight 以下の line-ascent を持つ基底について、 [OPEN-FONT-FORMAT] [TEXBOOK] の規則では、実際には 上部スクリプトと基底の アルファベットベースラインを揃えます。 これは、アクセントグリフが、そのインクの下端が アルファベットベースラインより おおよそ AccentBaseHeight だけ上になるよう 設計されていることを前提としています。したがって、 前の規則は、基底との衝突を回避しながら すべての上部スクリプトの下端が揃うことを保証します。 ただし、MathML では任意のアクセント上部スクリプトを使用できるため、 上ではより一般的で単純な規則を提供しています。すなわち、 上部スクリプトの下端が、基底の アルファベットベースラインより 少なくとも AccentBaseHeight だけ上にあることを保証します。

数式コンテンツの line-ascent は次の値の最大値です。

数式コンテンツの line-descent は次の値の最大値です。

mover 基底アルファベットベースラインは、 アルファベットベースラインと揃えられます。 mover 上部スクリプトアルファベットベースラインは、 アルファベットベースラインから、 基底の ink line-ascent + OverShift に等しい距離だけ line-over 方向にシフトされます。

数式コンテンツボックスは、 コンテンツボックス内で、それらの block-start 辺が 揃い、それらの辺の中央が同じ 位置になるように配置されます。

3.4.2.5 下部スクリプトと 上部スクリプト付きの基底

<munderover> の一般的なレイアウトは、 22に示されています。 LargeOpItalicCorrectionUnderShiftUnderExtraDescenderOverShiftOverExtraDescender パラメーターは、 3.4.2.3 下部スクリプト付きの 基底および 3.4.2.4 上部スクリプト付きの 基底と同じように計算されます。

22 <munderover> 要素のボックスモデル

数式コンテンツの min-content インラインサイズmax-content インラインサイズ および インラインサイズは、 最大 インラインオフセットと最小 インライン オフセットの絶対差として計算されます。 これらの極値は、 3.4.2.3 下部スクリプト付きの 基底および 3.4.2.4 上部スクリプト付きの 基底で計算される対応する極値の 極値を取ることで計算されます。 munderover 基底munderover 下部スクリプトおよび munderover 上部スクリプトインラインオフセットは、 これらのセクションと同様に計算されますが、 新しい最小値 m(対応する最小値のうちの最小値)を使用します。

これらのセクションと同様に、フロー内の子は、 インライン軸に沿って 演算子を伸長するアルゴリズムを使用してレイアウトされます。

数式コンテンツの line-ascentline-descent も、 3.4.2.3 下部スクリプト付きの 基底および 3.4.2.4 上部スクリプト付きの 基底で計算される極値の 極値を取ることで計算されます。

最後に、 munderover 基底munderover 下部スクリプトおよび munderover 上部スクリプトアルファベットベースラインは、 3.4.2.3 下部スクリプト付きの 基底および 3.4.2.4 上部スクリプト付きの 基底と同様に計算されます。

数式コンテンツボックスは、 コンテンツボックス内で、それらの block-start 辺が 揃い、それらの辺の中央が同じ 位置になるように配置されます。

注記

下部スクリプト(それぞれ上部スクリプト)が空の ボックスである場合、基底と上部スクリプト(それぞれ下部スクリプト)は、 3.4.2.4 上部スクリプト付きの 基底 (それぞれ 3.4.2.3 下部スクリプト付きの基底) と同様にレイアウトされますが、空の下部スクリプト(それぞれ 上部スクリプト)の位置によって追加の空間が生じる場合があります。 アルゴリズムを単純に保つため、 空のスクリプトを特別な方法で処理しようとはしません。

3.4.3 前置スクリプトとテンソル添字 <mmultiscripts>

前置下付き文字とテンソル表記は、 mmultiscripts 要素で表されます。 mprescripts 要素は、 後置スクリプトと前置スクリプトの区切りとして使用されます。 これら2つの要素は、 2.1.3 グローバル属性 で説明される属性を受け入れます。

次の例は、 mprescripts を含む、前置スクリプトと 後置スクリプトの基本的な使用法を示しています。 スクリプトがレンダリングされない位置では、空の mrow 要素が使用されます。 スクリプト内では font-size が自動的に縮小されます。

<math>
  <mmultiscripts>
    <mn>1</mn>
    <mn>2</mn>
    <mn>3</mn>
    <mrow></mrow>
    <mn>5</mn>
    <mprescripts/>
    <mn>6</mn>
    <mrow></mrow>
    <mn>8</mn>
    <mn>9</mn>
  </mmultiscripts>
</math>
mmultiscripts の例

<mmultiscripts> または <mprescripts> 要素の計算済み display プロパティが block math または inline math に等しくない場合、 対応する値が説明されている CSS 仕様に従ってレイアウトされます。 それ以外の場合、以下のレイアウトが実行されます。

<mprescripts> 要素は、 mrow 要素としてレイアウトされます。

有効な <mmultiscripts> 要素には、 次の フロー内の子が含まれます。

  • 最初の フロー内の子。これは mmultiscripts 基底と呼ばれ、 mprescripts 要素ではありません。
  • 続いて、偶数個の フロー内の子があり、 mmultiscripts 後置スクリプトと呼ばれます。これらはいずれも mprescripts 要素ではありません。 これらのスクリプトは、下付き文字、上付き文字、下付き文字、上付き文字、 下付き文字、上付き文字、… という(空の場合もある)リストを形成します。 連続する下付き文字と上付き文字の各組を 下付き文字/上付き文字のペアと呼びます。
  • 必要に応じて、その後に mprescripts 要素と、 mmultiscripts 前置スクリプトと呼ばれる 偶数個の フロー内の子が続きます。これらはいずれも mprescripts 要素ではありません。 これらのスクリプトは、 下付き文字/上付き文字のペアの (空の場合もある)リストを形成します。

<mmultiscripts> 要素が有効でない場合、 mrow 要素と同じようにレイアウトされます。 それ以外の場合、レイアウトアルゴリズムは 3.4.3.1 前置スクリプトと後置スクリプト付きの基底と同様に実行されます。

3.4.3.1 前置スクリプトと 後置スクリプト付きの基底

<mmultiscripts> 要素は、 23に示すように レイアウトされます。 mmultiscripts 後置スクリプトの各 下付き文字/上付き文字のペアについて、 ItalicCorrectionLargeOpItalicCorrection は、 3.4.1.2 下付き文字付きの 基底 および 3.4.1.3 上付き文字付きの 基底と同様に定義されます。

23 <mmultiscripts> 要素のボックスモデル

数式コンテンツの min-content インラインサイズ(それぞれ max-content インラインサイズ)は、 以下の数式コンテンツの インラインサイズと同じように 計算されますが、 mmultiscripts 基底マージンボックスおよびスクリプトの マージンボックスについて、 「インラインサイズ」を「min-content インラインサイズ」 (それぞれ「max-content インラインサイズ」)に置き換えます。

インライン伸長サイズ 制約または ブロック伸長サイズ制約 が存在する場合、 mmultiscripts 基底 も同じ伸長サイズ制約でレイアウトされます。 それ以外の場合は伸長サイズ 制約なしでレイアウトされます。その他の要素は常に 伸長サイズ制約なしでレイアウトされます。

数式コンテンツの インラインサイズは、 次のアルゴリズムで計算されます。

  1. inline-offset を 0 に設定します。
  2. mmultiscripts 前置スクリプトの各 下付き文字/上付き文字のペアについて、 inline-offsetSpaceAfterScript + 次の値の最大値だけ増加させます。

  3. inline-offsetmmultiscripts 基底マージンボックスインラインサイズだけ増加させ、 inline-sizeinline-offset に設定します。
  4. mmultiscripts 後置スクリプトの各 下付き文字/上付き文字のペアについて、 inline-size が少なくとも次の値になるよう変更します。

    inline-offset を次の値の最大値だけ増加させます。

    inline-offsetSpaceAfterScript だけ増加させます。

  5. inline-size を返します。

SubShift(それぞれ SuperShift)は、 3.4.1.4 下付き文字と上付き文字付きの基底で説明されるように、 各 下付き文字/上付き文字のペアの すべての subshift(それぞれ supershift)の最大値を取ることで計算されます。

数式コンテンツの line-ascentは、 上で計算された SubShiftSuperShift の値を使用し、 3.4.1.4 下付き文字と上付き文字付きの基底で説明されるように、 各 下付き文字/上付き文字のペアの すべての line-ascent の最大値を取ることで計算されます。

数式コンテンツの line-descentは、 上で計算された SubShiftSuperShift の値を使用し、 3.4.1.4 下付き文字と上付き文字付きの基底で説明されるように、 各 下付き文字/上付き文字のペアの すべての line-descent の最大値を取ることで計算されます。

最後に、フロー内の子の配置は、 次のアルゴリズムを使用して実行されます。

  1. inline-offset を 0 に設定します。
  2. mmultiscripts 前置スクリプトの各 下付き文字/上付き文字のペアについて:

    1. inline-offsetSpaceAfterScript だけ増加させます。
    2. pair-inline-size を次の値の最大値に設定します。
    3. 下付き文字を inline-start 位置 inline-offset + pair-inline-size − 下付き文字の マージンボックスインラインサイズ に配置します。
    4. 上付き文字を inline-start 位置 inline-offset + pair-inline-size − 上付き文字の マージンボックスインラインサイズ に配置します。
    5. 下付き文字(それぞれ上付き文字)を、その アルファベットベースラインが、 アルファベット ベースラインから SubShift(それぞれ SuperShift)だけ line-under(それぞれ line-over)方向に シフトされるように配置します。
    6. inline-offsetpair-inline-size だけ増加させます。
  3. mmultiscripts 基底<mprescripts> ボックスを、 インラインオフセット inline-offset に配置し、その アルファベットベースラインアルファベットベースラインと揃えます。
  4. mmultiscripts 後置スクリプトの各 下付き文字/上付き文字のペアについて:

    1. pair-inline-size を次の値の最大値に設定します。
    2. 下付き文字を inline-start 位置 inline-offsetLargeOpItalicCorrection に配置します。
    3. 上付き文字を inline-start 位置 inline-offset + ItalicCorrection に配置します。
    4. 下付き文字(上付き文字)を、その アルファベットベースラインアルファベット ベースラインから SubShift(それぞれ SuperShift)だけ line-under(それぞれ line-over)方向に シフトされるように配置します。
    5. inline-offsetpair-inline-size だけ増加させます。
    6. inline-offsetSpaceAfterScript だけ増加させます。
注記

mmultiscripts 後置スクリプト下付き文字/上付き文字のペアを 1つだけ持つ <mmultiscripts> は、 同じ フロー内の子を持つ <msubsup> と同じようにレイアウトされます。 ただし、 <msubsup> について 述べたように、 さらに下付き文字(それぞれ上付き文字)が 空のボックスである場合、必ずしも <msub> (それぞれ <msup>)要素と同じようにはレイアウトされません。 アルゴリズムを単純に保つため、 空のスクリプトを特別な方法で処理しようとはしません。

3.4.4 スクリプト内の displaystyle、scriptlevel、および math-shift

すべての スクリプト付き要素について、 原則として、最初の子以外のすべての子要素で displaystylefalse に設定し、 scriptlevel を増加させます。 ただし、 trueASCII 大文字小文字不区別で一致する accent 属性を持つ mover (それぞれ munderover) 要素は、その2番目の子(それぞれ3番目の子)の内部で scriptlevel を増加させません。同様に、 trueASCII 大文字小文字不区別で一致する accentunder 属性を持つ mover および munderover 要素は、その2番目の子の内部で scriptlevel を増加させません。

<mmultiscripts> は、 mprescripts より前にある偶数位置の子と、 mprescripts より後にある奇数位置の子に対して、 math-shiftcompact に設定します。 <msub> 要素と <msubsup> 要素は、その2番目の子で math-shiftcompact に設定します。 trueASCII 大文字小文字不区別で一致する accent 属性を持つ mover および munderover 要素も、その最初の子の内部で math-shiftcompact に設定します。

この動作を実装するため、 A. ユーザーエージェント スタイルシートは、次の スタイルを含まなければなりません。

msub > :not(:first-child),
msup > :not(:first-child),
msubsup > :not(:first-child),
mmultiscripts > :not(:first-child),
munder > :not(:first-child),
mover > :not(:first-child),
munderover > :not(:first-child) {
  math-depth: add(1);
  math-style: compact;
}
munder[accentunder="true" i] > :nth-child(2),
mover[accent="true" i] > :nth-child(2),
munderover[accentunder="true" i] > :nth-child(2),
munderover[accent="true" i] > :nth-child(3) {
  font-size: inherit;
}
msub > :nth-child(2),
msubsup > :nth-child(2),
mmultiscripts > :nth-child(even),
mmultiscripts > mprescripts ~ :nth-child(odd),
mover[accent="true" i] > :first-child,
munderover[accent="true" i] > :first-child {
  math-shift: compact;
}
mmultiscripts > mprescripts ~ :nth-child(even) {
  math-shift: inherit;
}
注記
実際には、このセクションで説明される MathML 要素のすべての子は フロー内であり、 <mprescripts> は空です。 したがって CSS 規則は基本的に、スクリプトに対して displaystyle および scriptlevel の自動変更を行い、 下付き文字と場合によっては基底に対して math-shift の変更を行います。

3.5 表形式の数学

行列、配列、およびその他の表形式の数学表記は、 mtable mtr mtd 要素を使用してマークアップされます。これらの要素は、 [HTML] の tabletr および td 要素に似ています。

次の例は、表形式のレイアウトを使用して 行列を記述する方法を示しています。分数線と 等号の中央に対して垂直方向に中央揃えされることに注意してください。

<math>
  <mfrac>
    <mi>A</mi>
    <mn>2</mn>
  </mfrac>
  <mo>=</mo>
  <mrow>
    <mo>(</mo>
    <mtable>
      <mtr>
        <mtd><mn>1</mn></mtd>
        <mtd><mn>2</mn></mtd>
        <mtd><mn>3</mn></mtd>
      </mtr>
      <mtr>
        <mtd><mn>4</mn></mtd>
        <mtd><mn>5</mn></mtd>
        <mtd><mn>6</mn></mtd>
      </mtr>
      <mtr>
        <mtd><mn>7</mn></mtd>
        <mtd><mn>8</mn></mtd>
        <mtd><mn>9</mn></mtd>
      </mtr>
    </mtable>
    <mo>)</mo>
  </mrow>
</math>
表の例

3.5.1 表または行列 <mtable>

mtableinline-table としてレイアウトされ、 displaystylefalse に設定します。 これらのプロパティを実装するため、 ユーザーエージェントスタイルシートは 次の規則を含まなければなりません。

mtable {
  display: inline-table;
  math-style: compact;
}

mtable 要素は CSS の table として扱われ、 min-content インラインサイズmax-content インラインサイズインラインサイズブロックサイズ最初のベースラインセットおよび 最後のベースラインセット はそれに従って決定されます。 表の中央は 数式軸と揃えられます。

<mtable> は、 2.1.3 グローバル 属性で説明される属性を受け入れます。

3.5.2 表または行列の行 <mtr>

mtrtable-row としてレイアウトされます。この動作を実装するため、 ユーザーエージェントスタイルシートは 次の規則を含まなければなりません。

mtr {
  display: table-row;
}

<mtr> は、 2.1.3 グローバル 属性で説明される属性を受け入れます。

3.5.3 表または行列の項目 <mtd>

mtd は、 内容がセル内で中央揃えされ、デフォルトの padding を持つ table-cell としてレイアウトされます。 ユーザーエージェントスタイルシートは 次の規則を含まなければなりません。

mtd {
  display: table-cell;
  /* 表セル内の中央揃えは、ボックス整列プロパティに依存するべきです。
     https://github.com/w3c/mathml-core/issues/156 を参照してください。 */
  text-align: center;
  padding: 0.5ex 0.4em;
}

<mtd> は、 2.1.3 グローバル属性 で説明される属性に加えて、次の属性を受け入れます。

columnspan(それぞれ rowspan)属性は、 [HTML] の <td> 要素の colspan (それぞれ rowspan) 属性と同じ構文および意味論を持ちます。 特に、これらの属性の解析は、 行を処理する アルゴリズムで説明されるように処理され、 「colspan」は常に 「columnspan」として読み取られます。

注記
[MathML3] およびそれ以前のバージョンでは、 列をまたぐ属性の名前は columnspan であり、 後方互換性のために維持されています。

<mtd> 要素は 匿名 <mrow> ボックスを生成します

3.6 式の活性化

歴史的に、 maction 要素は、式にアクションを バインドするための機構を提供します。

<maction> 要素は、 2.1.3 グローバル属性で 説明される属性に加えて、次の 属性を受け入れます。

この仕様では、 actiontype および selection 属性に固有の観測可能な動作は定義しません。

次の例は、 [MathML3] の "toggle" アクションタイプを示しています。レンダラーは選択された部分式を 交互に表示し、「3分の1」から開始し、 選択された部分式をクリックするたびに 「4分の1」、「2分の1」、「3分の1」などと循環します。 これは MathML Core の一部ではありませんが、 JavaScript と CSS の polyfill を使用して実装できます。 デフォルトの動作は、単に最初の子をレンダリングすることです。

<math>
  <maction actiontype="toggle" selection="2">
    <mfrac>
      <mn>1</mn>
      <mn>2</mn>
    </mfrac>
    <mfrac>
      <mn>1</mn>
      <mn>3</mn>
    </mfrac>
    <mfrac>
      <mn>1</mn>
      <mn>4</mn>
    </mfrac>
  </maction>
</math>
maction の例

<maction> 要素のレイアウトアルゴリズムは、 <mrow> 要素と同じです。 レガシーな actiontype 値に対するデフォルト動作として 最初の子要素以外をすべて非表示にするため、 ユーザーエージェントスタイルシート は次の規則を含まなければなりません。

maction > :not(:first-child) {
  display: none;
}
注記
<maction> は完全な MathML との互換性のために実装されています。 対象が MathML Core のみである著者には、 カスタムアクションの実装に他の HTML、CSS、および JavaScript の機構を使用することが推奨されます。 [MathML3] で定義される maction 属性を 利用することもできます。

3.7 意味論とプレゼンテーション

semantics 要素は、注釈を MathML 式に関連付ける コンテナー要素です。通常、 <semantics> 要素の最初の子要素は 注釈を付ける MathML 式であり、その後の子要素は、 annotation 要素内のテキスト注釈、または annotation-xml 要素内の より複雑なマークアップ注釈を表します。

次の例は、分数「2分の1」に、 ユーザーエージェントによるレンダリングを意図しない テキスト注釈(LaTeX)または XML 注釈 (Content MathML)を付ける方法を示しています。 この分数には、同等の SVG および HTML マークアップも注釈として付けられています。

<math>
  <semantics>
    <mfrac>
      <mn>1</mn>
      <mn>2</mn>
    </mfrac>
    <annotation encoding="application/x-tex">\frac{1}{2}</annotation>
    <annotation-xml encoding="application/mathml-content+xml">
      <apply>
        <divide/>
         <cn>1</cn>
         <cn>2</cn>
      </apply>
    </annotation-xml>
    <annotation-xml>
      <svg width="25" height="75" xmlns="http://www.w3.org/2000/svg">
        <path stroke-width="5.8743"
              d="m5.9157 27.415h6.601v-22.783l-7.1813 1.4402v-3.6805l7.1408
                 -1.4402h4.0406v26.464h6.601v3.4005h-17.203z"/>
        <path stroke="#000000" stroke-width="2.3409"
              d="m0.83496 39.228h23.327"/>
        <path stroke-width="5.8743"
              d="m8.696 70.638h14.102v3.4005h-18.963v-3.4005q2.3004-2.3804
                 6.2608-6.3813 3.9806-4.0206 5.0007-5.1808 1.9403-2.1803
                 2.7004-3.6805 0.78011-1.5202 0.78011-2.9804 0-2.3804
                 -1.6802-3.8806-1.6603-1.5002-4.3406-1.5002-1.9003 0-4.0206
                 0.6601-2.1003 0.6601-4.5007 2.0003v-4.0806q2.4404-0.98013
                 4.5607-1.4802 2.1203-0.50007 3.8806-0.50007 4.6407 0 7.401
                 2.3203 2.7604 2.3203 2.7604 6.2009 0 1.8403-0.7001 3.5006
                 -0.68013 1.6402-2.5004 3.8806-0.50007 0.58009-3.1805 3.3605
                 -2.6804 2.7604-7.5614 7.7412z"/>
      </svg>
    </annotation-xml>
    <annotation-xml encoding="application/xhtml+xml">
      <div style="display: inline-flex;
                  flex-direction: column; align-items: center;">
        <div>1</div>
        <div></div>
        <div>2</div>
      </div>
    </annotation-xml>
  </semantics>
</math>
semantics の例

<semantics> 要素は、 2.1.3 グローバル 属性で説明される属性を受け入れます。そのレイアウトアルゴリズムは mrow 要素と同じです。 注釈が付けられた MathML 式だけをレンダリングするため、 ユーザーエージェントスタイルシート は次の規則を含まなければなりません。

semantics > :not(:first-child) {
  display: none;
}

<annotation-xml> 要素と <annotation> 要素は、 2.1.3 グローバル 属性で説明される属性に加えて、次の 属性を受け入れます。

この仕様では、 encoding 属性に固有の 観測可能な動作は定義しません。

<annotation-xml> および <annotation> 要素のレイアウトアルゴリズムは、 mtext 要素と同じです。

注記
著者は、 encoding 属性を使用して、 HTML 統合点、 クリップボードへのコピー、代替レンダリングなどの 注釈を区別できます。 特に、CSS を使用して代替注釈をレンダリングできます。たとえば:
/* 注釈対象の子を非表示にします。 */
semantics > :first-child { display: none; }
 /* すべてのテキスト注釈を表示します。 */
semantics > annotation { display: inline; }
/* すべての HTML 注釈を表示します。 */
semantics > annotation-xml[encoding="text/html" i],
semantics > annotation-xml[encoding="application/xhtml+xml" i] {
  display: inline-block;
}

4. 数式レイアウトのための CSS 拡張

4.1 display: block math および display: inline math

CSS Display Module Level 3display プロパティは、 新しい内部 display 型で拡張されます。

名前: display
新しい値: <display-outside> || [ <display-inside> | math ]

MathML 要素でない要素について、 display の指定値が block math または inline math の場合、計算値はそれぞれ block flow および inline flow です。 mtable 要素の場合、計算値はそれぞれ block table および inline table です。 mtr 要素の場合、計算値は table-row です。 mtd 要素の場合、計算値は table-cell です。

計算済み display 値が block math または inline math に等しい MathML 要素は、 関連するセクションで説明されるように、 タグ名に従ってボックス生成とレイアウトを制御します。 未知の MathML 要素 は、 mrow 要素と同じように動作します。

注記
display: block math および display: inline math 値は、MathML 要素に デフォルトのレイアウトを提供すると同時に、 ネイティブの display 値または カスタム値 で上書きすることも可能にします。 これにより、著者や polyfill は独自のカスタム表記を定義して、 MathML Core を調整または拡張できます。

次の例では、MathML の mrow 要素のデフォルトレイアウトを上書きして、 その内容をグリッドとしてレンダリングします。

<math>
  <msup>
    <mrow>
      <mo symmetric="false">[</mo>
      <mrow style="display: block; width: 4.5em;">
        <mrow style="display: grid;
                     grid-template-columns: 1.5em 1.5em 1.5em;
                     grid-template-rows: 1.5em 1.5em;
                     justify-items: center;
                     align-items: center;">
          <mn>12</mn>
          <mn>34</mn>
          <mn>56</mn>
          <mn>7</mn>
          <mn>8</mn>
          <mn>9</mn>
        </mrow>
      </mrow>
      <mo symmetric="false">]</mo>
    </mrow>
    <mi>α</mi>
  </msup>
</math>
display の例

4.2 math-auto 変換

CSS Text Module Level 4text-transform プロパティには、 新しい値 math-auto があります。 単一の文字を含むテキストノードで、計算値が math-auto であり、その文字が C.1 italic マッピングの "Original" 列に存在する場合、 "italic" 列の対応する文字に変換されます。

一般的なスタイル規則では、 複数文字の識別子(たとえば関数名 "exp")は normal スタイルでレンダリングし、単一文字の識別子 (たとえば変数 "n")は italic スタイルでレンダリングします。 math-auto プロパティは、この デフォルト動作を実装することを意図しており、必要であれば著者が上書きできます。 数式用フォントは、 C.1 italic マッピングの Unicode 位置に配置された 特別な種類のイタリックグリフを使用して設計されており、 italic フォントスタイルによるシェイピングとは異なることに注意してください。 Latin Modern Math フォントを使用し、 font-style: italic(左)と text-transform: math-auto(右)でレンダリングした この数式を比較してください。

font-style: italic と text-transform: math-auto の比較

4.3 math-style プロパティ

名前: math-style
値: normal | compact
初期値: normal
適用対象: すべての要素
継承: する
パーセンテージ: 該当なし
計算値: 指定されたキーワード
正規順序: 該当なし
アニメーション型: アニメーション不可
メディア: 視覚

math-stylecompact の場合、 子孫の数式レイアウトは、次の規則を適用して 論理的な高さを最小化しようとします。

次の例は、 math ルートに math-style: compact(左)および math-style: normal(右)を指定して レンダリングした数式を示しています。 前者では、分数内で font-size が自動的に縮小され、 総和の極限は ∑ の下付き文字と上付き文字としてレンダリングされます。 後者では、∑ は通常のテキストより大きく描画され、 分数内の垂直間隔は(現在の font-size に対してさえ)より大きくなります。

math-style の例

これら2つの math-style 値は通常、 それぞれインラインモードとディスプレイモードの数式に対応します [TeXBook]。 ディスプレイモードの数式は、一部の部分式 (たとえばスクリプト、行列要素、分子、分母など)の内部で 自動的にインラインモードへ切り替わる場合があり、 このデフォルト動作を上書きしたい場合もあります。 math-style プロパティにより、 ユーザーエージェントスタイルシート および displaystyle 属性を使用して、 MathML にこれらの機能を容易に実装でき、polyfill にも公開されます。

4.4 math-shift プロパティ

名前: math-shift
値: normal | compact
初期値: normal
適用対象: すべての要素
継承: する
パーセンテージ: 該当なし
計算値: 指定されたキーワード
正規順序: 該当なし
アニメーション型: アニメーション不可
メディア: 視覚

math-shift の値が compact の場合、 子孫の数式レイアウトは、 上付き文字を配置するため superscriptShiftUpCramped パラメーターを使用します。 math-shift の値が normal の場合、 数式は代わりに superscriptShiftUp パラメーターを使用します。

このプロパティは、MathML の スクリプト付き要素のレイアウト中に 上付き文字を配置するために使用されます。 § 3.4.1 下付き文字と上付き文字 <msub>, <msup>, <msubsup>3.4.3 前置スクリプトとテンソル添字 <mmultiscripts>、および 3.4.2 下部スクリプトと上部スクリプト <munder>, <mover>, <munderover>を参照してください。

次の例では、2つの「x の2乗」が、 compact の math-style と同じ font-size でレンダリングされます。 ただし、平方根内のものは compact の math-shift でレンダリングされ、 もう一方は normal の math-shift でレンダリングされるため、 上付き文字「2」のシフトにわずかな違いが生じます。

math-shift の例

[TeXBook] によれば、 数式はデフォルトで normal スタイルを使用しますが、 一部の部分式 (たとえば根号、分数の分母など)では compact スタイル(TeX の用語では "cramped")に切り替わる場合があります。 math-shift プロパティにより、 ユーザーエージェントスタイルシートで これらの規則を MathML に容易に実装できます。 ページ著者や polyfill の開発者も、このプロパティにアクセスして デフォルト実装を調整または改良できることの恩恵を受ける場合があります。

4.5 math-depth プロパティ

新しい math-depth プロパティは、 数式の最上位コンテナーを基準として、 数式の各要素の「深さ」という概念を記述するために導入されます。 具体的には、font-size プロパティの指定値が math の場合に、 その計算値を決定するために使用されます。

名前: math-depth
値: auto-add | add(<integer>) | <integer>
初期値: 0
適用対象: すべての要素
継承: する
パーセンテージ: 該当なし
計算値: 整数。以下を参照
正規順序: 該当なし
アニメーション型: アニメーション不可
メディア: 視覚

math-depth の計算値は、 次のように決定されます。

font-size の指定値が math の場合、 font-size の計算値は、 継承された font-size の値に、 次の手順で計算される 0 でないスケール係数を 乗算して得られます。

  1. A を継承された math-depth 値、 B を計算済み math-depth 値、 C を 0.71、S を 1.0 とします。
    • A = B の場合、S を返します。
    • B < A の場合、A と B を交換し、InvertScaleFactor を true に設定します。
    • それ以外の場合は B > A であり、InvertScaleFactor を false に設定します。
  2. E を B - A > 0 とします。
  3. 継承された 最初に利用可能なフォントが OpenType MATH テーブルを持つ場合:
  4. S に CE を乗算します。
  5. InvertScaleFactor が false の場合は S を、それ以外の場合は 1/S を返します。

次の例は、 normal の math-style を持ち、 Latin Modern Math フォントでレンダリングされた数式を示しています。 スクリプトや分数などの部分式に入ると、 font-size は、そのフォントに含まれる MATH テーブルの値に従って 自動的に縮小されます。 上付き文字に入るときに font-size が縮小されますが、 根の前置スクリプトに入るときにはさらに速く縮小されることに注意してください。 また、内側の分数に入るときには縮小されますが、 外側の分数に入るときには、分数内での math-style の自動変更により縮小されません。

font-size-scriptlevel の例

[TeXBook] のこれらの規則は微妙であり、 それらを表現して処理するために 独立した math-depth 機構を持つことには価値があります。 これらは、 ユーザーエージェントスタイルシートを使用して MathML に実装できます。 ページ著者や polyfill の開発者も、このプロパティにアクセスして デフォルト実装を調整または改良できることの恩恵を受ける場合があります。 特に、MathML の scriptlevel 属性は、 math-depth の変更を行う方法を提供します。

5. OpenType MATH テーブル

この章では、OpenType フォント [OPEN-FONT-FORMAT] の MATH テーブルが提供する機能について説明します。 この章全体で、C に似た表記 Table.Subtable1[index].Subtable2.Parameter を使用して OpenType パラメーターを表します。 このようなパラメーターは利用できない場合があります (たとえばフォントにいずれかのサブテーブルがない、無効なオフセットがあるなど)。 そのため、フォールバックの選択肢が提供されます。

注記
適切な OpenType 機能を持つ数式用フォントで MathML をレンダリングすることが強く推奨されます。 提供されるフォールバックの選択肢が十分に良好なレンダリングを 提供するという保証はありません。

デザイン単位で表される OpenType 値 (場合によっては MathValueRecord エントリを介して間接的に表される)は、 head.unitsPerEm、CSS font-size またはズームレベルを考慮して、 レイアウト目的の適切な値にスケーリングされます。

5.1 レイアウト定数 (MathConstants)

これらは 最初に利用可能なフォントのグローバルレイアウト定数です。

デフォルトのフォールバック定数
0
デフォルトの 罫線の太さ
post.underlineThickness、または定数が 利用できない場合は デフォルトのフォールバック定数
scriptPercentScaleDown
MATH.MathConstants.scriptPercentScaleDown / 100、または MATH.MathConstants.scriptPercentScaleDown が null または利用できない場合は 0.71。
scriptScriptPercentScaleDown
MATH.MathConstants.scriptScriptPercentScaleDown / 100、または MATH.MathConstants.scriptScriptPercentScaleDown が null または利用できない場合は 0.5041。
displayOperatorMinHeight
MATH.MathConstants.displayOperatorMinHeight、または 定数が利用できない場合は デフォルトのフォールバック定数
axisHeight
MATH.MathConstants.axisHeight、または定数が利用できない場合は OS/2.sxHeight の半分。
accentBaseHeight
MATH.MathConstants.accentBaseHeight、または定数が 利用できない場合は OS/2.sxHeight
subscriptShiftDown
MATH.MathConstants.subscriptShiftDown、または定数が 利用できない場合は OS/2.ySubscriptYOffset
subscriptTopMax
MATH.MathConstants.subscriptTopMax、または定数が 利用できない場合は ⅘ × OS/2.sxHeight
subscriptBaselineDropMin
MATH.MathConstants.subscriptBaselineDropMin、または 定数が利用できない場合は デフォルトのフォールバック定数
superscriptShiftUp
MATH.MathConstants.superscriptShiftUp、または定数が 利用できない場合は OS/2.ySuperscriptYOffset
superscriptShiftUpCramped
MATH.MathConstants.superscriptShiftUpCramped、または 定数が利用できない場合は デフォルトのフォールバック定数
superscriptBottomMin
MATH.MathConstants.superscriptBottomMin、または定数が 利用できない場合は ¼ × OS/2.sxHeight
superscriptBaselineDropMax
MATH.MathConstants.superscriptBaselineDropMax、または 定数が利用できない場合は デフォルトのフォールバック定数
subSuperscriptGapMin
MATH.MathConstants.subSuperscriptGapMin、または定数が利用できない場合は 4 × デフォルトの 罫線の太さ
superscriptBottomMaxWithSubscript
MATH.MathConstants.superscriptBottomMaxWithSubscript、または定数が利用できない場合は ⅘ × OS/2.sxHeight
spaceAfterScript
MATH.MathConstants.spaceAfterScript、または定数が利用できない場合は 1/24em。
upperLimitGapMin
MATH.MathConstants.upperLimitGapMin、または 定数が利用できない場合は デフォルトのフォールバック定数
upperLimitBaselineRiseMin
MATH.MathConstants.upperLimitBaselineRiseMin、または定数が利用できない場合は デフォルトのフォールバック定数
lowerLimitGapMin
MATH.MathConstants.lowerLimitGapMin、または定数が利用できない場合は デフォルトの フォールバック定数
lowerLimitBaselineDropMin
MATH.MathConstants.lowerLimitBaselineDropMin、または定数が利用できない場合は デフォルトのフォールバック定数
stackTopShiftUp
MATH.MathConstants.stackTopShiftUp、または定数が利用できない場合は デフォルトの フォールバック定数
stackTopDisplayStyleShiftUp
MATH.MathConstants.stackTopDisplayStyleShiftUp、または定数が利用できない場合は デフォルトのフォールバック定数
stackBottomShiftDown
MATH.MathConstants.stackBottomShiftDown、または定数が利用できない場合は デフォルトの フォールバック定数
stackBottomDisplayStyleShiftDown
MATH.MathConstants.stackBottomDisplayStyleShiftDown、または定数が利用できない場合は デフォルトのフォールバック定数
stackGapMin
MATH.MathConstants.stackGapMin、または定数が利用できない場合は 3 × デフォルトの 罫線の太さ
stackDisplayStyleGapMin
MATH.MathConstants.stackDisplayStyleGapMin、または定数が利用できない場合は 7 × デフォルトの 罫線の太さ
stretchStackTopShiftUp
MATH.MathConstants.stretchStackTopShiftUp、または定数が利用できない場合は デフォルトの フォールバック定数
stretchStackBottomShiftDown
MATH.MathConstants.stretchStackBottomShiftDown、または定数が利用できない場合は デフォルトの フォールバック定数
stretchStackGapAboveMin
MATH.MathConstants.stretchStackGapAboveMin、または定数が利用できない場合は デフォルトの フォールバック定数
stretchStackGapBelowMin
MATH.MathConstants.stretchStackGapBelowMin、または定数が利用できない場合は デフォルトの フォールバック定数
fractionNumeratorShiftUp
MATH.MathConstants.fractionNumeratorShiftUp、または定数が利用できない場合は デフォルトの フォールバック定数
fractionNumeratorDisplayStyleShiftUp
MATH.MathConstants.fractionNumeratorDisplayStyleShiftUp、または定数が利用できない場合は デフォルトのフォールバック定数
fractionDenominatorShiftDown
MATH.MathConstants.fractionDenominatorShiftDown、または定数が利用できない場合は デフォルトのフォールバック定数
fractionDenominatorDisplayStyleShiftDown
MATH.MathConstants.fractionDenominatorDisplayStyleShiftDown、または定数が利用できない場合は デフォルトのフォールバック定数
fractionNumeratorGapMin
MATH.MathConstants.fractionNumeratorGapMin、または定数が利用できない場合は デフォルトの 罫線の太さ
fractionNumDisplayStyleGapMin
MATH.MathConstants.fractionNumDisplayStyleGapMin、または定数が利用できない場合は 3 × デフォルトの罫線の太さ
fractionRuleThickness
MATH.MathConstants.fractionRuleThickness、または定数が利用できない場合は デフォルトの 罫線の太さ
fractionDenominatorGapMin
MATH.MathConstants.fractionDenominatorGapMin、または定数が利用できない場合は デフォルトの 罫線の太さ
fractionDenomDisplayStyleGapMin
MATH.MathConstants.fractionDenomDisplayStyleGapMin、または定数が利用できない場合は 3 × デフォルトの罫線の太さ
overbarVerticalGap
MATH.MathConstants.overbarVerticalGap、または定数が利用できない場合は 3 × デフォルトの 罫線の太さ
overbarExtraAscender
MATH.MathConstants.overbarExtraAscender、または定数が利用できない場合は デフォルトの 罫線の太さ
underbarVerticalGap
MATH.MathConstants.underbarVerticalGap、または定数が利用できない場合は 3 × デフォルトの 罫線の太さ
underbarExtraDescender
MATH.MathConstants.underbarExtraDescender、または定数が利用できない場合は デフォルトの 罫線の太さ
radicalVerticalGap
MATH.MathConstants.radicalVerticalGap、または定数が利用できない場合は 1¼ × デフォルトの 罫線の太さ
radicalDisplayStyleVerticalGap
MATH.MathConstants.radicalDisplayStyleVerticalGap、または定数が利用できない場合は デフォルトの罫線の太さ + ¼ OS/2.sxHeight
radicalRuleThickness
MATH.MathConstants.radicalRuleThickness、または定数が利用できない場合は デフォルトの 罫線の太さ
radicalExtraAscender
MATH.MathConstants.radicalExtraAscender、または定数が利用できない場合は デフォルトの 罫線の太さ
radicalKernBeforeDegree
MATH.MathConstants.radicalKernBeforeDegree、または定数が利用できない場合は 5/18em。
radicalKernAfterDegree
MATH.MathConstants.radicalKernAfterDegree、または定数が利用できない場合は −10/18em。
radicalDegreeBottomRaisePercent
MATH.MathConstants.radicalDegreeBottomRaisePercent / 100.0、または定数が 利用できない場合は 0.6。

5.2 グリフ情報 (MathGlyphInfo)

注記
MathTopAccentAttachment はリスクがあります。

これらは 最初に利用可能なフォントのグリフごとのテーブルです。

MathItalicsCorrectionInfo
イタリック補正値のサブテーブル MATH.MathGlyphInfo.MathItalicsCorrectionInfo。 要求されたグリフに対応する値がある場合は MATH.MathGlyphInfo.MathItalicsCorrectionInfo.italicsCorrection の対応する値を使用し、それ以外の場合は 0 を使用します。
MathTopAccentAttachment
上部数式アクセントを インライン軸に沿って配置するためのサブテーブル MATH.MathGlyphInfo.MathTopAccentAttachment。 要求されたグリフに対応する値がある場合は MATH.MathGlyphInfo.MathTopAccentAttachment.topAccentAttachment の対応する値を使用し、それ以外の場合は グリフの advance width の半分を使用します。

5.3 演算子のサイズバリアント (MathVariants)

このセクションでは、MATH.MathVariants テーブルを使用して 任意のサイズの伸長可能なグリフを処理する方法について説明します。

5.3.1 GlyphAssembly テーブル

このセクションは [OPEN-TYPE-MATH-IN-HARFBUZZ] に基づいています。 便宜上、次の定義を使用します。

  • ominMATH.MathVariant.minConnectorOverlap です。
  • GlyphPartRecord は、 GlyphPartRecord.partFlagsfExtender フラグが設定されている場合に限り extender です。
  • GlyphAssembly は、 MathVariant.horizGlyphConstructionOffsets から取得される場合は horizontal です。 それ以外の場合は vertical です (そして MathVariant.vertGlyphConstructionOffsets から取得されます)。
  • 所与の GlyphAssembly テーブルについて、 NExt (それぞれ NNonExt)は、 GlyphAssembly.partRecords 内の extender (それぞれ非 extender)の数です。
  • 所与の GlyphAssembly テーブルについて、 SExt (それぞれ SNonExt)は、 GlyphAssembly.partRecords 内のすべての extender (それぞれ非 extender)についての GlyphPartRecord.fullAdvance の合計です。
  • SExt,NonOverlapping = SExtomin NExt は、extender の重ならない最大部分の合計です。

ユーザーエージェントは、次の条件が満たされない場合、 GlyphAssembly を無効として扱わなければなりません。

  • NExt > 0。そうでない場合、 extender を繰り返してアセンブリを拡大できません。
  • SExt,NonOverlapping > 0。 そうでない場合、extender を結合してもアセンブリが拡大しません。
  • GlyphAssembly.partRecords 内の各 GlyphPartRecordについて、 GlyphPartRecord.startConnectorLengthGlyphPartRecord.endConnectorLength の値は、 少なくとも omin でなければなりません。 そうでない場合、 MathVariant.minConnectorOverlap の条件を満たすことができません。

この仕様では、各 extender を r 回繰り返し、 各グリフ間で同じ重なり値 o を使用することで グリフアセンブリを構築します。このようなアセンブリのグリフ数は AssemblyGlyphCount(r) = NNonExt + r NExt であり、 伸長サイズは AssembySize(o, r) = SNonExt + r SExt − o (AssemblyGlyphCount(r) − 1) です。

rmin は、 少なくとも T のサイズを持つアセンブリを得るために 必要な最小繰り返し回数、すなわち AssembySize(omin, r) ≥ T となる最小の r です。 これは 0 と、 ((T − SNonExt + omin (NNonExt − 1)) / SExt,NonOverlapping) の天井値との最大値として定義されます。

omax,theorical = (AssembySize(0, rmin) − T) / (AssemblyGlyphCount(rmin) − 1) は、重なり 0 で構築したアセンブリの余分なサイズを 均等に分割して得られる理論上の重なりです。

omax は、 各 extender を rmin 回繰り返して、 少なくとも T のサイズのアセンブリを構築できる 最大の重なりです。 AssemblyGlyphCount(rmin) ≤ 1 の場合、 実際の重なり値は重要ではありません。 それ以外の場合、omax は次の値の最小値として定義されます。

  • omax,theorical
  • GlyphAssembly.partRecords のすべてのエントリの GlyphPartRecord.startConnectorLength。 ただし、最後のエントリが extender でない場合は除きます。
  • GlyphAssembly.partRecords のすべてのエントリの GlyphPartRecord.endConnectorLength。 ただし、最初のエントリが extender でない場合は除きます。

目標サイズ T に対する グリフアセンブリの伸長サイズは、 AssembySize(omax, rmin) です。

グリフ アセンブリの幅グリフ アセンブリの ascent および グリフアセンブリの descent は次のように定義されます。

  • GlyphAssembly が vertical の場合、 幅は GlyphAssembly.partRecords 内のすべての GlyphPartRecord について、 ID が GlyphPartRecord.glyphID であるグリフの advance width の最大値であり、ascent は 所与の目標サイズ T に対する グリフアセンブリの伸長サイズ で、descent は 0 です。
  • それ以外の場合、GlyphAssembly は horizontal であり、 幅は所与の目標サイズ T に対する グリフアセンブリの伸長サイズです。 一方、ascent(それぞれ descent)は、 GlyphAssembly.partRecords 内のすべての GlyphPartRecord について、 ID が GlyphPartRecord.glyphID であるグリフの ascent(それぞれ descent)の最大値です。

グリフアセンブリの高さは、 グリフアセンブリの ascentグリフアセンブリの descentの合計です。

注記
vertical のグリフアセンブリの horizontal メトリクス (それぞれ horizontal のグリフアセンブリの vertical メトリクス)は、 目標サイズ T に依存しません。

グリフアセンブリのシェイピングは、 次のアルゴリズムで実行されます。

  1. rminomax を計算します。
  2. (x, y)(0, 0)RepetitionCounter を 0、 PartIndex を -1 に設定します。
  3. 次の手順を繰り返します。
    1. RepetitionCounter が 0 の場合:
      1. PartIndex を増加させます。
      2. PartIndexGlyphAssembly.partCount の場合、終了します。
      3. それ以外の場合、 PartGlyphAssembly.partRecords[PartIndex] に設定します。 Part が extender の場合は RepetitionCounterrmin に設定し、 それ以外の場合は 1 に設定します。
      • グリフアセンブリが horizontal の場合、 ID が Part.glyphID のグリフを、 その (left, baseline) 座標が (x, y) の位置になるように描画します。 xx + Part.fullAdvance − omax. に設定します。
      • それ以外の場合(グリフアセンブリが vertical の場合)、 ID が Part.glyphID のグリフを、 その (left, bottom) 座標が (x, y) の位置になるように描画します。 yy − Part.fullAdvance + omax. に設定します。
    2. RepetitionCounter を減少させます。

5.3.2 グリフ伸長アルゴリズム

ブロック 軸に沿って伸長されたグリフの推奨インラインサイズ は次のアルゴリズムを使用して計算されます。

  1. S をグリフの advance width に設定します。
  2. 所与のグリフについて、 MathVariants.vertGlyphConstructionOffsets テーブルに MathGlyphConstruction テーブルがある場合:
    1. MathGlyphConstruction.mathGlyphVariantRecord 内の 各 MathGlyphVariantRecord について、 S が少なくとも ID が MathGlyphVariantRecord.variantGlyph であるグリフの advance width になることを保証します。
    2. 有効な GlyphAssembly サブテーブルがある場合、 S が少なくとも グリフアセンブリの幅 になることを保証します。
  3. S を返します。
注記
ブロック 軸に沿って伸長されたグリフの推奨インラインサイズは、 そのグリフについて可能なすべての vertical 構築の 最大幅を返します。 実際には、数式用フォントは vertical 構築の幅が ほぼ一定になるよう設計されているため、 実際の幅を過大評価する可能性は小さいです。

伸長可能なグリフを inline (それぞれ block)寸法 T まで シェイプするアルゴリズムは次のとおりです。

  1. 所与のグリフについて、 MathVariants.horizGlyphConstructionOffsets テーブル(それぞれ MathVariants.vertGlyphConstructionOffsets テーブル)に MathGlyphConstruction テーブルが存在しない場合、 失敗して終了します。
  2. グリフの advance width (それぞれ高さ)が少なくとも T の場合、 そのグリフについて通常のシェイピングと境界ボックスを使用し、 そのグリフの MathItalicsCorrectionInfo を イタリック補正として使用し、成功して終了します。
  3. MathGlyphConstruction.mathGlyphVariantRecord 内の MathGlyphVariantRecord のリストを走査します。 いずれかの MathGlyphVariantRecord.advanceMeasurement が少なくとも T の場合、 MathGlyphVariantRecord.variantGlyph について 通常のシェイピングと境界ボックスを使用し、 そのグリフの MathItalicsCorrectionInfo を イタリック補正として使用し、成功して終了します。
  4. 有効な GlyphAssembly サブテーブルがある場合、 グリフアセンブリの幅グリフアセンブリの高さグリフアセンブリの ascentグリフアセンブリの descentによって 与えられる境界ボックスを使用し、 GlyphAssembly.italicsCorrection の値をイタリック 補正として使用して、 グリフ アセンブリのシェイピングを実行し、 成功して終了します。
  5. 上記のどの伸長方法でも目標サイズ T を覆えなかった場合、 最後に試したものを選択し、成功して終了します。
注記
フォントが伸長可能な構築用のテーブルを提供していない場合、 ユーザーエージェントは、 B.4 Unicode ベースのグリフアセンブリで提案されているものなど、 独自の内部構築をフォールバックとして使用してもかまいません。

A. ユーザーエージェントスタイルシート

@namespace url(http://www.w3.org/1998/Math/MathML);

/* 汎用規則 */
* {
  font-size: math;
  display: block math;
  writing-mode: horizontal-tb !important;
}

/* <math> 要素 */
math {
  direction: ltr;
  text-indent: 0;
  letter-spacing: normal;
  line-height: normal;
  word-spacing: normal;
  font-family: math;
  font-size: inherit;
  font-style: normal;
  font-weight: normal;
  display: inline math;
  math-shift: normal;
  math-style: compact;
  math-depth: 0;
}
math[display="block" i] {
  display: block math;
  math-style: normal;
}
math[display="inline" i] {
  display: inline math;
  math-style: compact;
}

/* <mrow> 類似要素 */
semantics > :not(:first-child) {
  display: none;
}
maction > :not(:first-child) {
  display: none;
}
merror {
  border: 1px solid red;
  background-color: lightYellow;
}
mphantom {
  visibility: hidden;
}

/* トークン要素 */
mi {
  text-transform: math-auto;
}

/* 表 */
mtable {
  display: inline-table;
  math-style: compact;
}
mtr {
  display: table-row;
}
mtd {
  display: table-cell;
  /* 表セル内の中央揃えは、ボックス整列プロパティに依存するべきです。
     https://github.com/w3c/mathml-core/issues/156 を参照してください。 */
  text-align: center;
  padding: 0.5ex 0.4em;
}

/* 分数 */
mfrac {
  padding-inline: 1px;
}
mfrac > * {
  math-depth: auto-add;
  math-style: compact;
}
mfrac > :nth-child(2) {
  math-shift: compact;
}

/* scriptlevel、displaystyle、および math-shift のその他の規則 */
mroot > :not(:first-child) {
  math-depth: add(2);
  math-style: compact;
}
mroot, msqrt {
  math-shift: compact;
}
msub > :not(:first-child),
msup > :not(:first-child),
msubsup > :not(:first-child),
mmultiscripts > :not(:first-child),
munder > :not(:first-child),
mover > :not(:first-child),
munderover > :not(:first-child) {
  math-depth: add(1);
  math-style: compact;
}
munder[accentunder="true" i] > :nth-child(2),
mover[accent="true" i] > :nth-child(2),
munderover[accentunder="true" i] > :nth-child(2),
munderover[accent="true" i] > :nth-child(3) {
  font-size: inherit;
}
msub > :nth-child(2),
msubsup > :nth-child(2),
mmultiscripts > :nth-child(even),
mmultiscripts > mprescripts ~ :nth-child(odd),
mover[accent="true" i] > :first-child,
munderover[accent="true" i] > :first-child {
  math-shift: compact;
}
mmultiscripts > mprescripts ~ :nth-child(even) {
  math-shift: inherit;
}

B. 演算子テーブル

B.1 演算子辞書

注記
このセクションでは、 3.2.4.2 辞書ベースの属性の値と、 演算子の 伸長軸を決定する方法について説明します。 以下のコンパクトなテーブルはコンピューター処理に適しています。 別の表示については、 B.2 演算子 辞書(人間可読)を参照してください。

演算子のカテゴリからその プロパティを設定するアルゴリズムは次のとおりです。

演算子のカテゴリを決定するアルゴリズム (Content, Form) は次のとおりです。

  1. UTF-16 文字列としての Content の長さが 1 または 2 でない場合、カテゴリ Default で終了します。
  2. Content が U+0320–U+03FF の範囲の単一文字である場合、 カテゴリ Default で終了します。それ以外で、 2文字を持つ場合:
    • Content が U+1EEF0 ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL または U+1EEF1 ARABIC MATHEMATICAL OPERATOR HAH WITH DAL に対応する サロゲートペアであり、 Formpostfix の場合、 カテゴリ I で終了します。
    • 2番目の文字が U+0338 COMBINING LONG SOLIDUS OVERLAY または U+20D2 COMBINING LONG VERTICAL LINE OVERLAY の場合、 Content を最初の文字に置き換え、 ステップ 3 に進みます。
    • それ以外で、ContentOperators_2_ascii_chars に記載されている場合、 Content を Unicode 文字 「U+0320 + Operators_2_ascii_chars 内の Content のインデックス」に置き換え、 ステップ 3 に進みます。
    • それ以外の場合、カテゴリ Default で終了します。
  3. Form が infix で、Content が U+007C VERTICAL LINE または U+223C TILDE OPERATOR のいずれかに対応する場合、 カテゴリ ForceDefault で終了します。 テーブル 25 によって与えられる (Content, Form) のカテゴリが、 テーブル 26 で N/A 符号化を持つ場合 (すなわちカテゴリ L または M の場合)、 そのカテゴリで終了します。 それ以外の場合:
    • Content が U+0000–U+03FF の範囲にある場合は KeyContent に設定し、 U+2000–U+2BFF の範囲にある場合は Content − 0x1C00 に設定します。 それ以外の場合、カテゴリ Default で終了します。
    • Form がそれぞれ infixprefixpostfix のどれであるかに応じて、 Key に 0x0000、0x1000、0x2000 を加えます。
    • 表明: Key は最大でも 0x2FFF です。
    • テーブル 27 で、Entry % 0x4000 が Key に等しい Entry を検索します。 見つかった場合、 26Entry / 0x1000 の符号化に対応するカテゴリを返します。 それ以外の場合、カテゴリ Default を返します。
特殊テーブル エントリ
Operators_2_ascii_chars 18 エントリ(2文字の ASCII 文字列): '!!', '!=', '&&', '**', '*=', '++', '+=', '--', '-=', '->', '//', '/=', ':=', '<=', '<>', '==', '>=', '||',
Operators_fence 61 エントリ(16 個の Unicode 範囲): [U+0028–U+0029], {U+005B}, {U+005D}, [U+007B–U+007D], {U+0331}, {U+2016}, [U+2018–U+2019], [U+201C–U+201D], [U+2308–U+230B], [U+2329–U+232A], [U+2772–U+2773], [U+27E6–U+27EF], {U+2980}, [U+2983–U+2999], [U+29D8–U+29DB], [U+29FC–U+29FD],
Operators_separator 3 エントリ: U+002C, U+003B, U+2063,
24 演算子辞書用の特殊テーブル。
合計サイズ: 82 エントリ、90 バイト
(文字が UTF-16 で範囲長が 1 バイトであると仮定)。
(Content, Form) キー カテゴリ
infix 形式の 313 エントリ(35 個の Unicode 範囲): [U+2190–U+2195], [U+219A–U+21AE], [U+21B0–U+21B5], {U+21B9}, [U+21BC–U+21D5], [U+21DA–U+21F0], [U+21F3–U+21FF], {U+2794}, {U+2799}, [U+279B–U+27A1], [U+27A5–U+27A6], [U+27A8–U+27AF], {U+27B1}, {U+27B3}, {U+27B5}, {U+27B8}, [U+27BA–U+27BE], [U+27F0–U+27F1], [U+27F4–U+27FF], [U+2900–U+2920], [U+2934–U+2937], [U+2942–U+2975], [U+297C–U+297F], [U+2B04–U+2B07], [U+2B0C–U+2B11], [U+2B30–U+2B3E], [U+2B40–U+2B4C], [U+2B60–U+2B65], [U+2B6A–U+2B6D], [U+2B70–U+2B73], [U+2B7A–U+2B7D], [U+2B80–U+2B87], {U+2B95}, [U+2BA0–U+2BAF], {U+2BB8}, A
infix 形式の 108 エントリ(31 個の Unicode 範囲): {U+002B}, {U+002D}, {U+00B1}, {U+00F7}, {U+0322}, {U+2044}, [U+2212–U+2216], [U+2227–U+222A], {U+2236}, {U+2238}, [U+228C–U+228E], [U+2293–U+2296], {U+2298}, [U+229D–U+229F], [U+22BB–U+22BD], [U+22CE–U+22CF], [U+22D2–U+22D3], [U+2795–U+2797], {U+29B8}, {U+29BC}, [U+29C4–U+29C5], [U+29F5–U+29FB], [U+2A1F–U+2A2E], [U+2A38–U+2A3A], {U+2A3E}, [U+2A40–U+2A4F], [U+2A51–U+2A63], {U+2ADB}, {U+2AF6}, {U+2AFB}, {U+2AFD}, B
infix 形式の 64 エントリ(33 個の Unicode 範囲): {U+0025}, {U+002A}, {U+002E}, [U+003F–U+0040], {U+005E}, {U+00B7}, {U+00D7}, {U+0323}, {U+032E}, {U+2022}, {U+2043}, [U+2217–U+2219], {U+2240}, {U+2297}, [U+2299–U+229B], [U+22A0–U+22A1], {U+22BA}, [U+22C4–U+22C7], [U+22C9–U+22CC], [U+2305–U+2306], {U+27CB}, {U+27CD}, [U+29C6–U+29C8], [U+29D4–U+29D7], {U+29E2}, [U+2A1D–U+2A1E], [U+2A2F–U+2A37], [U+2A3B–U+2A3D], {U+2A3F}, {U+2A50}, [U+2A64–U+2A65], [U+2ADC–U+2ADD], {U+2AFE}, C
prefix 形式の 52 エントリ(22 個の Unicode 範囲): {U+0021}, {U+002B}, {U+002D}, {U+00AC}, {U+00B1}, {U+0331}, {U+2018}, {U+201C}, [U+2200–U+2201], [U+2203–U+2204], {U+2207}, [U+2212–U+2213], [U+221F–U+2222], [U+2234–U+2235], {U+223C}, [U+22BE–U+22BF], {U+2310}, {U+2319}, [U+2795–U+2796], {U+27C0}, [U+299B–U+29AF], [U+2AEC–U+2AED], D
postfix 形式の 40 エントリ(21 個の Unicode 範囲): [U+0021–U+0022], [U+0025–U+0027], {U+0060}, {U+00A8}, {U+00B0}, [U+00B2–U+00B4], [U+00B8–U+00B9], [U+02CA–U+02CB], [U+02D8–U+02DA], {U+02DD}, {U+0311}, {U+0320}, {U+0325}, {U+0327}, {U+0331}, [U+2019–U+201B], [U+201D–U+201F], [U+2032–U+2037], {U+2057}, [U+20DB–U+20DC], {U+23CD}, E
prefix 形式の 30 エントリ: U+0028, U+005B, U+007B, U+007C, U+2016, U+2308, U+230A, U+2329, U+2772, U+27E6, U+27E8, U+27EA, U+27EC, U+27EE, U+2980, U+2983, U+2985, U+2987, U+2989, U+298B, U+298D, U+298F, U+2991, U+2993, U+2995, U+2997, U+2999, U+29D8, U+29DA, U+29FC, F
postfix 形式の 30 エントリ: U+0029, U+005D, U+007C, U+007D, U+2016, U+2309, U+230B, U+232A, U+2773, U+27E7, U+27E9, U+27EB, U+27ED, U+27EF, U+2980, U+2984, U+2986, U+2988, U+298A, U+298C, U+298E, U+2990, U+2992, U+2994, U+2996, U+2998, U+2999, U+29D9, U+29DB, U+29FD, G
prefix 形式の 27 エントリ(2 個の Unicode 範囲): [U+222B–U+2233], [U+2A0B–U+2A1C], H
postfix 形式の 22 エントリ(13 個の Unicode 範囲): [U+005E–U+005F], {U+007E}, {U+00AF}, [U+02C6–U+02C7], {U+02C9}, {U+02CD}, {U+02DC}, {U+02F7}, {U+0302}, {U+203E}, [U+2322–U+2323], [U+23B4–U+23B5], [U+23DC–U+23E1], I
prefix 形式の 22 エントリ(6 個の Unicode 範囲): [U+220F–U+2211], [U+22C0–U+22C3], [U+2A00–U+2A0A], [U+2A1D–U+2A1E], {U+2AFC}, {U+2AFF}, J
infix 形式の 8 エントリ(5 個の Unicode 範囲): {U+002F}, {U+005C}, {U+005F}, [U+2061–U+2064], {U+2206}, K
prefix 形式の 6 エントリ(3 個の Unicode 範囲): [U+2145–U+2146], {U+2202}, [U+221A–U+221C], L
infix 形式の 3 エントリ: U+002C, U+003A, U+003B, M
25 演算子 (Content, Form) からカテゴリへのマッピング。
合計サイズ: 725 エントリ、639 バイト
(文字が UTF-16 で 範囲長が1バイトであると仮定)。
カテゴリ 形式 符号化 lspace rspace プロパティ
Default N/A N/A 0.2777777777777778em 0.2777777777777778em N/A
ForceDefault N/A N/A 0.2777777777777778em 0.2777777777777778em N/A
A infix 0x0 0.2777777777777778em 0.2777777777777778em stretchy
B infix 0x4 0.2222222222222222em 0.2222222222222222em N/A
C infix 0x8 0.16666666666666666em 0.16666666666666666em N/A
D prefix 0x1 0 0 N/A
E postfix 0x2 0 0 N/A
F prefix 0x5 0 0 stretchy symmetric
G postfix 0x6 0 0 stretchy symmetric
H prefix 0x9 0.16666666666666666em 0.16666666666666666em symmetric largeop
I postfix 0xA 0 0 stretchy
J prefix 0xD 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
K infix 0xC 0 0 N/A
L prefix N/A 0.16666666666666666em 0 N/A
M infix N/A 0 0.16666666666666666em N/A
26 各カテゴリの演算子値。
第3列は カテゴリの4ビット符号化を提供します。
最下位2ビットは form の infix (0)、prefix (1)、 postfix (2) を符号化します。
716 エントリ(長さが最大 16 の 236 範囲): {0x8025}, {0x802A}, {0x402B}, {0x402D}, {0x802E}, {0xC02F}, [0x803F–0x8040], {0xC05C}, {0x805E}, {0xC05F}, {0x40B1}, {0x80B7}, {0x80D7}, {0x40F7}, {0x4322}, {0x8323}, {0x832E}, {0x8422}, {0x8443}, {0x4444}, [0xC461–0xC464], [0x0590–0x0595], [0x059A–0x05A9], [0x05AA–0x05AE], [0x05B0–0x05B5], {0x05B9}, [0x05BC–0x05CB], [0x05CC–0x05D5], [0x05DA–0x05E9], [0x05EA–0x05F0], [0x05F3–0x05FF], {0xC606}, [0x4612–0x4616], [0x8617–0x8619], [0x4627–0x462A], {0x4636}, {0x4638}, {0x8640}, [0x468C–0x468E], [0x4693–0x4696], {0x8697}, {0x4698}, [0x8699–0x869B], [0x469D–0x469F], [0x86A0–0x86A1], {0x86BA}, [0x46BB–0x46BD], [0x86C4–0x86C7], [0x86C9–0x86CC], [0x46CE–0x46CF], [0x46D2–0x46D3], [0x8705–0x8706], {0x0B94}, [0x4B95–0x4B97], {0x0B99}, [0x0B9B–0x0BA1], [0x0BA5–0x0BA6], [0x0BA8–0x0BAF], {0x0BB1}, {0x0BB3}, {0x0BB5}, {0x0BB8}, [0x0BBA–0x0BBE], {0x8BCB}, {0x8BCD}, [0x0BF0–0x0BF1], [0x0BF4–0x0BFF], [0x0D00–0x0D0F], [0x0D10–0x0D1F], {0x0D20}, [0x0D34–0x0D37], [0x0D42–0x0D51], [0x0D52–0x0D61], [0x0D62–0x0D71], [0x0D72–0x0D75], [0x0D7C–0x0D7F], {0x4DB8}, {0x4DBC}, [0x4DC4–0x4DC5], [0x8DC6–0x8DC8], [0x8DD4–0x8DD7], {0x8DE2}, [0x4DF5–0x4DFB], [0x8E1D–0x8E1E], [0x4E1F–0x4E2E], [0x8E2F–0x8E37], [0x4E38–0x4E3A], [0x8E3B–0x8E3D], {0x4E3E}, {0x8E3F}, [0x4E40–0x4E4F], {0x8E50}, [0x4E51–0x4E60], [0x4E61–0x4E63], [0x8E64–0x8E65], {0x4EDB}, [0x8EDC–0x8EDD], {0x4EF6}, {0x4EFB}, {0x4EFD}, {0x8EFE}, [0x0F04–0x0F07], [0x0F0C–0x0F11], [0x0F30–0x0F3E], [0x0F40–0x0F4C], [0x0F60–0x0F65], [0x0F6A–0x0F6D], [0x0F70–0x0F73], [0x0F7A–0x0F7D], [0x0F80–0x0F87], {0x0F95}, [0x0FA0–0x0FAF], {0x0FB8}, {0x1021}, {0x5028}, {0x102B}, {0x102D}, {0x505B}, [0x507B–0x507C], {0x10AC}, {0x10B1}, {0x1331}, {0x5416}, {0x1418}, {0x141C}, [0x1600–0x1601], [0x1603–0x1604], {0x1607}, [0xD60F–0xD611], [0x1612–0x1613], [0x161F–0x1622], [0x962B–0x9633], [0x1634–0x1635], {0x163C}, [0x16BE–0x16BF], [0xD6C0–0xD6C3], {0x5708}, {0x570A}, {0x1710}, {0x1719}, {0x5729}, {0x5B72}, [0x1B95–0x1B96], {0x1BC0}, {0x5BE6}, {0x5BE8}, {0x5BEA}, {0x5BEC}, {0x5BEE}, {0x5D80}, {0x5D83}, {0x5D85}, {0x5D87}, {0x5D89}, {0x5D8B}, {0x5D8D}, {0x5D8F}, {0x5D91}, {0x5D93}, {0x5D95}, {0x5D97}, {0x5D99}, [0x1D9B–0x1DAA], [0x1DAB–0x1DAF], {0x5DD8}, {0x5DDA}, {0x5DFC}, [0xDE00–0xDE0A], [0x9E0B–0x9E1A], [0x9E1B–0x9E1C], [0xDE1D–0xDE1E], [0x1EEC–0x1EED], {0xDEFC}, {0xDEFF}, [0x2021–0x2022], [0x2025–0x2027], {0x6029}, {0x605D}, [0xA05E–0xA05F], {0x2060}, [0x607C–0x607D], {0xA07E}, {0x20A8}, {0xA0AF}, {0x20B0}, [0x20B2–0x20B4], [0x20B8–0x20B9], [0xA2C6–0xA2C7], {0xA2C9}, [0x22CA–0x22CB], {0xA2CD}, [0x22D8–0x22DA], {0xA2DC}, {0x22DD}, {0xA2F7}, {0xA302}, {0x2311}, {0x2320}, {0x2325}, {0x2327}, {0x2331}, {0x6416}, [0x2419–0x241B], [0x241D–0x241F], [0x2432–0x2437], {0xA43E}, {0x2457}, [0x24DB–0x24DC], {0x6709}, {0x670B}, [0xA722–0xA723], {0x672A}, [0xA7B4–0xA7B5], {0x27CD}, [0xA7DC–0xA7E1], {0x6B73}, {0x6BE7}, {0x6BE9}, {0x6BEB}, {0x6BED}, {0x6BEF}, {0x6D80}, {0x6D84}, {0x6D86}, {0x6D88}, {0x6D8A}, {0x6D8C}, {0x6D8E}, {0x6D90}, {0x6D92}, {0x6D94}, {0x6D96}, [0x6D98–0x6D99], {0x6DD9}, {0x6DDB}, {0x6DFD},
27 最大カテゴリのエントリ一覧。key でソートされています。
KeyEntry % 0x4000、カテゴリ 符号化は Entry / 0x1000。
合計サイズ: 716 エントリ、590 バイト
(範囲長に 4 ビットを使用すると仮定)。
注記
  • 2527のテーブルは、 多数の連続した Unicode ブロックが存在することを利用するため、 範囲として符号化されています。
  • これらのテーブルでエントリを素早く検索するため、 範囲の開始位置に対して二分探索を行い、 続いて範囲長を追加で確認することができます。
  • log は凹関数なので、 25の各大規模サブテーブルで 二分探索を行うより、 27のテーブル全体に対して 1回の二分探索を行うほうが効率的です。

Unicode 文字 c固有伸長軸は、 下記の一覧に属する場合は inline です。 それ以外の場合、c の固有伸長軸は block です。

U+003D, U+005E, U+005F, U+007E, U+00AF, U+02C6, U+02C7, U+02C9, U+02CD, U+02DC, U+02F7, U+0302, U+0332, U+203E, U+20D0, U+20D1, U+20D6, U+20D7, U+20E1, U+2190, U+2192, U+2194, U+2198, U+2199, U+219A, U+219B, U+219C, U+219D, U+219E, U+21A0, U+21A2, U+21A3, U+21A4, U+21A6, U+21A9, U+21AA, U+21AB, U+21AC, U+21AD, U+21AE, U+21B4, U+21B9, U+21BC, U+21BD, U+21C0, U+21C1, U+21C4, U+21C6, U+21C7, U+21C9, U+21CB, U+21CC, U+21CD, U+21CE, U+21CF, U+21D0, U+21D2, U+21D4, U+21DA, U+21DB, U+21DC, U+21DD, U+21E0, U+21E2, U+21E4, U+21E5, U+21E6, U+21E8, U+21F0, U+21F4, U+21F6, U+21F7, U+21F8, U+21F9, U+21FA, U+21FB, U+21FC, U+21FD, U+21FE, U+21FF, U+2322, U+2323, U+23B4, U+23B5, U+23DC, U+23DD, U+23DE, U+23DF, U+23E0, U+23E1, U+2500, U+2794, U+2799, U+279B, U+279C, U+279D, U+279E, U+279F, U+27A0, U+27A1, U+27A5, U+27A6, U+27A8, U+27A9, U+27AA, U+27AB, U+27AC, U+27AD, U+27AE, U+27AF, U+27B1, U+27B3, U+27B5, U+27B8, U+27BA, U+27BB, U+27BC, U+27BD, U+27BE, U+27F4, U+27F5, U+27F6, U+27F7, U+27F8, U+27F9, U+27FA, U+27FB, U+27FC, U+27FD, U+27FE, U+27FF, U+2900, U+2901, U+2902, U+2903, U+2904, U+2905, U+2906, U+2907, U+290C, U+290D, U+290E, U+290F, U+2910, U+2911, U+2914, U+2915, U+2916, U+2917, U+2918, U+2919, U+291A, U+291B, U+291C, U+291D, U+291E, U+291F, U+2920, U+2942, U+2943, U+2944, U+2945, U+2946, U+2947, U+2948, U+294A, U+294B, U+294E, U+2950, U+2952, U+2953, U+2956, U+2957, U+295A, U+295B, U+295E, U+295F, U+2962, U+2964, U+2966, U+2967, U+2968, U+2969, U+296A, U+296B, U+296C, U+296D, U+2970, U+2971, U+2972, U+2973, U+2974, U+2975, U+297C, U+297D, U+2B04, U+2B05, U+2B0C, U+2B30, U+2B31, U+2B32, U+2B33, U+2B34, U+2B35, U+2B36, U+2B37, U+2B38, U+2B39, U+2B3A, U+2B3B, U+2B3C, U+2B3D, U+2B3E, U+2B40, U+2B41, U+2B42, U+2B43, U+2B44, U+2B45, U+2B46, U+2B47, U+2B48, U+2B49, U+2B4A, U+2B4B, U+2B4C, U+2B60, U+2B62, U+2B64, U+2B6A, U+2B6C, U+2B70, U+2B72, U+2B7A, U+2B7C, U+2B80, U+2B82, U+2B84, U+2B86, U+2B95, U+FE35, U+FE36, U+FE37, U+FE38, U+1EEF0, U+1EEF1,
28 インライン伸長軸を持つ演算子に対応する Unicode コードポイントのソート済み一覧。
合計サイズ: 246 エントリ、492 バイト(非 BMP エントリ以外はすべて 16 ビットであると仮定)。
注記
固有伸長軸は、演算子辞書の真偽値プロパティとして含めることもできます。 しかし、これは form に依存せず、また インライン軸に沿って伸長できる演算子はごく少数であるため、別個の ソート済み配列として実装するほうが適切です。各エントリは、 U+1EEF0 ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL および U+1EEF1 ARABIC MATHEMATICAL OPERATOR HAH WITH DAL を 個別にテストする場合、16 バイトで符号化できます。

B.2 演算子辞書 (人間可読)

このセクションは非規範的です。

次の辞書は、 B.1 演算子辞書の人間可読版を提供します。 この辞書の使用方法と、 辞書を一緒に索引付けする値 Content および Form を 決定する方法の説明については、 3.2.4.2 辞書ベースの 属性を参照してください。

rspace および lspace の値は、 対応する列に示されています。 stretchysymmetriclargeopmovablelimits の値は、「プロパティ」列に記載されている 場合は true です。

内容 伸長軸 form lspace rspace プロパティ
< U+003C block infix 0.2777777777777778em 0.2777777777777778em N/A
= U+003D inline infix 0.2777777777777778em 0.2777777777777778em N/A
> U+003E block infix 0.2777777777777778em 0.2777777777777778em N/A
| U+007C block infix 0.2777777777777778em 0.2777777777777778em fence
↖ U+2196 block infix 0.2777777777777778em 0.2777777777777778em N/A
↗ U+2197 block infix 0.2777777777777778em 0.2777777777777778em N/A
↘ U+2198 inline infix 0.2777777777777778em 0.2777777777777778em N/A
↙ U+2199 inline infix 0.2777777777777778em 0.2777777777777778em N/A
↯ U+21AF block infix 0.2777777777777778em 0.2777777777777778em N/A
↶ U+21B6 block infix 0.2777777777777778em 0.2777777777777778em N/A
↷ U+21B7 block infix 0.2777777777777778em 0.2777777777777778em N/A
↸ U+21B8 block infix 0.2777777777777778em 0.2777777777777778em N/A
↺ U+21BA block infix 0.2777777777777778em 0.2777777777777778em N/A
↻ U+21BB block infix 0.2777777777777778em 0.2777777777777778em N/A
⇖ U+21D6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⇗ U+21D7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⇘ U+21D8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⇙ U+21D9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⇱ U+21F1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⇲ U+21F2 block infix 0.2777777777777778em 0.2777777777777778em N/A
∈ U+2208 block infix 0.2777777777777778em 0.2777777777777778em N/A
∉ U+2209 block infix 0.2777777777777778em 0.2777777777777778em N/A
∊ U+220A block infix 0.2777777777777778em 0.2777777777777778em N/A
∋ U+220B block infix 0.2777777777777778em 0.2777777777777778em N/A
∌ U+220C block infix 0.2777777777777778em 0.2777777777777778em N/A
∍ U+220D block infix 0.2777777777777778em 0.2777777777777778em N/A
∝ U+221D block infix 0.2777777777777778em 0.2777777777777778em N/A
∣ U+2223 block infix 0.2777777777777778em 0.2777777777777778em N/A
∤ U+2224 block infix 0.2777777777777778em 0.2777777777777778em N/A
∥ U+2225 block infix 0.2777777777777778em 0.2777777777777778em N/A
∦ U+2226 block infix 0.2777777777777778em 0.2777777777777778em N/A
∷ U+2237 block infix 0.2777777777777778em 0.2777777777777778em N/A
∹ U+2239 block infix 0.2777777777777778em 0.2777777777777778em N/A
∺ U+223A block infix 0.2777777777777778em 0.2777777777777778em N/A
∻ U+223B block infix 0.2777777777777778em 0.2777777777777778em N/A
∼ U+223C block infix 0.2777777777777778em 0.2777777777777778em N/A
∽ U+223D block infix 0.2777777777777778em 0.2777777777777778em N/A
∾ U+223E block infix 0.2777777777777778em 0.2777777777777778em N/A
≁ U+2241 block infix 0.2777777777777778em 0.2777777777777778em N/A
≂ U+2242 block infix 0.2777777777777778em 0.2777777777777778em N/A
≃ U+2243 block infix 0.2777777777777778em 0.2777777777777778em N/A
≄ U+2244 block infix 0.2777777777777778em 0.2777777777777778em N/A
≅ U+2245 block infix 0.2777777777777778em 0.2777777777777778em N/A
≆ U+2246 block infix 0.2777777777777778em 0.2777777777777778em N/A
≇ U+2247 block infix 0.2777777777777778em 0.2777777777777778em N/A
≈ U+2248 block infix 0.2777777777777778em 0.2777777777777778em N/A
≉ U+2249 block infix 0.2777777777777778em 0.2777777777777778em N/A
≊ U+224A block infix 0.2777777777777778em 0.2777777777777778em N/A
≋ U+224B block infix 0.2777777777777778em 0.2777777777777778em N/A
≌ U+224C block infix 0.2777777777777778em 0.2777777777777778em N/A
≍ U+224D block infix 0.2777777777777778em 0.2777777777777778em N/A
≎ U+224E block infix 0.2777777777777778em 0.2777777777777778em N/A
≏ U+224F block infix 0.2777777777777778em 0.2777777777777778em N/A
≐ U+2250 block infix 0.2777777777777778em 0.2777777777777778em N/A
≑ U+2251 block infix 0.2777777777777778em 0.2777777777777778em N/A
≒ U+2252 block infix 0.2777777777777778em 0.2777777777777778em N/A
≓ U+2253 block infix 0.2777777777777778em 0.2777777777777778em N/A
≔ U+2254 block infix 0.2777777777777778em 0.2777777777777778em N/A
≕ U+2255 block infix 0.2777777777777778em 0.2777777777777778em N/A
≖ U+2256 block infix 0.2777777777777778em 0.2777777777777778em N/A
≗ U+2257 block infix 0.2777777777777778em 0.2777777777777778em N/A
≘ U+2258 block infix 0.2777777777777778em 0.2777777777777778em N/A
≙ U+2259 block infix 0.2777777777777778em 0.2777777777777778em N/A
≚ U+225A block infix 0.2777777777777778em 0.2777777777777778em N/A
≛ U+225B block infix 0.2777777777777778em 0.2777777777777778em N/A
≜ U+225C block infix 0.2777777777777778em 0.2777777777777778em N/A
≝ U+225D block infix 0.2777777777777778em 0.2777777777777778em N/A
≞ U+225E block infix 0.2777777777777778em 0.2777777777777778em N/A
≟ U+225F block infix 0.2777777777777778em 0.2777777777777778em N/A
≠ U+2260 block infix 0.2777777777777778em 0.2777777777777778em N/A
≡ U+2261 block infix 0.2777777777777778em 0.2777777777777778em N/A
≢ U+2262 block infix 0.2777777777777778em 0.2777777777777778em N/A
≣ U+2263 block infix 0.2777777777777778em 0.2777777777777778em N/A
≤ U+2264 block infix 0.2777777777777778em 0.2777777777777778em N/A
≥ U+2265 block infix 0.2777777777777778em 0.2777777777777778em N/A
≦ U+2266 block infix 0.2777777777777778em 0.2777777777777778em N/A
≧ U+2267 block infix 0.2777777777777778em 0.2777777777777778em N/A
≨ U+2268 block infix 0.2777777777777778em 0.2777777777777778em N/A
≩ U+2269 block infix 0.2777777777777778em 0.2777777777777778em N/A
≪ U+226A block infix 0.2777777777777778em 0.2777777777777778em N/A
≫ U+226B block infix 0.2777777777777778em 0.2777777777777778em N/A
≬ U+226C block infix 0.2777777777777778em 0.2777777777777778em N/A
≭ U+226D block infix 0.2777777777777778em 0.2777777777777778em N/A
≮ U+226E block infix 0.2777777777777778em 0.2777777777777778em N/A
≯ U+226F block infix 0.2777777777777778em 0.2777777777777778em N/A
≰ U+2270 block infix 0.2777777777777778em 0.2777777777777778em N/A
≱ U+2271 block infix 0.2777777777777778em 0.2777777777777778em N/A
≲ U+2272 block infix 0.2777777777777778em 0.2777777777777778em N/A
≳ U+2273 block infix 0.2777777777777778em 0.2777777777777778em N/A
≴ U+2274 block infix 0.2777777777777778em 0.2777777777777778em N/A
≵ U+2275 block infix 0.2777777777777778em 0.2777777777777778em N/A
≶ U+2276 block infix 0.2777777777777778em 0.2777777777777778em N/A
≷ U+2277 block infix 0.2777777777777778em 0.2777777777777778em N/A
≸ U+2278 block infix 0.2777777777777778em 0.2777777777777778em N/A
≹ U+2279 block infix 0.2777777777777778em 0.2777777777777778em N/A
≺ U+227A block infix 0.2777777777777778em 0.2777777777777778em N/A
≻ U+227B block infix 0.2777777777777778em 0.2777777777777778em N/A
≼ U+227C block infix 0.2777777777777778em 0.2777777777777778em N/A
≽ U+227D block infix 0.2777777777777778em 0.2777777777777778em N/A
≾ U+227E block infix 0.2777777777777778em 0.2777777777777778em N/A
≿ U+227F block infix 0.2777777777777778em 0.2777777777777778em N/A
⊀ U+2280 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊁ U+2281 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊂ U+2282 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊃ U+2283 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊄ U+2284 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊅ U+2285 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊆ U+2286 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊇ U+2287 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊈ U+2288 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊉ U+2289 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊊ U+228A block infix 0.2777777777777778em 0.2777777777777778em N/A
⊋ U+228B block infix 0.2777777777777778em 0.2777777777777778em N/A
⊏ U+228F block infix 0.2777777777777778em 0.2777777777777778em N/A
⊐ U+2290 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊑ U+2291 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊒ U+2292 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊜ U+229C block infix 0.2777777777777778em 0.2777777777777778em N/A
⊢ U+22A2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊣ U+22A3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊦ U+22A6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊧ U+22A7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊨ U+22A8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊩ U+22A9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊪ U+22AA block infix 0.2777777777777778em 0.2777777777777778em N/A
⊫ U+22AB block infix 0.2777777777777778em 0.2777777777777778em N/A
⊬ U+22AC block infix 0.2777777777777778em 0.2777777777777778em N/A
⊭ U+22AD block infix 0.2777777777777778em 0.2777777777777778em N/A
⊮ U+22AE block infix 0.2777777777777778em 0.2777777777777778em N/A
⊯ U+22AF block infix 0.2777777777777778em 0.2777777777777778em N/A
⊰ U+22B0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊱ U+22B1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊲ U+22B2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊳ U+22B3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊴ U+22B4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊵ U+22B5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊶ U+22B6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊷ U+22B7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⊸ U+22B8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋈ U+22C8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋍ U+22CD block infix 0.2777777777777778em 0.2777777777777778em N/A
⋐ U+22D0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋑ U+22D1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋔ U+22D4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋕ U+22D5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋖ U+22D6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋗ U+22D7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋘ U+22D8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋙ U+22D9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋚ U+22DA block infix 0.2777777777777778em 0.2777777777777778em N/A
⋛ U+22DB block infix 0.2777777777777778em 0.2777777777777778em N/A
⋜ U+22DC block infix 0.2777777777777778em 0.2777777777777778em N/A
⋝ U+22DD block infix 0.2777777777777778em 0.2777777777777778em N/A
⋞ U+22DE block infix 0.2777777777777778em 0.2777777777777778em N/A
⋟ U+22DF block infix 0.2777777777777778em 0.2777777777777778em N/A
⋠ U+22E0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋡ U+22E1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋢ U+22E2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋣ U+22E3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋤ U+22E4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋥ U+22E5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋦ U+22E6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋧ U+22E7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋨ U+22E8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋩ U+22E9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋪ U+22EA block infix 0.2777777777777778em 0.2777777777777778em N/A
⋫ U+22EB block infix 0.2777777777777778em 0.2777777777777778em N/A
⋬ U+22EC block infix 0.2777777777777778em 0.2777777777777778em N/A
⋭ U+22ED block infix 0.2777777777777778em 0.2777777777777778em N/A
⋲ U+22F2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋳ U+22F3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋴ U+22F4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋵ U+22F5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋶ U+22F6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋷ U+22F7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋸ U+22F8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋹ U+22F9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⋺ U+22FA block infix 0.2777777777777778em 0.2777777777777778em N/A
⋻ U+22FB block infix 0.2777777777777778em 0.2777777777777778em N/A
⋼ U+22FC block infix 0.2777777777777778em 0.2777777777777778em N/A
⋽ U+22FD block infix 0.2777777777777778em 0.2777777777777778em N/A
⋾ U+22FE block infix 0.2777777777777778em 0.2777777777777778em N/A
⋿ U+22FF block infix 0.2777777777777778em 0.2777777777777778em N/A
⌁ U+2301 block infix 0.2777777777777778em 0.2777777777777778em N/A
⍼ U+237C block infix 0.2777777777777778em 0.2777777777777778em N/A
⎋ U+238B block infix 0.2777777777777778em 0.2777777777777778em N/A
➘ U+2798 block infix 0.2777777777777778em 0.2777777777777778em N/A
➚ U+279A block infix 0.2777777777777778em 0.2777777777777778em N/A
➧ U+27A7 block infix 0.2777777777777778em 0.2777777777777778em N/A
➲ U+27B2 block infix 0.2777777777777778em 0.2777777777777778em N/A
➴ U+27B4 block infix 0.2777777777777778em 0.2777777777777778em N/A
➶ U+27B6 block infix 0.2777777777777778em 0.2777777777777778em N/A
➷ U+27B7 block infix 0.2777777777777778em 0.2777777777777778em N/A
➹ U+27B9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⟂ U+27C2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⟲ U+27F2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⟳ U+27F3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤡ U+2921 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤢ U+2922 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤣ U+2923 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤤ U+2924 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤥ U+2925 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤦ U+2926 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤧ U+2927 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤨ U+2928 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤩ U+2929 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤪ U+292A block infix 0.2777777777777778em 0.2777777777777778em N/A
⤫ U+292B block infix 0.2777777777777778em 0.2777777777777778em N/A
⤬ U+292C block infix 0.2777777777777778em 0.2777777777777778em N/A
⤭ U+292D block infix 0.2777777777777778em 0.2777777777777778em N/A
⤮ U+292E block infix 0.2777777777777778em 0.2777777777777778em N/A
⤯ U+292F block infix 0.2777777777777778em 0.2777777777777778em N/A
⤰ U+2930 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤱ U+2931 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤲ U+2932 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤳ U+2933 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤸ U+2938 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤹ U+2939 block infix 0.2777777777777778em 0.2777777777777778em N/A
⤺ U+293A block infix 0.2777777777777778em 0.2777777777777778em N/A
⤻ U+293B block infix 0.2777777777777778em 0.2777777777777778em N/A
⤼ U+293C block infix 0.2777777777777778em 0.2777777777777778em N/A
⤽ U+293D block infix 0.2777777777777778em 0.2777777777777778em N/A
⤾ U+293E block infix 0.2777777777777778em 0.2777777777777778em N/A
⤿ U+293F block infix 0.2777777777777778em 0.2777777777777778em N/A
⥀ U+2940 block infix 0.2777777777777778em 0.2777777777777778em N/A
⥁ U+2941 block infix 0.2777777777777778em 0.2777777777777778em N/A
⥶ U+2976 block infix 0.2777777777777778em 0.2777777777777778em N/A
⥷ U+2977 block infix 0.2777777777777778em 0.2777777777777778em N/A
⥸ U+2978 block infix 0.2777777777777778em 0.2777777777777778em N/A
⥹ U+2979 block infix 0.2777777777777778em 0.2777777777777778em N/A
⥺ U+297A block infix 0.2777777777777778em 0.2777777777777778em N/A
⥻ U+297B block infix 0.2777777777777778em 0.2777777777777778em N/A
⦁ U+2981 block infix 0.2777777777777778em 0.2777777777777778em N/A
⦂ U+2982 block infix 0.2777777777777778em 0.2777777777777778em N/A
⦶ U+29B6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⦷ U+29B7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⦹ U+29B9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧀ U+29C0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧁ U+29C1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧎ U+29CE block infix 0.2777777777777778em 0.2777777777777778em N/A
⧏ U+29CF block infix 0.2777777777777778em 0.2777777777777778em N/A
⧐ U+29D0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧑ U+29D1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧒ U+29D2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧓ U+29D3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧟ U+29DF block infix 0.2777777777777778em 0.2777777777777778em N/A
⧡ U+29E1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧣ U+29E3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧤ U+29E4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧥ U+29E5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧦ U+29E6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⧴ U+29F4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩦ U+2A66 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩧ U+2A67 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩨ U+2A68 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩩ U+2A69 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩪ U+2A6A block infix 0.2777777777777778em 0.2777777777777778em N/A
⩫ U+2A6B block infix 0.2777777777777778em 0.2777777777777778em N/A
⩬ U+2A6C block infix 0.2777777777777778em 0.2777777777777778em N/A
⩭ U+2A6D block infix 0.2777777777777778em 0.2777777777777778em N/A
⩮ U+2A6E block infix 0.2777777777777778em 0.2777777777777778em N/A
⩯ U+2A6F block infix 0.2777777777777778em 0.2777777777777778em N/A
⩰ U+2A70 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩱ U+2A71 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩲ U+2A72 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩳ U+2A73 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩴ U+2A74 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩵ U+2A75 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩶ U+2A76 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩷ U+2A77 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩸ U+2A78 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩹ U+2A79 block infix 0.2777777777777778em 0.2777777777777778em N/A
⩺ U+2A7A block infix 0.2777777777777778em 0.2777777777777778em N/A
⩻ U+2A7B block infix 0.2777777777777778em 0.2777777777777778em N/A
⩼ U+2A7C block infix 0.2777777777777778em 0.2777777777777778em N/A
⩽ U+2A7D block infix 0.2777777777777778em 0.2777777777777778em N/A
⩾ U+2A7E block infix 0.2777777777777778em 0.2777777777777778em N/A
⩿ U+2A7F block infix 0.2777777777777778em 0.2777777777777778em N/A
⪀ U+2A80 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪁ U+2A81 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪂ U+2A82 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪃ U+2A83 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪄ U+2A84 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪅ U+2A85 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪆ U+2A86 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪇ U+2A87 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪈ U+2A88 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪉ U+2A89 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪊ U+2A8A block infix 0.2777777777777778em 0.2777777777777778em N/A
⪋ U+2A8B block infix 0.2777777777777778em 0.2777777777777778em N/A
⪌ U+2A8C block infix 0.2777777777777778em 0.2777777777777778em N/A
⪍ U+2A8D block infix 0.2777777777777778em 0.2777777777777778em N/A
⪎ U+2A8E block infix 0.2777777777777778em 0.2777777777777778em N/A
⪏ U+2A8F block infix 0.2777777777777778em 0.2777777777777778em N/A
⪐ U+2A90 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪑ U+2A91 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪒ U+2A92 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪓ U+2A93 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪔ U+2A94 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪕ U+2A95 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪖ U+2A96 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪗ U+2A97 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪘ U+2A98 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪙ U+2A99 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪚ U+2A9A block infix 0.2777777777777778em 0.2777777777777778em N/A
⪛ U+2A9B block infix 0.2777777777777778em 0.2777777777777778em N/A
⪜ U+2A9C block infix 0.2777777777777778em 0.2777777777777778em N/A
⪝ U+2A9D block infix 0.2777777777777778em 0.2777777777777778em N/A
⪞ U+2A9E block infix 0.2777777777777778em 0.2777777777777778em N/A
⪟ U+2A9F block infix 0.2777777777777778em 0.2777777777777778em N/A
⪠ U+2AA0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪡ U+2AA1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪢ U+2AA2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪣ U+2AA3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪤ U+2AA4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪥ U+2AA5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪦ U+2AA6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪧ U+2AA7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪨ U+2AA8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪩ U+2AA9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪪ U+2AAA block infix 0.2777777777777778em 0.2777777777777778em N/A
⪫ U+2AAB block infix 0.2777777777777778em 0.2777777777777778em N/A
⪬ U+2AAC block infix 0.2777777777777778em 0.2777777777777778em N/A
⪭ U+2AAD block infix 0.2777777777777778em 0.2777777777777778em N/A
⪮ U+2AAE block infix 0.2777777777777778em 0.2777777777777778em N/A
⪯ U+2AAF block infix 0.2777777777777778em 0.2777777777777778em N/A
⪰ U+2AB0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪱ U+2AB1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪲ U+2AB2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪳ U+2AB3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪴ U+2AB4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪵ U+2AB5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪶ U+2AB6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪷ U+2AB7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪸ U+2AB8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪹ U+2AB9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⪺ U+2ABA block infix 0.2777777777777778em 0.2777777777777778em N/A
⪻ U+2ABB block infix 0.2777777777777778em 0.2777777777777778em N/A
⪼ U+2ABC block infix 0.2777777777777778em 0.2777777777777778em N/A
⪽ U+2ABD block infix 0.2777777777777778em 0.2777777777777778em N/A
⪾ U+2ABE block infix 0.2777777777777778em 0.2777777777777778em N/A
⪿ U+2ABF block infix 0.2777777777777778em 0.2777777777777778em N/A
⫀ U+2AC0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫁ U+2AC1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫂ U+2AC2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫃ U+2AC3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫄ U+2AC4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫅ U+2AC5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫆ U+2AC6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫇ U+2AC7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫈ U+2AC8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫉ U+2AC9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫊ U+2ACA block infix 0.2777777777777778em 0.2777777777777778em N/A
⫋ U+2ACB block infix 0.2777777777777778em 0.2777777777777778em N/A
⫌ U+2ACC block infix 0.2777777777777778em 0.2777777777777778em N/A
⫍ U+2ACD block infix 0.2777777777777778em 0.2777777777777778em N/A
⫎ U+2ACE block infix 0.2777777777777778em 0.2777777777777778em N/A
⫏ U+2ACF block infix 0.2777777777777778em 0.2777777777777778em N/A
⫐ U+2AD0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫑ U+2AD1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫒ U+2AD2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫓ U+2AD3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫔ U+2AD4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫕ U+2AD5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫖ U+2AD6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫗ U+2AD7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫘ U+2AD8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫙ U+2AD9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫚ U+2ADA block infix 0.2777777777777778em 0.2777777777777778em N/A
⫞ U+2ADE block infix 0.2777777777777778em 0.2777777777777778em N/A
⫟ U+2ADF block infix 0.2777777777777778em 0.2777777777777778em N/A
⫠ U+2AE0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫡ U+2AE1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫢ U+2AE2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫣ U+2AE3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫤ U+2AE4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫥ U+2AE5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫦ U+2AE6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫧ U+2AE7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫨ U+2AE8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫩ U+2AE9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫪ U+2AEA block infix 0.2777777777777778em 0.2777777777777778em N/A
⫫ U+2AEB block infix 0.2777777777777778em 0.2777777777777778em N/A
⫮ U+2AEE block infix 0.2777777777777778em 0.2777777777777778em N/A
⫲ U+2AF2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫳ U+2AF3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫴ U+2AF4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫵ U+2AF5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫷ U+2AF7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫸ U+2AF8 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫹ U+2AF9 block infix 0.2777777777777778em 0.2777777777777778em N/A
⫺ U+2AFA block infix 0.2777777777777778em 0.2777777777777778em N/A
⬀ U+2B00 block infix 0.2777777777777778em 0.2777777777777778em N/A
⬁ U+2B01 block infix 0.2777777777777778em 0.2777777777777778em N/A
⬂ U+2B02 block infix 0.2777777777777778em 0.2777777777777778em N/A
⬃ U+2B03 block infix 0.2777777777777778em 0.2777777777777778em N/A
⬈ U+2B08 block infix 0.2777777777777778em 0.2777777777777778em N/A
⬉ U+2B09 block infix 0.2777777777777778em 0.2777777777777778em N/A
⬊ U+2B0A block infix 0.2777777777777778em 0.2777777777777778em N/A
⬋ U+2B0B block infix 0.2777777777777778em 0.2777777777777778em N/A
⬿ U+2B3F block infix 0.2777777777777778em 0.2777777777777778em N/A
⭍ U+2B4D block infix 0.2777777777777778em 0.2777777777777778em N/A
⭎ U+2B4E block infix 0.2777777777777778em 0.2777777777777778em N/A
⭏ U+2B4F block infix 0.2777777777777778em 0.2777777777777778em N/A
⭚ U+2B5A block infix 0.2777777777777778em 0.2777777777777778em N/A
⭛ U+2B5B block infix 0.2777777777777778em 0.2777777777777778em N/A
⭜ U+2B5C block infix 0.2777777777777778em 0.2777777777777778em N/A
⭝ U+2B5D block infix 0.2777777777777778em 0.2777777777777778em N/A
⭞ U+2B5E block infix 0.2777777777777778em 0.2777777777777778em N/A
⭟ U+2B5F block infix 0.2777777777777778em 0.2777777777777778em N/A
⭦ U+2B66 block infix 0.2777777777777778em 0.2777777777777778em N/A
⭧ U+2B67 block infix 0.2777777777777778em 0.2777777777777778em N/A
⭨ U+2B68 block infix 0.2777777777777778em 0.2777777777777778em N/A
⭩ U+2B69 block infix 0.2777777777777778em 0.2777777777777778em N/A
⭮ U+2B6E block infix 0.2777777777777778em 0.2777777777777778em N/A
⭯ U+2B6F block infix 0.2777777777777778em 0.2777777777777778em N/A
⭶ U+2B76 block infix 0.2777777777777778em 0.2777777777777778em N/A
⭷ U+2B77 block infix 0.2777777777777778em 0.2777777777777778em N/A
⭸ U+2B78 block infix 0.2777777777777778em 0.2777777777777778em N/A
⭹ U+2B79 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮈ U+2B88 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮉ U+2B89 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮊ U+2B8A block infix 0.2777777777777778em 0.2777777777777778em N/A
⮋ U+2B8B block infix 0.2777777777777778em 0.2777777777777778em N/A
⮌ U+2B8C block infix 0.2777777777777778em 0.2777777777777778em N/A
⮍ U+2B8D block infix 0.2777777777777778em 0.2777777777777778em N/A
⮎ U+2B8E block infix 0.2777777777777778em 0.2777777777777778em N/A
⮏ U+2B8F block infix 0.2777777777777778em 0.2777777777777778em N/A
⮔ U+2B94 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮰ U+2BB0 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮱ U+2BB1 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮲ U+2BB2 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮳ U+2BB3 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮴ U+2BB4 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮵ U+2BB5 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮶ U+2BB6 block infix 0.2777777777777778em 0.2777777777777778em N/A
⮷ U+2BB7 block infix 0.2777777777777778em 0.2777777777777778em N/A
⯑ U+2BD1 block infix 0.2777777777777778em 0.2777777777777778em N/A
String != U+0021 U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String *= U+002A U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String += U+002B U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String -= U+002D U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String -> U+002D U+003E block infix 0.2777777777777778em 0.2777777777777778em N/A
String // U+002F U+002F block infix 0.2777777777777778em 0.2777777777777778em N/A
String /= U+002F U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String := U+003A U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String <= U+003C U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String == U+003D U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String >= U+003E U+003D block infix 0.2777777777777778em 0.2777777777777778em N/A
String || U+007C U+007C block infix 0.2777777777777778em 0.2777777777777778em fence
← U+2190 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↑ U+2191 block infix 0.2777777777777778em 0.2777777777777778em stretchy
→ U+2192 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↓ U+2193 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↔ U+2194 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↕ U+2195 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↚ U+219A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↛ U+219B inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↜ U+219C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↝ U+219D inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↞ U+219E inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↟ U+219F block infix 0.2777777777777778em 0.2777777777777778em stretchy
↠ U+21A0 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↡ U+21A1 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↢ U+21A2 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↣ U+21A3 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↤ U+21A4 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↥ U+21A5 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↦ U+21A6 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↧ U+21A7 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↨ U+21A8 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↩ U+21A9 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↪ U+21AA inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↫ U+21AB inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↬ U+21AC inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↭ U+21AD inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↮ U+21AE inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↰ U+21B0 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↱ U+21B1 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↲ U+21B2 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↳ U+21B3 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↴ U+21B4 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↵ U+21B5 block infix 0.2777777777777778em 0.2777777777777778em stretchy
↹ U+21B9 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↼ U+21BC inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↽ U+21BD inline infix 0.2777777777777778em 0.2777777777777778em stretchy
↾ U+21BE block infix 0.2777777777777778em 0.2777777777777778em stretchy
↿ U+21BF block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇀ U+21C0 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇁ U+21C1 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇂ U+21C2 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇃ U+21C3 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇄ U+21C4 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇅ U+21C5 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇆ U+21C6 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇇ U+21C7 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇈ U+21C8 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇉ U+21C9 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇊ U+21CA block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇋ U+21CB inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇌ U+21CC inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇍ U+21CD inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇎ U+21CE inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇏ U+21CF inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇐ U+21D0 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇑ U+21D1 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇒ U+21D2 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇓ U+21D3 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇔ U+21D4 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇕ U+21D5 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇚ U+21DA inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇛ U+21DB inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇜ U+21DC inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇝ U+21DD inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇞ U+21DE block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇟ U+21DF block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇠ U+21E0 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇡ U+21E1 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇢ U+21E2 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇣ U+21E3 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇤ U+21E4 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇥ U+21E5 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇦ U+21E6 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇧ U+21E7 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇨ U+21E8 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇩ U+21E9 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇪ U+21EA block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇫ U+21EB block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇬ U+21EC block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇭ U+21ED block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇮ U+21EE block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇯ U+21EF block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇰ U+21F0 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇳ U+21F3 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇴ U+21F4 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇵ U+21F5 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⇶ U+21F6 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇷ U+21F7 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇸ U+21F8 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇹ U+21F9 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇺ U+21FA inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇻ U+21FB inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇼ U+21FC inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇽ U+21FD inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇾ U+21FE inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⇿ U+21FF inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➔ U+2794 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➙ U+2799 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➛ U+279B inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➜ U+279C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➝ U+279D inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➞ U+279E inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➟ U+279F inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➠ U+27A0 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➡ U+27A1 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➥ U+27A5 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➦ U+27A6 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➨ U+27A8 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➩ U+27A9 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➪ U+27AA inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➫ U+27AB inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➬ U+27AC inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➭ U+27AD inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➮ U+27AE inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➯ U+27AF inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➱ U+27B1 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➳ U+27B3 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➵ U+27B5 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➸ U+27B8 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➺ U+27BA inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➻ U+27BB inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➼ U+27BC inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➽ U+27BD inline infix 0.2777777777777778em 0.2777777777777778em stretchy
➾ U+27BE inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟰ U+27F0 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⟱ U+27F1 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⟴ U+27F4 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟵ U+27F5 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟶ U+27F6 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟷ U+27F7 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟸ U+27F8 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟹ U+27F9 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟺ U+27FA inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟻ U+27FB inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟼ U+27FC inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟽ U+27FD inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟾ U+27FE inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⟿ U+27FF inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤀ U+2900 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤁ U+2901 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤂ U+2902 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤃ U+2903 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤄ U+2904 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤅ U+2905 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤆ U+2906 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤇ U+2907 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤈ U+2908 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤉ U+2909 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤊ U+290A block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤋ U+290B block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤌ U+290C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤍ U+290D inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤎ U+290E inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤏ U+290F inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤐ U+2910 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤑ U+2911 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤒ U+2912 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤓ U+2913 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤔ U+2914 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤕ U+2915 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤖ U+2916 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤗ U+2917 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤘ U+2918 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤙ U+2919 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤚ U+291A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤛ U+291B inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤜ U+291C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤝ U+291D inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤞ U+291E inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤟ U+291F inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤠ U+2920 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⤴ U+2934 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤵ U+2935 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤶ U+2936 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⤷ U+2937 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥂ U+2942 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥃ U+2943 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥄ U+2944 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥅ U+2945 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥆ U+2946 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥇ U+2947 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥈ U+2948 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥉ U+2949 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥊ U+294A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥋ U+294B inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥌ U+294C block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥍ U+294D block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥎ U+294E inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥏ U+294F block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥐ U+2950 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥑ U+2951 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥒ U+2952 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥓ U+2953 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥔ U+2954 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥕ U+2955 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥖ U+2956 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥗ U+2957 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥘ U+2958 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥙ U+2959 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥚ U+295A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥛ U+295B inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥜ U+295C block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥝ U+295D block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥞ U+295E inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥟ U+295F inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥠ U+2960 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥡ U+2961 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥢ U+2962 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥣ U+2963 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥤ U+2964 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥥ U+2965 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥦ U+2966 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥧ U+2967 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥨ U+2968 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥩ U+2969 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥪ U+296A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥫ U+296B inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥬ U+296C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥭ U+296D inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥮ U+296E block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥯ U+296F block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥰ U+2970 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥱ U+2971 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥲ U+2972 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥳ U+2973 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥴ U+2974 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥵ U+2975 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥼ U+297C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥽ U+297D inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⥾ U+297E block infix 0.2777777777777778em 0.2777777777777778em stretchy
⥿ U+297F block infix 0.2777777777777778em 0.2777777777777778em stretchy
⬄ U+2B04 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬅ U+2B05 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬆ U+2B06 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⬇ U+2B07 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⬌ U+2B0C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬍ U+2B0D block infix 0.2777777777777778em 0.2777777777777778em stretchy
⬎ U+2B0E block infix 0.2777777777777778em 0.2777777777777778em stretchy
⬏ U+2B0F block infix 0.2777777777777778em 0.2777777777777778em stretchy
⬐ U+2B10 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⬑ U+2B11 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⬰ U+2B30 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬱ U+2B31 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬲ U+2B32 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬳ U+2B33 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬴ U+2B34 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬵ U+2B35 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬶ U+2B36 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬷ U+2B37 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬸ U+2B38 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬹ U+2B39 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬺ U+2B3A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬻ U+2B3B inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬼ U+2B3C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬽ U+2B3D inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⬾ U+2B3E inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭀ U+2B40 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭁ U+2B41 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭂ U+2B42 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭃ U+2B43 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭄ U+2B44 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭅ U+2B45 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭆ U+2B46 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭇ U+2B47 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭈ U+2B48 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭉ U+2B49 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭊ U+2B4A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭋ U+2B4B inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭌ U+2B4C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭠ U+2B60 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭡ U+2B61 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⭢ U+2B62 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭣ U+2B63 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⭤ U+2B64 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭥ U+2B65 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⭪ U+2B6A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭫ U+2B6B block infix 0.2777777777777778em 0.2777777777777778em stretchy
⭬ U+2B6C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭭ U+2B6D block infix 0.2777777777777778em 0.2777777777777778em stretchy
⭰ U+2B70 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭱ U+2B71 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⭲ U+2B72 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭳ U+2B73 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⭺ U+2B7A inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭻ U+2B7B block infix 0.2777777777777778em 0.2777777777777778em stretchy
⭼ U+2B7C inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⭽ U+2B7D block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮀ U+2B80 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⮁ U+2B81 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮂ U+2B82 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⮃ U+2B83 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮄ U+2B84 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⮅ U+2B85 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮆ U+2B86 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⮇ U+2B87 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮕ U+2B95 inline infix 0.2777777777777778em 0.2777777777777778em stretchy
⮠ U+2BA0 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮡ U+2BA1 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮢ U+2BA2 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮣ U+2BA3 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮤ U+2BA4 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮥ U+2BA5 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮦ U+2BA6 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮧ U+2BA7 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮨ U+2BA8 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮩ U+2BA9 block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮪ U+2BAA block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮫ U+2BAB block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮬ U+2BAC block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮭ U+2BAD block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮮ U+2BAE block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮯ U+2BAF block infix 0.2777777777777778em 0.2777777777777778em stretchy
⮸ U+2BB8 block infix 0.2777777777777778em 0.2777777777777778em stretchy
+ U+002B block infix 0.2222222222222222em 0.2222222222222222em N/A
- U+002D block infix 0.2222222222222222em 0.2222222222222222em N/A
± U+00B1 block infix 0.2222222222222222em 0.2222222222222222em N/A
÷ U+00F7 block infix 0.2222222222222222em 0.2222222222222222em N/A
⁄ U+2044 block infix 0.2222222222222222em 0.2222222222222222em N/A
− U+2212 block infix 0.2222222222222222em 0.2222222222222222em N/A
∓ U+2213 block infix 0.2222222222222222em 0.2222222222222222em N/A
∔ U+2214 block infix 0.2222222222222222em 0.2222222222222222em N/A
∕ U+2215 block infix 0.2222222222222222em 0.2222222222222222em N/A
∖ U+2216 block infix 0.2222222222222222em 0.2222222222222222em N/A
∧ U+2227 block infix 0.2222222222222222em 0.2222222222222222em N/A
∨ U+2228 block infix 0.2222222222222222em 0.2222222222222222em N/A
∩ U+2229 block infix 0.2222222222222222em 0.2222222222222222em N/A
∪ U+222A block infix 0.2222222222222222em 0.2222222222222222em N/A
∶ U+2236 block infix 0.2222222222222222em 0.2222222222222222em N/A
∸ U+2238 block infix 0.2222222222222222em 0.2222222222222222em N/A
⊌ U+228C block infix 0.2222222222222222em 0.2222222222222222em N/A
⊍ U+228D block infix 0.2222222222222222em 0.2222222222222222em N/A
⊎ U+228E block infix 0.2222222222222222em 0.2222222222222222em N/A
⊓ U+2293 block infix 0.2222222222222222em 0.2222222222222222em N/A
⊔ U+2294 block infix 0.2222222222222222em 0.2222222222222222em N/A
⊕ U+2295 block infix 0.2222222222222222em 0.2222222222222222em N/A
⊖ U+2296 block infix 0.2222222222222222em 0.2222222222222222em N/A
⊘ U+2298 block infix 0.2222222222222222em 0.2222222222222222em N/A
⊝ U+229D block infix 0.2222222222222222em 0.2222222222222222em N/A
⊞ U+229E block infix 0.2222222222222222em 0.2222222222222222em N/A
⊟ U+229F block infix 0.2222222222222222em 0.2222222222222222em N/A
⊻ U+22BB block infix 0.2222222222222222em 0.2222222222222222em N/A
⊼ U+22BC block infix 0.2222222222222222em 0.2222222222222222em N/A
⊽ U+22BD block infix 0.2222222222222222em 0.2222222222222222em N/A
⋎ U+22CE block infix 0.2222222222222222em 0.2222222222222222em N/A
⋏ U+22CF block infix 0.2222222222222222em 0.2222222222222222em N/A
⋒ U+22D2 block infix 0.2222222222222222em 0.2222222222222222em N/A
⋓ U+22D3 block infix 0.2222222222222222em 0.2222222222222222em N/A
➕ U+2795 block infix 0.2222222222222222em 0.2222222222222222em N/A
➖ U+2796 block infix 0.2222222222222222em 0.2222222222222222em N/A
➗ U+2797 block infix 0.2222222222222222em 0.2222222222222222em N/A
⦸ U+29B8 block infix 0.2222222222222222em 0.2222222222222222em N/A
⦼ U+29BC block infix 0.2222222222222222em 0.2222222222222222em N/A
⧄ U+29C4 block infix 0.2222222222222222em 0.2222222222222222em N/A
⧅ U+29C5 block infix 0.2222222222222222em 0.2222222222222222em N/A
⧵ U+29F5 block infix 0.2222222222222222em 0.2222222222222222em N/A
⧶ U+29F6 block infix 0.2222222222222222em 0.2222222222222222em N/A
⧷ U+29F7 block infix 0.2222222222222222em 0.2222222222222222em N/A
⧸ U+29F8 block infix 0.2222222222222222em 0.2222222222222222em N/A
⧹ U+29F9 block infix 0.2222222222222222em 0.2222222222222222em N/A
⧺ U+29FA block infix 0.2222222222222222em 0.2222222222222222em N/A
⧻ U+29FB block infix 0.2222222222222222em 0.2222222222222222em N/A
⨟ U+2A1F block infix 0.2222222222222222em 0.2222222222222222em N/A
⨠ U+2A20 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨡ U+2A21 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨢ U+2A22 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨣ U+2A23 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨤ U+2A24 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨥ U+2A25 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨦ U+2A26 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨧ U+2A27 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨨ U+2A28 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨩ U+2A29 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨪ U+2A2A block infix 0.2222222222222222em 0.2222222222222222em N/A
⨫ U+2A2B block infix 0.2222222222222222em 0.2222222222222222em N/A
⨬ U+2A2C block infix 0.2222222222222222em 0.2222222222222222em N/A
⨭ U+2A2D block infix 0.2222222222222222em 0.2222222222222222em N/A
⨮ U+2A2E block infix 0.2222222222222222em 0.2222222222222222em N/A
⨸ U+2A38 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨹ U+2A39 block infix 0.2222222222222222em 0.2222222222222222em N/A
⨺ U+2A3A block infix 0.2222222222222222em 0.2222222222222222em N/A
⨾ U+2A3E block infix 0.2222222222222222em 0.2222222222222222em N/A
⩀ U+2A40 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩁ U+2A41 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩂ U+2A42 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩃ U+2A43 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩄ U+2A44 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩅ U+2A45 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩆ U+2A46 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩇ U+2A47 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩈ U+2A48 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩉ U+2A49 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩊ U+2A4A block infix 0.2222222222222222em 0.2222222222222222em N/A
⩋ U+2A4B block infix 0.2222222222222222em 0.2222222222222222em N/A
⩌ U+2A4C block infix 0.2222222222222222em 0.2222222222222222em N/A
⩍ U+2A4D block infix 0.2222222222222222em 0.2222222222222222em N/A
⩎ U+2A4E block infix 0.2222222222222222em 0.2222222222222222em N/A
⩏ U+2A4F block infix 0.2222222222222222em 0.2222222222222222em N/A
⩑ U+2A51 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩒ U+2A52 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩓ U+2A53 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩔ U+2A54 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩕ U+2A55 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩖ U+2A56 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩗ U+2A57 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩘ U+2A58 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩙ U+2A59 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩚ U+2A5A block infix 0.2222222222222222em 0.2222222222222222em N/A
⩛ U+2A5B block infix 0.2222222222222222em 0.2222222222222222em N/A
⩜ U+2A5C block infix 0.2222222222222222em 0.2222222222222222em N/A
⩝ U+2A5D block infix 0.2222222222222222em 0.2222222222222222em N/A
⩞ U+2A5E block infix 0.2222222222222222em 0.2222222222222222em N/A
⩟ U+2A5F block infix 0.2222222222222222em 0.2222222222222222em N/A
⩠ U+2A60 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩡ U+2A61 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩢ U+2A62 block infix 0.2222222222222222em 0.2222222222222222em N/A
⩣ U+2A63 block infix 0.2222222222222222em 0.2222222222222222em N/A
⫛ U+2ADB block infix 0.2222222222222222em 0.2222222222222222em N/A
⫶ U+2AF6 block infix 0.2222222222222222em 0.2222222222222222em N/A
⫻ U+2AFB block infix 0.2222222222222222em 0.2222222222222222em N/A
⫽ U+2AFD block infix 0.2222222222222222em 0.2222222222222222em N/A
String && U+0026 U+0026 block infix 0.2222222222222222em 0.2222222222222222em N/A
% U+0025 block infix 0.16666666666666666em 0.16666666666666666em N/A
* U+002A block infix 0.16666666666666666em 0.16666666666666666em N/A
. U+002E block infix 0.16666666666666666em 0.16666666666666666em N/A
? U+003F block infix 0.16666666666666666em 0.16666666666666666em N/A
@ U+0040 block infix 0.16666666666666666em 0.16666666666666666em N/A
^ U+005E inline infix 0.16666666666666666em 0.16666666666666666em N/A
· U+00B7 block infix 0.16666666666666666em 0.16666666666666666em N/A
× U+00D7 block infix 0.16666666666666666em 0.16666666666666666em N/A
• U+2022 block infix 0.16666666666666666em 0.16666666666666666em N/A
⁃ U+2043 block infix 0.16666666666666666em 0.16666666666666666em N/A
∗ U+2217 block infix 0.16666666666666666em 0.16666666666666666em N/A
∘ U+2218 block infix 0.16666666666666666em 0.16666666666666666em N/A
∙ U+2219 block infix 0.16666666666666666em 0.16666666666666666em N/A
≀ U+2240 block infix 0.16666666666666666em 0.16666666666666666em N/A
⊗ U+2297 block infix 0.16666666666666666em 0.16666666666666666em N/A
⊙ U+2299 block infix 0.16666666666666666em 0.16666666666666666em N/A
⊚ U+229A block infix 0.16666666666666666em 0.16666666666666666em N/A
⊛ U+229B block infix 0.16666666666666666em 0.16666666666666666em N/A
⊠ U+22A0 block infix 0.16666666666666666em 0.16666666666666666em N/A
⊡ U+22A1 block infix 0.16666666666666666em 0.16666666666666666em N/A
⊺ U+22BA block infix 0.16666666666666666em 0.16666666666666666em N/A
⋄ U+22C4 block infix 0.16666666666666666em 0.16666666666666666em N/A
⋅ U+22C5 block infix 0.16666666666666666em 0.16666666666666666em N/A
⋆ U+22C6 block infix 0.16666666666666666em 0.16666666666666666em N/A
⋇ U+22C7 block infix 0.16666666666666666em 0.16666666666666666em N/A
⋉ U+22C9 block infix 0.16666666666666666em 0.16666666666666666em N/A
⋊ U+22CA block infix 0.16666666666666666em 0.16666666666666666em N/A
⋋ U+22CB block infix 0.16666666666666666em 0.16666666666666666em N/A
⋌ U+22CC block infix 0.16666666666666666em 0.16666666666666666em N/A
⌅ U+2305 block infix 0.16666666666666666em 0.16666666666666666em N/A
⌆ U+2306 block infix 0.16666666666666666em 0.16666666666666666em N/A
⟋ U+27CB block infix 0.16666666666666666em 0.16666666666666666em N/A
⟍ U+27CD block infix 0.16666666666666666em 0.16666666666666666em N/A
⧆ U+29C6 block infix 0.16666666666666666em 0.16666666666666666em N/A
⧇ U+29C7 block infix 0.16666666666666666em 0.16666666666666666em N/A
⧈ U+29C8 block infix 0.16666666666666666em 0.16666666666666666em N/A
⧔ U+29D4 block infix 0.16666666666666666em 0.16666666666666666em N/A
⧕ U+29D5 block infix 0.16666666666666666em 0.16666666666666666em N/A
⧖ U+29D6 block infix 0.16666666666666666em 0.16666666666666666em N/A
⧗ U+29D7 block infix 0.16666666666666666em 0.16666666666666666em N/A
⧢ U+29E2 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨝ U+2A1D block infix 0.16666666666666666em 0.16666666666666666em N/A
⨞ U+2A1E block infix 0.16666666666666666em 0.16666666666666666em N/A
⨯ U+2A2F block infix 0.16666666666666666em 0.16666666666666666em N/A
⨰ U+2A30 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨱ U+2A31 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨲ U+2A32 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨳ U+2A33 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨴ U+2A34 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨵ U+2A35 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨶ U+2A36 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨷ U+2A37 block infix 0.16666666666666666em 0.16666666666666666em N/A
⨻ U+2A3B block infix 0.16666666666666666em 0.16666666666666666em N/A
⨼ U+2A3C block infix 0.16666666666666666em 0.16666666666666666em N/A
⨽ U+2A3D block infix 0.16666666666666666em 0.16666666666666666em N/A
⨿ U+2A3F block infix 0.16666666666666666em 0.16666666666666666em N/A
⩐ U+2A50 block infix 0.16666666666666666em 0.16666666666666666em N/A
⩤ U+2A64 block infix 0.16666666666666666em 0.16666666666666666em N/A
⩥ U+2A65 block infix 0.16666666666666666em 0.16666666666666666em N/A
⫝̸ U+2ADC block infix 0.16666666666666666em 0.16666666666666666em N/A
⫝ U+2ADD block infix 0.16666666666666666em 0.16666666666666666em N/A
⫾ U+2AFE block infix 0.16666666666666666em 0.16666666666666666em N/A
String ** U+002A U+002A block infix 0.16666666666666666em 0.16666666666666666em N/A
String <> U+003C U+003E block infix 0.16666666666666666em 0.16666666666666666em N/A
! U+0021 block prefix 0 0 N/A
+ U+002B block prefix 0 0 N/A
- U+002D block prefix 0 0 N/A
¬ U+00AC block prefix 0 0 N/A
± U+00B1 block prefix 0 0 N/A
‘ U+2018 block prefix 0 0 fence
“ U+201C block prefix 0 0 fence
∀ U+2200 block prefix 0 0 N/A
∁ U+2201 block prefix 0 0 N/A
∃ U+2203 block prefix 0 0 N/A
∄ U+2204 block prefix 0 0 N/A
∇ U+2207 block prefix 0 0 N/A
− U+2212 block prefix 0 0 N/A
∓ U+2213 block prefix 0 0 N/A
∟ U+221F block prefix 0 0 N/A
∠ U+2220 block prefix 0 0 N/A
∡ U+2221 block prefix 0 0 N/A
∢ U+2222 block prefix 0 0 N/A
∴ U+2234 block prefix 0 0 N/A
∵ U+2235 block prefix 0 0 N/A
∼ U+223C block prefix 0 0 N/A
⊾ U+22BE block prefix 0 0 N/A
⊿ U+22BF block prefix 0 0 N/A
⌐ U+2310 block prefix 0 0 N/A
⌙ U+2319 block prefix 0 0 N/A
➕ U+2795 block prefix 0 0 N/A
➖ U+2796 block prefix 0 0 N/A
⟀ U+27C0 block prefix 0 0 N/A
⦛ U+299B block prefix 0 0 N/A
⦜ U+299C block prefix 0 0 N/A
⦝ U+299D block prefix 0 0 N/A
⦞ U+299E block prefix 0 0 N/A
⦟ U+299F block prefix 0 0 N/A
⦠ U+29A0 block prefix 0 0 N/A
⦡ U+29A1 block prefix 0 0 N/A
⦢ U+29A2 block prefix 0 0 N/A
⦣ U+29A3 block prefix 0 0 N/A
⦤ U+29A4 block prefix 0 0 N/A
⦥ U+29A5 block prefix 0 0 N/A
⦦ U+29A6 block prefix 0 0 N/A
⦧ U+29A7 block prefix 0 0 N/A
⦨ U+29A8 block prefix 0 0 N/A
⦩ U+29A9 block prefix 0 0 N/A
⦪ U+29AA block prefix 0 0 N/A
⦫ U+29AB block prefix 0 0 N/A
⦬ U+29AC block prefix 0 0 N/A
⦭ U+29AD block prefix 0 0 N/A
⦮ U+29AE block prefix 0 0 N/A
⦯ U+29AF block prefix 0 0 N/A
⫬ U+2AEC block prefix 0 0 N/A
⫭ U+2AED block prefix 0 0 N/A
String || U+007C U+007C block prefix 0 0 fence
! U+0021 block postfix 0 0 N/A
" U+0022 block postfix 0 0 N/A
% U+0025 block postfix 0 0 N/A
& U+0026 block postfix 0 0 N/A
' U+0027 block postfix 0 0 N/A
` U+0060 block postfix 0 0 N/A
¨ U+00A8 block postfix 0 0 N/A
° U+00B0 block postfix 0 0 N/A
² U+00B2 block postfix 0 0 N/A
³ U+00B3 block postfix 0 0 N/A
´ U+00B4 block postfix 0 0 N/A
¸ U+00B8 block postfix 0 0 N/A
¹ U+00B9 block postfix 0 0 N/A
ˊ U+02CA block postfix 0 0 N/A
ˋ U+02CB block postfix 0 0 N/A
˘ U+02D8 block postfix 0 0 N/A
˙ U+02D9 block postfix 0 0 N/A
˚ U+02DA block postfix 0 0 N/A
˝ U+02DD block postfix 0 0 N/A
̑ U+0311 block postfix 0 0 N/A
’ U+2019 block postfix 0 0 fence
‚ U+201A block postfix 0 0 N/A
‛ U+201B block postfix 0 0 N/A
” U+201D block postfix 0 0 fence
„ U+201E block postfix 0 0 N/A
‟ U+201F block postfix 0 0 N/A
′ U+2032 block postfix 0 0 N/A
″ U+2033 block postfix 0 0 N/A
‴ U+2034 block postfix 0 0 N/A
‵ U+2035 block postfix 0 0 N/A
‶ U+2036 block postfix 0 0 N/A
‷ U+2037 block postfix 0 0 N/A
⁗ U+2057 block postfix 0 0 N/A
⃛ U+20DB block postfix 0 0 N/A
⃜ U+20DC block postfix 0 0 N/A
⏍ U+23CD block postfix 0 0 N/A
String !! U+0021 U+0021 block postfix 0 0 N/A
String ++ U+002B U+002B block postfix 0 0 N/A
String -- U+002D U+002D block postfix 0 0 N/A
String || U+007C U+007C block postfix 0 0 fence
( U+0028 block prefix 0 0 stretchy symmetric fence
[ U+005B block prefix 0 0 stretchy symmetric fence
{ U+007B block prefix 0 0 stretchy symmetric fence
| U+007C block prefix 0 0 stretchy symmetric fence
‖ U+2016 block prefix 0 0 stretchy symmetric fence
⌈ U+2308 block prefix 0 0 stretchy symmetric fence
⌊ U+230A block prefix 0 0 stretchy symmetric fence
〈 U+2329 block prefix 0 0 stretchy symmetric fence
❲ U+2772 block prefix 0 0 stretchy symmetric fence
⟦ U+27E6 block prefix 0 0 stretchy symmetric fence
⟨ U+27E8 block prefix 0 0 stretchy symmetric fence
⟪ U+27EA block prefix 0 0 stretchy symmetric fence
⟬ U+27EC block prefix 0 0 stretchy symmetric fence
⟮ U+27EE block prefix 0 0 stretchy symmetric fence
⦀ U+2980 block prefix 0 0 stretchy symmetric fence
⦃ U+2983 block prefix 0 0 stretchy symmetric fence
⦅ U+2985 block prefix 0 0 stretchy symmetric fence
⦇ U+2987 block prefix 0 0 stretchy symmetric fence
⦉ U+2989 block prefix 0 0 stretchy symmetric fence
⦋ U+298B block prefix 0 0 stretchy symmetric fence
⦍ U+298D block prefix 0 0 stretchy symmetric fence
⦏ U+298F block prefix 0 0 stretchy symmetric fence
⦑ U+2991 block prefix 0 0 stretchy symmetric fence
⦓ U+2993 block prefix 0 0 stretchy symmetric fence
⦕ U+2995 block prefix 0 0 stretchy symmetric fence
⦗ U+2997 block prefix 0 0 stretchy symmetric fence
⦙ U+2999 block prefix 0 0 stretchy symmetric fence
⧘ U+29D8 block prefix 0 0 stretchy symmetric fence
⧚ U+29DA block prefix 0 0 stretchy symmetric fence
⧼ U+29FC block prefix 0 0 stretchy symmetric fence
) U+0029 block postfix 0 0 stretchy symmetric fence
] U+005D block postfix 0 0 stretchy symmetric fence
| U+007C block postfix 0 0 stretchy symmetric fence
} U+007D block postfix 0 0 stretchy symmetric fence
‖ U+2016 block postfix 0 0 stretchy symmetric fence
⌉ U+2309 block postfix 0 0 stretchy symmetric fence
⌋ U+230B block postfix 0 0 stretchy symmetric fence
〉 U+232A block postfix 0 0 stretchy symmetric fence
❳ U+2773 block postfix 0 0 stretchy symmetric fence
⟧ U+27E7 block postfix 0 0 stretchy symmetric fence
⟩ U+27E9 block postfix 0 0 stretchy symmetric fence
⟫ U+27EB block postfix 0 0 stretchy symmetric fence
⟭ U+27ED block postfix 0 0 stretchy symmetric fence
⟯ U+27EF block postfix 0 0 stretchy symmetric fence
⦀ U+2980 block postfix 0 0 stretchy symmetric fence
⦄ U+2984 block postfix 0 0 stretchy symmetric fence
⦆ U+2986 block postfix 0 0 stretchy symmetric fence
⦈ U+2988 block postfix 0 0 stretchy symmetric fence
⦊ U+298A block postfix 0 0 stretchy symmetric fence
⦌ U+298C block postfix 0 0 stretchy symmetric fence
⦎ U+298E block postfix 0 0 stretchy symmetric fence
⦐ U+2990 block postfix 0 0 stretchy symmetric fence
⦒ U+2992 block postfix 0 0 stretchy symmetric fence
⦔ U+2994 block postfix 0 0 stretchy symmetric fence
⦖ U+2996 block postfix 0 0 stretchy symmetric fence
⦘ U+2998 block postfix 0 0 stretchy symmetric fence
⦙ U+2999 block postfix 0 0 stretchy symmetric fence
⧙ U+29D9 block postfix 0 0 stretchy symmetric fence
⧛ U+29DB block postfix 0 0 stretchy symmetric fence
⧽ U+29FD block postfix 0 0 stretchy symmetric fence
∫ U+222B block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
∬ U+222C block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
∭ U+222D block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
∮ U+222E block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
∯ U+222F block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
∰ U+2230 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
∱ U+2231 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
∲ U+2232 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
∳ U+2233 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨋ U+2A0B block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨌ U+2A0C block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨍ U+2A0D block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨎ U+2A0E block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨏ U+2A0F block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨐ U+2A10 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨑ U+2A11 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨒ U+2A12 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨓ U+2A13 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨔ U+2A14 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨕ U+2A15 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨖ U+2A16 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨗ U+2A17 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨘ U+2A18 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨙ U+2A19 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨚ U+2A1A block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨛ U+2A1B block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
⨜ U+2A1C block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop
^ U+005E inline postfix 0 0 stretchy
_ U+005F inline postfix 0 0 stretchy
~ U+007E inline postfix 0 0 stretchy
¯ U+00AF inline postfix 0 0 stretchy
ˆ U+02C6 inline postfix 0 0 stretchy
ˇ U+02C7 inline postfix 0 0 stretchy
ˉ U+02C9 inline postfix 0 0 stretchy
ˍ U+02CD inline postfix 0 0 stretchy
˜ U+02DC inline postfix 0 0 stretchy
˷ U+02F7 inline postfix 0 0 stretchy
̂ U+0302 inline postfix 0 0 stretchy
‾ U+203E inline postfix 0 0 stretchy
⌢ U+2322 inline postfix 0 0 stretchy
⌣ U+2323 inline postfix 0 0 stretchy
⎴ U+23B4 inline postfix 0 0 stretchy
⎵ U+23B5 inline postfix 0 0 stretchy
⏜ U+23DC inline postfix 0 0 stretchy
⏝ U+23DD inline postfix 0 0 stretchy
⏞ U+23DE inline postfix 0 0 stretchy
⏟ U+23DF inline postfix 0 0 stretchy
⏠ U+23E0 inline postfix 0 0 stretchy
⏡ U+23E1 inline postfix 0 0 stretchy
𞻰 U+1EEF0 inline postfix 0 0 stretchy
𞻱 U+1EEF1 inline postfix 0 0 stretchy
∏ U+220F block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
∐ U+2210 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
∑ U+2211 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⋀ U+22C0 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⋁ U+22C1 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⋂ U+22C2 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⋃ U+22C3 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨀ U+2A00 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨁ U+2A01 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨂ U+2A02 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨃ U+2A03 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨄ U+2A04 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨅ U+2A05 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨆ U+2A06 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨇ U+2A07 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨈ U+2A08 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨉ U+2A09 block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨊ U+2A0A block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨝ U+2A1D block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⨞ U+2A1E block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⫼ U+2AFC block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
⫿ U+2AFF block prefix 0.16666666666666666em 0.16666666666666666em symmetric largeop movablelimits
/ U+002F block infix 0 0 N/A
\ U+005C block infix 0 0 N/A
_ U+005F inline infix 0 0 N/A
⁡ U+2061 block infix 0 0 N/A
⁢ U+2062 block infix 0 0 N/A
⁣ U+2063 block infix 0 0 separator
⁤ U+2064 block infix 0 0 N/A
∆ U+2206 block infix 0 0 N/A
ⅅ U+2145 block prefix 0.16666666666666666em 0 N/A
ⅆ U+2146 block prefix 0.16666666666666666em 0 N/A
∂ U+2202 block prefix 0.16666666666666666em 0 N/A
√ U+221A block prefix 0.16666666666666666em 0 N/A
∛ U+221B block prefix 0.16666666666666666em 0 N/A
∜ U+221C block prefix 0.16666666666666666em 0 N/A
, U+002C block infix 0 0.16666666666666666em separator
: U+003A block infix 0 0.16666666666666666em N/A
; U+003B block infix 0 0.16666666666666666em separator
Figure 29 Mapping from operator (Content, Form) to properties.
Total size: 1177 entries, ≥ 3679 bytes
(assuming 'Content' uses at least one UTF-16 character, 'Stretch Axis' 1 bit, 'Form' 2 bits, the different combinations of 'rspace' and 'space' at least 3 bits, and the different combinations of properties 3 bits).

B.3 Combining Character Equivalences

This section is non-normative.

The following table gives mappings between spacing and non spacing characters when used in MathML accent constructs.

Combining

Non Combining Style Combining
U+002B plus sign below U+031F combining plus sign below
U+002D hyphen-minus above U+0305 combining overline
U+002D hyphen-minus below U+0320 combining minus sign below
U+002D hyphen-minus below U+0332 combining low line
U+002E full stop above U+0307 combining dot above
U+002E full stop below U+0323 combining dot below
U+005E circumflex accent above U+0302 combining circumflex accent
U+005E circumflex accent below U+032D combining circumflex accent below
U+005F low line below U+0332 combining low line
U+0060 grave accent above U+0300 combining grave accent
U+0060 grave accent below U+0316 combining grave accent below
U+007E tilde above U+0303 combining tilde
U+007E tilde below U+0330 combining tilde below
U+00A8 diaeresis above U+0308 combining diaeresis
U+00A8 diaeresis below U+0324 combining diaeresis below
U+00AF macron above U+0304 combining macron
U+00AF macron above U+0305 combining overline
U+00B4 acute accent above U+0301 combining acute accent
U+00B4 acute accent below U+0317 combining acute accent below
U+00B8 cedilla below U+0327 combining cedilla
U+02C6 modifier letter circumflex accent above U+0302 combining circumflex accent
U+02C7 caron above U+030C combining caron
U+02C7 caron below U+032C combining caron below
U+02D8 breve above U+0306 combining breve
U+02D8 breve below U+032E combining breve below
U+02D9 dot above above U+0307 combining dot above
U+02D9 dot above below U+0323 combining dot below
U+02DB ogonek below U+0328 combining ogonek
U+02DC small tilde above U+0303 combining tilde
U+02DC small tilde below U+0330 combining tilde below
U+02DD double acute accent above U+030B combining double acute accent
U+203E overline above U+0305 combining overline
U+2190 leftwards arrow above U+20D6
U+2192 rightwards arrow above U+20D7 combining right arrow above
U+2192 rightwards arrow above U+20EF combining right arrow below
U+2212 minus sign above U+0305 combining overline
U+2212 minus sign below U+0332 combining low line
U+27F6 long rightwards arrow above U+20D7 combining right arrow above
U+27F6 long rightwards arrow above U+20EF combining right arrow below

非結合

結合 スタイル 非結合
U+0300 結合グレーブアクセント U+0060 グレーブアクセント
U+0301 結合アキュートアクセント U+00B4 アキュートアクセント
U+0302 結合サーカムフレックスアクセント U+005E サーカムフレックスアクセント
U+0302 結合サーカムフレックスアクセント U+02C6 修飾文字サーカムフレックスアクセント
U+0303 結合チルダ U+007E チルダ
U+0303 結合チルダ U+02DC 小チルダ
U+0304 結合マクロン U+00AF マクロン
U+0305 結合オーバーライン U+002D ハイフンマイナス
U+0305 結合オーバーライン U+00AF マクロン
U+0305 結合オーバーライン U+203E オーバーライン
U+0305 結合オーバーライン U+2212 マイナス記号
U+0306 結合ブレーヴェ U+02D8 ブレーヴェ
U+0307 結合上ドット U+02E
U+0307 結合上ドット U+002E 終止符
U+0307 結合上ドット U+02D9 上ドット
U+0308 結合ダイエレシス U+00A8 ダイエレシス
U+030B 結合ダブルアキュートアクセント U+02DD ダブルアキュートアクセント
U+030C 結合ハーチェク U+02C7 ハーチェク
U+0312 結合上反転コンマ U+0B8
U+0316 結合下グレーブアクセント U+0060 グレーブアクセント
U+0317 結合下アキュートアクセント U+00B4 アキュートアクセント
U+031F 結合下プラス記号 U+002B プラス記号
U+0320 結合下マイナス記号 U+002D ハイフンマイナス
U+0323 結合下ドット U+002E 終止符
U+0323 結合下ドット U+02D9 上ドット
U+0324 結合下ダイエレシス U+00A8 ダイエレシス
U+0327 結合セディーユ U+00B8 セディーユ
U+0328 結合オゴネク U+02DB オゴネク
U+032C 結合下ハーチェク U+02C7 ハーチェク
U+032D 結合下サーカムフレックスアクセント U+005E サーカムフレックスアクセント
U+032E 結合下ブレーヴェ U+02D8 ブレーヴェ
U+0330 結合下チルダ U+007E チルダ
U+0330 結合下チルダ U+02DC 小チルダ
U+0332 結合ローライン U+002D ハイフンマイナス
U+0332 結合ローライン U+005F ローライン
U+0332 結合ローライン U+2212 マイナス記号
U+0338 結合ロングソリダスオーバーレイ 重ね合わせ U+02F
U+20D7 結合上右向き矢印 U+2192 右向き矢印
U+20D7 結合上右向き矢印 U+27F6 長い右向き矢印
U+20EF 結合下右向き矢印 U+2192 右向き矢印
U+20EF 結合下右向き矢印 U+27F6 長い右向き矢印

B.4 Unicode ベースのグリフアセンブリ

このセクションは非規範的です。

次の表は、フォントが MATH.MathVariants テーブルを提供しない場合に、 所与の基底文字を伸長するためにユーザーエージェントが使用できるフォールバックを提供します。 5.3 演算子の サイズバリアント (MathVariants)のアルゴリズムは、 いくつかの調整を除いて同じように動作します。

基底文字 グリフ構築 Extender 文字 下部/左側文字 中央文字 上部/右側文字
U+0028 ( Vertical U+239C ⎜ U+239D ⎝ N/A U+239B ⎛
U+0029 ) Vertical U+239F ⎟ U+23A0 ⎠ N/A U+239E ⎞
U+003D = Horizontal U+003D = U+003D = N/A N/A
U+005B [ Vertical U+23A2 ⎢ U+23A3 ⎣ N/A U+23A1 ⎡
U+005D ] Vertical U+23A5 ⎥ U+23A6 ⎦ N/A U+23A4 ⎤
U+005F _ Horizontal U+005F _ U+005F _ N/A N/A
U+007B { Vertical U+23AA ⎪ U+23A9 ⎩ U+23A8 ⎨ U+23A7 ⎧
U+007C | Vertical U+007C | U+007C | N/A N/A
U+007D } Vertical U+23AA ⎪ U+23AD ⎭ U+23AC ⎬ U+23AB ⎫
U+00AF ¯ Horizontal U+00AF ¯ U+00AF ¯ N/A N/A
U+2016 ‖ Vertical U+2016 ‖ U+2016 ‖ N/A N/A
U+203E ‾ Horizontal U+203E ‾ U+203E ‾ N/A N/A
U+2190 ← Horizontal U+23AF ⎯ U+2190 ← N/A U+23AF ⎯
U+2191 ↑ Vertical U+23D0 ⏐ U+23D0 ⏐ N/A U+2191 ↑
U+2192 → Horizontal U+23AF ⎯ U+23AF ⎯ N/A U+2192 →
U+2193 ↓ Vertical U+23D0 ⏐ U+2193 ↓ N/A U+23D0 ⏐
U+2194 ↔ Horizontal U+23AF ⎯ U+2190 ← N/A U+2192 →
U+2195 ↕ Vertical U+23D0 ⏐ U+2193 ↓ N/A U+2191 ↑
U+21A4 ↤ Horizontal U+23AF ⎯ U+2190 ← N/A U+22A3 ⊣
U+21A6 ↦ Horizontal U+23AF ⎯ U+22A2 ⊢ N/A U+2192 →
U+21BC ↼ Horizontal U+23AF ⎯ U+21BC ↼ N/A U+23AF ⎯
U+21BD ↽ Horizontal U+23AF ⎯ U+21BD ↽ N/A U+23AF ⎯
U+21C0 ⇀ Horizontal U+23AF ⎯ U+23AF ⎯ N/A U+21C0 ⇀
U+21C1 ⇁ Horizontal U+23AF ⎯ U+23AF ⎯ N/A U+21C1 ⇁
U+2223 ∣ Vertical U+2223 ∣ U+2223 ∣ N/A N/A
U+2225 ∥ Vertical U+2225 ∥ U+2225 ∥ N/A N/A
U+2308 ⌈ Vertical U+23A2 ⎢ U+23A2 ⎢ N/A U+23A1 ⎡
U+2309 ⌉ Vertical U+23A5 ⎥ U+23A5 ⎥ N/A U+23A4 ⎤
U+230A ⌊ Vertical U+23A2 ⎢ U+23A3 ⎣ N/A N/A
U+230B ⌋ Vertical U+23A5 ⎥ U+23A6 ⎦ N/A N/A
U+23B0 ⎰ Vertical U+23AA ⎪ U+23AD ⎭ N/A U+23A7 ⎧
U+23B1 ⎱ Vertical U+23AA ⎪ U+23A9 ⎩ N/A U+23AB ⎫
U+27F5 ⟵ Horizontal U+23AF ⎯ U+2190 ← N/A U+23AF ⎯
U+27F6 ⟶ Horizontal U+23AF ⎯ U+23AF ⎯ N/A U+2192 →
U+27F7 ⟷ Horizontal U+23AF ⎯ U+2190 ← N/A U+2192 →
U+294E ⥎ Horizontal U+23AF ⎯ U+21BC ↼ N/A U+21C0 ⇀
U+2950 ⥐ Horizontal U+23AF ⎯ U+21BD ↽ N/A U+21C1 ⇁
U+295A ⥚ Horizontal U+23AF ⎯ U+21BC ↼ N/A U+22A3 ⊣
U+295B ⥛ Horizontal U+23AF ⎯ U+22A2 ⊢ N/A U+21C0 ⇀
U+295E ⥞ Horizontal U+23AF ⎯ U+21BD ↽ N/A U+22A3 ⊣
U+295F ⥟ Horizontal U+23AF ⎯ U+22A2 ⊢ N/A U+21C1 ⇁

C. 数学用英数字記号

このセクションは非規範的です。

[xml-entity-names] で詳述されているように、 bold、italic、fraktur、monospace、double-struck などの形式を持つ 数学用英数字記号は Unicode で利用できます。

これらの英数字 記号には、その Unicode コードポイントを使用してアクセスするべきです。 MATHEMATICAL SCRIPT 文字では、 Chancery スタイルと Roundhand スタイルを区別する必要がある場合があります。 これらは特に LaTeX で \mathcal および \mathscr コマンドに使用されます。 これを行う方法の1つは、 特定のグリフバリアントの選択を 指定する方法を説明している Unicode の 23.4 章 Variation Selectors に依存することです [UNICODE]。 実際、 Unicode Character Database の StandardizedVariants.txt ファイルは、 バリアントセレクター U+FE00 と U+FE01 を capital script に使用して、 それぞれ Chancery と Roundhand を指定できることを示しています。

あるいは、一部の 数式用フォントは、両方のスタイルを提供するために [OPEN-FONT-FORMAT] の salt または ssXY プロパティに依存しています。ページ作成者は、 対応する OpenType フォント機能とともに font-variant-alternates プロパティを使用して、 これらのグリフにアクセスできます。

さらに、italic の数学用英数字文字には、 単一文字の <mi> 要素にデフォルトで適用される CSS の text-transform: math-auto 変換を使用して、 上記のようにアクセスできます。 便宜上、数学用イタリックへのマッピングを以下に示します。

C.1 italic マッピング

元の文字 italic Δコードポイント
A U+0041 𝐴 U+1D434 1D3F3
B U+0042 𝐵 U+1D435 1D3F3
C U+0043 𝐶 U+1D436 1D3F3
D U+0044 𝐷 U+1D437 1D3F3
E U+0045 𝐸 U+1D438 1D3F3
F U+0046 𝐹 U+1D439 1D3F3
G U+0047 𝐺 U+1D43A 1D3F3
H U+0048 𝐻 U+1D43B 1D3F3
I U+0049 𝐼 U+1D43C 1D3F3
J U+004A 𝐽 U+1D43D 1D3F3
K U+004B 𝐾 U+1D43E 1D3F3
L U+004C 𝐿 U+1D43F 1D3F3
M U+004D 𝑀 U+1D440 1D3F3
N U+004E 𝑁 U+1D441 1D3F3
O U+004F 𝑂 U+1D442 1D3F3
P U+0050 𝑃 U+1D443 1D3F3
Q U+0051 𝑄 U+1D444 1D3F3
R U+0052 𝑅 U+1D445 1D3F3
S U+0053 𝑆 U+1D446 1D3F3
T U+0054 𝑇 U+1D447 1D3F3
U U+0055 𝑈 U+1D448 1D3F3
V U+0056 𝑉 U+1D449 1D3F3
W U+0057 𝑊 U+1D44A 1D3F3
X U+0058 𝑋 U+1D44B 1D3F3
Y U+0059 𝑌 U+1D44C 1D3F3
Z U+005A 𝑍 U+1D44D 1D3F3
a U+0061 𝑎 U+1D44E 1D3ED
b U+0062 𝑏 U+1D44F 1D3ED
c U+0063 𝑐 U+1D450 1D3ED
d U+0064 𝑑 U+1D451 1D3ED
e U+0065 𝑒 U+1D452 1D3ED
f U+0066 𝑓 U+1D453 1D3ED
g U+0067 𝑔 U+1D454 1D3ED
h U+0068 ℎ U+0210E 20A6
i U+0069 𝑖 U+1D456 1D3ED
j U+006A 𝑗 U+1D457 1D3ED
k U+006B 𝑘 U+1D458 1D3ED
l U+006C 𝑙 U+1D459 1D3ED
m U+006D 𝑚 U+1D45A 1D3ED
n U+006E 𝑛 U+1D45B 1D3ED
o U+006F 𝑜 U+1D45C 1D3ED
p U+0070 𝑝 U+1D45D 1D3ED
q U+0071 𝑞 U+1D45E 1D3ED
r U+0072 𝑟 U+1D45F 1D3ED
s U+0073 𝑠 U+1D460 1D3ED
t U+0074 𝑡 U+1D461 1D3ED
u U+0075 𝑢 U+1D462 1D3ED
v U+0076 𝑣 U+1D463 1D3ED
w U+0077 𝑤 U+1D464 1D3ED
x U+0078 𝑥 U+1D465 1D3ED
y U+0079 𝑦 U+1D466 1D3ED
z U+007A 𝑧 U+1D467 1D3ED
ı U+0131 𝚤 U+1D6A4 1D573
ȷ U+0237 𝚥 U+1D6A5 1D46E
Α U+0391 𝛢 U+1D6E2 1D351
Β U+0392 𝛣 U+1D6E3 1D351
Γ U+0393 𝛤 U+1D6E4 1D351
Δ U+0394 𝛥 U+1D6E5 1D351
Ε U+0395 𝛦 U+1D6E6 1D351
Ζ U+0396 𝛧 U+1D6E7 1D351
Η U+0397 𝛨 U+1D6E8 1D351
Θ U+0398 𝛩 U+1D6E9 1D351
Ι U+0399 𝛪 U+1D6EA 1D351
Κ U+039A 𝛫 U+1D6EB 1D351
Λ U+039B 𝛬 U+1D6EC 1D351
Μ U+039C 𝛭 U+1D6ED 1D351
Ν U+039D 𝛮 U+1D6EE 1D351
Ξ U+039E 𝛯 U+1D6EF 1D351
Ο U+039F 𝛰 U+1D6F0 1D351
Π U+03A0 𝛱 U+1D6F1 1D351
Ρ U+03A1 𝛲 U+1D6F2 1D351
ϴ U+03F4 𝛳 U+1D6F3 1D2FF
Σ U+03A3 𝛴 U+1D6F4 1D351
Τ U+03A4 𝛵 U+1D6F5 1D351
Υ U+03A5 𝛶 U+1D6F6 1D351
Φ U+03A6 𝛷 U+1D6F7 1D351
Χ U+03A7 𝛸 U+1D6F8 1D351
Ψ U+03A8 𝛹 U+1D6F9 1D351
Ω U+03A9 𝛺 U+1D6FA 1D351
∇ U+2207 𝛻 U+1D6FB 1B4F4
α U+03B1 𝛼 U+1D6FC 1D34B
β U+03B2 𝛽 U+1D6FD 1D34B
γ U+03B3 𝛾 U+1D6FE 1D34B
δ U+03B4 𝛿 U+1D6FF 1D34B
ε U+03B5 𝜀 U+1D700 1D34B
ζ U+03B6 𝜁 U+1D701 1D34B
η U+03B7 𝜂 U+1D702 1D34B
θ U+03B8 𝜃 U+1D703 1D34B
ι U+03B9 𝜄 U+1D704 1D34B
κ U+03BA 𝜅 U+1D705 1D34B
λ U+03BB 𝜆 U+1D706 1D34B
μ U+03BC 𝜇 U+1D707 1D34B
ν U+03BD 𝜈 U+1D708 1D34B
ξ U+03BE 𝜉 U+1D709 1D34B
ο U+03BF 𝜊 U+1D70A 1D34B
π U+03C0 𝜋 U+1D70B 1D34B
ρ U+03C1 𝜌 U+1D70C 1D34B
ς U+03C2 𝜍 U+1D70D 1D34B
σ U+03C3 𝜎 U+1D70E 1D34B
τ U+03C4 𝜏 U+1D70F 1D34B
υ U+03C5 𝜐 U+1D710 1D34B
φ U+03C6 𝜑 U+1D711 1D34B
χ U+03C7 𝜒 U+1D712 1D34B
ψ U+03C8 𝜓 U+1D713 1D34B
ω U+03C9 𝜔 U+1D714 1D34B
∂ U+2202 𝜕 U+1D715 1B513
ϵ U+03F5 𝜖 U+1D716 1D321
ϑ U+03D1 𝜗 U+1D717 1D346
ϰ U+03F0 𝜘 U+1D718 1D328
ϕ U+03D5 𝜙 U+1D719 1D344
ϱ U+03F1 𝜚 U+1D71A 1D329
ϖ U+03D6 𝜛 U+1D71B 1D345

D. 謝辞

このセクションは非規範的です。

MathML Core は MathML3 に基づいています。この仕様に貢献した 人々については、[MathML3] の 付録 E を参照してください。

MathML Core は当初 MathML Community Group によって開発され、その後 Math Working Group によって開発されました。この仕様の開発中、 MathML Core の会議に定期的に参加した Working Group または Community Group のメンバーは次のとおりです。 Brian Kardell, Bruce Miller, Daniel Marques, David Carlisle, David Farmer, Deyan Ginev, Frédéric Wang, Louis Mahler, Moritz Schubotz, Murray Sargent, Neil Soiffer, Patrick Ion, Rob Buis, Steve Noble and Sam Dooley.

さらに、編集への協力について Brian Kardell、 Neil Soiffer および Rob Buis に特別な感謝を申し上げます。

テストスイートへの協力についても、次の方々に 深く感謝します。 Brian Kardell, Frédéric Wang, Neil Soiffer and Rob Buis. また、いくつかのテストはブラウザー リポジトリの MathML テストに基づいており、Mozilla および WebKit の コントリビューターにも感謝します。

公開コミュニケーションチャネルでの意見や フィードバックを通じ、この仕様の 作成を支援してくださった次の方々に感謝します。 André Greiner-Petter, Anne van Kesteren, Boris Zbarsky, Brian Smith, Elika Etemad, Emilio Cobos Álvarez, ExE Boss, Ian Kilpatrick, Koji Ishii, L. David Baron, Michael Kohlhase, Michael Smith, Ryosuke Niwa, Sergey Malkin, Tab Atkins Jr., Viktor Yaffle and frankvel.

E. セキュリティに関する考慮事項

このセクションは非規範的です。

この仕様は、 2.1.3 グローバル属性で説明される MathML イベントハンドラー属性を介してスクリプト実行機構を追加します。UA は、 HTML または SVG 要素に適用されるものと同じ セキュリティ制限に従って、これらの属性で指定された スクリプトの実行を防止することを決定してもかまいません。

注記

[MathML3] では、 href または xlink:href 属性を介して任意の要素をリンク可能にでき、 信頼されていないリソースを指す URL や、 javascript: の実行さえ指定できました。これらの属性は MathML Core では利用できません。ただし、 2.2.1 HTML と SVGで説明されているように、 HTML または SVG のリンクを含む HTML または SVG コンテンツを MathML 内に埋め込むことは可能です。

注記

[MathML3] では、 maction 要素の actiontype 値を "statusline" に設定することで、ブラウザーのステータスラインのテキストを上書きできました。特に、 攻撃者はこれを使用して、 信頼されていないリンクの URL テキストを隠すことができました。たとえば:

<math>
  <maction actiontype="statusline">
    <mtext><a href="javascript:alert('JS execution')">クリックしてください!</a></mtext>
    <mtext>./this-is-a-safe-link.html</mtext>
  </maction>
</math>

この機能は MathML Core では利用できず、 maction 要素は基本的に、 追加のスタイルを持つ mrow コンテナーのように動作します。

攻撃者は非常に大きな 伸長可能演算子を挿入して UA をハングさせ、 グリフアセンブリのシェイピングアルゴリズムに 膨大な数の グリフを処理させようとする可能性があります。UA は、 rminGlyphAssembly.partCount に 最大値を設定することで、この問題を回避してもかまいません。

CSS Fonts Module で説明されているように、 攻撃者は不正または悪意のあるフォントに依存して、 ブラウザー実装の潜在的なセキュリティ欠陥を 悪用しようとする可能性があります。 この仕様では OpenType MATH テーブル が広範に使用されるため、UA はフォント サニタイズ機構がそのテーブルを処理できることを保証するべきです。

最後に、 攻撃対象領域を減らすため、一部の UA は Web プラットフォームの一部を 無効化するランタイムオプションを公開しています。MathML レイアウトを無効化することは、 DOM ツリー内の要素を HTML 名前空間に強制的に配置し、 4. 数式レイアウトのための CSS 拡張を無効化することで、 基本的に実現できます。

F. プライバシーに関する考慮事項

このセクションは非規範的です。

2.2.1 HTML と SVGで説明されているように、 MathML は <foreignObject> 要素を介して SVG 画像に埋め込むことができ、その SVG は canvas 要素で使用できます。 UA は、キャンバスを汚染状態にし、 JavaScript API を介してキャンバスの内容にアクセスしようとしたときに "SecurityError" を返すなど、潜在的な 情報漏洩 を防ぐための任意の措置を実装することを決定してもかまいません。

次の例では、canvas 画像を、 https://example.org/ への HTML リンクを含む MathML コンテンツの画像に設定しています。 攻撃者が context.getImageData() を介してピクセルを読み取ることで、その リンクが訪問済みかどうかを判定できてはなりません。 MathML 内のリンクの詳細については、 E. セキュリティに関する 考慮事項を参照してください。

let svg = `
  <svg xmlns="http://www.w3.org/2000/svg" width="100px" height="100px">
    <foreignObject width="100" height="100"
                   requiredExtensions="http://www.w3.org/1998/Math/MathML">
      <math xmlns="http://www.w3.org/1998/Math/MathML">
        <msqrt style="font-size: 25px">
          <mtext>&#x25a0;</mtext>
          <mtext><a href="https://example.org/">&#x25a0;</a></mtext>
        </msqrt>
      </math>
    </foreignObject>
  </svg>`;
let image = new Image();
image.width = 100;
image.height = 100;
image.onload = () => {
  let canvas = document.createElement('canvas');
  canvas.width = 100;
  canvas.height = 100;
  canvas.style = "border: 1px solid black";
  document.body.appendChild(canvas);
  let context = canvas.getContext("2d");
  context.drawImage(image, 0, 0);
};
image.src = `data:image/svg+xml;base64,${window.btoa(svg)}`;

この仕様は、システム フォントを使用する可能性がある DOM 要素のレイアウトについて説明します。 HTML/CSS のレイアウトと同様に、 JavaScript API (たとえば、 canvas コンテキストに埋め込まれたコンテンツに対する context.getImageData() や、単に getBoundingClientRect()) を使用してボックスのサイズや位置を測定し、システムフォントからデータを推測することが可能です。 そのようなフォントに対するさまざまなテストを組み合わせ、 測定値を既知のフォントの結果と比較することで、攻撃者は ユーザーのデフォルトフォントを判定しようとする可能性があります。

次の HTML+CSS+JavaScript 文書は、特殊なメトリクスを持つ Web フォントに依存して、 A Well Known System Font がデフォルトで利用可能かどうかを判定しようとします。

<style>
  @font-face {
    font-family: MyWebFontWithVeryWideGlyphs;
    src: url("/fonts/my-web-fonts-with-very-wide-glyphs.woff");
  }
  #container {
    font-family: AWellKnownSystemFont, MyWebFontWithVeryWideGlyphs;
  }
</style>
<div id="container">SOMETEXT</div>
<div id="reference">SOMETEXT</div>
<script>
document.fonts.ready.then(() => {
  let containerWidth =
    document.getElementById("container").getBoundingClientRect().width;
  let referenceWidth =
    document.getElementById("reference").getBoundingClientRect().width;
  let isWellKnownSystemFontAvailable =
    Math.abs(containerWidth - referenceWidth) < 1;
});
</script>

次の HTML+CSS+JavaScript 文書は、 UI serif フォントがアジア文字のグリフを提供しているかどうかを判定しようとします。

<style>
  @font-face {
    font-family: MyWebFontWithVeryWideAsianGlyphs;
    src: url("/fonts/my-web-fonts-with-very-wide-asian-glyphs.woff");
  }
  #container {
    font-family: ui-serif, MyWebFontWithVeryWideAsianGlyphs
  }
  #reference {
    font-family: MyWebFontWithVeryWideAsianGlyphs;
  }
</style>
<div id="container"></div>
<div id="reference"></div>
<script>
document.fonts.ready.then(() => {
  let containerWidth =
    document.getElementById("container").getBoundingClientRect().width;
  let referenceWidth =
    document.getElementById("reference").getBoundingClientRect().width;
  let uiSerifFontDoesNotContainAsianGlyph =
    Math.abs(containerWidth - referenceWidth) < 1;
});
</script>

次の HTML+CSS 文書は、同じテキストを text-decoration-thickness をそれぞれ from-font1em(ここでは 100 ピクセル)に設定してレンダリングしたものを含みます。 2つの下線の高さを比較することで、 PostScript テーブルの underlineThickness 値をかなり正確に近似して計算できます [OPEN-FONT-FORMAT]。

<style>
  #test {
    font-size: 100px;
  }
  #container {
    text-decoration-line: underline;
    text-decoration-thickness: from-font;
  }
  #reference {
    text-decoration-line: underline;
    text-decoration-thickness: 1em;
  }
</style>
<div id="test">
  <div id="container">SOMETEXT</div>
  <div id="reference">SOMETEXT</div>
</div>

この仕様は MathML コンテンツをレンダリングするため、 5. OpenType MATH テーブルの情報に依存します。 上記の HTML+CSS+JavaScript 文書について説明したものと同様の測定 技法を使用して、MathConstants および MathGlyphInfo のほとんどの レイアウトパラメーターをかなり正確に近似できます。 MathML レンダリングでの MathVariants テーブルの使用も、異なるサイズの伸長可能 演算子を canvas コンテキスト内に配置することで観測できます。

これらのパラメーターは個別にはいずれも個人情報ではありませんが、 この仕様を実装すると、攻撃者が フィンガープリンティング技法を実装するために使用できる 公開フォント情報の集合が増加します。一般に、 ユーザーが利用可能で好んで使用する数式用フォントを判定する助けとなる可能性があります。

G. 適合性

適合性要件は、説明的な表明と RFC 2119 用語の組み合わせで表現されます。規範的な部分にあるキーワード 「MUST」、 「MUST NOT」、「REQUIRED」、「SHALL」、 「SHALL NOT」、「SHOULD」、「SHOULD NOT」、 「RECOMMENDED」、「MAY」、および「OPTIONAL」は、 RFC 2119 で説明されているように解釈されます。 ただし、可読性のため、この仕様ではこれらの語が常に すべて大文字で表記されるわけではありません。

この仕様のすべてのテキストは、 明示的に非規範的と示されたセクション、例、および注記を除き規範的です。 [RFC2119]

この仕様の例は、 「たとえば」という語で導入されるか、次のように class="example" によって規範的なテキストから区別されます。

これは参考例の一例です。

参考情報としての注記は「注記」という語で始まり、次のように class="note" によって規範的なテキストから区別されます。

注記

注記、これは参考情報としての注記です。

勧告事項は、特別な注意を促すようにスタイル指定された規範的セクションであり、 次のように <strong class="advisement"> によって他の規範的テキストから区別されます。 UA はアクセシブルな代替手段を提供しなければなりません

H. 参考文献

H.1 規範的参考文献

[CSS-CASCADE-4]
CSS カスケーディングと継承 Level 4. Elika Etemad; Tab Atkins Jr. W3C. 2022年1月13日. W3C 勧告候補. URL: https://www.w3.org/TR/css-cascade-4/
[CSS-DISPLAY-3]
CSS Display Module Level 3. Elika Etemad; Tab Atkins Jr. W3C. 2023年3月30日. W3C 勧告候補. URL: https://www.w3.org/TR/css-display-3/
[CSS-POSITION-3]
CSS Positioned Layout Module Level 3. Elika Etemad; Tab Atkins Jr. W3C. 2025年3月11日. W3C 作業草案. URL: https://www.w3.org/TR/css-position-3/
[CSS-TEXT-4]
CSS Text Module Level 4. Elika Etemad; Koji Ishii; Alan Stearns; Florian Rivoal. W3C. 2024年5月29日. W3C 作業草案. URL: https://www.w3.org/TR/css-text-4/
[CSS-VALUES-4]
CSS Values and Units Module Level 4. Tab Atkins Jr.; Elika Etemad. W3C. 2024年3月12日. W3C 作業草案. URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-4]
CSS Writing Modes Level 4. Elika Etemad; Koji Ishii. W3C. 2019年7月30日. W3C 勧告候補. URL: https://www.w3.org/TR/css-writing-modes-4/
[CSS2]
Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) 仕様. Bert Bos; Tantek Çelik; Ian Hickson; Håkon Wium Lie. W3C. 2011年6月7日. W3C 勧告. URL: https://www.w3.org/TR/CSS2/
[DOM]
DOM 標準. Anne van Kesteren. WHATWG. 現行標準. URL: https://dom.spec.whatwg.org/
[HTML]
HTML 標準. Anne van Kesteren; Domenic Denicola; Dominic Farolino; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. 現行 標準. URL: https://html.spec.whatwg.org/multipage/
[OPEN-FONT-FORMAT]
情報技術 — 視聴覚 オブジェクトの符号化 — 第22部: Open Font Format. ISO/IEC. 2019年1月. 公開済み. URL: https://www.iso.org/standard/74461.html
[RFC2119]
要件レベルを示すために RFC で使用する キーワード. S. Bradner. IETF. 1997年3月. 現行のベストプラクティス. URL: https://www.rfc-editor.org/rfc/rfc2119
[SELECT]
Selectors Level 3. Tantek Çelik; Elika Etemad; Daniel Glazman; Ian Hickson; Peter Linss; John Williams. W3C. 2018年11月6日. W3C 勧告. URL: https://www.w3.org/TR/selectors-3/
[SVG]
Scalable Vector Graphics (SVG) 1.0 仕様. Jon Ferraiolo. W3C. 2001年9月4日. W3C 勧告. URL: https://www.w3.org/TR/SVG/

H.2 参考情報としての参考文献

[CSS-FONTS-4]
CSS Fonts Module Level 4. Chris Lilley. W3C. 2024年2月1日. W3C 作業草案. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-LAYOUT-API-1]
CSS Layout API Level 1. Greg Whitworth; Ian Kilpatrick; Tab Atkins Jr.; Shane Stephens; Robert O'Callahan; Rossen Atanassov. W3C. 2018年4月12日. 最初の公開作業草案. URL: https://www.w3.org/TR/css-layout-api-1/
[HOUDINI]
CSS-TAG Houdini 編集者草案. URL: https://drafts.css-houdini.org/
[MATHML3]
Mathematical Markup Language (MathML) バージョン 3.0 第2 版. David Carlisle; Patrick D F Ion; Robert R Miner. W3C. 2014年4月10日. W3C 勧告. URL: https://www.w3.org/TR/MathML3/
[MATHML4]
Mathematical Markup Language (MathML) バージョン 4.0. David Carlisle et al.W3C 編集者草案. URL: https://w3c.github.io/mathml/
[OPEN-TYPE-MATH-ILLUMINATED]
OpenType Math Illuminated. Ulrik Vieth. 2009. URL: https://www.tug.org/TUGboat/tb30-1/tb94vieth.pdf
[OPEN-TYPE-MATH-IN-HARFBUZZ]
HarfBuzz における OpenType MATH. Frédéric Wang. URL: https://frederic-wang.fr/2016/04/16/opentype-math-in-harfbuzz/
[TEXBOOK]
The TeXBook. Knuth, Donald E. Addison-Wesley Professional. 1984.
[UNICODE]
Unicode 標準. Unicode Consortium. URL: https://www.unicode.org/versions/latest/
[webidl]
Web IDL 標準. Edgar Chen; Timothy Gu. WHATWG. 現行標準. URL: https://webidl.spec.whatwg.org/
[xml-entity-names]
文字のための XML 実体定義(第3 版). Patrick D F Ion; David Carlisle. W3C. 2023年3月7日. W3C 勧告. URL: https://www.w3.org/TR/xml-entity-names/