December 10th, 2021

UnicodeMath Color

Murray Sargent
Principal Software Engineer

In slide presentations and elsewhere, it can be handy to have math text color and math background color. In fact, Presentation MathML has the attributes “mathcolor” and “mathbackground”. This post describes the operators Noah Doersing added to his UnicodeMathML implementation to enter text and background color using UnicodeMath. I subsequently added them to the RichEdit math converters.

Inputting math using UnicodeMath into Word and other applications typically doesn’t require special text and background color syntax since these applications have user interfaces (UI) to color text. But UnicodeMath is a useful format for persisting math in files and in plain-text scenarios that don’t have rich UI. I use UnicodeMath to represent math in many math tests because it’s so much easier to input and read than MathML, LaTeX, RTF, and OMML. So, it’s valuable to be able to include text coloring in UnicodeMath.

Following the UnicodeMath tradition of using non-math UnicodeMath symbols to represent operations, Noah chose ✎ (U+270E) as the text color operator and ☁ (U+2601) for background color. The syntax is like that for nth root \root(n&x). For example, “a+✎(red&q^2)+☁(lime&r^2)” converts to OfficeMath in RichEdit as

Image MathColor

You can specify a color using the #RRGGBB or #RGB syntax or by the name of a standard HTML color (‏aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow). We still need to implement the ITextFont::SetForeColor() and SetBackColor() methods in Word and OfficeArt to get the UnicodeMath color operators to work in Word, PowerPoint and Excel. The color operators work now in OneNote since OneNote uses RichEdit’s TOM implementation.

The TeX-like names for foreground and background color operators are \color and \backcolor, respectively. The latter is easier to enter with math autocomplete.

Noah also added the delimiters ⫷ and ⫸ to hide text appearing inside the delimiters, and the monospace operator ᅲ to use monospace characters within ᅲ(…). I haven’t added these to the RichEdit implementation yet. Also, we need an operator for the forthcoming MathML “intent” attribute, since UnicodeMath should be interoperable with Presentation MathML.

 

Author

Murray Sargent
Principal Software Engineer

Yale BS, MS, PhD in theoretical physics. Worked 22 years in laser theory & applications first at Bell Labs and then Professor of Optical Sciences, University of Arizona. Worked on technical word processing, writing the first math display program (1969) and the technical word processor PS (1980s). Developed the SST debugger we used to get Windows 2.0 running in protected mode thereby eliminating the 640KB DOS barrier (1988). Have more than 100 refereed publications, 3 laser-physics books, 4 ...

More about author

1 comment

Discussion is closed. Login to edit/delete existing comments.

  • SUWT2

    Thank you very much. This color support is very important!
    (Note: This year I’ve sent some reports to the feedback hub. Please contact me if they have not arrived.)