public static extern int ScriptPlaceOpenType(
   IntPtr hdc,
   ref IntPtr psc,
   ref SCRIPT_ANALYSIS psa,
   uint tagScript,
   uint tagLangSys,
   [In] int[] rcRangeChars,
   ref IntPtr rpRangeProperties,
   int cRanges,
   [In] [MarshalAs(UnmanagedType.LPWStr)] string pwcChars,
   [In] ushort[] pwLogClust,
   [In] script_charprop[] pCharProps,
   int cChars,
   [In] ushort[] pwGlyphs,
   ref script_glyphprop pGlyphProps,
   int cGlyphs,
   [In] int[] piAdvance,
   [Out] tagGOFFSET[] pGoffset,
   out ABC pABC);
 public static extern int ScriptApplyLogicalWidth(
   [In] int[] piDx, 
   int cChars, 
   int cGlyphs, 
   [In] ushort[] pwLogClust, 
   ref SCRIPT_VISATTR psva,
   [In] int[] piAdvance, 
   ref SCRIPT_ANALYSIS psa, 
   ref ABC pABC,
   [Out] int[] piJustify);
 public static extern int ScriptShapeOpenType(
   IntPtr hdc,
   ref IntPtr psc,
   ref SCRIPT_ANALYSIS psa,
   uint tagScript,
   uint tagLangSys,
   [In] int[] rcRangeChars,
   ref IntPtr rpRangeProperties,
   int cRanges,
   [In] [MarshalAs(UnmanagedType.LPWStr)] string pwcChars,
   int cChars,
   int cMaxGlyphs,
   [Out] ushort[] pwLogClust,
   [Out] script_charprop[] pCharProps,
   [Out] ushort[] pwOutGlyphs,
   [Out] script_glyphprop[] pOutGlyphProps,
   out int pcGlyphs);
 public static extern int ScriptXtoCP(
   int iX, 
   int cChars, 
   int cGlyphs, 
   [In] ushort[] pwLogClust, 
   [In] SCRIPT_VISATTR[] psva, 
   [In] int[] piAdvance, 
   ref SCRIPT_ANALYSIS psa, 
   [Out] int[] piCP,
   [Out] int[] piTrailing);
 public static extern int ScriptGetLogicalWidths(
   ref SCRIPT_ANALYSIS psa, 
   int cChars, 
   int cGlyphs, 
   [In] int[] piGlyphWidth, 
   [In] ushort[] pwLogClust, 
   ref SCRIPT_VISATTR psva, 
   [Out] int[] piDx);
 public static extern int ScriptCPtoX(
   int iCP, 
   [MarshalAs(UnmanagedType.Bool)] bool fTrailing, 
   int cChars, 
   int cGlyphs, 
   [In] ushort[] pwLogClust, 
   [In] SCRIPT_VISATTR[] psva,
   [In] int[] piAdvance, 
   ref SCRIPT_ANALYSIS psa, 
   [Out] int[] piX);
 public static extern int ScriptBreak(
   [In] [MarshalAs(UnmanagedType.LPWStr)] string pwcChars, 
   int cChars, 
   ref SCRIPT_ANALYSIS psa, 
   [Out] SCRIPT_LOGATTR[] psla);
 public static extern int ScriptTextOut(
   IntPtr hdc, 
   ref IntPtr psc, 
   int x, 
   int y, 
   uint fuOptions, 
   [In] tagRECT[] lprc, 
   ref SCRIPT_ANALYSIS psa, 
   [In] [MarshalAs(UnmanagedType.LPWStr)] string pwcReserved, 
   int iReserved, 
   [In] ushort[] pwGlyphs, 
   int cGlyphs, 
   [In] int[] piAdvance,
   [In] int[] piJustify, 
   ref tagGOFFSET pGoffset);
 public static extern int ScriptPlace(
   IntPtr hdc, 
   ref IntPtr psc, 
   ushort[] pwGlyphs, 
   int cGlyphs, 
   SCRIPT_VISATTR[] psva, 
   ref SCRIPT_ANALYSIS psa,
   [Out] int[] piAdvance,
   [Out] tagGOFFSET[] pGoffset, 
   ref ABC pABC);
 public static extern int ScriptShape(
   IntPtr hdc, 
   ref IntPtr psc, 
   [In] [MarshalAs(UnmanagedType.LPWStr)] string pwcChars, 
   int cChars, 
   int cMaxGlyphs, 
   ref SCRIPT_ANALYSIS psa,
   [Out] ushort[] pwOutGlyphs,
   [Out] ushort[] pwLogClust,
   [Out] SCRIPT_VISATTR[] psva, 
   out int pcGlyphs);