private void DetailsUpdater_GlyphUpdated(object sender, GlyphUpdatedEventArgs e)
        {
            Dispatcher.Invoke(delegate
            {
                GlyphsInfo.Clear();

                GlyphText = e.Text;
                //GlyphArea.Text = e.Text;

                if (e.DefaultFaces.Length == 1)
                {
                    GlyphsInfo.AppendText(string.Format("Fallback Font: {0}\r\n", e.DefaultFaces[0].Face ?? "(none)"));
                }
                else
                {
                    GlyphsInfo.AppendText("Fallback Font:\r\n");
                    foreach (var p in e.DefaultFaces)
                    {
                        var cultures = p.Cultures == null ? "all other" : string.Join(", ", p.Cultures.Select(c => c.IetfLanguageTag));
                        GlyphsInfo.AppendText(string.Format("   {0} ({1})\r\n", p.Face ?? "(none)", cultures));
                    }
                }
                GlyphsInfo.AppendText(string.Format("Available in: {0}",
                                                    e.CompatibleFaces.Length > 0 ? string.Join(", ", e.CompatibleFaces) : "(none)"));

                FontList.SelectedIndex = -1;
                FontList.ItemsSource   = e.CompatibleFaces;
                if (e.DefaultFaces != null)
                {
                    FontList.SelectedItem = e.DefaultFaces.First(p => p.Cultures == null || p.Cultures.Contains(System.Globalization.CultureInfo.CurrentCulture)).Face;
                }
            });
        }
        private void Summaries_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (SuppressUpdateGlyphs)
            {
                return;
            }

            var info = Summaries.SelectedItem as Unicode.Summary;

            if (info == null || !info.Code.HasValue)
            {
                CurrentGlyph = null;
                Identity.Clear();
                GlyphsInfo.Clear();
                GlyphArea.Text         = GlyphText = "";
                FontList.SelectedIndex = -1;
                DetailedInfo.Clear();
            }
            else
            {
                CurrentGlyph  = info.Code;
                Identity.Text = string.Format("{0:X04} {1}", (int)info.Code, info.Name);
                DdetailsUpdater.Update(info);
            }
        }