Problem fixed, thank you very much!

Michael


Am 15.07.18 um 16:24 schrieb Dmitry Boyarintsev:
You need to use 58531

On Sunday, July 15, 2018, Michael Ring via Lazarus <[email protected] <mailto:[email protected]>> wrote:

    I today build Lazarus MacOSX/Cocoa**from svn and realized that all
    characters in the editor seem to have an extra space between each
    character.

    I did a little compiling of older SVN's and found out that the
    problem appeared first in revision 58529.


    This change in 58529 seems to kill the cat:


    Index: lcl/interfaces/cocoa/cocoagdiobjects.pas
    ===================================================================
    --- lcl/interfaces/cocoa/cocoagdiobjects.pas (revision 58528)
    +++ lcl/interfaces/cocoa/cocoagdiobjects.pas (working copy)
    @@ -559,6 +559,7 @@
       Win32Weight, LoopCount: Integer;
       CocoaWeight: NSInteger;
       FTmpFont: NSFont;
    +  IsDefault: Boolean;
     begin
       inherited Create(AGlobal);

    @@ -570,7 +571,18 @@
         // because otherwise the result is wrong in Mac OS X 10.11,
    see bug 30300
         // Code used for 10.10 or inferior:
         // FName :=
    NSStringToString(NSFont.systemFontOfSize(0).familyName);
    -    if IsFontNameDefault(FName) then
    +    //
    +    // There's a differnet issue with not using systemFont.
    +    // NSComboBox, if assigned a manually created font have an
    odd ascending-offset
    +    // (easily seen in Xcode interface builder as well).
    systemFonts()
    +    // don't have such issue at all. see bug 33626
    +    // the fix below (detecting "default" font and use
    systemFont()) is a potential
    +    // regression for bug 30300.
    +    //
    +    // There might font properties (i.e. Transform Matrix) to
    adjust the position of
    +    // the font. But at this time, it's safer to use systemFont()
    method
    +    IsDefault := IsFontNameDefault(FName);
    +    if not IsDefault then
         begin
           FTmpFont :=
    
NSFont.fontWithName_size(NSFont.systemFontOfSize(0).fontDescriptor.postscriptName,
    0);
           FName := NSStringToString(FTmpFont.familyName);
    @@ -594,14 +606,14 @@
           include(FStyle, cfs_StrikeOut);

         // If this is not a "systemFont" Create the font ourselves
    -    FontName := NSStringUTF8(FName);
    -    Attributes := NSDictionary.dictionaryWithObjectsAndKeys(
    -          FontName, NSFontFamilyAttribute,
    -          NSNumber.numberWithFloat(FSize), NSFontSizeAttribute,
    -          nil);
    -    FontName.release;
    -    Descriptor :=
    NSFontDescriptor.fontDescriptorWithFontAttributes(Attributes);
    -    FFont := NSFont.fontWithDescriptor_textTransform(Descriptor,
    nil);
    +    if IsDefault then
    +    begin
    +      FFont := NSFont.systemFontOfSize( FSize );
    +    end else begin
    +      FontName := NSStringUTF8(FName);
    +      FFont := NSFont.fontWithName_size(FontName, FSize);
    +      FontName.release;
    +    end;

         if FFont = nil then
         begin
    @@ -620,7 +632,6 @@
             exit;
           end;
         end;
    -
         // we could use NSFontTraitsAttribute to request the desired
    font style (Bold/Italic)
         // but in this case we may get NIL as result. This way is safer.
         if cfs_Italic in Style then


-- 
_______________________________________________
Lazarus mailing list
[email protected]
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to