Eclipse中Consolas字体的行高增加

时间:2013-12-03 07:13:03

标签: eclipse fonts consolas

许多人正在使用Consolas作为他们的主要编程字体,但遗憾的是,没有办法在Eclipse中更改行高,因此它看起来有点难看,如下所示:

enter image description here

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

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

在搜索时我发现了一些主题,但没有一个是我想要的:

  1. How can I change line height / line spacing in Eclipse?
  2. https://stackoverflow.com/questions/15153938/improved-line-spacing-for-eclipse?lq=1
  3. 等......
  4. 他们中的一些人通过修改现有的字体来设计他们自己的字体(例如Meslo Font),所以如果你能分享你修改过的Consolas字体会很好。

3 个答案:

答案 0 :(得分:4)

正如在其中一个答案中提到的那样,基础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中的第二个声明是名为line-spacing的属性的CSS属性处理程序

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;
}

答案 1 :(得分:0)

您最好选择不同的字体。不要只是坚持做事。尝试新事物并接受它们。 :D我也在使用Consolas。但是现在我正在使用Courier New并且它们非常好。如果您有21英寸或更大的显示器,您可以使用12或14尺寸的Courier New。一旦您使用它,您将习惯使用Consolas现在:P

答案 2 :(得分:0)

您可以尝试Fira Mono。查看一些屏幕截图here。小尺寸也很好看。