]> git.lyx.org Git - features.git/commitdiff
Fix bug #7954 (now really)
authorGeorg Baum <baum@lyx.org>
Sat, 7 Jun 2014 08:50:11 +0000 (10:50 +0200)
committerGeorg Baum <baum@lyx.org>
Sat, 7 Jun 2014 08:54:17 +0000 (10:54 +0200)
Thanks to maciejr we know now what the remaining problem was with bug 7954:
My unicode symbol fallback works fine, the problem was that a font named
"Symbol" is available on OS X, but it does not use the font-specific encoding
we expect: Almost all glyphs are at their unicode code point.
Therefore the bug is fixed by re-enabling the unicode workaround and blocking
the Symbol font on OS X.

lib/symbols
src/frontends/qt4/GuiFontLoader.cpp
src/mathed/MathFactory.cpp
src/mathed/MathSupport.cpp

index 9f33433cdd3c7b2d0d433328f2f9b36b3a3399a1..2b5aea2febda97964281a37cbf2358a8d72ff531 100644 (file)
@@ -1173,6 +1173,8 @@ lyxsurd               cmsy        112 0 mathord  &radic;
 \def\surd{^\lyxsurd}
 \def\textdegree{\kern-1mu^{\circ}\kern-4mu}
 else
+# FIXME: These don't work on OS X, since the Symbol font uses a different
+#        encoding and is therefore disabled in FontLoader::available().
 cong               lyxsymbol             64  0 mathrel  &cong;
 surd               lyxsymbol             214 0 mathord  &radic;
 textdegree         lyxsymbol             176 0 mathord  &deg;
index 39a4b17a3c558d491df476c262be175b45ab7686..fa5370cfd32497624e11e7efea248de326b78e9c 100644 (file)
@@ -343,6 +343,16 @@ bool FontLoader::available(FontInfo const & f)
        static vector<int> cache(NUM_FAMILIES, false);
 
        FontFamily family = f.family();
+#ifdef Q_WS_MACX
+       // Apple ships a font name "Symbol", which has more or less the same
+       // glyphs as the original PostScript Symbol font, but it uses a different
+       // encoding (see https://en.wikipedia.org/wiki/Symbol_(typeface)#cite_note-2).
+       // Since we expect the font specific encoding of the original
+       // PostScript Symbol font, we can't use the one provided on OS X.
+       // See also the discussion in bug 7954.
+       if (f.family() == SYMBOL_FAMILY)
+               return false;
+#endif
        if (cache_set[family])
                return cache[family];
        cache_set[family] = true;
index 85fdf478565f6fa6ad11d4562161f6ec55839932..382f037e8920c93084c999743cd44ed71b6c6875 100644 (file)
@@ -118,10 +118,8 @@ bool canBeDisplayed(char_type c)
 }
 
 
-bool isUnicodeSymbolAvailable(docstring const & /*name*/, char_type & /*c*/)
+bool isUnicodeSymbolAvailable(docstring const & name, char_type & c)
 {
-       // this is too fragile, e.g. prodes W instead of capital omega on OS X
-#if 0
        docstring cmd(from_ascii("\\") + name);
        bool is_combining;
        bool termination;
@@ -135,9 +133,6 @@ bool isUnicodeSymbolAvailable(docstring const & /*name*/, char_type & /*c*/)
                                                is_combining, termination);
        }
        return c != 0 && !is_combining;
-#else
-       return false;
-#endif
 }
 
 
index ff4702ff71a586994787230692dbffdb3735150f..a715360112c8643dfd66c9364c6eca76acc32f43 100644 (file)
@@ -635,6 +635,9 @@ fontinfo fontinfos[] = {
        // LyX internal usage
        {"lyxtex",        inh_family, inh_series,
                          UP_SHAPE, Color_latex},
+       // FIXME: The following two don't work on OS X, since the Symbol font
+       //        uses a different encoding, and is therefore disabled in
+       //        FontLoader::available().
        {"lyxsymbol",     SYMBOL_FAMILY, inh_series,
                          inh_shape, Color_math},
        {"lyxboldsymbol", SYMBOL_FAMILY, BOLD_SERIES,