在示例应用程序DWriteSimpleHelloWorld中,我呈现文本
Option Explicit
Sub Test()
Dim varPath As Variant
Dim varFileName As Variant
varPath = "C:\Users\foo\bar\" '<~~ ensure final \
varFileName = "lol.xlsx"
'depending on OS version, try 9, 10 and 20
Debug.Print GetAuthorFromShell(varPath, varFileName, 9)
Debug.Print GetAuthorFromShell(varPath, varFileName, 10)
Debug.Print GetAuthorFromShell(varPath, varFileName, 20)
End Sub
Function GetAuthorFromShell(varPath As Variant, varFileName As Variant, intProperty As Integer) As String
Dim objShell As Object
Dim objFolder As Object
Dim strAuthor As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(varPath)
With objFolder
strAuthor = .getdetailsof(.Items.Item(varFileName), intProperty)
End With
GetAuthorFromShell = strAuthor
End Function
到DWrite wszText_ = L"Hello World using Direct\u00ADWrite!";
- 有效地,到我的应用程序的窗口。我使用HwndRenderTarget
DrawText
方法渲染文字。
我希望行为符合Web浏览器中包含实体ID2D1HwndRenderTarget
(软或音节连字符)的文本字符串的呈现。
如果窗口宽度足以适合渲染短语的宽度,我会看到像
这样的文字­
但是当我调整窗口大小以使短语的尾部不适合窗口时,我看到了:
Hello World using DirectWrite!
虽然网络浏览器会在第一行末尾用连字符呈现此文本:
Hello World using Direct
Write!
我的目的是让用户在我的Hello World using Direct-
Write!
应用程序中为长单词插入连字提示,但我看到的就像DWrite
作为“隐藏”空格一样。
我已经读过关于软连字符定义和用法的细微之处(例如,https://www.cs.tut.fi/~jkorpela/shy.html),所以我谦卑地问:\u00AD
“被设计观察到的行为”?如果是这样,如何实现连字提示,在需要时会在行尾产生连字符?
请注意,当我使用DWrite
字符串的字形索引将文本绘制为使用wszText_
GetGlyphRunOutline
方法创建的几何图形时,我看到一个字符串在其到期时包含连字符位置:
IDWriteFontFace