Összetett szkriptek
Bár az előzőekben tárgyalt függvények sok nyelv esetében jól működnek, előfordulhat, hogy nem kezelik az összetett szkriptek igényeit. összetett szkriptek olyan nyelvek, amelyek nyomtatott űrlapja nem egyszerű módon jelenik meg. Egy összetett szkript például lehetővé teheti a kétirányú renderelést, a karakterjelek környezetfüggő alakítását vagy a karakterek kombinálását. A speciális követelmények miatt a szövegkimenet szabályozásának nagyon rugalmasnak kell lennie.
A szöveg TextOut, ExtTextOut, TabbedTextOut, DrawTextés GetTextExtentExPoint megjelenítő függvények összetett szkriptek támogatására lettek kiterjesztve. Ez a támogatás általában átlátható az alkalmazás számára. Az alkalmazásoknak azonban egy pufferbe kell menteniük a karaktereket, és egyszerre egy teljes sornyi szöveget kell megjeleníteniük, hogy az összetett szkriptformáló modulok környezettel rendezhessenek és megfelelően generáljanak karakterjeleket. Emellett mivel a karakterjelek szélessége környezetenként eltérő lehet, az alkalmazásoknak a gyorsítótárazott karakterszélesség helyett GetTextExtentExPoint kell meghatározniuk a vonalhosszt.
Emellett az összetett szkriptbarát alkalmazásoknak fontolóra kell venniük a jobbról balra olvasási sorrend támogatását és az alkalmazásokhoz való jobb igazítást. Az olvasási sorrendet vagy az igazítást balra és jobbra az alábbi kóddal kapcsolhatja be:
// Save lAlign (this example uses static variables)
static LONG lAlign = TA_LEFT;
// When user toggles alignment (assuming TA_CENTER is not supported).
lAlign = TA_RIGHT;
// When the user toggles reading order.
lAlign = TA_RTLREADING;
// Before calling ExtTextOut, for example, when processing WM_PAINT
SetTextAlign (hDc, lAlign);
Ha mindkét attribútumot egyszerre szeretné váltani, hajtsa végre a következő utasítást, majd hívja meg SetTextAlign és ExtTextOut, ahogyan az korábban is látható:
lAlign = TA_RIGHT^TA_RTLREADING; //pre-inline !
Összetett szkripteket is feldolgozhat az Uniscribe használatával. Az Uniscribe függvények olyan készlete, amely lehetővé teszi az összetett szkriptek finom vezérlését. További információ: Uniscribe és Processing Complex Scripts.