PDFium Delphi Component Docs

FPdfTextShapingHb modulis

Modulis: FPdfTextShapingHb
HarfBuzz formavimo galinė sistema Free Pascal aplinkoms, vykdymo metu susiejanti libharfbuzz ir šrifto baitus imanti iš pagrindinės programos pateikiamos spręstuvės

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 yra Uniscribe galinės sistemos, aprašytos FPdfTextShaping, atitikmenys aplinkoms, kuriose nėra usp10.dll. Sąsaja kompiliuojama tik Free Pascal naudojančioms aplinkoms, nes Delphi orientuota į Windows, kur galioja Uniscribe galinė sistema

Abi galinės sistemos darbą pasiskirsto skirtingai. Uniscribe vienu praėjimu suskirsto, suformuoja, išdėsto ir perfiliuoja tekstą, o HarfBuzz formuoja vieną segmentą, kurio kryptis ir raštas jau žinomi. Šis modulis padengia likusią dalį: FPdfBidi nustato įdėtinio lygio reikšmes, kiekvieno simbolio Unicode raštas suskaido tekstą į segmentus, o segmentai išdėstomi vaizdine tvarka, kurią nulemia UAX #9 taisyklė L2. Bendrosios, paveldimos ir nežinomo rašto simboliai tęsia segmentą, kuriame yra, todėl skaitmuo ar tarpas žodžio neperskiria

libharfbuzz susiejamas vykdymo metu per DynLibs, todėl nėra kūrimo priklausomybės, o jo nebuvimas pranešamas vietoj to, kad būtų kritiška klaida. HarfBuzzAvailable praneša, ar biblioteka rasta ir ar išspręsti reikalingi įėjimo taškai, o HarfBuzzVersionString grąžina įkeltos bibliotekos versiją

Formuoklis šriftų pats neiškošo. Uniscribe šrifto dvejetainius duomenis skaito iš GDI įrenginio konteksto, kuris neturi perkeliamos atitikmenų, todėl pagrindinė programa Create perduoda TPdfFontDataResolver, susiejantį šrifto vardą su TrueType arba OpenType baitais. Taip šriftų išvardinimas - fontconfig, CoreText ar paties pritaikymo šriftų aplankas - lieka už modulio, kuris tos politikos spręsti neturėtų

Functions

FunctionDescription
HarfBuzzAvailableTrue, kai libharfbuzz rasta ir reikalingi įėjimo taškai išspręsti; pirmasis kreipinys atlieka susiejimą
HarfBuzzVersionStringĮkeltos bibliotekos versija formatu "major.minor.micro" arba tuščia eilutė, kai biblioteka neprieinama

Types

TypeDescription
TPdfFontDataResolverMetodo nuoroda, susiejanti FontName su šrifto failo baitais FontData; grąžinus False formuoklis prašymą žlugdo taip pat, kaip Windows sistemoje neperskaitomas GDI šriftas
EPdfHarfBuzzErrorIšimtis, keliama, kai nesukonfigūruota spręstuvė, kai libharfbuzz neprieinama arba kai nepavyksta sukurti HarfBuzz blob, face, font arba buffer objekto
TPdfHarfBuzzTextShaperHarfBuzz pagrįsta TPdfTextShaper realizacija su Create, Destroy ir Shape

Members of TPdfHarfBuzzTextShaper

MemberDescription
Create(Resolver)Sukuria formuoklį ir įsimena TPdfFontDataResolver, kurį naudos kiekvienam šrifto paieškos kreipiniui
DestroyAtlaisvina podėlyje laikomą HarfBuzz face ir blob, tada iškviečia paveldėtą destruktorių
Shape(Text, FontName, FontSize, Options, Shaped)Nustato įdėtinio lygio reikšmes, suskaido tekstą pagal lygį ir raštą, kiekvieną segmentą suformuoja per HarfBuzz ir grąžina segmentus vaizdine tvarka Shaped; False, kai tekstas neduoda nė vieno glifo

Remarks

See Also

FPdfTextShaping, TPdf.AddShapedText, TPdf.AddCidType2Text, ConfigureSystemFontProvider