Japanische Fonts mit fcl-pdf

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Japanische Fonts mit fcl-pdf

Beitrag von petwey »

Hallo Forum,

ich experimentiere gerade mit fcl-pdf und bin soweit auch ganz zufrieden.
Was mir allerdings überhaupt nicht gelingen will ist, wie man japanische Lettern in einem PDF erstellen kann.

Ich habe japanische TTF-Fonts heruntergeladen und wie im Beispiel und unter
https://www.freepascal.org/~michael/art ... lazpdf.pdf
beschrieben die Fonts hinzugefügt, gesetzt und Text ausgegeben. Das klappt auch, aber der japanische Text wird nicht in japanischen Lettern dargestellt.
Verwendete Fonts: NotoSansJP-*.ttf, PretendardJP-*.ttf, YuGothL.ttc (natürlich umgewandelt in TTF)
Verwendeter Text: これは完全な校正手順です。
Ausgabe im PDF: ã™™ã™™ã™¯å®™å™¨ã™ªæ ¡æ­£æ™™é ™ã™§ã™™ã™™

Apropo: Ich verwende Win10 mit deutscher Einstellung. Wenn ich einen der Fonts doppelklicke erscheint dessen Vorschau und hier sind nur deutsche Beispieltexte zu sehen. Im Windows-Programm Zeichentabelle erhält der Font aber japanische Lettern, allerdings weiter unten.

Was mach ich da falsch? Muss noch irgendeine Option gesetzt werden?

Danke für Eure Hilfe im voraus.
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Japanische Fonts mit fcl-pdf

Beitrag von theo »

Hast du

Code: Alles auswählen

{$codepage UTF8}
drin in der Unit?

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Japanische Fonts mit fcl-pdf

Beitrag von petwey »

Hallo Theo,

Danke für die Antwort.

Ich hab's rein gemacht -> Erfolg der japanische Text war komplett verschwunden.

Aber immerhin es hat etwas bewirkt. Vielleicht ist es der richtige Ansatz, was kann man noch so einstellen?
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

sstvmaster
Beiträge: 576
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Japanische Fonts mit fcl-pdf

Beitrag von sstvmaster »

Also bei geht es so:

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}
{$codepage UTF8}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, StdCtrls,

  // fcl-pdf
  fppdf;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  PDF: TPDFDocument;
  Section: TPDFSection;
  Page: TPDFPage;
  M, T: TPDFFloat;
  I: Integer;
  JP: String;
begin
  JP:='これは完全な校正手順です。';

  // Create document
  PDF:=TPDFDocument.Create(Nil);
  // Start document
  PDF.StartDocument;
  // Add a section, at least one section is needed.
  Section:=PDF.Sections.AddSection;
  Page:=PDF.Pages.AddPage;
  // Add the Page to the Section
  Section.AddPage(Page);
  // Set some properties:
  Page.PaperType := ptA4;
  Page.UnitOfMeasure := uomMillimeters;

  // Add font
  I:=PDF.AddFont('NotoSansJP-Bold.ttf', 'Noto Sans JP');

  // Font and text metrics
  M:=10; // Margin
  T:=PDFToMM(Page.Paper.H);
  Page.SetFont(I,12);
  Page.SetColor(clRed, false);

  // Text
  Page.WriteText(2*M, T-T/4-M, UTF8Encode(JP));

  // Save to file
  PDF.SaveToFile('fclpdf_demo_jp.pdf');

  // free
  PDF.Free;
end;

end.
Project im Anhang.
Dateianhänge
fclpdf_demo_jp.zip
(3.35 MiB) 16-mal heruntergeladen
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Japanische Fonts mit fcl-pdf

Beitrag von petwey »

Hallo Maik,

habe deine Tipps ausprobiert. Hatte aber erst Erfolg als ich auf die Schriftart YuGothicRegular.ttf gewechselt habe (Den Font YuGothR.ttc hab ich im Windows/Font - Verzeichnis gefunden und auf der Seite:
https://transfonter.org/ttc-unpack
in einen ttf umwandeln lassen.)

Danach hab ich
{$codepage UTF8}
und den Befehl
UTF8Encode
wieder weggelassen. Und es hat immer noch immer so halbwegs geklappt. Was mich gewundert hat!!

Immer mit dem selben Font YuGothicRegular.ttf habe ich vier Texte ausgegeben:
Hallo Peter <- Direkt im Befehl 'Hallo Peter'
これは完全な校正手順です。 <- über s:= 'これは完全な校正手順です。'
Hallo Pit <- Direkt im Befehl 'Hallo Pit'
これは完全な校正手順です。 <- Direkt im Befehl 'これは完全な校正手順です。'

Das Ergebnis mit unterschiedlichen Parametern zeigt das Bild im Anhang:

Irgendwas scheint hier mit den von mir heruntergeladenen japanischen Fonts nicht zu stimmern. Es ist eine Vermutung, aber kann es sein, dass fpfft nur bis zu einer bestimmten Version die TrueTypes unterstützt?
Dateianhänge
Vgl.png
Vgl.png (64.05 KiB) 532 mal betrachtet
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

Antworten