https://bugs.documentfoundation.org/show_bug.cgi?id=96826

            Bug ID: 96826
           Summary: Typewriter attribute not given enough weight when
                    finding font based on attributes
           Product: LibreOffice
           Version: 3.3.0 release
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: minor
          Priority: medium
         Component: graphics stack
          Assignee: libreoffice-bugs@lists.freedesktop.org
          Reporter: chris.sherloc...@gmail.com

PhysicalFontFamily::FindFontFamilyByAttributes() appears to give a weight for
typewriter attributes that is too low. 

According to the comment in the source, the weighting should be:

// Calculate Match Value
// 1000000000
//  100000000
//   10000000   CJK, CTL, None-Latin, Symbol
//    1000000   FamilyName, Script, Fixed, -Special, -Decorative,
//              Titling, Capitals, Outline, Shadow
//     100000   Match FamilyName, Serif, SansSerif, Italic,
//              Width, Weight
//      10000   Scalable, Standard, Default,
//              full, Normal, Knownfont,
//              Otherstyle, +Special, +Decorative,
//       1000   Typewriter, Rounded, Gothic, Schollbook
//        100

The code starting at line 606 of PhysicalFontCollection.cxx, however, shows
that the calculation is off by a factor of 200:

    609         // test MONOSPACE+TYPEWRITER attributes
    610         if( nSearchType & ImplFontAttrs::Fixed )
    611         {
    612             if( nMatchType & ImplFontAttrs::Fixed )
    613                 nTestMatch += 1000000*2;
    614             // a typewriter attribute is even better
    615             if( ImplFontAttrs::None == ((nSearchType ^ nMatchType) &
ImplFontAttrs::Typewriter) )
    616                 nTestMatch += 10000*2;
    617         }

However, I believe that if the font has the type ImplFontAttrs::Typewriter,
then it is just like ImplFontAttrs::Fixed and should have an additional weight
of at least 1_000_000, and due to the extra weight this is being given it
should be 2_000_000.

I've literally dug into the source history like an archeologist, and this looks
like a regressions from a long, long while ago... This code was originally in
vcl/source/gdi/outdev3.cxx, and on 2001-06-29 (!!) in commit
925806de64f97d3b11a552143d3dbd42648f64cc it looks strongly like the weighting
was typed in wrongly...

Link to commit in cgit:

http://cgit.freedesktop.org/libreoffice/core/commit/vcl/source/gdi/outdev3.cxx?id=925806de64f97d3b11a552143d3dbd42648f64cc

Anyone able to confirm if this behaviour is off? This is *very* obscure if it
is a bug, hence I've marked this as minor.

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
Libreoffice-bugs@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs

Reply via email to