January 28th, 2023

Math Speech Strings and Localization

Murray Sargent
Principal Software Engineer

This post describes how OfficeMath speech is localized into multiple (~18) languages. The facility doesn’t handle all Unicode math symbols or all math notations. But it handles the most common symbols and notations. There are two tables that need to be translated into the supported languages: a Unicode math symbol speech table and a math function table.

Unicode Math Symbol Speech Table

To localize the speech for Unicode characters, perform a binary search by character code in the math symbol speech table for the desired language. The table for English follows. Notably missing are speech strings for U+002D ‘–‘, U+2329 ‘〈’, and U+232A ‘〉’. Input routines replace these nonmathematical characters by the corresponding math symbols U+2212 ‘−‘, U+27E8 ‘⟨’, and U+27E9 ‘⟩’, respectively. The character names in the table don’t always agree with the names in the Unicode Standard. The latter names cannot be changed for stability reasons even if the names are suboptimal or incorrect for math.

 

!

(

)

+

/

<

=

>

@

[

]

{

|

}

, (space: comma gives a small pause)

factorial

open paren

close paren

plus

over

less than

equals

greater than

, next row,

open bracket

close bracket

open brace

vertical bar

close brace

 

!

(

)

+

/

<

=

>

@

[

]

{

|

}

00A6

00AC

00AF

00B0

00B1

00B7

00F7

0131

0237

, atop,

not

overbar

degrees

plus or minus

dot

divided by

dotless i

dotless j

¦

¬

¯

°

±

·

÷

ı

ȷ

0300

0301

0302

0303

0305

0307

0308

grave

acute

hat

tilde

bar

dot

double dot

 ̀

́

̂

̃

̅

̇

̈

03B1

03B2

03B3

03B4

03B5

03B6

03B7

03B8

03B9

03BA

03BB

03BC

03BD

03BE

03BF

03C0

03C1

03C2

03C3

03C4

03C5

03C6

03C7

03C8

03C9

03D1

03D5

03DC

03DD

03F5

alpha

beta

gamma

delta

script epsilon

zeta

eta

theta

iota

kappa

lambda

mu

nu

xi

omicron

pi

rho

final sigma

sigma

tau

upsilon

script phi

chi

psi

omega

script theta

phi

cap digamma

digamma

epsilon

α

β

γ

δ

ε

ζ

η

θ

ι

κ

λ

μ

ν

ξ

ο

π

ρ

ς

σ

τ

υ

φ

χ

ψ

ω

ϑ

ϕ

Ϝ

ϝ

ϵ

200B

2016

2026

2032

2044

2045

2046

2146

,

double vertical line

dot dot dot

prime

slash

, equation

,

differential d

⁡ⅆ

2190

2191

2192

2193

2194

21D2

21D4

left arrow

up arrow

goes to

down arrow

left right arrow

implies

if and only if

2200

2201

2202

2203

2204

2205

2206

2207

2208

2209

220A

220B

220C

220D

220E

220F

for all

complement

partial

there exists

there doesn’t exist

empty set

increment

dell

element of

not element of

small element of

contains as member

doesn’t contain as member

small contains as member

q e d

product

2210

2211

2212

2213

2214

2215

2216

2217

2218

2219

221A

221B

221C

221D

221E

221F

coproduct

sum

minus

minus or plus

dot plus

linear divide

set minus

asterisk operator

ring operator

bullet

square root

cube root

fourth root

proportional to

infinity

right angle

2220

2221

2222

2223

2224

2225

2226

2227

2228

2229

222A

222B

222C

222D

222E

222F

angle

measured angle

spherical angle

divides

doesn’t divide

parallel to

not parallel to

logical andd

logical or

intersection

union

integral

double integral

triple integral

contour integral

surface integral

2230

2231

2232

2233

2234

2235

2236

2237

2238

2239

223A

223B

223C

223D

223E

223F

volume integral

clockwise integral

clockwise contour integral

anticlockwise contour integral

therefore

because

ratio

proportion

dot minus

excess

geometric proportion

homothetic

tilde operator

reverse tilde operator

inverted lazy s

sine wave

2240

2241

2242

2243

2244

2245

2246

2247

2248

2249

224A

224B

224C

224D

224E

224F

wreath product

not tilde

minus tilde

asymptotically equal to

not asymptotically equal to

approximately equal to

approximately but not equal to

neither approximately nor equal to

almost equal to

not almost equal to

almost equal or equal to

triple tilde

all equal to

equivalent to

geometrically equivalent to

difference between

2250

2251

2252

2253

2254

2255

2256

2257

2258

2259

225A

225B

225C

225D

225E

225F

approaches the limit

geometrically equal to

nearly equals

image of or approximately equal to

colon equals

equals colon,

ring in equal to

ring equal to

corresponds to

estimates

equiangular to

star equals

delta equals

equals by definition

measured by

questioned equals

2260

2261

2262

2263

2264

2265

2266

2267

2268

2269

226A

226B

226C

226D

226E

226F

not equal

identical to

not identical to

strictly equivalent to

less than or equal to

greater than or equal to

less than over equal to

greater than over equal to

less than but not equal to

greater than but not equal to

much less than

much greater than

between

not equivalent to

not less than

not greater than

2270

2271

2272

2273

2274

2275

2276

2277

2278

2279

227A

227B

227C

227D

227E

227F

not less than or equal

not greater than or equal

less than or equivalent

greater than or equivalent to

neither less than nor equivalent to

neither greater than nor equivalent to

less than or greater than

greater than or less than

neither less than nor greater than

neither greater than nor less than

precedes

succeeds

precedes or equals

succeeds or equals

precedes or is equivalent to

succeeds or is equivalent to

2280

2281

2282

2283

2284

2285

2286

2287

2288

2289

228A

228B

228C

228D

228E

228F

doesn’t precede

doesn’t succeed

subset of

superset of

not subset of

not superset of

subset or equals

superset or equals

neither a subset nor equal to

neither a superset nor equal to

subset of with not equal to

superset of with not equal to

multiset

multiset times

multiset union

square image of

2290

2291

2292

2293

2294

2295

2296

2297

2298

2299

229A

229B

229C

229D

229E

229F

square original of

square image of or equal to

square original of or equal to

square cap

square cup

circled plus

circled minus

circled times

circled divide

circled dot

circled ring

circled asterisk

circled equals

circled dash

squared plus

squared minus

22A0

22A1

22A2

22A3

22A4

22A5

22A6

22A7

22A8

22A9

22AA

22AB

22AC

22AD

22AE

22AF

squared times

squared dot

right tack

left tack

down tack

up tack

reduces to

models

results in

forces

triple vertical bar right turnstile

double vertical bar double right turnstile

does not prove

doesn’t result in

doesn’t force

negated double vertical bar double right turnstile

22B0

22B1

22B2

22B3

22B4

22B5

22B6

22B7

22B8

22B9

22BA

22BB

22BC

22BD

22BE

22BF

precedes under relation

succeeds under relation

is a normal subgroup of

contains as normal subgroup

is a normal subgroup of – or equals

contains as normal subgroup of or equals

original of

image of

multimap

hermeetian conjugate matrix

intercalate

xor

nand

nor

right angle with arc

right triangle

22C0

22C1

22C2

22C3

22C4

22C5

22C6

22C7

22C8

22C9

22CA

22CB

22CC

22CD

22CE

22CF

n-ary logical andd

n-ary logical or

n-ary intersection

n-ary union

diamond

dot

star

division times

bowtie

left normal factor semidirect product

right normal factor semidirect product

left semidirect product

right semidirect product

reverse tilde equals

curly logical or

curly logical andd

22D0

22D1

22D2

22D3

22D4

22D5

22D6

22D7

22D8

22D9

22DA

22DB

22DC

22DD

22DE

22DF

double subset

double superset

double intersection

double union

pitchfork

equal and parallel to

dotted less than

dotted greater than

very much less than

very much greater than

less than equals or greater than

greater than equals or less than

equals or less than

equals or greater than

equals or precedes

equals or succeeds

22E0

22E1

22E2

22E3

22E4

22E5

22E6

22E7

22E8

22E9

22EA

22EB

22EC

22ED

22EE

22EF

doesn’t precede or equal

doesn’t succeed or equal

not square image of or equal to

not square original of or equal to

square image of or not equal to

square original of or not equal to

less than but not equivalent to

greater than but not equivalent to

precedes but not equivalent to

succeeds but not equivalent to

not normal subgroup of

does not contain as normal subgroup

not normal subgroup of or equal to

does not contain as normal subgroup or =

vertical ellipsis

midline horizontal ellipsis

22F0

22F1

22F2

22F3

22F4

22F5

22F6

22F7

22F8

22F9

22FA

22FB

22FC

22FD

22FE

22FF

up right diagonal ellipsis

down right diagonal ellipsis

element of with long horizontal stroke

element of w vertical bar at end of stroke

small element of w vertical bar at end of stroke

dotted element of

overbar element of

small overbar element of

underbar element of

double stroke element of

long-stroke contains

contains w vertical bar at end of stroke

small contains w vertical bar at end of stroke

overbar contains

small overbar contains

z notation bag membership

2308

2309

230A

230B

2329

232A

23B4

23B5

23DC

23DD

23DE

23DF

23E0

23E1

open ceiling

close ceiling

open floor

close floor

open angle bracket

close angle bracket

over bracket

under bracket

over paren

under paren

over brace

under brace

over shell

under shell

24AD

2502

252C

2534

2581

2588

2592

25A0

25AD

27E6

27E7

27E8

27E9

3016

3017

root (UnicodeMath)

vertical bar

lower limit

upper limit

underbar

equation array (UnicodeMath)

of (UnicodeMath)

matrix (UnicodeMath)

boxed formula (UnicodeMath)

open white square bracket

close white square bracket

open angle bracket

close angle bracket

, (UnicodeMath “begin”)

, (UnicodeMath “end”)

 

Math Function Speech Table

The index of a string in the following table can be used as a language token. These speech tokens can be used in a localized table to retrieve the corresponding strings in the localized language. OfficeMath supports about 18 languages this way. This approach doesn’t support speaking math in a different order than in English. The aim is to provide understandable speech even if it isn’t the most elegant.

Speech string Meaning
accent

box

boxed formula

brackets

brackets with separators

equation array

fraction

function

left sub superscript

lower limit

matrix

n ary expression

(null string place holder: no speech)

overbar

phantom

root

slashed fraction

stack

stretch stack

subscript

sub superscript

superscript

underbar

upper limit

First 24 entries are names of LineServices math objects and must be in the order of tomAccent..tomUpperLimit
half, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, halves, thirds, fourths, fifths, sixths, sevenths, eighths, ninths, tenths Ordinals. Used for simple fractions and nested parens
cosine, cotangent, cosecant, secant, sine, tangent, arccosine, arccotangent, arccosecant, arcsecant, arcsine, arctangent Trigonometric functions
open paren, open second paren, open third paren, open fourth paren, open fifth paren, open sixth paren, open seventh paren, open eighth paren, open ninth paren, open tenth paren Open parentheses
close paren, close second paren, close third paren, close fourth paren, close fifth paren, close sixth paren, close seventh paren, close eighth paren, close ninth paren, close tenth paren Close parentheses
absolute value

argument

a. smash

base

base text

bold

bold fraktur

bold italic

bold script

by

cap

column

cross

cubed

Lead in for absolute value object

Second arg of function object

Kind of phantom object

First arg of sub/superscript object

Second argument of ruby object

Math alphanumeric qualifier

Math alphanumeric qualifier

Math alphanumeric qualifier

Math alphanumeric qualifier

<row> “by” <column> matrix

Upper-case modifier

Part of “end column”

x if followed by math bold

Simple exponent

degree

denominator

determinant

double-struck

d smash

element

empty

empty equation

end

end absolute value

end equation

equation

fraktur

from

function name

Radical degree

Lead in for compound denom

Determinant object

Math alphanumeric qualifier

Kind of phantom object

Matrix element

Empty argument

Empty equation (math zone)

Verb to end object or argument

End compound absolute value

End equation (math zone)

E.g., in “end equation”

Math alphanumeric qualifier

Lower limit lead in if upper limit

First argument of function object

h smash

horizontal phantom

hyperbolic

integral

integrand

inverse

limit as

lower element

equation

monospace

numbered equation

numerator

over

,

phantom smash

product

quantity

radicand

ruby

ruby text

Kind of phantom object

Kind of phantom object

Trig modifier

Integral n-ary object

Third argument for integral

Trig modifier

Lead words for lim function

Name of lower element in stack

Lead in for equation (math zone)

Math alphanumeric qualifier

Numbered equation

Start of compound numerator

Lower limit lead in; no upper limit

Pause

Kind of phantom object

Product n-ary object

End absolute value to a power

Radical radicand

Object with phonetic annotation

Phonetic annotation text

sans-serif

sans-serif bold

sans-serif italic

sans-serif bold italic

squared

script

start

sub

summand

summation

to

to the

upper element

upright

vertical phantom

with

Math alphanumeric qualifier

Math alphanumeric qualifier

Math alphanumeric qualifier

Math alphanumeric qualifier

Simple exponent

Math alphanumeric qualifier

Verb to start object or argument

Subscript lead in

Third argument of summation

Summation n-ary object

Lead in to n-ary upper limit

Lead in to general superscript

Name of upper element in stack

Math alphanumeric qualifier

Kind of phantom object

As in “base” … “with” “upper limit”

 

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.

  • Andreas Rejbrand

    Fascinating table! Although it is arguably a bit off topic, do you know how the ⊹ symbol is (or has been) used? Is it a unary operator that maps a matrix to its conjugate transpose? If so, is it a prefix or a postfix operator?