首页 > 解决方案 > NFC NFD 在 Photoshop Javascript 中标准化?

问题描述

我正在使用 Mac 操作系统。由于 Mac OS 将韩语视为 UTF-8-MAC 而不仅仅是 UTF-8。

所以使用javascript时韩文字母被破坏了。

这就是发生的事情

我想它与 NFD NFC 有关,我猜。

所以我设法使用applescript在shell上使用这个脚本。

执行 shell 脚本 "echo " & (한글 as text) & "|iconv -f UTF-8-MAC -t UTF-8"

看起来没问题。

但我不知道如何在没有规范化方法的 Javascript 中做到这一点。

有什么办法可以做到这一点?

这是从文档中获取文件名然后使用该文件名制作文本层的完整脚本。

      if ( documents.length > 0 )
  {
    var originalDialogMode = app.displayDialogs;
    app.displayDialogs = DialogModes.ERROR;
    var originalRulerUnits = preferences.rulerUnits;
    preferences.rulerUnits = Units.PIXELS;
  }
    try
    {
        var docRef = activeDocument;

  // Now create a text layer at the front
        var myLayerRef = docRef.artLayers.add();
        myLayerRef.kind = LayerKind.TEXT;
        myLayerRef.name = "Filename";

        var myTextRef = myLayerRef.textItem;

  // strip the extension off
        var fileNameNoExtension = docRef.name;
        fileNameNoExtension = fileNameNoExtension.split( "." );
        if ( fileNameNoExtension.length > 1 ) {
            fileNameNoExtension.length--;
        }
        fileNameNoExtension = fileNameNoExtension.join(".");

        myTextRef.contents = fileNameNoExtension;

  // off set the text to be in the middle
        myTextRef.font = "NanumGothic";
        myTextRef.position = new Array( 50, 1450 );
        myTextRef.size = 8;

  // alert test
        //alert(docRef.name);
        //alert(fileNameNoExtension);
        //alert(myTextRef.charset);
        //alert(myTextRef.encoding);
    }
    catch( e )
    {
        // An error occurred. Restore ruler units, then propagate the error back
        // to the user
        preferences.rulerUnits = originalRulerUnits;
          app.displayDialogs = originalDialogMode;
        throw e;
    }

标签: javascriptutf-8cjkphotoshop-scriptunicode-normalization

解决方案


推荐阅读