synopse / SynPDF

Synopse PDF engine is a fully featured Open Source PDF document creation library for Delphi, embedded in one unit
295 stars 106 forks source link

Revert change in fixed width condition #46

Closed maykon-t closed 3 years ago

maykon-t commented 3 years ago

This reverts a change in commit: da8902dac344010eaf58340a2c149e63f96319ee Made on 29 May 2020

Pull request https://github.com/synopse/mORMot/pull/296 changed this line but at least for me it's returning exact the opposite it should, which leads to characters overlapping when using "MS Sans Serif" font.

Tested with "MS Sans Serif" and "Courier New" fonts before my modification, first was evaluated as fixed width (condition returns true) and second as proportional (condition returns false). Should be inverted results.

synopse commented 3 years ago

sorry but it is very difficult to follow the pull requests on SynPdf - almost every time someone supply a patch, it somewhat works in his/her context, but it breaks something for other users

maykon-t commented 3 years ago

Thank you very much for the prompt reply.

tim-lebedkov commented 3 years ago

Here is the code I used to test this.

The output was: MS Sans Serif 2 Microsoft Sans Serif 2 Courier New 1 Courier 1

This means that "(ALogFont.lfPitchAndFamily and 3) = FIXED_PITCH" would evaluate for the parameter AIsFixedWidth to

MS Sans Serif 2 => False Microsoft Sans Serif 2 => False Courier New 1 => True Courier 1 => True

This is correct.

@maykon-t can you test on your computer?

// JCL_DEBUG_EXPERT_GENERATEJDBG OFF
program TestFonts;

{$APPTYPE CONSOLE}

{$R *.res}

uses
    System.SysUtils, Windows;

function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
    FontType: Integer; Data: Pointer): Integer; stdcall;
begin
    WriteLn(string(LogFont.lfFaceName), ' ', LogFont.lfPitchAndFamily and 3);

    Result := 1;
end;

var
    DC: HDC;
    F: LOGFONTW;
begin
    DC := GetDC(0);
    try
        FillChar(F, sizeof(F), 0);
        F.lfCharset := DEFAULT_CHARSET;
        EnumFontFamiliesEx(DC, F, @EnumFontsProc, 0, 0);
    finally
        ReleaseDC(0, DC);
    end;
    ReadLn;
end.
tim-lebedkov commented 3 years ago

Hellooooooooo! Any news here?

tim-lebedkov commented 3 years ago

I created an issue for this: https://github.com/synopse/SynPDF/issues/52