是否有办法覆盖字体.位置增量使其更小(小于).5 pt) ?与VBA或其他?



我正在Word(365)中编写一个VBA宏,它通过逐个字符的选择循环并随机化字体位置(提高/降低)和间距*。我知道你在想什么,是的,这使得最终的。docx文件大小比原始文件大得多

*上下文:为什么?我是一名业余书籍设计师/诗人/编辑,试图模仿手工凸版印刷的温暖/模拟/有机感觉(以及微妙的固有缺陷)。

那么,事情是这样的:代码可以工作。这不是问题所在。

问题是Word的字体。位置增量硬编码为0.5 pt,所以当我的宏计算随机位置时,Word将其舍入到最接近的0.5 pt。对于我的小字体(通常为12 pt)来说,这太大了。我可能是在徒劳的追逐,但是有没有办法覆盖这些增量,通过VBA(理想情况下)或其他(c++ ?),使它们更小,更微妙的效果?

注意:字体。间距增量是0.05 pt,所以这不是问题,只要Font.Position.

我也在摆弄页面的大小,我想我可以做一个巨大的页面&字体大小(例如:1000%),以弥补过大的0.5 pt增量,然后将其缩小(至10%)以达到PDF的预期大小,但页面大小的限制仅为22"这不足以产生太大的影响。

我的下一个选择是将相同的宏翻译成LibreOffice Writer。该程序使用整数%增量而不是0.5 pt增量,这将是大约4倍更精确@ 12 pt字体。12 pt增量)。因此,在此应用程序中,直到字体大小达到50 pt或更大时,Writer的性能才会优于Word。我对LO Basic没有太多的经验,文档/示例代码也很难获得。我知道它与VBA非常相似,并且有很多交叉。这可能不是一个容易的项目,我只是还没有试过。

无论如何,我想看看是否有一种方法可以绕过Word中的增量,因为我想在Word和Writer中同时使用这个应用程序。

现在,我假设增量是硬编码到Word中的,对此我无能为力。

证明我错了。

谢谢!

注:我对c++一窍不通,如果每个人都告诉我Word是注定要失败的,我应该把它翻译成Writer,我就会这么做(不管怎样,我可能会这样做),然后在我遇到困难的时候把我的代码贴出来。

一派胡言。根据VBA Word参考,属性字体。仓位是多头。此属性设置所选文本在行上方(或在行下方)的垂直对齐方式。

  • 您可以手动设置此属性为0.5舍入。
  • 宏记录还显示命令"选择。字体。位置= 0.5">
  • 没有办法分配Font属性。使用宏定位分数,因为它是Long。

我想有一个宏移动文本以上或以下的行,但它是可能的,只有一步移动1.0(或0.5通过UI)。希望,有一个解决办法…(至少为0.5。你能展示一下你的代码示例吗?)

我找到了一个变通办法。根据旧的WordBasic参考- Position的最小步长为0.5 pt。

获取所选文本的0.5个分数的值。字体。Position返回Long(不含分数)

MsgBox Dialogs(wdDialogFormatFont).Position

若要将值设置为0.5(与选定文本的比例),必须使用旧式的WordBasic

WordBasic.FormatFont Position:="-0.5"

希望,这能帮助别人…

关于旧WordBasic的更多信息:https://learn.microsoft.com/en-us/office/vba/word/concepts/customizing-word/conceptual-differences-between-wordbasic-and-visual-basichttps://learn.microsoft.com/en-us/office/vba/word/concepts/customizing-word/built-in-dialog-box-argument-lists-word

最新更新