PDFium Delphi Component Docs

Enota FPdfTextShapingHb

Unit: FPdfTextShapingHb
Zaledje oblikovanja HarfBuzz za tarče Free Pascal, ki poveže libharfbuzz med izvajanjem in bajte pisave prevzame od razreševalnika, ki ga priskrbi gostitelj

Syntax

TPdfFontDataResolver = function(const FontName: WideString;
  out FontData: TBytes): Boolean of object;

EPdfHarfBuzzError = class(Exception);

TPdfHarfBuzzTextShaper = class(TPdfTextShaper)
  constructor Create(const Resolver: TPdfFontDataResolver);
  destructor Destroy; override;
  function Shape(const Text, FontName: WideString; FontSize: Single;
    const Options: TPdfTextShapingOptions;
    out Shaped: TPdfShapedText): Boolean; override;
end;

function HarfBuzzAvailable: Boolean;
function HarfBuzzVersionString: string;

Description

FPdfTextShapingHb je nasprotje zaledja Uniscribe v FPdfTextShaping za tarče brez usp10.dll. Vmesnik se prevede samo pod Free Pascal, ker Delphi cilja Windows, kjer velja zaledje Uniscribe

Zaledji si delo razdelita drugače. Uniscribe razčleni, oblikuje, umesti in prereže v enem prehodu, HarfBuzz pa oblikuje en sam tek, katerega smer in pisava sta že znani. Za preostanek poskrbi ta enota: FPdfBidi razreši ravni vdelave, pisava Unicode posameznega znaka razdeli besedilo na teke, teki pa se razporedijo v vizualnem vrstnem redu, ki ga daje pravilo L2 iz UAX #9. Znaki splošnih, podedovanih in neznanih pisav nadaljujejo tek, v katerem so, tako da številka ali presledek ne razbije besede

libharfbuzz se poveže med izvajanjem prek DynLibs, zato ni odvisnost prevajanja, njegova odsotnost pa se prijavi namesto da bi bila usodna. HarfBuzzAvailable poroča, ali je bila knjižnica najdena in ali so bile zahtevane vstopne točke razrešene, HarfBuzzVersionString pa vrne različico naložene knjižnice

Oblikovalec sam ne išče pisav. Uniscribe prebere binarno vsebino pisave iz GDI konteksta naprave, za kar ni prenosljivega ekvivalenta, zato gostitelj v Create poda TPdfFontDataResolver, ki preslika ime pisave na bajte TrueType ali OpenType. Tako naštevanje pisav - fontconfig, CoreText ali lastna mapa pisav aplikacije - ostane zunaj enote, ki za tako politiko ni pravo mesto

Functions

FunctionDescription
HarfBuzzAvailableTrue, ko je bil libharfbuzz najden in so bile zahtevane vstopne točke razrešene; prvi klic izvede povezavo
HarfBuzzVersionStringRazličica naložene knjižnice v obliki "major.minor.micro", ali prazen niz, kadar knjižnica ni na voljo

Types

TypeDescription
TPdfFontDataResolverReferenca metode, ki preslika FontName na bajte datoteke pisave v FontData; vračanje False spodleti zahtevo oblikovalca na enak način, kot to stori neberljiva pisava GDI v sistemu Windows
EPdfHarfBuzzErrorIzjema, sprožena, ko ni nastavljen noben razreševalnik, ko libharfbuzz ni na voljo ali ko objekta HarfBuzz blob, face, font ali medpomnilnika ni mogoče ustvariti
TPdfHarfBuzzTextShaperIzvedba TPdfTextShaper na osnovi HarfBuzz, s Create, Destroy in Shape

Members of TPdfHarfBuzzTextShaper

MemberDescription
Create(Resolver)Ustvari oblikovalca in shrani TPdfFontDataResolver, ki ga bo uporabljal pri vsakem iskanju pisave
DestroySprosti predpomnjeni face in blob HarfBuzz, nato še podedovani destruktor
Shape(Text, FontName, FontSize, Options, Shaped)Razreši ravni vdelave, razdeli besedilo po ravneh in pisavah, vsak tek oblikuje prek HarfBuzz in vrne teke v vizualnem vrstnem redu v Shaped; False, ko besedilo ne proizvede nobenega glifa

Remarks

See Also

FPdfTextShaping, TPdf.AddShapedText, TPdf.AddCidType2Text, ConfigureSystemFontProvider