+ // Guess a standard font size
+ int stdFontSize = 0;
+
+ // First see if we have a default/normal style to base the size on
+ wxString normalTranslated(_("normal"));
+ wxString defaultTranslated(_("default"));
+ size_t i;
+ for (i = 0; i < GetStyleSheet()->GetParagraphStyleCount(); i++)
+ {
+ wxRichTextStyleDefinition* d = GetStyleSheet()->GetParagraphStyle(i);
+ wxString name = d->GetName().Lower();
+ if (name.Find(wxT("normal")) != wxNOT_FOUND || name.Find(normalTranslated) != wxNOT_FOUND ||
+ name.Find(wxT("default")) != wxNOT_FOUND || name.Find(defaultTranslated) != wxNOT_FOUND)
+ {
+ wxRichTextAttr attr2(d->GetStyleMergedWithBase(GetStyleSheet()));
+ if (attr2.HasFontPointSize())
+ {
+ stdFontSize = attr2.GetFontSize();
+ break;
+ }
+ }
+ }
+
+ if (stdFontSize == 0)
+ {
+ // Look at sizes up to 20 points, and see which is the most common
+ wxArrayInt sizes;
+ size_t maxSize = 20;
+ for (i = 0; i <= maxSize; i++)
+ sizes.Add(0);
+ for (i = 0; i < m_styleNames.GetCount(); i++)
+ {
+ wxRichTextStyleDefinition* d = GetStyle(i);
+ if (d)
+ {
+ wxRichTextAttr attr2(d->GetStyleMergedWithBase(GetStyleSheet()));
+ if (attr2.HasFontPointSize())
+ {
+ if (attr2.GetFontSize() <= (int) maxSize)
+ sizes[attr2.GetFontSize()] ++;
+ }
+ }
+ }
+ int mostCommonSize = 0;
+ for (i = 0; i <= maxSize; i++)
+ {
+ if (sizes[i] > mostCommonSize)
+ mostCommonSize = i;
+ }
+ if (mostCommonSize > 0)
+ stdFontSize = mostCommonSize;
+ }
+
+ if (stdFontSize == 0)
+ stdFontSize = 12;
+
+ int thisFontSize = attr.HasFontPointSize() ? attr.GetFontSize() : stdFontSize;
+
+ if (thisFontSize < stdFontSize)
+ size --;
+ else if (thisFontSize > stdFontSize)
+ size ++;