gpt4 book ai didi

swift - NSMutableParagraphStyle.paragraphSpacingBefore 应该在段落前添加空格吗?

转载 作者:行者123 更新时间:2023-12-04 03:39:25 24 4
gpt4 key购买 nike

我正在 macOS 上编写一个命令行脚本,用于从文本创建图像。我想给上面的一些段落留出额外的空间,以便将它们与上一段分开。由于脚本的工作方式,在段落上设置属性以在其上方放置额外空间会更容易,而不是更改上一段的属性。我认为这就是 NSMutableParagraphStyle 上的 paragraphSpacingBefore 的用途。
但是,虽然我可以让paragraphSpacing 在第一段之后提供空间,但paragraphSpacingBefore 似乎在第二段之后添加了空间。
这个非常简化的测试脚本将创建一个包含三个段落的图像。
注释掉 paragraphSpacing 行和 paragraphSpacingBefore 行后,段落之间或段落周围没有添加额外的间距:
no paragraph spacing
如果 paragraphSpacing 行没有注释,则三段之间有空格:
paragraphSpacing = 32
但是如果paragraphSpacing 行被注释掉,paragraphSpacingBefore 行没有被注释,则三段之间没有空格,但在第三段之后添加了空格:
paragraphSpacingBefore = 32
看起来末尾的间距是paragraphSpacingBefore 值的两倍;如果我注释掉 cheers += 行使其只有两段,则最后一段之后的空间看起来大约减半:
two paragraphs, paragraphSpacingBefore = 32
这对我来说没有意义。我希望第三张图片(使用 paragraphSpacingBefore 与第二张图片非常相似。我误解了 paragraphSpacingBefore 的含义,和/或我做错了什么。

#!/usr/bin/swift
//test paragraphSpacingBefore

import AppKit

//set up text
var cheers = "“What do you say, Norm?”\nAny cheap, tawdry thing that’ll get me a beer."
cheers += "\n—Cheers"

var paragraphStyle = NSMutableParagraphStyle()
//paragraphStyle.paragraphSpacing = 32
paragraphStyle.paragraphSpacingBefore = 32
var textAttributes = [NSAttributedString.Key.paragraphStyle:paragraphStyle]
let textLines = NSAttributedString(string:cheers, attributes:textAttributes)

//create image of text
let outputSize = textLines.size()
let textRect = NSRect(x: 0, y: 0, width: outputSize.width, height: outputSize.height)
let background = NSColor(red:0, green:1, blue:1, alpha:1)

let outputImage = NSImage(size:outputSize, flipped: false) { (outputRect) -> Bool in
//set a background color
background.setFill()
outputRect.fill()

//draw the text
textLines.draw(in: textRect)
return true
}

//save image to file
var imageData = outputImage.tiffRepresentation
let bitmappedText = NSBitmapImageRep(data: imageData!)
imageData = bitmappedText!.representation(using: NSBitmapImageRep.FileType.png, properties:[:])
do {
try imageData!.write(to: NSURL.fileURL(withPath: "norm.png"))
} catch {
print("Unable to save file.")
}
如果 paragraphSpacingBefore 应该在第二和第三段上方放置空格,我做错了什么?

最佳答案

根据我的观察,这种行为仅在您使用 swift 命令时才会出现:

swift YourScript.swift
如果您改为在 Xcode“命令行工具”项目中运行代码,或者在 Xcode 游乐场中运行代码,或者使用 swiftc 编译代码,然后运行它,
swiftc YourScript.swift && ./YourScript
paragraphSpacingBefore 正确地将间距放在正确的位置。
我怀疑您可能需要为 swift 指定一个选项才能使其工作,但我找不到 swift 独有的相关选项。
因此,现在的解决方法是编写一个新的 bash/zsh 脚本来运行:
swiftc YourScript.swift && ./YourScript

关于swift - NSMutableParagraphStyle.paragraphSpacingBefore 应该在段落前添加空格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66326863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com