14

许多人使用Consolas作为他们的主要编程字体,但不幸的是,在 Eclipse 中无法更改行高,所以它看起来有点难看,如下所示:

在此处输入图像描述

我想知道是否有人通过在行之间添加一些额外的空间或简单地更改现在具有更长高度的字体本身来解决这个问题。

很高兴在 Stackoverflow 上与我们分享。

我在搜索这个时发现了一些主题,但没有一个是我正在寻找的:

  1. 如何在 Eclipse 中更改行高/行距?
  2. https://stackoverflow.com/questions/15153938/improved-line-spacing-for-eclipse?lq=1
  3. 等等...

他们中的一些人通过修改现有字体设计了自己的字体(例如Meslo Font ),因此如果您可以分享修改后的 Consolas 字体会很好。

4

3 回答 3

6

正如您引用的一个答案中提到的,底层StyledText控件确实有一个setLineSpacing方法,但现有的编辑器不使用它。

Eclipse 4.3 中的CSS样式代码确实提供了一种访问它的方法,但它需要编写一个插件来扩展 CSS 才能做到这一点。

plugin.xml插件看起来像这样:

<plugin>
   <extension
         point="org.eclipse.e4.ui.css.core.elementProvider">
      <provider
            class="linespacing.LineSpacingElementProvider">
         <widget
               class="org.eclipse.swt.custom.StyledText"></widget>
      </provider>
   </extension>
   <extension
         point="org.eclipse.e4.ui.css.core.propertyHandler">
      <handler
            adapter="linespacing.StyledTextElement"
            composite="false"
            handler="linespacing.LineSpacingPropertyHandler">
         <property-name
               name="line-spacing">
         </property-name>
      </handler>
   </extension>
</plugin>

它声明了一个 CSS 元素提供程序LineSpacingElementProvider,它将是:

public class LineSpacingElementProvider implements IElementProvider
{
  @Override
  public Element getElement(final Object element, final CSSEngine engine)
  {
    if (element instanceof StyledText)
      return new StyledTextElement((StyledText)element, engine);

    return null;
  }
}

StyledTextElement提供的只是:

public class StyledTextElement extends ControlElement
{
  public StyledTextElement(StyledText control, CSSEngine theEngine)
  {
    super(control, theEngine);
  }
}

中的第二个声明plugin.xml是一个名为的属性的 CSS 属性处理程序line-spacing

public class LineSpacingPropertyHandler extends AbstractCSSPropertySWTHandler implements ICSSPropertyHandler
{
  @Override
  protected void applyCSSProperty(Control control, String property, CSSValue value, String pseudo, CSSEngine engine) throws Exception
  {
    if (!(control instanceof StyledText))
      return;

    StyledText text = (StyledText)control;

    if ("line-spacing".equals(property))
     {
       int pixelValue = (int)((CSSPrimitiveValue)value).getFloatValue(CSSPrimitiveValue.CSS_PX);

       text.setLineSpacing(pixelValue);
     }
  }

  @Override
  protected String retrieveCSSProperty(Control control, String property, String pseudo, CSSEngine engine) throws Exception
  {
     return null;
  }
}

安装包含此插件的插件后,您可以修改现有 CSS 样式表之一以包含:

StyledText {
    line-spacing: 2px;
}
于 2013-12-19T16:46:38.723 回答
0

你最好选择不同的字体。不要只拘泥于事物。尝试新事物并接受它们。:DI 也在使用 Consolas。但现在我正在使用Courier New,它们非常好。如果您有 21" 或更大的显示器,您可以使用 12 或 14 尺寸的 Courier New。一旦您使用它,您就会像现在使用 Consolas 一样习惯它:P

于 2013-12-11T06:44:31.183 回答
0

你可以试试Fira Mono在此处查看一些屏幕截图。小号的也很好看。

于 2017-09-12T08:08:18.160 回答