Delen via


Complexe scripts verwerken

Een toepassing kan een van de twee methoden gebruiken om tekst te rechtvaardigen. Voor een eenvoudige implementatie van meertalige redenen moet de toepassing ScriptJustifyaanroepen. Het genereert de delta dx-array door kashida te overwegen, gevolgd door tussenwoordafstand en vervolgens tekenafstand. Voor een geavanceerdere rechtvaardiging kan de toepassing een bijgewerkte delta dx-array genereren met behulp van eigen taalkennis en de informatie die is opgehaald door van ScriptShape- in de SCRIPT_VISATTR-array.

Er moet een uitvullingsspatie of kashida worden ingevoegd wanneer deze wordt geïdentificeerd door het lid uJustification van SCRIPT_VISATTR. Wanneer u een reden tussen tekens uitvoert, moet de toepassing alleen extra ruimte invoegen nadat glyphs zijn gemarkeerd met SCRIPT_JUSTIFY_CHARACTER.

De toepassing zorgt voor het plaatsen van de cursor en hit-testing met behulp van ScriptXtoCP en ScriptCPtoX. Zie Managing Caret Placement and Hit Testingvoor meer informatie.

De toepassing roept ScriptGetLogicalWidthsaan om breedten op een lettertype-onafhankelijke manier op te halen. Door de logische breedtes door te geven aan ScriptApplyLogicalWidth, kan een tekstblok opnieuw worden weergegeven in dezelfde grenzen met acceptabel kwaliteitsverlies, zelfs wanneer het oorspronkelijke lettertype niet beschikbaar is. Er wordt een matrix met glyph-breedtes (geavanceerde breedten) gegenereerd die geschikt zijn voor het doorgeven aan ScriptTextOut-. Dergelijke opname en opnieuw toepassen van informatie over geavanceerde breedte op een lettertypeonafhankelijke manier kan nuttig zijn in situaties zoals metafiltratie in een gedefinieerde indeling van een toepassing.

Notitie

Metafiles bieden geen ondersteuning voor glyph-indexen. Als u naar een uitgebreid metabestand wilt schrijven, moet de toepassing ExtTextOut- gebruiken en de logische tekens rechtstreeks schrijven. Met behulp van dit mechanisme vindt de glyph-generatie en plaatsing pas plaats als de tekst wordt afgespeeld.

 

Als u de specifieke glyphs wilt ophalen die worden gebruikt voor de standaardwaarden, lege waarden, kashida, enzovoort, moet de toepassing ScriptGetFontPropertiesaanroepen. Om te bepalen welke tekens in een uitvoering worden ondersteund door het geselecteerde lettertype, roept de toepassing ScriptGetCMapaan. Tekens die niet beschikbaar zijn, hebben het standaardteken in de glyph-buffer. Deze methode mislukt als een lettertype een teken weergeeft met behulp van een combinatie van glyphs in plaats van één glyph. Bijvoorbeeld 00C9; LATIJNSE HOOFDLETTER E MET ACUTE kan worden weergegeven met behulp van een lettervorm voor de hoofdletter E en een lettervorm voor de acute. Om de lettertypeondersteuning te bepalen voor een tekenreeks die dit soort codepunten bevat, kan de toepassing ScriptShapeaanroepen. Zie Gebruik van Shaping Enginesvoor meer informatie.

De functie ScriptCacheGetHeight retourneert de hoogte van het lettertype uit de lettertypecache. ScriptGetProperties- bevat informatie over de speciale verwerking die vereist is voor alle scripts, geïndexeerd per script. Het bevat bijvoorbeeld de primaire taal die is gekoppeld aan het script, gegevens die aangeven of het script numeriek is en gegevens die aangeven of het script een complex script is.

ScriptGetGlyphABCWidth- retourneert de ABC-breedte van een bepaald symbool, wat handig kan zijn voor het tekenen van glyph-grafieken. Het mag echter niet worden gebruikt voor normale complexe scripttekstopmaak.

Uniscribe- gebruiken