|
THotPDF.AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID THotPDF PUA synteettisen koodipisteen varaaja (v2.119.68)
|
GSUB-moottori Automaattinen muotoiluputki Arabian muotoilu |
|
Varaa ja hakee Private Use Area (U+E000 - U+F8FF) synteettisiä koodipisteitä sellaisille OpenType GSUB -korvaaville GID-tunnuksille, joilla ei ole luonnollista Unicode-koodipistettä saavutettavissa fontin cmapin kautta. Sulkee tuottajapuolen GID-tason tulostusraon, jonka v2.119.43-66 GSUB-haku- ja tarkennus-API:t jättivät
Delphi syntax: function AssignSyntheticCodepointForGID(GID: Word; out SyntheticCP: Word): Boolean; function GetSyntheticCodepointForGID(GID: Word): Word;
Miksi API on olemassa Version v2.119.32-67 tuottajapuolen automaattinen muotoiluputki (arabia / latina / Devanagari) vaatii, että GSUB-moottorin palauttamat korvaavat GID:t ovat saavutettavissa Unicode-koodipisteen kautta - olemassa oleva heksakoodattu tekstiputki lähettää koodipisteitä, ei GID-tunnuksia, ja kuluttajalukija ratkaisee koodipisteen takaisin GID-tunnukseksi upotetun
Mutta fonttikohtaisilla korvikkeilla, jotka päätyvät fontin sisäisiin GID-tunnuksiin – useimmat devanagari-tavuryhmämuodot, tyylivaihtoehdot, jotka fontin suunnittelija toimittaa vain numeroituina GID-tunnuksina, CJK-ideografiset variaatiosarjat (IVS), vapaavalintaiset ligatuurit ilman vastaavaa Presentation Form -muotoa – ei ole lainkaan koodipistettä fontin cmap-taulukossa. Ennen versiota v2.119.68 nämä GID:t eivät olleet saavutettavissa tuottajapuolen heksaputken kautta; versio v2.119.68 sulkee tämän aukon antamalla kutsujien varata synteettisen koodipisteen Private Use Area -alueelta mille tahansa GID-tunnukselle
AssignSyntheticCodepointForGID semantics Varaa seuraavan vapaan PUA-koodipisteen (alkaen arvosta U+E000) toimitetulle GID-tunnukselle ja peilaa kohdistuksen jokaiseen välimuistiin, josta olemassa oleva tuottajapuolen heksaputki + kuluttajan lukulaitteen selvitysketju riippuu:
1. 2. 3.
Palauttaa arvon
GetSyntheticCodepointForGID semantics Puhtaasti funktionaalinen kysely mistä tahansa olemassa olevasta määrityksestä. Palauttaa glyyfille
Allocator state lifecycle Taulukko
Typical workflow (Devanagari cluster shape)
PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfIndicShaping]; PDF.SetGSUBScript('deva');
// Hae fontin sisäinen ryhmä-GID GSUB-moottorin kautta ClusterGID := PDF.GetSingleSubstituteGlyph(BaseGID, 'nukt'); if ClusterGID <> BaseGID then begin // Tarkista, saavuttaako cmap korvaavan - yleensä ei Indicille // klusterit, koska klusterin GID:t ovat fontin sisäisiä // Varaa synteettinen koodipiste, jonka tuottajapuolen // hex pipeline can emit if PDF.AssignSyntheticCodepointForGID(ClusterGID, SyntheticCP) then begin // SyntheticCP on nyt alueella U+E000-F8FF; tuota se // UnicodeTextOutin kautta aivan kuten normaali koodipiste PDF.CurrentPage.UnicodeTextOut(X, Y, 0, UnicodeChar(SyntheticCP)); PDF.MarkUnicodeGlyphUsed(ClusterGID); end; end;
Idempotency example
PDF.AssignSyntheticCodepointForGID(150, CP1); // CP1 = $E000 PDF.AssignSyntheticCodepointForGID(151, CP2); // CP2 = $E001 PDF.AssignSyntheticCodepointForGID(150, CP3); // CP3 = $E000 (idempotent) CP4 := PDF.GetSyntheticCodepointForGID(150); // CP4 = $E000 CP5 := PDF.GetSyntheticCodepointForGID(999); // CP5 = 0 (no assignment)
Consumer-reader behavior Lukulaitteen kuluttaja näkee PUA-koodipisteen tekstinnäyttöoperaattorissa ja ratkaisee sen dokumenttiin upotetun
Kopioi/liitä-toiminta: PUA-koodipisteet palautuvat sellaisenaan kopioinnin ja liittämisen kautta, kun ToUnicode CMap ilmoittaa ne identiteettikartoituksina. Kutsujat, jotka haluavat alkuperäisten Unicode-merkkien (korvauksen tuottaneen syötesarjan) palautuvan sen sijaan, voivat rekisteröidä käänteisen kartoituksen metodilla
Phase 8 roadmap closure v2.119.68 / vaihe 8c.6 sulkee vaiheen 8 GSUB-moottorin tiekartan: jokainen LookupType 1-8 -kysely-API (vaihe 1-6), Script- / LangSys-valinta-API (vaihe 7), TTF-osittajan sulkeuman aloituspiste (vaihe 9), staattinen jälkikäsittelyn ligatuurin taitto (v2.119.32 / 58 / 60 / 62), valinnainen automaattinen käsittelyputki (v2.119.59), arabian
Katso myös: OpenType GSUB Substitution Engine, Automatic Shaping Pipeline (Phase 8), Arabic / Persian / Urdu Shaping Support, Syriac / Mongolian / Devanagari Shaping, THotPDF.BeginTaggedContent |