修改 RMVA 的脚本编辑器字体

原理:替换自己编译的 SciLexer.dll。自用(等距更纱黑体 SC)

步骤:

  1. 下源码
  2. 修改相关代码
    1. (可选)修改字体
      跳到 scintilla/win32/ScintillaWin.cxx#L1796,添加一个 case:
      case SCI_STYLESETFONT:
          return ScintillaBase::WndProc(SCI_STYLESETFONT, wParam,
              reinterpret_cast<LPARAM>("等距更纱黑体 SC"));
      
    2. (可选)修改字号
      case SCI_STYLESETSIZE:
          return ScintillaBase::WndProc(SCI_STYLESETSIZE, wParam, lParam+1);
      
    3. (可选)打开连字(通过 DirectWrite)
      跳到 case SCI_STYLESETFONT:,进行如下修改:
      case SCI_STYLESETFONT:
          if (technology != static_cast<int>(SC_TECHNOLOGY_DIRECTWRITE)) {
              if (static_cast<int>(SC_TECHNOLOGY_DIRECTWRITE) >
                  SC_TECHNOLOGY_DEFAULT) {
      #if defined(USE_D2D)
                  LoadD2D();
      #endif
              } else {
                  bidirectional = EditModel::Bidirectional::bidiDisabled;
              }
      #if defined(USE_D2D)
              DropRenderTarget();
      #endif
              technology = static_cast<int>(SC_TECHNOLOGY_DIRECTWRITE);
              // Invalidate all cached information including layout.
              DropGraphics(true);
              InvalidateStyleRedraw();
          }
          return ScintillaBase::WndProc(SCI_STYLESETFONT, wParam,
              reinterpret_cast<LPARAM>("等距更纱黑体 SC"));
      
    4. (可选)移除不必要的语言以减小体积
      1. 在 scintilla/lexers 内删掉不需要的文件
      2. cd 进 scintilla/scripts,运行 LexGen.py
  3. 打开 VS 命令行工具,运行 nmake -f scintilla.mak
  4. 等上面 make 完,把 scintilla/bin/SciLexer.dll 拿过去覆盖 RPGVXAce/SciLexer.dll