|
THotPDF.AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID THotPDF PUA szintetikus kódpont-allokátor (v2.119.68)
|
GSUB motor Automatikus formázási folyamat Arab formázás |
|
Lefoglal és lekérdez Private Use Area (U+E000 - U+F8FF) szintetikus kódpontokat az olyan OpenType GSUB helyettesítő GID-ekhez, amelyeknek nincs a betűtípus cmap-ján keresztül elérhető természetes Unicode kódpontjuk. Bezárja a v2.119.43-66 GSUB lekérdezési és finomítási API-k által hagyott előállítóoldali GID-szintű kibocsátási rést
Delphi szintaxis: function AssignSyntheticCodepointForGID(GID: Word; out SyntheticCP: Word): Boolean; function GetSyntheticCodepointForGID(GID: Word): Word;
Miért létezik az API A v2.119.32-67 előállítóoldali automatikus formázási folyamat (arab / latin / devanagari) megköveteli, hogy a GSUB motor by visszaadott helyettesítő GID-ek elérhetőek legyenek egy Unicode kódponton keresztül - a meglévő hexadecimálisan kódolt szövegfolyam kódpontokat bocsát ki, nem GID-eket, és a fogyasztó olvasó a beágyazott
Azonban a betűtípus-specifikus helyettesítések, amelyek belső GID-ekre mutatnak - a legtöbb devanagari klaszterforma, stílusbeli alternatívák, amelyeket a betűtípus tervezője csak számozott GID-ként biztosít, CJK ideográfiai variációs szekvenciák (IVS), egyedi ligatúrák megfelelő prezentációs forma nélkül - egyáltalán nem rendelkeznek kódponttal a betűtípus cmap-jában. A v2.119.68 előtt ezek a GID-ek elérhetetlenek voltak az előállítóoldali hexadecimális folyamon keresztül; a v2.119.68 bezárja ezt a rést azáltal, hogy lehetővé teszi a hívók számára, hogy szintetikus kódpontot foglaljanak le a Private Use Area területen bármely GID-hez
Az AssignSyntheticCodepointForGID szemantikája Lefoglalja a következő szabad PUA kódpontot (U+E000-tól kezdve) a megadott GID-hez, és tükrözi a hozzárendelést minden olyan gyorsítótárba, amelytől a meglévő előállítóoldali hex folyam és a fogyasztó-olvasó feloldási lánc függ:
1. 2. 3.
Siker esetén
A GetSyntheticCodepointForGID szemantikája Egy meglévő hozzárendelés tiszta funkcionális lekérdezése. Visszaadja a
Az allokátor állapotának életciklusa Az
Tipikus munkafolyamat (Devanagari klaszterforma)
PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfIndicShaping]; PDF.SetGSUBScript('deva');
// Egy belső klaszter GID lekérése a GSUB motoron keresztül ClusterGID := PDF.GetSingleSubstituteGlyph(BaseGID, 'nukt'); if ClusterGID <> BaseGID then begin // Ellenőrzi, hogy a cmap eléri-e a helyettesítőt - Indic esetén ez általában nem // klaszterekre igaz, mivel a klaszter GID-ek belsők // Szintetikus kódpont lefoglalása, amelyet az előállítóoldali // hex folyam ki tud bocsátani if PDF.AssignSyntheticCodepointForGID(ClusterGID, SyntheticCP) then begin // A SyntheticCP most már az U+E000-F8FF tartományban van; kibocsátja // a UnicodeTextOut-on keresztül, mint egy normál kódpontot PDF.CurrentPage.UnicodeTextOut(X, Y, 0, UnicodeChar(SyntheticCP)); PDF.MarkUnicodeGlyphUsed(ClusterGID); end; end;
Idempotencia példa
PDF.AssignSyntheticCodepointForGID(150, CP1); // CP1 = $E000 PDF.AssignSyntheticCodepointForGID(151, CP2); // CP2 = $E001 PDF.AssignSyntheticCodepointForGID(150, CP3); // CP3 = $E000 (idempotens) CP4 := PDF.GetSyntheticCodepointForGID(150); // CP4 = $E000 CP5 := PDF.GetSyntheticCodepointForGID(999); // CP5 = 0 (nincs hozzárendelés)
Fogyasztó-olvasó viselkedés A fogyasztó olvasó a PUA kódpontot látja a szövegmegjelenítő operátorban, és a dokumentumba ágyazott
Másolási / beillesztési viselkedés: a PUA kódpontok önmagukként fordulnak meg a másolás / beillesztés során, ha a ToUnicode CMap identitásleképezésként deklarálja őket. Azok a hívók, akik azt szeretnék, hogy a forrás Unicode karakterek (a helyettesítést eredményező bemeneti futás) forduljanak meg helyette, regisztrálhatnak egy fordított leképezést a
A Phase 8 ütemterv lezárása A v2.119.68 / Phase 8c.6 lezárja a Phase 8 GSUB motor ütemtervet: minden LookupType 1-8 lekérdező API (Phase 1-6), a Script / LangSys kiválasztási API (Phase 7), a TTF részhalmaz-képző lezárási belépési pont (Phase 9), a statikus utólagos ligatúra-összevonás (v2.119.32 / 58 / 60 / 62), az opcionális automatikus folyamat (v2.119.59), az arab
Lásd még: OpenType GSUB Substitution Engine, Automatic Shaping Pipeline (Phase 8), Arabic / Persian / Urdu Shaping Support, Syriac / Mongolian / Devanagari Shaping, THotPDF.BeginTaggedContent |