Aspose.PSD Java如何如何使用自定义的字体呢

textLayer.updateText(textMapping.get(layerName));
IText textData = textLayer.getTextData();
ITextPortion textPortion = textData.getItems()[0];
ITextStyle style = textPortion.getStyle();
style.setFontName(fontName);
textData.updateLayerData();

fontName指定我为电脑自己安装的字体时不生效

@poneli

要在Aspose.PSD for Java中使用自定义字体,您需要确保字体已正确加载并且可以被程序识别。以下是一些步骤和建议,帮助您解决字体不生效的问题:

  1. 确保字体已安装:首先,确保您要使用的字体已经在您的操作系统中安装。Aspose.PSD会使用系统字体,因此如果字体未安装,您将无法使用它。

  2. 设置字体替换:如果您在处理PSD文件时遇到缺失字体的情况,可以通过设置字体替换来解决。您可以使用PsdLoadOptions类来指定替换字体。例如:

    PsdLoadOptions loadOptions = new PsdLoadOptions();
    loadOptions.setMissingFontReplacement("Arial"); // 替换为您希望使用的字体
    
  3. 更新文本数据:在更新文本图层时,确保您正确设置了文本样式的字体名称。以下是一个示例代码片段,展示如何更新文本图层的字体:

    textLayer.updateText(textMapping.get(layerName));
    IText textData = textLayer.getTextData();
    ITextPortion textPortion = textData.getItems()[0];
    ITextStyle style = textPortion.getStyle();
    style.setFontName("您的自定义字体名称"); // 确保字体名称正确
    textData.updateLayerData();
    
  4. 检查字体名称:确保您在代码中指定的字体名称与系统中安装的字体名称完全匹配,包括大小写和空格。

  5. 使用字体文件:如果您希望使用特定的字体文件而不是系统字体,可以考虑将字体文件嵌入到您的项目中,并在代码中加载它。

通过以上步骤,您应该能够在Aspose.PSD for Java中成功使用自定义字体。如果问题仍然存在,请检查是否有其他错误或异常信息,并确保您的代码逻辑正确。

如果您需要更详细的指导或示例,可以参考Aspose的官方文档,了解如何处理缺失字体的设置。

Sources:
[1]: Aspose.PSD for Java 中替换缺失字体的设置
[2]: 用於替換 Aspose.PSD for Java 中缺少字體的設置

image.png (2.5 KB)

这个会产生影响吗

@poneli

请尝试此方法来获取正确的字体名称。

您也可以尝试使用此方法来指定字体文件夹。

如果这些方法没有帮助,请指出操作系统的版本和Aspose.PSD的版本,并提供出现此问题的文件

image.jpg (32.3 KB)

为什么我设置文字后 有的文字会出现图上这种问题呢

Aspose.PSD 有自己的字体渲染引擎,支持各种效果,包括扭曲变换,要确定渲染中的问题出在哪里,请提供 PSD 输入文件。此外,操作系统和平台也会影响渲染。

您提供的图片看起来像是文本层已应用变换。

resource.zip (937.1 KB)

这是我的资源文件

if (layer instanceof TextLayer textLayer) {
                IText textData = textLayer.getTextData();
                textLayer.updateText(content);
                ITextPortion[] items = textData.getItems();
                ITextPortion textPortion = items[0];
                ITextStyle style = textPortion.getStyle();
                style.setFontName(fontName);
                textData.updateLayerData();
            }

这是我修改文字内容和字体的代码 辛苦您帮忙看一下

已发现问题 是psd文件存在问题

@poneli

您需要任何额外的帮助吗?

为了检查此问题,我们在内部问题跟踪系统中打开了以下新票证,并将根据 Free Support Policies 中提到的条款提供修复。

Issue ID(s): PSDNET-2254

如果您需要优先支持,以及直接联系我们的付费支持管理团队,您可以获取 Paid Support Services