PDFium Delphi Component Docs

FPdfTextShapingHb-yksikkö

Yksikkö: FPdfTextShapingHb
HarfBuzz-muotoilubackend Free Pascal -kohteille, joka sitoo libharfbuzzin ajon aikana ja ottaa fonttitavut isännän toimittamalta ratkaisijalta

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 on FPdfTextShaping-yksikön Uniscribe-backendin vastine kohteille, joissa ei ole usp10.dll-kirjastoa. Rajapinta käännetään vain Free Pascal -kohteille, koska Delphi tähtää Windowsiin, jossa Uniscribe-backend on voimassa

Kaksi backendiä jakavat työn eri tavoin. Uniscribe erittelee, muotoilee, sijoittelee ja järjestää uudelleen yhdellä läpiviennillä, kun taas HarfBuzz muotoilee yhden runin, jonka suunta ja kirjoitusjärjestelmä ovat jo tiedossa. Tämä yksikkö hoitaa loput: FPdfBidi ratkaisee upotustasot, jokaisen merkin Unicode-kirjoitusjärjestelmä jakaa tekstin runeihin, ja runit asetellaan visuaaliseen järjestykseen, jonka UAX #9 -sääntö L2 määrää. Common-, inherited- ja unknown-kirjoitusjärjestelmän merkit jatkavat runia, jossa ovat, joten numero tai välilyönti ei katkaise sanaa

libharfbuzz sidotaan ajon aikana DynLibs-kautta, joten se ei ole käännösaikainen riippuvuus, ja sen puuttuminen ilmoitetaan eikä se kaada ohjelmaa. HarfBuzzAvailable kertoo, löytyikö kirjasto ja ratkesivatko vaaditut entry pointit, ja HarfBuzzVersionString palauttaa ladatun kirjaston version

Muotoilija ei etsi fontteja itse. Uniscribe lukee fontin binaaritiedoston GDI-laitekontekstista, jolla ei ole kannettavaa vastinta, joten isäntä välittää Create-konstruktorille TPdfFontDataResolver-kutsun, joka mapaa fontin nimen TrueType- tai OpenType-tavuiksi. Näin fonttiluettelointi - fontconfig, CoreText tai sovelluksen oma fonttikansio - pysyy ulkopuolella yksikköä, jolla ei ole asiaa päättää kyseisestä käytännöstä

Functions

FunctionDescription
HarfBuzzAvailablePalauttaa arvon True, kun libharfbuzz löytyi ja vaaditut entry pointit ratkesivat; ensimmäinen kutsu suorittaa sidonnan
HarfBuzzVersionStringLadatun kirjaston versio muodossa "major.minor.micro" tai tyhjä merkkijono, kun kirjasto ei ole käytettävissä

Types

TypeDescription
TPdfFontDataResolverMetodiviittaus, joka mapaa FontName-nimen fonttitiedoston tavuihin FontData-kenttään; False-paluu saa muotoilijan hylkäämään pyynnön samaan tapaan kuin lukukelvoton GDI-fontti Windowsissa
EPdfHarfBuzzErrorPoikkeus, joka nousee, kun ratkaisijaa ei ole määritetty, kun libharfbuzz ei ole käytettävissä tai kun HarfBuzz blob-, face-, font- tai buffer-objektia ei voi luoda
TPdfHarfBuzzTextShaperHarfBuzz-pohjainen TPdfTextShaper-toteutus, jolla on Create-, Destroy- ja Shape-jäsenet

Members of TPdfHarfBuzzTextShaper

MemberDescription
Create(Resolver)Luo muotoilijan ja tallentaa TPdfFontDataResolver-kutsun, jota se käyttää jokaisessa fonttihaussa
DestroyVapauttaa välimuistissa olevat HarfBuzz face- ja blob-objektit ja kutsuu sitten perittyä destruktoria
Shape(Text, FontName, FontSize, Options, Shaped)Ratkaisee upotustasot, jakaa tekstin tason ja kirjoitusjärjestelmän mukaan, muotoilee jokaisen runin HarfBuzzin kautta ja palauttaa runit visuaalisessa järjestyksessä Shaped-tietueeseen; palauttaa arvon False, kun teksti ei tuota glyyfejä

Remarks

See Also

FPdfTextShaping, TPdf.AddShapedText, TPdf.AddCidType2Text, ConfigureSystemFontProvider