Eclipse字体首选项

问题描述 投票:0回答:2

试图在Eclipse 3.7中将字体大小设置为低于8我偶然发现了一行

.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.ui.workbench.prefs


This is the line:
org.eclipse.jface.textfont=1|Envy Code R|7.75|0|WINDOWS|1|-11|0|0|0|400|0|0|0|0|3|2|1|49|Envy Code R;

有人知道各个部分(除以|)是什么意思?

eclipse workbench user-preferences
2个回答
1
投票

该值是toString()FontData方法返回的字符串。此值是特定于平台的,您必须检查平台的FontData源代码,以确切地确定它的含义。

org.eclipse.jface.preference.PreferenceConverter类提供了将FontData转换为此字符串的各种方法。


1
投票

感谢Greg输入,这就是字符串的形成方式。第一部分似乎是平台独立的。

1      |Envy Code R|7.75  |0
version|name       |height|style

其余的是平台依赖的。

WINDOWS |1       |-11     |0      |0           |0            |400     |0       |0          |0          |0        |3             |2              |1        |49             
platform|version2|lfHeight|lfWidth|lfEscapement|lfOrientation|lfWeight|lfItalic|lfUnderline|lfStrikeOut|lfCharSet|lfOutPrecision|lfClipPrecision|lfQuality|lfPitchAndFamily

在Windows中由Class表示

public abstract class LOGFONT {
    public int lfHeight;
    public int lfWidth;
    public int lfEscapement;
    public int lfOrientation;
    public int lfWeight;
    public byte lfItalic;
    public byte lfUnderline;
    public byte lfStrikeOut;
    public byte lfCharSet;
    public byte lfOutPrecision;
    public byte lfClipPrecision;
    public byte lfQuality;
    public byte lfPitchAndFamily;
    public static final int sizeof = OS.IsUnicode ? OS.LOGFONTW_sizeof () : OS.LOGFONTA_sizeof ();
}

这显然是C结构的“副本”:

typedef struct tagLOGFONT {
  LONG  lfHeight;
  LONG  lfWidth;
  LONG  lfEscapement;
  LONG  lfOrientation;
  LONG  lfWeight;
  BYTE  lfItalic;
  BYTE  lfUnderline;
  BYTE  lfStrikeOut;
  BYTE  lfCharSet;
  BYTE  lfOutPrecision;
  BYTE  lfClipPrecision;
  BYTE  lfQuality;
  BYTE  lfPitchAndFamily;
  TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT, *PLOGFONT;
© www.soinside.com 2019 - 2024. All rights reserved.