使用基线进行非常规 MSWord 格式化

使用基线进行非常规 MSWord 格式化

我“昨天”在 Graphic Design SE 上问过这个问题,但有人提示我 SuperUser 对我想要完成的任务更有用。我的问题是关于基线的使用,但请记住,我有一份 MSOffice 2016 Home & Student 副本。

我正在尝试编写 VBA 来在整个文档中执行单独的字符调整:

Sub RandomizeBaseline()
    Dim rng As Range
    Dim char As Variant
    Dim baseline As Double
    Set rng = ActiveDocument.Range
    For Each char In rng.Characters
        baseline = Rnd() * 2 - 1
        char.Font.Position = baseline
    Next char
End Sub

这样做的目的是使文档看起来就像是用打字机打出来的一样。我已经有了等宽字体可以使用,但是 MSWord 解析它的方式使得随机基线值为 -1、0 或 1。将这些设置为十进制值以使基线偏移不那么明显,显然会截断为零并且根本不会移动任何内容。代码确实解析了文档上的每个字符,单击“撤消”时可以通过编辑历史记录看到,但没有明显的区别。我应该如何为我计划的超特定项目解决这个问题?

答案1

回答了我自己的问题 - 想象一下。我没有考虑到我可以用变量随机器合理地“间隔”基线。此代码如下:

Sub RandomizeBaseline()
    Dim rng As Range
    Dim char As Variant
    Dim baseline As Double
    Dim counter As Integer
    
    ' Set the range to the entire document
    Set rng = ActiveDocument.Range
    
    ' Initialize the counter
    counter = 0
    
    ' Loop through each character in the range
    For Each char In rng.Characters
        ' Increment the counter
        counter = counter + 1
        
        ' Check if the counter is a multiple of 10
        If counter Mod 10 = 0 Then
            ' Generate a random baseline value between -1 and 1
            baseline = Rnd() * 2 - 1
            
            ' Apply the baseline position to the character
            char.Font.Position = baseline
        End If
    Next char
End Sub

相关内容