Sdílet prostřednictvím


Zpracování složitých skriptů

K poskytnutí zdůvodnění textu může aplikace použít jednu ze dvou metod. Pro jednoduchou implementaci vícejazyčného odůvodnění by aplikace měla volat ScriptJustify. Vygeneruje pole delta dx zvážením kashidy, pak mezer mezi slovy a poté mezer mezi znaky. Pro sofistikovanější odůvodnění může aplikace vygenerovat aktualizované pole delta dx pomocí vlastní jazykové znalosti a informací načtených ScriptShape v poli SCRIPT_VISATTR.

Zdůvodnění mezery nebo kašidy by měly být vloženy tam, kde je identifikován člen SCRIPT_VISATTR. Při provádění zarovnání mezi znaky by aplikace měla vložit mezeru navíc pouze po glyfech označených SCRIPT_JUSTIFY_CHARACTER.

Aplikace umísťuje kurzor a testuje pomocí ScriptXtoCP a ScriptCPtoX. Další informace naleznete v tématu Správa umístění kurzoru a detekce zásahů.

Chcete-li získat šířky nezávisle na písmu, aplikace volá ScriptGetLogicalWidths. Předáním logických šířek ScriptApplyLogicalWidthlze znovu zobrazit blok textu ve stejných hranicích s přijatelnou ztrátou kvality, i když původní písmo není k dispozici. Generuje pole šířek glyfů (předem dané šířky) vhodné pro předání ScriptTextOut. Takový záznam a opětovné použití informací o pokročilé šířce nezávisle na písmu může být užitečný v situacích, jako je metafilování v definovaném formátu aplikace.

Poznámka

Metasoubory nepodporují indexy glyfů. K zápisu do rozšířeného metasouboru by aplikace měla použít ExtTextOut a zapisovat logické znaky přímo. Pomocí tohoto mechanismu se generování a umístění glyfů neprojeví, dokud se nepřehraje text.

 

Chcete-li načíst konkrétní glyfy, které se používají pro výchozí, prázdné hodnoty, kashida atd., pro aktuální písmo, by aplikace měla volat ScriptGetFontProperties. Chcete-li určit, které znaky v sekvenci jsou podporovány vybraným písmem, aplikace volá ScriptGetCMap. Znaky, které nejsou k dispozici, mají výchozí glyf ve vyrovnávací paměti glyfů. Tato metoda selže, pokud písmo vykresluje znak pomocí kombinace glyfů místo jednoho glyfu. Například 00C9; VELKÉ PÍSMENO LATINKY E S AKUTNÍ LZE vykreslit pomocí velkého E glyfu a akutního glyfu. Chcete-li určit podporu písma pro řetězec, který obsahuje tyto typy kódových bodů, aplikace může použít ScriptShape. Další informace najdete v tématu Použití modulů tvarování.

Funkce ScriptCacheGetHeight vrátí výšku písma z mezipaměti písem. ScriptGetProperties poskytuje informace o speciálním zpracování potřebném pro všechny skripty indexované skriptem. Zahrnuje například primární jazyk přidružený ke skriptu, data označující, jestli je skript číselný, a data označující, jestli je skript složitým skriptem.

ScriptGetGlyphABCWidth vrátí šířku ABC daného glyfu, což může být užitečné pro kreslení glyfových grafů. Nemělo by se ale používat pro běžné formátování textu se složitým skriptem.

použití Uniscribe