Дальнейшие тесты показывают, что
<DllImport("gdi32.dll", EntryPoint:="GetGlyphIndicesW")> _
Private Shared Function GetGlyphIndices(ByVal hdc As System.IntPtr, _
<MarshalAsAttribute(UnmanagedType.LPTStr)> ByVal lpstr As String, _
ByVal c As UInteger, _
<MarshalAs(UnmanagedType.LPArray)> ByVal Indices() As UInt16, ByVal Mode As UInteger) As UInteger
End Function
Работает, чтобы вернуть массив индексов глифов для строки. Ключевым атрибутом для получения этой работы является MarshalAsAttribute(UnmanagedType.LPTStr
в строке. Моя собственная глупость в том, что я думаю, что строки были собраны автоматически (возврат к VB6?).
Обратите внимание, что GetGlyphIndices работает только с Юникодом, возвращающим 1-2 байта. К счастью, китайский / японский языки могут быть обработаны с помощью встроенного CMAP в PDF.