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$
    – cormullion
    Sep 20, 2013 at 10:34
  • 1
    $\begingroup$ Similar question posted on Wolfram Community $\endgroup$
    – cormullion
    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$
    – ybeltukov
    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$
    – cormullion
    Nov 1, 2013 at 22:13
  • 1
    $\begingroup$ Related for version 10: (54721) $\endgroup$
    – Mr.Wizard
    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$ Sep 30, 2014 at 19:24
  • $\begingroup$ @AlexeyBobrick This answer was written before Mathematica 10 release :) $\endgroup$
    – ybeltukov
    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$ 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$
    – stathisk
    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$
    – DBM
    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$ 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$ Sep 30, 2014 at 19:23
  • $\begingroup$ For the record: @AlexeyBobrick's solutions worked perfectly! $\endgroup$
    – stathisk
    Nov 2, 2014 at 3:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.