我编辑了一个代码,我发现它可以获取文本的所有大纲数据,因此我可以手动将其绘制为其他程序中的行。 我的代码在英语中效果很好,但是当我尝试发送希伯来语文本时,轮廓变成了乱码字体。
代码的主要步骤是: 字体 - > GlyphTypeface - > GlyphRun
主要代码是
Private m_gtf As System.Windows.Media.GlyphTypeface
Private m_glypText As GlyphRun
Private m_textFont As System.Drawing.Font
textFont = New Font("Aharoni", 12, FontStyle.Regular, GraphicsUnit.World, 177, False)
m_typeface = New Typeface(New System.Windows.Media.FontFamily(m_textFont.Name), m_fontStyle, _
m_fontWeight, New System.Windows.FontStretch())
m_typeface.TryGetGlyphTypeface(m_gtf)
'then use m_gtf to crate the m_glyphIndices and advanceWidths vectors
m_glypText = New GlyphRun(m_gtf, bidiLevel, False, m_height, m_glyphIndices, origin, advanceWidths, _
Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
我认为我的问题在于" m_typeface = New Typeface(..." 在此命令中,无法发送字体gdiCharSet值。
有没有办法直接从m_textFont获取字体? 还是有另一种方法可以做到这一点吗?
琐
答案 0 :(得分:0)
发现问题。
我正在使用:
Dim glyphIndex As UShort = m_gtf.CharacterToGlyphMap(Asc(m_textString(n)))
但我必须使用AscW来获取正确的ascii代码:
Dim glyphIndex As UShort = m_gtf.CharacterToGlyphMap(AscW(m_textString(n)))
现在它有效! 琐