15
$\begingroup$

If I create a text cell and type some greek text, most of the symbols are italics as if the cell had an Input style. It doesn't happen with latin characters. I recollect that it is impossible to fix it, but I can't find the source where I read it.

Perhaps someone knows a workaround ? The following screenshot is from Mathematica 8/Linux.

enter image description here

EDIT1: I just noticed that writing capital greek letters works fine (the letters are normal, not italics). The following screenshot is from Mathematica 9.0.1/OSX Mavericks.

enter image description here

Does that piece of information ring any bells to anyone on what might be the underlying problem ?

EDIT2: I also found this link describing a workaround by using custom modified unicode mapping files. I can't check it right now as I'm not near my Linux installation.

EDIT3: I did try it though in Mathematica 9.0.1/OSX (although the article talks about Mathematica 7&8/Linux), and it works great! Here is the relevant screenshot:

enter image description here

EDIT4: As pointed out by @ybeltukov in comments, the workaround is to set the third column of UnicodeFontMapping.tr to 0 (zero) for Greek letters so that the default font is picked for them.

EDIT5: This workaround doesn't anymore apply to Mathematica 10. I cannot find the UnicodeFontMapping.tr file. There's another effective workaround though, described here in Alexey's answer.

EDIT6: The workaround from EDIT5 doesn't work for me in Windows 10 and Mathematica 11.0.1 Student Edition. The uncompressed data in FontMap.tr contain a list of replacement rules, including:

 ... "GreekFont" -> {913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969}, ... 

I edited it to be "GreekFont" -> {} and now the workaround works again!

$\endgroup$
8
  • 1
    $\begingroup$ related $\endgroup$ Commented Sep 20, 2013 at 10:34
  • 1
    $\begingroup$ Similar question posted on Wolfram Community $\endgroup$ Commented Sep 22, 2013 at 8:40
  • $\begingroup$ Explanation of your last link: just set the third column of UnicodeFontMapping.tr to 0 for greek letters to choose the default font for them. $\endgroup$ Commented Nov 1, 2013 at 21:13
  • $\begingroup$ It's always good to have an answer. I don't think you're allowed to award yourself a bounty, though... :) $\endgroup$ Commented Nov 1, 2013 at 22:13
  • 1
    $\begingroup$ Related for version 10: (54721) $\endgroup$ Commented Aug 20, 2014 at 3:11

2 Answers 2

7
+50
$\begingroup$

Font for the Greek letters is defined in UnicodeFontMapping.tr:

... 0x03B1 N -2 0x61 # \[Alpha] 0x03B2 N -2 0x62 # \[Beta] 0x03B3 N -2 0x67 # \[Gamma] 0x03B4 N -2 0x64 # \[Delta] 0x03F5 N 2 0x65 # \[Epsilon] 0x03B5 N -4 0xb6 # \[CurlyEpsilon] 0x03B6 N -2 0x7a # \[Zeta] ... 

The third column defines the font. You can set it in corresponding lines to 0 (default font).

This approach was used in your link. Difference between the original file and the file in this link:

--- UnicodeFontMapping.tr 2012-10-26 12:11:10.000000000 +0200 +++ UnicodeFontMapping.tr.v8 2013-11-01 22:09:05.000000000 +0100 ... -0x03B1 N -2 0x61 # \[Alpha] -0x03B2 N -2 0x62 # \[Beta] -0x03B3 N -2 0x67 # \[Gamma] ... +0x03B1 N 0 0x61 # \[Alpha] +0x03B2 N 0 0x62 # \[Beta] +0x03B3 N 0 0x67 # \[Gamma] ... 
$\endgroup$
3
  • 2
    $\begingroup$ This is generally true, but not for Mathematica 10. In latter case one should follow DBM's answer below or, more generally, mathematica.stackexchange.com/questions/55711/…. $\endgroup$ Commented Sep 30, 2014 at 19:24
  • $\begingroup$ @AlexeyBobrick This answer was written before Mathematica 10 release :) $\endgroup$ Commented Sep 30, 2014 at 19:42
  • 1
    $\begingroup$ Yes, which makes it funny in a way. Quite a few times I found good solutions to problems, which don't work in V10 anymore. $\endgroup$ Commented Sep 30, 2014 at 19:45
7
$\begingroup$

For OS X Mathematica v10, one can edit /Applications/Mathematica.app/FontMap.tr to enable writing Greek letters in any font supporting them. In my case, I wanted µ (\[Micro]) to display with my preferred font (CMU Bright Roman) rather than the Mathematica font. The solution was to open FontMap.tr, copy the string within CompressedData[str], paste it into fontMap=Uncompress[str] in a new workbook, delete 181 (character code for \[Micro]) at position 32 of fontMap[[1,2]] by running fontMap[[1,2]]=Drop[fontMap[[1,2]],{32,32}], recompress by running Compress[fontMap], copy the resulting compressed string, past it over the original string within CompressedData[str] of FontMap.tr and then save FontMap.tr. I kept a backup of the original FontMap.tr file. Now Style["µ", FontFamily -> "CMU Bright"] displays µ with my chosen font.

I suppose this could be done for other Greek letters as well.

$\endgroup$
6
  • $\begingroup$ Thanks @DBM! So, I should delete all character codes for Greek letters in the font map and then use Style[] to choose a Greek font ? $\endgroup$ Commented Aug 25, 2014 at 21:19
  • $\begingroup$ I think that should work, but have not tried this on more than one greek letter. Keep a backup of the original FontMap.tr file... $\endgroup$ Commented Aug 26, 2014 at 5:13
  • 2
    $\begingroup$ You might like to check mathematica.stackexchange.com/questions/55711/…, where I elaborate a bit on your answer. $\endgroup$ Commented Sep 30, 2014 at 19:22
  • $\begingroup$ @Zet: Yes, you can make Mathematica to keep all the greek characters by just one command, see the link above this comment. $\endgroup$ Commented Sep 30, 2014 at 19:23
  • $\begingroup$ For the record: @AlexeyBobrick's solutions worked perfectly! $\endgroup$ Commented Nov 2, 2014 at 3:07

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.