Fix bug #7954 (now really)

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.
This commit is contained in:
Georg Baum 2014-06-07 10:50:11 +02:00
parent 8c0e1b5c70
commit c1ac09e11f
4 changed files with 16 additions and 6 deletions

View File

@ -1173,6 +1173,8 @@ lyxsurd cmsy 112 0 mathord √
\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 ≅
surd lyxsymbol 214 0 mathord √
textdegree lyxsymbol 176 0 mathord °

View 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;

View 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
}

View 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,