Math In Office

# Math Speech Strings and Localization

Murray Sargent

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.